Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //This label is called when eating food, and determines the nutrition value to send to the skillexp function.
- //Parts of this, such as messages, have been cut out so as only to show relevant information. "..." denotes a cut.
- *label_1831
- ...
- //This clears all offsets of var_1345.
- repeat var_1344
- var_1345(0, cnt) = 0, 0
- loop
- ...
- /* This checks to see if var_514 (the item eaten) has item bit 18 (Herb). There is then a check to see if
- the eater (var_242) is the PC (value 0). If it is, then skillexp is called with a value of 800 for all
- stats. If the eater is someone other than the PC, skillexp is called with a value of 8000 for all stats.
- Note that these call skillexp immediately, and does not exit the function; therefore, these gains are
- seperate from that of the food itself, and the food's normal effect still takes place.
- Stat identifiers are as follows. Keep them in mind, as they will be useful for the rest of this file.
- 10 - Strength
- 11 - Constituion
- 12 - Dexterity
- 13 - Perception
- 14 - Learning
- 15 - Will
- 16 - Magic
- 17 - Charisma
- 18 - Speed
- */
- if ( ibit(18, var_514) == 1 ) {
- if ( var_242 == 0 ) {
- skillexp 10, var_242, 800
- skillexp 11, var_242, 800
- skillexp 12, var_242, 800
- skillexp 13, var_242, 800
- skillexp 14, var_242, 800
- skillexp 15, var_242, 800
- skillexp 16, var_242, 800
- skillexp 17, var_242, 800
- skillexp 18, var_242, 800
- }
- else {
- skillexp 10, var_242, 8000
- skillexp 11, var_242, 8000
- skillexp 12, var_242, 8000
- skillexp 13, var_242, 8000
- skillexp 14, var_242, 8000
- skillexp 15, var_242, 8000
- skillexp 16, var_242, 8000
- skillexp 17, var_242, 8000
- skillexp 18, var_242, 8000
- }
- }
- ...
- //This takes the 26th (starts at 0) value of the item being eaten, divides it by 1000, and then stores it in var_353.
- //Each food type has a unique value, so this serves as an identifier for food type.
- var_353 = var_99(25, var_514) / 1000
- /* The following "if " blocks check the food type of the item, and sets stats and nutrition accordingly. Identifier chart:
- Meat - 1000 - 1
- Vegetables - 2000 - 2
- Fruit - 3000 - 3
- Candy - 4000 - 4
- Noodles - 5000 - 5
- Fish - 6000 - 6
- Bread - 7000 - 7
- Egg - 8000 - 8
- (The third value being the result of dividing by 1000, done in the previous code line)
- Let's now examine this line:
- var_1345(0, var_1344) = 10, 30 + var_99(20, var_514)
- var_1345 hold our attribute (offset 0) and nutrition value (offset 1).
- var_1344 is a counter, and mostly unimportant for this explanation.
- 10 is the stat identifier - in this case, Strength.
- 30 is the nutrition value.
- var_99(20, var_514) is the eaten item's Plus Value, like the +6 on "Quickling Steak + 6"
- So this reads: The attribute being increased in Strength, with a value of 30 + Plus Value.
- var_1346 is BaseSatiation.
- Use this information to read the rest of the "if" blocks. This first one is for Meat.
- */
- if ( var_353 == 1 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 30 + var_99(20, var_514)
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 40 + var_99(20, var_514)
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 10 + var_99(20, var_514)
- var_1344++
- }
- var_1346 = 3500
- }
- // Egg
- if ( var_353 == 8 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 20
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 20
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 20
- var_1344++
- }
- var_1346 = 2000
- }
- // Vegetables
- if ( var_353 == 2 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 50 + var_99(20, var_514)
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 50 + var_99(20, var_514)
- var_1344++
- }
- var_1346 = 2000
- }
- // Fruit
- if ( var_353 == 3 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 50 + var_99(20, var_514)
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 20
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 30 + var_99(20, var_514)
- var_1344++
- }
- var_1346 = 1500
- }
- // Bread
- if ( var_353 == 7 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 25
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 25
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 25
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 25
- var_1344++
- }
- var_1346 = 2800
- }
- //Candy
- if ( var_353 == 4 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 40
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 30
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 30
- var_1344++
- }
- var_1346 = 1500
- }
- // Fish
- if ( var_353 == 6 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 40
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 40
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 20
- var_1344++
- }
- var_1346 = 3000
- }
- //Noodles
- if ( var_353 == 5 ) {
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 60
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 40
- var_1344++
- }
- var_1346 = 3500
- }
- /* Remember that var_1346 is the BaseSatiation of the type of food being eaten.
- var_99(26, var_514) is the QualityLevel (Steak, Cutlet, etc.) of the food being eaten.
- So, this reads: Set Satiation to the current value of Satiation times (100 + QualityLevel * 15)/100
- At max, this multiplies satiation by 2.35.
- */
- var_1346 = var_1346 * (100 + var_99(26, var_514) * 15) / 100
- /* The following code block repeats var_1344 (the counter which keeps track of how many
- attributes our food increases) times. This:
- if ( var_1345(1, cnt) > 0 )
- Checks to see if the nutrition value of the current attribute in our loop is greater than 0. This:
- if ( var_99(26, var_514) < 3 )
- Checks to see if the QualityLevel of the food being eaten is less than 3 (in which case nutrition is halved).
- Otherwise, the nutrition is set to the current value of nutrition * (50 + QualityLevel *20)/100.
- That means max Quality Level multiplies nutrition by 2.3.
- The cut section is for food that gives negative stats (rotten).
- */
- repeat var_1344
- if ( var_1345(1, cnt) > 0 ) {
- if ( var_99(26, var_514) < 3 ) {
- var_1345(1, cnt) = var_1345(1, cnt) / 2
- }
- else {
- var_1345(1, cnt) = var_1345(1, cnt) * (50 + var_99(26, var_514) * 20) / 100
- }
- }
- ...
- loop
- ///This cut section is messages when eating the food ("Delicious!", "Gross!", etc.)
- ...
- /* The following sections check for specific items not caught by the above (herbs, specifically).
- Herb identifiers:
- 422 - Morgia
- 423 - Mareilon
- 424 - Spenseweed
- 425 - Curaria
- 426 - Alruania
- 427 - Stomafillia
- Identifier of the eaten item is var_99(3, var_514)
- These blocks follow the same setup as the above "if" blocks, so scroll up if you need a refresher.
- This:
- modgrowth var_242, 10, 2
- Means add 2 potential to stat 10 (Strength) for entity var_242 (the eater)
- As a reminder, var_1346 is satiation. Cut sections are messenges when eating the herb (invigorates you, etc.)
- */
- //Curaria
- if ( var_99(3, var_514) == 425 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 100
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 100
- var_1344++
- }
- var_1346 = 2500
- ...
- }
- //Morgia
- if ( var_99(3, var_514) == 422 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 900
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 700
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 20
- var_1344++
- }
- var_1346 = 500
- modgrowth var_242, 10, 2
- modgrowth var_242, 11, 2
- ...
- }
- //Mareilon
- if ( var_99(3, var_514) == 423 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 800
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 800
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 20
- var_1344++
- }
- var_1346 = 500
- modgrowth var_242, 16, 2
- modgrowth var_242, 15, 2
- ...
- }
- //Spenseweed
- if ( var_99(3, var_514) == 424 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 750
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 800
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 20
- var_1344++
- }
- modgrowth var_242, 12, 2
- modgrowth var_242, 13, 2
- var_1346 = 500
- ...
- }
- //Alraunia
- if ( var_99(3, var_514) == 426 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 850
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 700
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 10
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 20
- var_1344++
- }
- var_1346 = 500
- modgrowth var_242, 17, 2
- modgrowth var_242, 14, 2
- ...
- }
- //Stomafillia
- if ( var_99(3, var_514) == 427 ) {
- var_1344 = 0
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 10, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 11, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 17, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 16, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 12, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 13, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 14, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 15, 50
- var_1344++
- }
- if ( var_1344 < 10 ) {
- var_1345(0, var_1344) = 18, 50
- var_1344++
- }
- var_1346 = 20000
- }
- // Just says fortune cookie (ID 738) satiation is 750
- if ( var_99(3, var_514) == 738 ) {
- var_1346 = 750
- }
- // This just goes to a label that plays a message if food is rotten. It also sets all attributes (except for speed) to a
- // nutrition of -100, unless you have equipment that allows you to eat rotten food.
- if ( var_242 == 0 ) {
- if ( var_99(24, var_514) == 35 ) {
- if ( var_99(27, var_514) < 0 ) {
- gosub *label_1829
- }
- }
- }
- //More messages cut, specifically about if you have the "eat human flesh" mutation, and a code section
- //That sends you to another label for corpses/jerky/eggs secondary effects.
- ...
- /* Our final really important code section. We repeat this loop the same number of times as the stats
- that our food is increasing. var_353 is what we'll call NutritionFactor. It's essentially a percentage multiplier
- for the nutrition value of the food. It's initially set to 100 (in other words, you get 1x nutrition)
- We check if the eater's satiation (var_57(22, var_242)) is currently 5000 or higher , where 4999
- is the start of "hunger" status. If it is, then we create a SatiationFactor like this:
- SatiationFactor = (Eater's satiation level - 5000)/25. For example, if you eat at 6000 satiation,
- SatiationFactor would be 40. Then, we modify var_353 (remember, our NutritionFactor) by:
- NutritionFactor = The current NutritionFactor value * 100 / (100 + SatiationFactor). For our fictitious example
- of 40 for SatiationFactor, this reduces NutritionFactor to 71 (or 71%, as you'll soon see)! Now, we check
- if the eater (var_242) is the player (value 0). If it's not, then we set our NutritionFactor to 1500. Woah!
- That's 15x the food's nutrition value (after being modified by QualityLevel!). The other part there checks if the
- food iis rotten and sets NutritionFactor to 500 for pets if that's true. The item being eaten is then checked
- to see if it has item bit 19, which is Antiseptic. If it does, then NutritionFactor is HALVED (+1).
- Finally, so long as NutritionFactor is still more than 0, skillexp is called with values:
- skillexp (attribute), (target), Nutrition * NutritionFactor/100.
- */
- repeat var_1344
- var_353 = 100
- if ( var_57(22, var_242) >= 5000 ) {
- var_354 = (var_57(22, var_242) - 5000) / 25
- var_353 = var_353 * 100 / (100 + var_354)
- }
- if ( var_242 != 0 ) {
- var_353 = 1500
- if ( var_99(24, var_514) == 35 ) {
- if ( var_99(27, var_514) < 0 ) {
- var_353 = 500
- }
- }
- }
- if ( ibit(19, var_514) == 1 ) {
- var_353 = var_353 / 2 + 1
- }
- if ( var_353 > 0 ) {
- skillexp var_1345(0, cnt), var_242, var_1345(1, cnt) * var_353 / 100
- }
- loop
- ...
- //There is one final part of this label that is relevant to the information of the Food Technical Page.
- //This simply checks for the herb bit, and adds 1 potential to all attributes if it is herbed, as well as
- //OVERWRITES the eater's Satiation, setting it to 15000.
- if ( ibit(18, var_514) == 1 ) {
- var_57(22, var_242) = 15000
- modgrowth var_242, 10, 1
- modgrowth var_242, 11, 1
- modgrowth var_242, 12, 1
- modgrowth var_242, 13, 1
- modgrowth var_242, 14, 1
- modgrowth var_242, 15, 1
- modgrowth var_242, 16, 1
- modgrowth var_242, 17, 1
- modgrowth var_242, 18, 1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement