diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/constants.md | 532 | ||||
-rw-r--r-- | doc/item_bonus.md | 436 | ||||
-rw-r--r-- | doc/item_bonus.txt | 444 | ||||
-rw-r--r-- | doc/mob_db_mode_list.md | 72 | ||||
-rw-r--r-- | doc/mob_db_mode_list.txt | 113 | ||||
-rw-r--r-- | doc/quest_variables.md | 262 | ||||
-rw-r--r-- | doc/quest_variables.txt | 108 | ||||
-rw-r--r-- | doc/sample/npc_trader_sample.txt | 8 | ||||
-rw-r--r-- | doc/script_commands.txt | 140 |
9 files changed, 1430 insertions, 685 deletions
diff --git a/doc/constants.md b/doc/constants.md index b85dd9768..8b3acbfdf 100644 --- a/doc/constants.md +++ b/doc/constants.md @@ -3650,13 +3650,6 @@ - `IOT_PARTY`: 2 - `IOT_GUILD`: 3 -### tradertype - -- `NST_ZENY`: 0 -- `NST_CASH`: 1 -- `NST_MARKET`: 2 -- `NST_CUSTOM`: 3 - ### strcharinfo - `PC_NAME`: 0 @@ -3969,6 +3962,10 @@ - `ACH_ACHIEVE`: 44 - `ACH_ACHIEVEMENT_RANK`: 45 +### inventory expansion + +- `INVENTORY_INCREASE_STEP`: 10 + ## Hardcoded Constants (source) @@ -3986,11 +3983,14 @@ - `MAX_GUILD_STORAGE`: 600 - `MAX_CART`: 100 - `MAX_INVENTORY`: 100 +- `FIXED_INVENTORY_SIZE`: 100 - `MAX_ZENY`: 2147483647 - `MAX_BANK_ZENY`: 2147483647 - `MAX_BG_MEMBERS`: 30 - `MAX_CHAT_USERS`: 20 - `MAX_REFINE`: 20 +- `MAX_MENU_OPTIONS`: 255 +- `MAX_MENU_LENGTH`: 2048 ### status options @@ -4391,6 +4391,30 @@ - `ITR_NOAUCTION`: 256 - `ITR_ALL`: 511 +### inventory expand ack responds + +- `EXPAND_INV_ASK_CONFIRMATION`: 0 +- `EXPAND_INV_FAILED`: 1 +- `EXPAND_INV_OTHER_WORK`: 2 +- `EXPAND_INV_MISSING_ITEM`: 3 +- `EXPAND_INV_MAX_SIZE`: 4 + +### inventory expand final responds + +- `EXPAND_INV_RESULT_SUCCESS`: 0 +- `EXPAND_INV_RESULT_FAILED`: 1 +- `EXPAND_INV_RESULT_OTHER_WORK`: 2 +- `EXPAND_INV_RESULT_MISSING_ITEM`: 3 +- `EXPAND_INV_RESULT_MAX_SIZE`: 4 + +### trader type + +- `NST_ZENY`: 0 +- `NST_CASH`: 1 +- `NST_MARKET`: 2 +- `NST_CUSTOM`: 3 +- `NST_BARTER`: 4 + ### Renewal - `RENEWAL`: 1 @@ -8599,6 +8623,7 @@ - `Dofle_Axe`: 1318 - `TE_Woe_Axe`: 1319 - `Ru_Gold_Axe`: 1323 +- `War_Axe_IL`: 1326 - `Battle_Axe`: 1351 - `Battle_Axe_`: 1352 - `Battle_Axe__`: 1353 @@ -9031,6 +9056,10 @@ - `Spartacus`: 1835 - `Thanos_Knuckle`: 1836 - `Scarlet_Knuckle`: 1839 +- `Combo_Battle_Glove_IL`: 1846 +- `Rebeginer_SR_Nuckle`: 1848 +- `Burning_Knuckle_OS`: 1862 +- `Evt_Iron_Nail_K`: 1864 - `Violin_of_Vicious_Mind`: 1900 - `Violin`: 1901 - `Violin_`: 1902 @@ -9145,6 +9174,10 @@ - `Infinity_Staff`: 2024 - `Scarlet_Staff`: 2025 - `Staff_of_Vicious_Mind`: 2026 +- `Wizardy_Staff_IL`: 2039 +- `Rebeginer_WL_Staff`: 2046 +- `Survival_Staff_IL`: 2051 +- `Evt_Iron_Staff`: 2054 - `Guard`: 2101 - `Guard_`: 2102 - `Buckler`: 2103 @@ -13546,6 +13579,7 @@ - `Black_Butterfly_Mask`: 10037 - `Horn_Protector`: 10038 - `Tw_Backpack`: 10039 +- `Dark_Mane`: 10042 - `Prontera_Book_01`: 11000 - `Adventure_Story01`: 11001 - `Great_Chef_Orleans01`: 11002 @@ -13669,6 +13703,15 @@ - `Trance_Candy_Y`: 11594 - `Trance_Candy_G`: 11595 - `Catnip_Fruit`: 11602 +- `Crepe`: 11607 +- `Chocolate_Egg`: 11608 +- `Yummy_Cookie_Egg`: 11609 +- `Pop_Corn`: 11611 +- `Aromatic_Pop_Corn`: 11612 +- `Fresh_Milk`: 11614 +- `Sweet_Potato_`: 11615 +- `Bearopy`: 11620 +- `Aromatic_Pop_Corn_`: 11625 - `Girl_Bunch_Of_Flower`: 11701 - `Moon_Cookie`: 11702 - `Mysterious_Blood`: 11703 @@ -14728,6 +14771,8 @@ - `ALTAIR_ARES_`: 13124 - `Scarlet_Revolver`: 13127 - `Revolver_of_Vicious_Mind`: 13128 +- `Rebeginer_RL_Gun`: 13144 +- `Calf_Deathadder`: 13146 - `Branch`: 13150 - `The_Cyclone`: 13151 - `The_Cyclone_`: 13152 @@ -14869,6 +14914,9 @@ - `TE_Woe_Huuma`: 13317 - `Scarlet_Huuma`: 13327 - `Huuma_Shuriken_of_Vicious_Mind`: 13328 +- `Huuma_Fluttering_Snow_IL`: 13337 +- `Huuma_Bird_Wing_IL`: 13338 +- `Rebeginer_KO_Humma`: 13341 - `Cutlas_`: 13400 - `Excalibur_C`: 13401 - `Cutlas_C`: 13402 @@ -14912,6 +14960,10 @@ - `Pala`: 13444 - `Scarlet_Saber`: 13454 - `Saber_of_Vicious_Mind`: 13455 +- `Immaterial_Sword_IL`: 13469 +- `Rebeginer_GN_Sword`: 13483 +- `Cannon_Rapier_OS`: 13493 +- `Evt_Bluefire_Sword`: 13495 - `Insurance60_Package`: 13500 - `Assorted_Scroll_Box`: 13501 - `Drooping_Kitty_Box`: 13502 @@ -15963,6 +16015,17 @@ - `White_Shirt`: 15150 - `White_Eco_Shirt`: 15151 - `Elegant_Doram_Suit`: 15156 +- `YSF01_Plate`: 15212 +- `True_Hunting_Mail`: 15246 +- `R_Hunting_Mail`: 15247 +- `Rebeginer_Suits`: 15250 +- `S_CriticalHit_Armor`: 15280 +- `Goibne_Armor_IL`: 15348 +- `Illusion_Armor_A`: 15376 +- `Illusion_Armor_B`: 15377 +- `Time_Overload_Robe`: 15383 +- `Schmidt_Suits`: 15388 +- `Schmidt_Manteau`: 15389 - `Erde`: 16000 - `Red_Square_Bag`: 16001 - `Stunner_C`: 16002 @@ -15998,6 +16061,12 @@ - `Spoon`: 16039 - `Scarlet_Mace`: 16040 - `Mace_of_Vicious_Mind`: 16041 +- `Long_Mace_IL`: 16063 +- `Iron_Driver_IL`: 16065 +- `Rebeginer_NC_Mace`: 16075 +- `Rebeginer_N2_Mace`: 16076 +- `Saphir_Hall_OS`: 16088 +- `Ultio_Spes_OS`: 16089 - `Lady_Tanee_Doll_Box`: 16131 - `Lunatic_Hat_Box`: 16132 - `King_Frog_Hat_Box`: 16134 @@ -16079,6 +16148,7 @@ - `Giant_Fly_Wing_Box_500`: 16418 - `Greed_Scroll_Box_30`: 16419 - `Adventurer_Pack`: 16420 +- `PoporingKey`: 16423 - `Executioner_Box_`: 16424 - `Cutlus_Box`: 16425 - `Moonlight_Dagger_Box`: 16426 @@ -16357,6 +16427,27 @@ - `DEX_Biscuit_Stick_Box`: 17274 - `LUK_Biscuit_Stick_Box`: 17275 - `Jeremy_Beauty_Coupon_Box`: 17336 +- `Almighty_Plus_Box3`: 17774 +- `Almighty100_PlusBox3`: 17775 +- `Refine_Ore_Box17_Set10`: 17882 +- `Refine_Ore_Box17`: 17883 +- `HD_Refine_Ore_Box5`: 17884 +- `HD_High_Refine_Box3`: 17885 +- `Infinity_Box`: 17886 +- `Infinity_10_Box`: 17887 +- `New_Vigorgra_Package`: 17894 +- `New_Vigorgra_Set`: 17895 +- `2017_GStar_CostumeBox`: 17914 +- `Refine_Ore_Box18`: 17923 +- `Refine_Ore_Box18_Set10`: 17924 +- `HD_Refine_Ore_Box6`: 17925 +- `HD_High_Refine_Box4`: 17926 +- `New_3_Potion_pack`: 17935 +- `New_3_Potion_10pack`: 17936 +- `Nyangvine_Box10_3`: 17940 +- `Nyangvine_Box100_3`: 17941 +- `Almighty_Plus_Box4`: 17944 +- `Almighty100_PlusBox4`: 17945 - `Cannon_Ball`: 18000 - `Holy_Cannon_Ball`: 18001 - `Dark_Cannon_Ball`: 18002 @@ -16390,6 +16481,16 @@ - `Ru_Blue_Bow`: 18126 - `Infinity_Bow`: 18128 - `Scarlet_Bow`: 18130 +- `Balistar_IL`: 18149 +- `Rebeginer_RN_Bow`: 18165 +- `Rebeginer_WM_Bow`: 18166 +- `Neev_Bow_Of_Rogue`: 18170 +- `Hunter_Bow_IL`: 18174 +- `Virtual_Bow_OS`: 18178 +- `MH_P89_OS`: 18179 +- `AC_B44_OS`: 18180 +- `Evt_Royal_Bow_K`: 18182 +- `Evt_Narcis_Bow`: 18183 - `Cheer_Scarf6`: 18500 - `Cheer_Scarf8`: 18501 - `Cheer_Scarf10`: 18502 @@ -16817,6 +16918,25 @@ - `Sigruns_Wing_`: 19085 - `Robo_Eye_`: 19086 - `Angel_Spirit_`: 19087 +- `Nurse_Cap_IL`: 19209 +- `Apple_Of_Archer_IL`: 19210 +- `Cap_IL`: 19223 +- `Fancy_Flower_IL`: 19247 +- `GoldFish_Hat`: 19264 +- `Smoky_TransformHat`: 19265 +- `Soda_In_Mouth`: 19277 +- `C_Shiba_Inu`: 19291 +- `C_CatEars_Cyber_HeadP_R`: 19294 +- `Dog_Officer`: 19300 +- `Rebeginer_Cap`: 19310 +- `Egg_Crispinette`: 19339 +- `Headband_Of_Power_IL`: 19344 +- `Goibne_Helmet_IL`: 19366 +- `Pop_Popcorn_Hat`: 19382 +- `E_Oxygen_Mask`: 19389 +- `Racing_C_Star`: 19396 +- `Racing_C_Soul`: 19397 +- `Biting_Off_Rideword`: 19404 - `T_Mr_Smile`: 19500 - `T_Spinx_Helm`: 19501 - `T_Goggle`: 19502 @@ -17588,6 +17708,14 @@ - `C_Pure_White_Ribbon`: 20332 - `C_Family_Hat`: 20333 - `T_Archangel_Wing`: 20500 +- `C_Thanatos_Sword`: 20514 +- `C_Magic_Circle`: 20515 +- `C_Wings_of_Michael`: 20516 +- `C_GiantCatBag_TW`: 20517 +- `C_GoldButterfly_Wing`: 20528 +- `C_Wings_of_Gabriel`: 20530 +- `C_PinkButterfly_Wing_T`: 20533 +- `C_Digital_Space`: 20535 - `Fantastic_Aura`: 20600 - `Egir_Manteau`: 20700 - `TE_Woe_Muffler`: 20702 @@ -17627,6 +17755,19 @@ - `Private_Doram_Manteau`: 20788 - `Luxury_Doram_Manteau`: 20789 - `Elegant_Doram_Manteau`: 20790 +- `Muffler_IL`: 20838 +- `Cape_Of_Ancient_Lord_IL`: 20840 +- `Clack_Of_Servival_IL`: 20847 +- `YSF01_Manteau`: 20856 +- `True_Hunting_Manteau`: 20902 +- `R_Hunting_Manteau`: 20903 +- `Rebeginer_Manteau`: 20906 +- `Goibne_Shoulder_IL`: 20923 +- `Illusion_Engine_A`: 20933 +- `Illusion_Engine_B`: 20934 +- `Time_Overload_Hood`: 20939 +- `Violet_Halo`: 20940 +- `Fairy_Cloth`: 20944 - `Upg_Twohand_Sword`: 21000 - `Velum_Claymore`: 21001 - `Velum_Katzbalger`: 21002 @@ -17646,6 +17787,9 @@ - `Two_Handed_Sword_of_Vicious_Mind`: 21016 - `Lindy_Hop`: 21018 - `Onimaru`: 21019 +- `Rebeginer_RK_T_Sword`: 21037 +- `Beam_Claymore_OS`: 21047 +- `Evt_Oriental_Sword`: 21049 - `Temporal_Str_Boots`: 22000 - `Temporal_Int_Boots`: 22001 - `Temporal_Agi_Boots`: 22002 @@ -17686,6 +17830,17 @@ - `Private_Doram_Shoes`: 22083 - `Luxury_Doram_Shoes`: 22084 - `Elegant_Doram_Shoes`: 22085 +- `Shoes_IL`: 22133 +- `YSF01_Greave`: 22141 +- `True_Hunting_Boots`: 22168 +- `R_Hunting_Boots`: 22169 +- `ShoesOfGuardsman`: 22171 +- `Rebeginer_Boots`: 22173 +- `Boots_IL`: 22190 +- `Goibne_Boots_IL`: 22192 +- `Illusion_Leg_A`: 22196 +- `Illusion_Leg_B`: 22197 +- `Time_Overload_Boots`: 22204 - `Para_Team_Mark_`: 22508 - `Candy_Holder`: 22514 - `Key_Of_Twisted_Time`: 22515 @@ -17717,6 +17872,107 @@ - `Integer_Time`: 22837 - `Something_Candy_Holder`: 22838 - `Old_Money_Pocket`: 22876 +- `Fried_Chicken`: 23242 +- `Fried_Chicken_1`: 23243 +- `Elixir_Bandage`: 23256 +- `Dew_Of_Old_Tree`: 23257 +- `Foul_Rotten_Meat`: 23258 +- `St_Cupcake`: 23259 +- `Parfait`: 23260 +- `Macaron`: 23261 +- `Mado_Box`: 23277 +- `Costama_EggV01`: 23332 +- `Vend_Arbeit1_1Lv`: 23342 +- `Vend_Arbeit1_2Lv`: 23343 +- `Vend_Arbeit1_3Lv`: 23344 +- `Buy_Arbeit1_1Lv`: 23345 +- `Buy_Arbeit1_2Lv`: 23346 +- `Buy_Arbeit1_3Lv`: 23347 +- `Vend_Arbeit_1Lv`: 23348 +- `Vend_Arbeit_2Lv`: 23349 +- `Vend_Arbeit_3Lv`: 23350 +- `Buy_Arbeit_1Lv`: 23351 +- `Buy_Arbeit_2Lv`: 23352 +- `Buy_Arbeit_3Lv`: 23353 +- `Vend_Arbeit1_1Lv_`: 23354 +- `Vend_Arbeit1_2Lv_`: 23355 +- `Vend_Arbeit1_3Lv_`: 23356 +- `Buy_Arbeit1_1Lv_`: 23357 +- `Buy_Arbeit1_2Lv_`: 23358 +- `Buy_Arbeit1_3Lv_`: 23359 +- `Green_Scroll_K2`: 23405 +- `Sentimental_Scroll`: 23440 +- `July_Hair_Box`: 23444 +- `Savage_Trap`: 23446 +- `Infinity_Scroll`: 23473 +- `Infinity_Drink`: 23475 +- `Firstaid_Box_5`: 23484 +- `Firstaid_Box_10`: 23485 +- `Firstaid_Box_15`: 23486 +- `Firstaid_Box_20`: 23487 +- `Firstaid_Box_25`: 23488 +- `Firstaid_Box_30`: 23489 +- `Firstaid_Box_35`: 23490 +- `Firstaid_Box_40`: 23491 +- `Firstaid_Box_45`: 23492 +- `Firstaid_Box_50`: 23493 +- `Firstaid_Box_55`: 23494 +- `Firstaid_Box_60`: 23495 +- `Firstaid_Box_65`: 23496 +- `Firstaid_Box_70`: 23497 +- `Firstaid_Box_75`: 23498 +- `Firstaid_Box_80`: 23499 +- `Firstaid_Box_85`: 23500 +- `Firstaid_Box_90`: 23501 +- `Firstaid_Box_95`: 23502 +- `Red_Potion_B_20`: 23503 +- `Orange_Potion_B_20`: 23504 +- `Yellow_Potion_B_20`: 23505 +- `White_Potion_B_20`: 23506 +- `Vote_Rose`: 23533 +- `Bloody_Scroll`: 23537 +- `Snow_Cookie`: 23549 +- `Winter_Cookie`: 23550 +- `Festi_Cookie`: 23551 +- `Flora_Cookie`: 23552 +- `Snow_Festa_CardPack`: 23554 +- `Adventurer_Box_1`: 23575 +- `Adventurer_Box_15`: 23576 +- `Adventurer_Box_30`: 23577 +- `Adventurer_Box_45`: 23578 +- `Adventurer_Box_60`: 23579 +- `Adventurer_Box_75`: 23580 +- `Adventurer_Box_90`: 23581 +- `E_Wing_Of_Fly_3Day_Box`: 23582 +- `Rebeginer_Box`: 23583 +- `Rebeginer_S_Box`: 23584 +- `Rebeginer_Box_100`: 23585 +- `Rebeginer_Box_110`: 23586 +- `Rebeginer_Box_120`: 23587 +- `2017_Special_Scroll`: 23618 +- `Ice_Scroll`: 23650 +- `2018_New_Year_Scroll`: 23661 +- `EVT_JAN02KR`: 23683 +- `Lunar_New_Year_Scroll`: 23700 +- `Reactor_Z`: 23706 +- `Reactor_Z_`: 23707 +- `2018_Spring_Scroll`: 23710 +- `Melon_Bread`: 23723 +- `Costama_EggV02`: 23765 +- `Mysterious_Plastic`: 23771 +- `EP17_1_SPC01`: 23772 +- `EP17_1_SPC02`: 23773 +- `EP17_1_SPC03`: 23774 +- `EP17_1_SPC04`: 23775 +- `Bs_Making_Scrolls`: 23817 +- `StarSoul_Scroll`: 23878 +- `2018_Jump_Thx_Box`: 23897 +- `Comp_Power_Booster`: 23898 +- `Comp_Almighty`: 23899 +- `Time_Overload_Box`: 23900 +- `110LVUP`: 23901 +- `Season_Evt_Reward`: 23921 +- `Malang_Cat_Can2`: 23962 - `T1_Shadow_Armor`: 24000 - `T1_Shadow_Weapon`: 24001 - `T1_Shadow_Shield`: 24002 @@ -17963,7 +18219,165 @@ - `S_Reload_Shoes`: 24243 - `S_Reload_Shield`: 24244 - `S_Reload_Armor`: 24245 +- `Sentimental_Weapone_S`: 24380 +- `Sentimental_Earring_S`: 24381 +- `Sentimental_Pendant_S`: 24382 +- `Enchanting_Weapone_S`: 24383 +- `Enchanting_Earring_S`: 24384 +- `Enchanting_Pendant_S`: 24385 +- `S_Infinity_Weapon`: 24386 +- `Rebeginer_Armor_S`: 24387 +- `Rebeginer_Shield_S`: 24388 +- `Rebeginer_Shoes_S`: 24389 +- `Rebeginer_Weapon_S`: 24390 +- `Rebeginer_Earring_S`: 24391 +- `Rebeginer_Pendant_S`: 24392 +- `S_Physical_Shoes`: 24393 +- `S_Physical_Shield`: 24394 +- `S_Physical_Armor`: 24395 +- `S_Magical_Shoes`: 24396 +- `S_Magical_Shield`: 24397 +- `S_Magical_Armor`: 24398 +- `S_ImmunedAthena_Shield`: 24399 +- `S_HardChamption_Shoes`: 24400 +- `S_KingbirdAncient_Armor`: 24401 +- `S_Rebellion_Armor`: 24402 +- `S_Kagerou_Armor`: 24403 +- `S_Oboro_Armor`: 24404 +- `S_Rebellion_Shoes`: 24405 +- `S_Kagerou_Shoes`: 24406 +- `S_Oboro_Shoes`: 24407 +- `S_DoramPhysical_Armor`: 24408 +- `S_DoramPhysical_Shoes`: 24409 +- `S_DoramMagical_Armor`: 24410 +- `S_DoramMagical_Shoes`: 24411 +- `S_Star_Emperor_Armor`: 24412 +- `S_Star_Emperor_Shoes`: 24413 +- `S_Soul_Reaper_Armor`: 24414 +- `S_Soul_Reaper_Shoes`: 24415 +- `S_Timeoverload_Weapon`: 24416 +- `S_Timeoverload_Armor`: 24417 +- `S_Timeoverload_Shield`: 24418 +- `S_Timeoverload_Shoes`: 24419 +- `S_Timeoverload_Earing`: 24420 +- `S_Timeoverload_Pandent`: 24421 +- `BrokenArrow`: 25258 +- `Shining_Spore`: 25265 +- `Dried_Leaf_Of_Ygg`: 25266 +- `IllusionStone`: 25271 +- `Sweets_Coin`: 25290 +- `Clover_Ticket`: 25294 +- `Happiness_Clover`: 25295 +- `Golden_Corn`: 25340 +- `Mightysoul_Essence`: 25375 +- `Captured_Savage`: 25390 +- `Goodly_Bough`: 25391 +- `Free_Pass_Ticket`: 25392 +- `Delicious_Corn`: 25393 +- `Fruit_Lunch`: 25394 +- `Small_Embers`: 25395 +- `Black_Fur`: 25401 +- `Memory_Of_Gyol`: 25408 +- `SuraStone_Top`: 25409 +- `SuraStone_Middle`: 25410 +- `SuraStone_Bottom`: 25411 +- `SuraStone_Robe`: 25412 +- `RangerStone_Top`: 25413 +- `RangerStone_Middle`: 25414 +- `RangerStone_Bottom`: 25415 +- `RangerStone_Robe`: 25416 +- `SorcererStone_Top`: 25417 +- `SorcererStone_Middle`: 25418 +- `SorcererStone_Bottom`: 25419 +- `SorcererStone_Robe`: 25420 +- `Pumpkin_Decor`: 25421 +- `White_Thin_Stem`: 25422 +- `SnowFlower_Of_Spell`: 25425 +- `Warm_Cotton`: 25426 +- `Rebeginer_W_Coupon`: 25427 +- `Rebeginer_W_7Up`: 25428 +- `RuneknightStone_Top`: 25445 +- `RuneknightStone_Middle`: 25446 +- `RuneknightStone_Bottom`: 25447 +- `RuneknightStone_Robe`: 25448 +- `GeneticStone_Robe`: 25449 +- `GeneticStone_Top`: 25450 +- `GeneticStone_Middle`: 25451 +- `GeneticStone_Bottom`: 25452 +- `WarlockStone_Top`: 25453 +- `WarlockStone_Middle`: 25454 +- `WarlockStone_Bottom`: 25455 +- `WarlockStone_Robe`: 25456 +- `World_Tour_Ticket`: 25464 +- `Dogly_Bottle`: 25479 +- `ShadowchaserStone_Top`: 25490 +- `ShadowchaseStone_Middle`: 25491 +- `ShadowchaseStone_Bottom`: 25492 +- `ShadowchaserStone_Robe`: 25493 +- `MechanicStone_Top`: 25494 +- `MechanicStone_Middle`: 25495 +- `MechanicStone_Bottom`: 25496 +- `MechanicStone_Robe`: 25497 +- `WanderMinstrelStone_Top`: 25498 +- `WanderMinstStone_Middle`: 25499 +- `WanderMinstStone_Bottom`: 25500 +- `WanderMinstreStone_Robe`: 25501 +- `Visionary_Ticket`: 25504 +- `Token_of_OrcGeneral`: 25508 +- `Evt_March04_KR`: 25511 +- `Evt_March05_KR`: 25512 +- `Green_Bearopy`: 25616 +- `White_Snake_Tear`: 25622 +- `Gold_Card`: 25627 +- `Konts_Letter`: 25629 +- `Token_Of_Wootan`: 25633 +- `Wootan_D_S_Piece`: 25634 +- `Token_Of_Bigstone`: 25638 +- `Fragment_Of_Rock`: 25639 +- `Autographed_Book`: 25643 +- `Dalcom_Coin`: 25655 +- `Stamp_Note`: 25656 +- `Evt_July01_KR`: 25657 +- `Evt_July02_KR`: 25658 +- `Evt_May02_KR`: 25659 +- `Evt_July03_KR`: 25664 +- `Dienes_Envelope`: 25665 +- `Id_Card`: 25666 +- `Broken_Weapon`: 25668 +- `Unknown_Parts`: 25669 +- `HighpriestStone_Top`: 25706 +- `HighpriestStone_Middle`: 25707 +- `HighpriestStone_Bottom`: 25708 +- `ArchbishopStone_Robe`: 25709 +- `PaladinStone_Top`: 25710 +- `PaladinStone_Middle`: 25711 +- `PaladinStone_Bottom`: 25712 +- `RoyalguardStone_Robe`: 25713 +- `AssacrossStone_Top`: 25714 +- `AssacrossStone_Middle`: 25715 +- `AssacrossStone_Bottom`: 25716 +- `GuillcrossStone_Robe`: 25717 +- `Cor_Core`: 25723 +- `Shadowdecon_Ore`: 25728 +- `Shadowdecon`: 25729 +- `Zelunium_Ore`: 25730 +- `Zelunium`: 25731 +- `Sealed_Weapon_Ticket`: 25734 +- `Unsealing_Token`: 25735 +- `GH_Cursed_Crystal`: 25739 +- `GH_Cursed_Gemstone`: 25740 +- `Inventory_Extension_Coupon`: 25793 +- `Spectral_Spear_IL`: 26007 +- `Rebeginer_LG_Lance`: 26015 - `Paradise_Foxtail_Staff_III`: 26101 +- `Staff_Of_Bordeaux_IL`: 26109 +- `CandyCaneRod`: 26110 +- `Metal_Foxtail`: 26111 +- `Rebeginer_SO_Rod`: 26119 +- `Rebeginer_DO_Rod`: 26120 +- `Rutilus_Stick_OS`: 26151 +- `MeawFoxtail`: 26155 +- `Evt_Shadow_Staff_K`: 26156 - `Faceworm_Queen_Card`: 27164 - `Captain_Felock_Card`: 27182 - `Thanos_Katar`: 28000 @@ -17972,16 +18386,29 @@ - `Scarlet_Katar`: 28007 - `Katar_of_Vicious_Mind`: 28008 - `Juliette_de_Rachel`: 28010 +- `Infiltrator_IL`: 28022 +- `Ghoul_Leg_IL`: 28023 +- `Rebeginer_GC_Katar`: 28027 +- `Meuchler_OS`: 28038 +- `Evt_Shiver_Katar_K`: 28040 - `Thanos_Axe`: 28100 - `Tornado_Axe`: 28101 - `Infinity_Two_handed_Axe`: 28105 - `Scarlet_Twohand_Axe`: 28106 - `Two_Handed_Axe_of_Vicious_Mind`: 28107 +- `Blasti_OS`: 28136 +- `Evt_Avenger`: 28137 - `END_OF_HORIZON`: 28200 - `Southern_Cross_R`: 28201 - `Southern_Cross_R_`: 28202 - `Half_BF_Rifle1`: 28203 - `Half_BF_Shotgun1`: 28204 +- `Calf_Kingcobra`: 28240 +- `Calf_Diamondback`: 28241 +- `Calf_Anaconda`: 28242 +- `Calf_Python`: 28243 +- `Gate_KeeperDD_IL`: 28244 +- `HR_S55_OS`: 28253 - `Bless_Of_Moon`: 28306 - `Earring_Of_Sarah_L`: 28310 - `Earring_Of_Sarah_R`: 28311 @@ -18013,15 +18440,36 @@ - `Shiny_Branch_Talisman`: 28422 - `Fresh_Tuna_Talisman`: 28423 - `Chubby_Worm_Talisman`: 28424 +- `Skul_Ring_IL`: 28508 +- `Ring_IL`: 28509 +- `Vampire_s_Servant`: 28510 +- `RKC_2017_Pendant`: 28534 +- `RKC_2017_Ring`: 28535 +- `Rebeginer_Ring`: 28566 - `Scarlet_Bible`: 28604 - `Book_of_Vicious_Mind`: 28605 +- `Book_Of_The_Apo_IL`: 28612 +- `Rebeginer_AB_Bible`: 28616 +- `Tablet_IL`: 28626 +- `Circuit_Board_OS`: 28629 +- `Time_Kamiji`: 28631 - `Infinity_Dagger`: 28703 - `Twilight_Desert_`: 28704 - `Scarlet_Dagger`: 28705 - `Dagger_of_Vicious_Mind`: 28706 +- `Moonlight_Sword_IL`: 28725 +- `Rebeginer_SC_Dagger`: 28740 +- `Counter_Dagger_IL`: 28745 +- `Kuroiro_OS`: 28755 +- `Evt_Magic_Sword`: 28759 - `Praetorian_Shield`: 28900 - `Cursed_Mad_Bunny`: 28901 - `Mad_Bunny_`: 28902 +- `Herald_Of_GOD_IL`: 28922 +- `Bloody_Knight_Shield`: 28942 +- `Bloody_Knight_Shield_`: 28945 +- `Bloody_Knight_Shield__`: 28946 +- `Poring_B_Shield`: 28953 - `Rune_Of_Magic1`: 29000 - `Rune_Of_Magic2`: 29001 - `Rune_Of_Magic3`: 29002 @@ -18049,6 +18497,76 @@ - `LUK3_INT3`: 29025 - `DEF20`: 29026 - `EXP2`: 29027 +- `Deep_Black_Pearl`: 29540 +- `Sea_Sapphire`: 29547 +- `Red_Fog_Garnet`: 29548 +- `Lightning_Topaz`: 29549 +- `Poisoned_Amethyst`: 29550 +- `Frost_Zircon`: 29551 +- `Deep_Black_Pearl_`: 29552 +- `Lightning_Topaz_`: 29587 +- `Bloody_Ruby`: 29588 +- `GH_Cursed_Gemstone_`: 29589 +- `GH_Cursed_Crystal_`: 29590 +- `Cursed_Emerald`: 29591 +- `Shinee_Opal`: 29592 +- `Roast_Memory`: 31172 +- `C_Black_Cat`: 31186 +- `Choco_Minihat`: 31195 +- `Egg_Crispinette_`: 31197 +- `Straight_Long_YL`: 31208 +- `Straight_Long_WH`: 31209 +- `Rabbit_Hopping`: 31249 +- `Soda_In_Mouth_`: 31261 +- `Warm_Cat_Muffler`: 31300 +- `C_FallenAngelWingEar`: 31313 +- `C_Ghost_Holiday`: 31314 +- `C_FlutterButterfly_BL`: 31316 +- `C_Alice_Wig`: 31329 +- `C_Khalitzburg_Helm_BL`: 31332 +- `Harvest_Festa_Hat`: 31368 +- `Straight_Long_WH_`: 31369 +- `Straight_Long_YL_`: 31370 +- `Jjakk`: 31387 +- `White_Bird_Rose`: 31389 +- `Let_It_Snow`: 31390 +- `C_Sorcerer_Hood`: 31396 +- `C_Pope_Sitting_Head`: 31397 +- `C_Blinking_Thin_Eyes`: 31398 +- `Alice_Wig_PK`: 31407 +- `C_Wanderer_Sakkat`: 31415 +- `C_Luwmin_Ice`: 31432 +- `C_Astro_Circle`: 31433 +- `C_Baby_Penguin`: 31437 +- `C_Fluffy_Heart_Earmuffs`: 31439 +- `White_Cat`: 31452 +- `Love_Feeling`: 31454 +- `Enchanted_Dog`: 31455 +- `C_Blessing_Sky_Lantern`: 31460 +- `C_Flying_Drone`: 31463 +- `Egg_Minihat`: 31465 +- `C_Bouquet_Hat`: 31489 +- `C_Poring_Muffler`: 31490 +- `Volume_Low_Twin`: 31494 +- `Lolita_Two_Side_Up`: 31495 +- `C_Elephangel_TH`: 31498 +- `Mini_Melon`: 31516 +- `Pop_Popcorn_Hat_`: 31518 +- `Slurp_Slurp_Hat`: 31519 +- `C_Happy_Rabbit_Ribbon`: 31529 +- `Autumnal_Flavor`: 31580 +- `GOLD_MAJESTIC_GOUT`: 31589 +- `C_Autumn_Headband`: 31606 +- `Pole_Axe_IL`: 32005 +- `Metal_Stick`: 32013 +- `Boost_Lance_OS`: 32019 +- `Evt_Undine_Spear_K`: 32021 +- `Illusion_B_R`: 32207 +- `Illusion_B_L`: 32208 +- `Illusion_BC_R`: 32209 +- `Illusion_BC_L`: 32210 +- `Time_Overload_Ring`: 32221 +- `Celine_Brooch`: 32237 > End of list diff --git a/doc/item_bonus.md b/doc/item_bonus.md new file mode 100644 index 000000000..b9fc17ee4 --- /dev/null +++ b/doc/item_bonus.md @@ -0,0 +1,436 @@ +# Hercules Item Bonuses List + +<!-- +# Copyright +> This file is part of Hercules. +> http://herc.ws - http://github.com/HerculesWS/Hercules +> +> Copyright (C) 2012-2018 Hercules Dev Team +> Copyright (C) Athena Dev Teams +> +> Hercules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +> +> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +> See the GNU General Public License for more details. +> +> You should have received a copy of the GNU General Public License along with this program. +> If not, see <http://www.gnu.org/licenses/>. +--> + +## Description +List of script instructions used in item bonuses, mainly `bonus`/`bonus2`/`bonus3`/`bonus4`/`bonus5` arguments and etc. + + +## Constants +This table contains all available constants referenced in the `bonus` commands. + +Race (`r`) | Status effect (`eff`) | Element (`e`) | Monster Race (`mr`) | Size (`s`) +:----------------- | :-------------------- | :------------- | :------------------ | :----------- +RC_Formless | Eff_Stone | Ele_Neutral | RC2_Goblin | Size_Small +RC_Undead | Eff_Freeze | Ele_Water | RC2_Kobold | Size_Medium +RC_Brute | Eff_Stun | Ele_Earth | RC2_Orc | Size_Large +RC_Plant | Eff_Sleep | Ele_Fire | RC2_Golem | +RC_Insect | Eff_Poison | Ele_Wind | RC2_Guardian | +RC_Fish | Eff_Curse | Ele_Poison | RC2_Ninja | +RC_Demon | Eff_Silence | Ele_Holy | RC2_Scaraba | +RC_DemiHuman | Eff_Confusion | Ele_Dark | RC2_Turtle | +RC_Angel | Eff_Blind | Ele_Ghost | | +RC_Dragon | Eff_Bleeding | Ele_Undead | | +RC_Player | Eff_DPoison | Ele_All | | +RC_Boss | Eff_Fear | | | +RC_NonBoss | Eff_Cold | | | +RC_NonDemiHuman | Eff_Burning | | | +RC_NonPlayer | Eff_Deepsleep | | | +RC_DemiPlayer | | | | +RC_NonDemiPlayer | | | | +RC_All | | | | + + +### Trigger criteria (`bf`) + Type 1 | Description +:----------------- | :------------------------------ +`BF_WEAPON` | Trigger on weapon skills +`BF_MAGIC` | Trigger on magic skills +`BF_MISC` | Trigger on misc skills + +(Default: `BF_WEAPON`) + + Type 2 | Description +:----------------- | :------------------------------ +`BF_SHORT` | Trigger on melee attacks +`BF_LONG` | Trigger on ranged attacks + +(Default: `BF_SHORT`+`BF_LONG`) + + Type 3 | Description +:----------------- | :------------------------------ +`BF_NORMAL` | Trigger on normal attacks +`BF_SKILL` | Trigger on skills + +(Default: `BF_SKILL` if type is `BF_MISC` or `BF_MAGIC`, `BF_NORMAL` if type is `BF_WEAPON`) + + +### Attack Trigger Criteria (`abf`) + Type 1 | Description +:----------------- | :------------------------------ +`ATF_SELF` | Trigger on self +`ATF_TARGET` | Trigger on target + +(Default: `ATF_TARGET`) + + Type 2 | Description +:----------------- | :------------------------------ +`ATF_SHORT` | Trigger on melee attack +`ATF_LONG` | Trigger on ranged attack + +(Default: `ATF_SHORT`+`ATF_LONG`) + + Type 3 | Description +:----------------- | :------------------------------ +`ATF_WEAPON` | Trigger on Weapon Skills +`ATF_MAGIC` | Trigger on magic attacks +`ATF_MISC` | Trigger on misc skills +`ATF_SKILL` | Trigger on skill attack + +(Default: `ATF_WEAPON`) + + Type 4 | Description +:----------------- | :------------------------------ +`ATF_SELF` | Trigger effect on self. +`ATF_TARGET` | Trigger effect on target (default) +`ATF_SHORT` | Trigger on melee attacks +`ATF_LONG` | Trigger in ranged attacks (default: trigger on all attacks) + +(Default: `ATF_TARGET`) + + Other values | Remarks +:----------------- | :------------------------------ +Skill (`sk`) | see `db/(pre-)re/skill_db.txt` (NOTE: Both skill IDs and names, with and without quotes, are supported.) +Monster id (`mid`) | see `db/(pre-)re/mob_db.txt` +Item id (`id`) | see `db/(pre-)re/item_db.conf` +Item chain (`ic`) | see `db/(pre-)re/item_chain.conf` (Only Constants) +Item group (`ig`) | see `db/(pre-)re/item_group.conf` (ItemID) +Weapon type (`w`) | see `doc/item_db.txt` -> View -> Weapons +Class (`c`) | see `db/(pre-re)/mob_db.txt` -> For Players, `c` = JobID + +--------------- + + +## Bonuses +--------------- +The format of bonuses listed in this file is as follows: + * 1. Basic Bonuses + * 2. Extended Bonuses + * 3. Group-specific Bonuses + * 4. Status-related Bonuses + * 5. AutoSpell Bonuses + * 6. Misc Bonuses + + +--------------- + +### 1. Basic Bonuses + +Base Stats | Description +:-------------------------------- | :------------------------- +bonus bStr,`n`; | STR + `n` +bonus bAgi,`n`; | AGI + `n` +bonus bVit,`n`; | VIT + `n` +bonus bInt,`n`; | INT + `n` +bonus bDex,`n`; | DEX + `n` +bonus bLuk,`n`; | LUK + `n` +bonus bAgiVit,`n`; | AGI + `n`, VIT + `n` +bonus bAgiDexStr,`n`; | STR + `n`, AGI + `n`, DEX + `n` +bonus bAllStats,`n`; | STR + `n`, AGI + `n`, VIT + `n`, INT + `n`, DEX + `n`, LUK + `n` + +HP/SP | Description +:-------------------------------- | :------------------------- +bonus bMaxHP,`n`; | MaxHP + `n` +bonus bMaxHPrate,`n`; | MaxHP + `n`% +bonus bMaxSP,`n`; | MaxSP + `n` +bonus bMaxSPrate,`n`; | MaxSP + `n`% + +Attack/Def | Description +:-------------------------------- | :------------------------- +bonus bAtk,`n`; | ATK + `n` +bonus bAtk2,`n`; | ATK2 + `n` +bonus bAtkRate,`n`; | Attack Power + `n`% +bonus bBaseAtk,`n`; | Basic Attack Power + `n` +bonus bDef,`n`; | Equipment DEF + `n` +bonus bDef2,`n`; | VIT based DEF + `n` +bonus bDefRate,`n`; | Equipment DEF + `n`% +bonus bDef2Rate,`n`; | VIT based DEF + `n`% + +Magic Attack/Def | Description +:-------------------------------- | :------------------------- +bonus bMatk,`n`; | Magical attack power + `n` +bonus bMatkRate,`n`; | Magical attack power + `n`% +bonus bMdef,`n`; | Equipment MDEF + `n` +bonus bMdef2,`n`; | INT based MDEF + `n` +bonus bMdefRate,`n`; | Equipment MDEF + `n`% +bonus bMdef2Rate,`n`; | INT based MDEF + `n`% + +Other Stats | Description +:-------------------------------- | :------------------------- +bonus bHit,`n`; | Hit + `n` +bonus bHitRate,`n`; | Hit + `n`% +bonus bCritical,`n`; | Critical + `n` +bonus bCriticalRate,`n`; | Critical + `n`% +bonus bFlee,`n`; | Flee + `n` +bonus bFleeRate,`n`; | Flee + `n`% +bonus bFlee2,`n`; | Perfect Dodge + `n` +bonus bFlee2Rate,`n`; | Perfect Dodge + `n`% +bonus bPerfectHitRate,`n`; | On-target impact attack probability `n`% (only the highest among all is applied) +bonus bPerfectHitAddRate,`n`; | On-target impact attack probability + `n`% +bonus bSpeedRate,`n`; | Moving speed + `n`% (only the highest among all is applied) +bonus bSpeedAddRate,`n`; | Moving speed + `n`% +bonus bAspd,`n`; | Attack speed + `n` +bonus bAspdRate,`n`; | Attack speed + `n`% +bonus bAtkRange,`n`; | Attack range + `n` +bonus bAddMaxWeight,`n`; | MaxWeight + `n` (in units of 0.1) + + +--------------- + +### 2. Extended Bonuses + +HP | Description +:-------------------------------- | :------------------------- +bonus bHPrecovRate,`n`; | Natural HP recovery ratio + `n`% +bonus2 bHPRegenRate,`n`,`t`; | Gain `n` HP every `t` milliseconds +bonus2 bHPLossRate,`n`,`t`; | Lose `n` HP every `t` millisecond + +SP | Description +:-------------------------------- | :------------------------- +bonus bSPrecovRate,`n`; | Natural SP recovery ratio + `n`% +bonus2 bSPRegenRate,`n`,`t`; | Gain `n` SP every `t` milliseconds +bonus2 bSPLossRate,`n`,`t`; | Lose `n` SP every `t` milliseconds +bonus bUseSPrate,`n`; | SP consumption + `n`% +bonus2 bSkillUseSP,`sk`,`n`; | Reduces SP consumption of skill `sk` by n. +bonus2 bSkillUseSPrate,`sk`,`n`; | Reduces SP consumption of skill `sk` by `n`% +bonus bNoRegen,`x`; | Stops regeneration for `x` (`x`: 1=HP, 2=SP) + +Attack/Def | Description +:-------------------------------- | :------------------------- +bonus bNearAtkDef,`n`; | Adds `n`% damage reduction against melee physical attacks +bonus bLongAtkDef,`n`; | Adds `n`% damage reduction against ranged physical attacks +bonus bMagicAtkDef,`n`; | Adds `n`% damage reduction against magical attacks +bonus bMiscAtkDef,`n`; | Adds `n`% damage reduction against MISC attacks (traps, falcon, ...) +bonus bCriticalDef,`n`; | Decreases Chance of being hit by critical by `n`% +bonus2 bSkillAtk,`sk`,`n`; | Increase damage of skill `sk` by `n`% +bonus2 bWeaponAtk,`w`,`n`; | Adds `n` ATK when weapon of type `w` is equipped +bonus2 bWeaponAtkRate,`w`,`n`; | Adds `n`% damage to weapon attacks when weapon of type `w` is equipped +bonus bLongAtkRate,`n`; | Increases damage of ranged attacks by `n`% +bonus bCritAtkRate,`n`; | Increase critical damage by +`n`% +bonus bNoWeaponDamage,`n`; | Prevents from receiving `n`% physical damage +bonus bNoMagicDamage,`n`; | Prevents from receiving `n`% magical effect (Attack, Healing, Support spells are all blocked) +bonus bNoMiscDamage,`n`; | Adds `n`% reduction to received misc damage + +Heal | Description +:-------------------------------- | :------------------------- +bonus bHealPower,`n`; | Increase heal amount of all heal skills used by player on self by `n`% +bonus bHealPower2,`n`; | Increase heal amount if you are healed by any skills of others by `n`% +bonus2 bSkillHeal,`sk`,`n`; | Increase heal amount of skill `sk` by `n`% +bonus2 bSkillHeal2,`sk`,`n`; | Increase heal amount if you are healed by skill `sk` by `n`% +bonus bAddItemHealRate,`n`; | Increases HP recovered by `n`% for healing items. +bonus2 bAddItemHealRate,`id`,`n`; | Increases HP recovered by `n`% for item `id`/`ig` + +Skill Cast | Description +:---------------------------------- | :------------------------- +bonus bCastrate,`n`; | Skill casting time rate + `n`% +bonus2 bCastrate,`sk`,`n`; | Adjust casting time of skill `sk` by `n`% +bonus bFixedCastrate,`n`; | Increases fixed cast time of all skills by `n`% +bonus2 bFixedCastrate,`s`,`n`; | Increases fixed cast time of skill `sk` by `n`% +bonus bFixedCast,`t`; | Increases fixed cast time of all skills by `t` milliseconds +bonus2 bSkillFixedCast,`sk`,`t`; | Increases fixed cast time of skill `sk` by `t` milliseconds +bonus bVariableCastrate,`n`; | Increases variable cast time of all skills by `n`% +bonus2 bVariableCastrate,`sk`,`n`; | Increases variable cast time of skill `sk` by `n`% +bonus bVariableCast,`t`; | Increases variable cast time of all skills by `t` milliseconds +bonus2 bSkillVariableCast,`sk`,`t`; | Increases variable cast time of skill `sk` by `t` milliseconds +bonus bNoCastCancel,`n`; | Prevents casting from being interrupted when hit (does not work in GvG | `n` is meaningless) +bonus bNoCastCancel2,`n`; | Prevents casting from being interrupted when hit (works even in GvG | `n` is meaningless) +bonus bDelayrate,`n`; | Increases skill delay by `n`% +bonus2 bSkillCooldown,`sk`,`t`; | Increases cooldown of skill `sk` by `t` milliseconds + + +--------------- + +### 3. Group-specific Bonuses + +Damage Modifiers | Description +:----------------------------------- | :------------------------- +bonus2 bAddSize,`s`,`n`; | +n% Physical damage against size `s` +bonus2 bMagicAddSize,`s`,`n`; | +n% Magical damage against size `s` +bonus2 bSubSize,`s`,`n`; | +n% Damage reduction against size `s` +bonus2 bAddRaceTolerance,`r`,`n`; | +n% tolerance against race `r` (Renewal Only) +bonus2 bAddRace,`r`,`n`; | +n% Physical damage against race `r` +bonus2 bMagicAddRace,`n`,`x`; | +n% Magical damage against race `r` +bonus2 bSubRace,`r`,`n`; | +n% Damage reduction against race `r` +bonus2 bAddRace2,`mr`,`n`; | +n% Damage Against monster race `mr` +bonus2 bSubRace2,`mr`,`n`; | +n% Damage reduction against monster race `mr` +bonus2 bAddEle,`e`,`n`; | +n% Physical damage against element `e` +bonus2 bMagicAddEle,`e`,`n`; | +n% Magical damage against element `e` +bonus2 bMagicAtkEle,`e`,`n`; | Increases damage of element `e` magic by `n`% +bonus3 bAddEle,`e`,`n`,`bf`; | +n% physical damage against element `e` +bonus2 bSubEle,`e`,`n`; | +n% Damage reduction against element `e` +bonus3 bSubEle,`e`,`n`,`bf`; | +n% Damage reduction against element `e`. +bonus2 bAddDamageClass,`c`,`x`; | +n% extra physical damage against monsters of class `c` +bonus2 bAddMagicDamageClass,`c`,`x`; | +n% extra magical damage against monsters of class `c` +bonus2 bAddDefClass,`c`,`x`; | +n% physical damage reduction against monsters of class `c` +bonus2 bAddMDefClass,`c`,`x`; | +n% magical damage reduction against monsters of class `c` +bonus2 bCriticalAddRace,`r`,`n`; | +`n` Critical Against race `r` + +Attack/Def | Description +:------------------------------------- | :------------------------- +bonus bAtkEle,`e`; | Gives the player's attacks element `e` +bonus bDefEle,`e`; | Gives the player's defense element `e` +bonus bDefRatioAtkEle,`e`; | Deals more damage to enemies of element `e` with higher defense +bonus bDefRatioAtkRace,`r`; | Deals more damage to enemies of race `r` with higher defense +bonus4 bSetDefRace,`r`,`n`,`t`,`y`; | Set DEF to `y` of an enemy of race `r` at `n`/100% for `t` milliseconds with normal attack +bonus4 bSetMDefRace,`r`,`n`,`t`,`y`; | Set MDEF to `y` of an enemy of race `r` at `n`/100% for `t` milliseconds with normal attack + +Ignore Def | Description +:-------------------------------- | :------------------------- +bonus bIgnoreDefRace,`r`; | Disregard DEF against enemies of race `r` +bonus bIgnoreMDefRace,`r`; | Disregard MDEF against enemies of race `r` +bonus bIgnoreDefEle,`e`; | Disregard DEF against enemies of element `e` +bonus bIgnoreMDefEle,`e`; | Disregard MDEF against enemies of element `e` +bonus2 bIgnoreDefRate,`r`,`n`; | Disregard `n`% of the target's DEF if the target belongs to race `r` +bonus2 bIgnoreMdefRate,`r`,`n`; | Disregard `n`% of the target's MDEF if the target belongs to race `r` +bonus bIgnoreMdefRate,`n`; | Disregard `n`% of the target's MDEF + +Experience | Description +:-------------------------------- | :------------------------- +bonus2 bExpAddRace,`r`,`n`; | +n% Experience from enemies of race `r` + + +--------------- + +### 4. Status-related Bonuses + +Status-related Bonuses | Description +:------------------------------------------- | :------------------------- +bonus2 bResEff,`e`,`n`; | Adds a `n`/100% tolerance to effect `e` +bonus2 bAddEff,`eff`,`n`; | Adds a `n`/100% chance to cause effect `eff` to the target when attacking +bonus2 bAddEff2,`eff`,`n`; | Adds a `n`/100% chance to cause effect `eff` on self when attacking. +bonus3 bAddEff,`eff`,`n`,`abf`; | Adds a `n`/100% chance to cause effect `eff` to the target when attacking for target abf +bonus4 bAddEff,`eff`,`n`,`abf`,`t`; | Adds a `n`/100% chance to cause effect `eff` to the target when attacking for target `abf` for `t` milliseconds <br/> (Note:The effect can't be avoided nor its duration reduced. Duration: 0-65535) +bonus3 bAddEffOnSkill,`sk`,`eff`,`n`; | Adds a `n`/100% chance to cause effect `eff` on enemy when using skill `sk` +bonus4 bAddEffOnSkill,`sk`,`eff`,`n`,`abf`; | Adds a `n`/100% chance to cause effect `eff` when using skill `sk` +bonus2 bAddEffWhenHit,`eff`,`n`; | `n`/100% chance to cause effect `eff` to the enemy when being hit by physical damage +bonus3 bAddEffWhenHit,`eff`,`n`,`abf`; | Adds a `n`/100% chance to cause effect `eff` to the enemy when being hit by physical damage +bonus2 bWeaponComaRace,`r`,`n`; | Adds a `n`/100% chance to cause Coma when attacking a monster of race `r` with a weapon attack +bonus2 bWeaponComaEle,`e`,`n`; | Adds a `n`/100% chance to cause Coma when attacking a monster of element `e` with weapon attack + + +--------------- + +### 5. AutoSpell Bonuses + +NOTES: + - For all AutoSpell bonuses, target must be within the spell's range to go off. + - By default, AutoSpell skills are casted on target unless it is a self or support skill (inf = 4/16). + +AutoSpell Bonuses | Description +:------------------------------------------------- | :------------------------- +bonus4 bAutoSpellOnSkill,`sk`,`x`,`y`,`n`; | Adds a `n`/10% chance to autospell skill `x` at level `y` when using skill `sk` +bonus5 bAutoSpellOnSkill,`sk`,`x`,`y`,`n`,`i`; | Adds a `n`/10% chance to autospell skill `x` at level `y` when using skill `sk` <br/> i: <br/> Flags (bitfield)<br/> &1: Forces the skill to be casted on self, rather than on the target of skill `sk`<br/> &2: Random skill level between 1 and l is chosen. +bonus4 bAutoSpell,`sk`,`y`,`n`,`i`; | `n`/10% chance to cast skill `sk` of level `y` when attacking +bonus5 bAutoSpell,`sk`,`y`,`n`,`bf`,`i`; | `n`/10% chance to cast skill `sk` of level `y` when attacking +bonus4 bAutoSpellWhenHit,`sk`,`y`,`n`,`i`; | `n`/10% chance to cast skill `sk` of level `y` when being hit by a direct attack +bonus5 bAutoSpellWhenHit,`sk`,`y`,`n`,`bf`,`i`; | `n`/10% chance to cast skill `sk` of level `y` when being hit by a direct attack <br/>i: <br/>0 = cast on self <br/>1 = cast on enemy, not on self <br/>2 = use random skill lv in [1..y] <br/>3 = 1+2 (random lv on enemy) +bonus3 bAutoSpellWhenHit,`sk`,`x`,`n`; | `n`/10% chance to cast skill `sk` of level `x` on attacker when being hit by a direct attack +bonus3 bAutoSpell,`sk`,`x`,`n`; | Auto Spell casting on attack of spell `sk` at level `x` with `n`/10% chance + + +--------------- + +### 6. Misc Bonuses + +HP/SP Drain | Description +:------------------------------------- | :------------------------- +bonus bHPDrainValue,`n`; | Heals +`n` HP with weapon attack. +bonus2 bHPDrainValue,`n`,`x`; | Heals +`n` HP with weapon attack. When `x` is non-zero, the HP is drained instead. +bonus2 bHPDrainRate,`n`,`x`; | `n`/10% probability to drain `x`% HP when attacking +bonus bSPDrainValue,`n`; | When hitting a monster by physical attack, you gain `n` SP +bonus2 bSPDrainRate,`n`,`x`; | `n`/10% probability to drain `x`% SP when attacking +bonus2 bSPDrainValue,`n`,`x`; | When hitting a monster by physical attack <br/> x: <br/> 0: Gain `n` SP <br/> 1: drain `n` SP from target +bonus3 bSPDrainRate,`n`,`x`,`y`; | When attacking there is a `n`/10% chance to either gain SP equivalent to `x`% of damage dealt, OR drain the amount of sp from the enemy. <br/> y: <br/> 0: Gain SP <br/> 1: Drain SP from target +bonus2 bHPDrainValueRace,`r`,`n`; | Heals +`n` HP when attacking a monster of race `r` with weapon attack. +bonus2 bSPDrainValueRace,`r`,`n`; | Heals +`n` SP when attacking a monster of race `r` with weapon attack. +bonus3 bHPDrainRateRace,`r`,`n`,`x`; | Adds a `n`/10% chance to receive `x`% of damage dealt as HP from a monster of race `r` with weapon attack. +bonus3 bSPDrainRateRace,`r`,`n`,`x`; | Adds a `n`/10% chance to receive `x`% of damage dealt as SP from a monster of race `r` with weapon attack. + +HP/SP Vanish | Description +:------------------------------------- | :------------------------- +bonus2 bHPVanishRate,`n`,`x`; | Add the (`n`/10)% chance of decreasing enemy HP amount by `x`% when attacking +bonus2 bSPVanishRate,`n`,`x`; | Add the (`n`/10)% chance of decreasing enemy SP amount by `x`% when attacking +bonus3 bHPVanishRate,`n`,`x`,`bf`; | Add the (`n`/10)% chance of decreasing enemy HP amount by `x`% when attacking for criteria `bf` +bonus3 bSPVanishRate,`n`,`x`,`bf`; | Add the (`n`/10)% chance of decreasing enemy SP amount by `x`% when attacking for criteria `bf` + +HP/SP Gain | Description +:------------------------------------- | :------------------------- +bonus bHPGainValue,`n`; | When killing a monster by physical attack, you gain `n` HP +bonus bSPGainValue,`n`; | When killing a monster by physical attack, you gain `n` SP +bonus bMagicHPGainValue,`n`; | Gains +`n` HP when killing an enemy with magic attack +bonus bMagicSPGainValue,`n`; | Gains +`n` SP when killing an enemy with magic attack +bonus2 bHPGainRaceAttack,`r`,`n`; | Heals `n` HP when attacking race `r` on every hit +bonus2 bSPGainRaceAttack,`r`,`n`; | Heals `n` SP when attacking race `r` on every hit +bonus2 bSPGainRace,`r`,`n`; | When killing a monster of race `r` by physical attack gain `n` SP + +Damage return | Description +:------------------------------------- | :------------------------- +bonus bMagicDamageReturn,`n`; | Adds a `n`% chance to reflect targetted magic spells back to the enemy that caused it +bonus bShortWeaponDamageReturn,`n`; | Reflects `n`% of received melee damage back to the enemy that caused it +bonus bLongWeaponDamageReturn,`n`; | Reflects `n`% of received ranged damage back to the enemy that caused it + +NOTE: + - `n` is meaningless if not mentioned. + +Strip/Break equipment | Description +:--------------------------------------- | :------------------------- +bonus bUnstripable,`n`; | Equipment cannot be taken off via strip skills +bonus bUnstripableWeapon,`n`; | Weapon cannot be taken off via Strip skills +bonus bUnstripableArmor,`n`; | Armor cannot be taken off via Strip skills +bonus bUnstripableHelm,`n`; | Helm cannot be taken off via Strip skills +bonus bUnstripableShield,`n`; | Shield cannot be taken off via Strip skills +bonus bUnbreakable,`n`; | Reduces the break chance of all equipped equipment by `n`%. +bonus bUnbreakableGarment,`n`; | Garment cannot be damaged/broken by any means +bonus bUnbreakableWeapon,`n`; | Weapon cannot be damaged/broken by any means +bonus bUnbreakableArmor,`n`; | Armor cannot be damaged/broken by any means +bonus bUnbreakableHelm,`n`; | Helm cannot be damaged/broken by any means +bonus bUnbreakableShield,`n`; | Shield cannot be damaged/broken by any means +bonus bUnbreakableShoes,`n`; | Shoes cannot be damaged/broken by any means +bonus bBreakWeaponRate,`n`; | Adds a `n`/100% chance to break enemy's weapon while attacking (Stackable) +bonus bBreakArmorRate,`n`; | Adds a `n`/100% chance to break enemy's armor while attacking (Stackable) + +NOTE: + - `n` is meaningless if not mentioned. + +Monster Related | Description +:----------------------------------------- | :------------------------- +bonus3 bAddClassDropItem,`id`,`c`,`n`; | Adds a `n`/100% chance of dropping item id when killing monster mid +bonus2 bAddMonsterDropItem,`id`,`n`; | Adds a `n`/100% chance for item id to be dropped, when killing any monster. +bonus3 bAddMonsterDropItem,`id`,`r`,`n`; | Adds a `n`/100% chance for item id to be dropped, when killing any monster of race `r`. <br/> If `n` is negative value, then it's a part of formula <br/> `chance = -y*(killed_mob_level/10)+1` +bonus bAddMonsterDropChainItem,`ic`; | Able to get Item of chain `ic` when you kill a monster +bonus2 bAddMonsterDropChainItem,`ic`,`r`; | Able to get item of chain `ic` when you kill a monster of race `r` +bonus2 bGetZenyNum,`x`,`n`; | When killing a monster, there is a `n`% chance of gaining 1~x zeny (only the highest among all is applied). +bonus2 bAddGetZenyNum,`x`,`n`; | When killing a monster, there is a `n`% chance of gaining 1~x zeny (Stackable) <br/> x: <br/> < 0: Max Zeny gain is `(-x*monster_level)` + +Misc effects | Description +:------------------------------------- | :------------------------- +skill i,`n`; | Gives skill #i at level n +bonus bDoubleRate,`n`; | Double Attack probability +n% (works with all weapons | only the highest among all is applied) +bonus bDoubleAddRate,`n`; | Double Attack probability +n% (works with all weapons) +bonus bSplashRange,`n`; | Splash attack radius +`n` (highest is applied) +bonus bSplashAddRange,`n`; | Splash attack radius + `n` (e.g. `n`=1 makes a `3*3` cells area, `n`=2 a `5*5` area, etc) <br/> `n`: <br/> 1: 3*3 Area <br/> 2: 5*5 Area <br/> ... +bonus bClassChange,`n`; | Gives a `n`/100% chance to change the attacked monster's class with normal attack. +bonus bAddStealRate,`n`; | `n`/100% increase to Steal skill success chance +bonus bRestartFullRecover,`n`; | When reviving, HP and SP are fully healed +bonus bNoSizeFix,`n`; | The attack revision with the size of the monster is not received +bonus bNoGemStone,`n`; | Skills requiring Gemstones do no require them (Hocus Pocus will still require 1 Yellow Gemstone) +bonus bIntravision,`n`; | Always see Hiding and Cloaking players/mobs <br/> `n`: is meaningless +bonus2 bAddSkillBlow,`sk`,`n`; | Knockbacks the target by `n` cells when using skill `sk` +bonus bNoKnockback,`n`; | Character is no longer knocked back by enemy skills with such effect (`n` is meaningless) +bonus bPerfectHide,`n`; | Hidden/cloaked character is no longer detected by monsters with 'detector' mode (`n` is meaningless). + diff --git a/doc/item_bonus.txt b/doc/item_bonus.txt deleted file mode 100644 index dd176d919..000000000 --- a/doc/item_bonus.txt +++ /dev/null @@ -1,444 +0,0 @@ -//===== Hercules Documentation =============================== -//= Hercules Item Bonuses List -//===== By: ================================================== -//= Hercules Dev Team -//===== Current Version: ===================================== -//= 20150624 -//===== Description: ========================================= -//= List of script instructions used in item bonuses, -//= mainly bonus/bonus2/bonus3/bonus4/bonus5 arguments. -//============================================================ - -Constants ---------- -This list contains all available constants referenced in the 'bonus' commands. - -* Status effect (eff) - Eff_Stone, Eff_Freeze, Eff_Stun, Eff_Sleep, Eff_Poison, Eff_Curse, Eff_Silence, - Eff_Confusion, Eff_Blind, Eff_Bleeding, Eff_DPoison, Eff_Fear, Eff_Cold, - Eff_Burning, Eff_Deepsleep - -* Element (e) - Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, - Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All - -* Race (r) - RC_Formless, RC_Undead, RC_Brute, RC_Plant, RC_Insect, RC_Fish, - RC_Demon, RC_DemiHuman, RC_Angel, RC_Dragon, RC_Player, RC_Boss, - RC_NonBoss, RC_NonDemiHuman, RC_NonPlayer, RC_DemiPlayer, - RC_NonDemiPlayer, RC_All - -* Monster Race (mr) - RC2_Goblin, RC2_Kobold, RC2_Orc, RC2_Golem, RC2_Guardian, RC2_Ninja, - RC2_Scaraba, RC2_Turtle - -* Size (s) - Size_Small, Size_Medium, Size_Large - -* Trigger criteria (bf) - BF_WEAPON: Trigger on weapon skills - BF_MAGIC: Trigger on magic skills - BF_MISC: Trigger on misc skills - (Default: BF_WEAPON) - - BF_SHORT: Trigger on melee attacks - BF_LONG: Trigger on ranged attacks - (Default: BF_SHORT+BF_LONG) - - BF_NORMAL: Trigger on normal attacks - BF_SKILL: Trigger on skills - (Default: BF_SKILL if type is BF_MISC or BF_MAGIC, BF_NORMAL if type is BF_WEAPON) - -* Attack Trigger Criteria (abf) - ATF_SELF: Trigger on self - ATF_TARGET: Trigger on target - (Default: ATF_TARGET) - - ATF_SHORT: Trigger on melee attack - ATF_LONG: Trigger on ranged attack - (Default: ATF_SHORT+ATF_LONG) - - ATF_WEAPON: Trigger on Weapon Skills - ATF_MAGIC: Trigger on magic attacks - ATF_MISC: Trigger on misc skills - ATF_SKILL: Trigger on skill attack - (Default: ATF_WEAPON) - -ATF_SELF: Trigger effect on self. - ATF_TARGET: Trigger effect on target (default) - ATF_SHORT: Trigger on melee attacks - ATF_LONG: Trigger in ranged attacks (default: trigger on all attacks) -* Other values: - Skill (sk): see 'db/(pre-)re/skill_db.txt' (NOTE: Both skill IDs and names, with and without quotes, are supported.) - Monster id (mid): see 'db/(pre-)re/mob_db.txt' - Item id (id): see 'db/(pre-)re/item_db.conf' - Item chain (ic): see 'db/(pre-)re/item_chain.conf' (Only Constants) - Item group (ig): see 'db/(pre-)re/item_group.conf' (ItemID) - Weapon type (w): see 'doc/item_db.txt' -> View -> Weapons - Class (c): see 'db/(pre-re)/mob_db.txt' -> For Players, c = JobID - -Bonuses -------- -The format of bonuses listed in this file is as follows: - 1. Basic Bonuses - 2. Extended Bonuses - 3. Group-specific Bonuses - 4. Status-related Bonuses - 5. AutoSpell Bonuses - 6. Misc Bonuses - -==================== -| 1. Basic Bonuses | -==================== - -Base Stats ----------- -bonus bStr,n; STR + n -bonus bAgi,n; AGI + n -bonus bVit,n; VIT + n -bonus bInt,n; INT + n -bonus bDex,n; DEX + n -bonus bLuk,n; LUK + n -bonus bAgiVit,n; AGI + n, VIT + n -bonus bAgiDexStr,n; STR + n, AGI + n, DEX + n -bonus bAllStats,n; STR + n, AGI + n, VIT + n, INT + n, DEX + n, LUK + n - -HP/SP ------ -bonus bMaxHP,n; MaxHP + n -bonus bMaxHPrate,n; MaxHP + n% -bonus bMaxSP,n; MaxSP + n -bonus bMaxSPrate,n; MaxSP + n% - -Attack/Def ----------- -bonus bAtk,n; ATK + n -bonus bAtk2,n; ATK2 + n -bonus bAtkRate,n; Attack Power + n% -bonus bBaseAtk,n; Basic Attack Power + n -bonus bDef,n; Equipment DEF + n -bonus bDef2,n; VIT based DEF + n -bonus bDefRate,n; Equipment DEF + n% -bonus bDef2Rate,n; VIT based DEF + n% - -Magic Attack/Def ----------------- -bonus bMatk,n; Magical attack power + n -bonus bMatkRate,n; Magical attack power + n% -bonus bMdef,n; Equipment MDEF + n -bonus bMdef2,n; INT based MDEF + n -bonus bMdefRate,n; Equipment MDEF + n% -bonus bMdef2Rate,n; INT based MDEF + n% - -Other Stats ------------ -bonus bHit,n; Hit + n -bonus bHitRate,n; Hit + n% -bonus bCritical,n; Critical + n -bonus bCriticalRate,n; Critical + n% -bonus bFlee,n; Flee + n -bonus bFleeRate,n; Flee + n% -bonus bFlee2,n; Perfect Dodge + n -bonus bFlee2Rate,n; Perfect Dodge + n% -bonus bPerfectHitRate,n; On-target impact attack probability n% (only the highest among all is applied) -bonus bPerfectHitAddRate,n; On-target impact attack probability + n% -bonus bSpeedRate,n; Moving speed + n% (only the highest among all is applied) -bonus bSpeedAddRate,n; Moving speed + n% -bonus bAspd,n; Attack speed + n -bonus bAspdRate,n; Attack speed + n% -bonus bAtkRange,n; Attack range + n -bonus bAddMaxWeight,n; MaxWeight + n (in units of 0.1) - -======================= -| 2. Extended Bonuses | -======================= - -HP --- -bonus bHPrecovRate,n; Natural HP recovery ratio + n% -bonus2 bHPRegenRate,n,t; Gain n HP every t milliseconds -bonus2 bHPLossRate,n,t; Lose n HP every t millisecond - -SP --- -bonus bSPrecovRate,n; Natural SP recovery ratio + n% -bonus2 bSPRegenRate,n,t; Gain n SP every t milliseconds -bonus2 bSPLossRate,n,t; Lose n SP every t milliseconds -bonus bUseSPrate,n; SP consumption + n% -bonus2 bSkillUseSP,sk,n; Reduces SP consumption of skill sk by n. -bonus2 bSkillUseSPrate,sk,n; Reduces SP consumption of skill sk by n% -bonus bNoRegen,x; Stops regeneration for x (x: 1=HP, 2=SP) - -Attack/Def ----------- -bonus bNearAtkDef,n; Adds n% damage reduction against melee physical attacks -bonus bLongAtkDef,n; Adds n% damage reduction against ranged physical attacks -bonus bMagicAtkDef,n; Adds n% damage reduction against magical attacks -bonus bMiscAtkDef,n; Adds n% damage reduction against MISC attacks (traps, falcon, ...) -bonus bCriticalDef,n; Decreases Chance of being hit by critical by n% - -bonus2 bSkillAtk,sk,n; Increase damage of skill sk by n% -bonus2 bWeaponAtk,w,n; Adds n ATK when weapon of type w is equipped -bonus2 bWeaponAtkRate,w,n; Adds n% damage to weapon attacks when weapon of type w is equipped -bonus bLongAtkRate,n; Increases damage of ranged attacks by n% -bonus bCritAtkRate,n; Increase critical damage by +n% - -bonus bNoWeaponDamage,n; Prevents from receiving n% physical damage -bonus bNoMagicDamage,n; Prevents from receiving n% magical effect (Attack, Healing, Support spells are all blocked) -bonus bNoMiscDamage,n; Adds n% reduction to received misc damage - -Heal ----- -bonus bHealPower,n; Increase heal amount of all heal skills used by player on self by n% -bonus bHealPower2,n; Increase heal amount if you are healed by any skills of others by n% - -bonus2 bSkillHeal,sk,n; Increase heal amount of skill sk by n% -bonus2 bSkillHeal2,sk,n; Increase heal amount if you are healed by skill sk by n% - -bonus bAddItemHealRate,n; Increases HP recovered by n% for healing items. -bonus2 bAddItemHealRate,id,n; Increases HP recovered by n% for item id/ig - -Skill Cast ----------- -bonus bCastrate,n; Skill casting time rate + n% -bonus2 bCastrate,sk,n; Adjust casting time of skill sk by n% - -bonus bFixedCastrate,n; Increases fixed cast time of all skills by n% -bonus2 bFixedCastrate,s,n; Increases fixed cast time of skill sk by n% -bonus bFixedCast,t; Increases fixed cast time of all skills by t milliseconds -bonus2 bSkillFixedCast,sk,t; Increases fixed cast time of skill sk by t milliseconds - -bonus bVariableCastrate,n; Increases variable cast time of all skills by n% -bonus2 bVariableCastrate,sk,n; Increases variable cast time of skill sk by n% -bonus bVariableCast,t; Increases variable cast time of all skills by t milliseconds -bonus2 bSkillVariableCast,sk,t; Increases variable cast time of skill sk by t milliseconds - -bonus bNoCastCancel,n; Prevents casting from being interrupted when hit (does not work in GvG | n is meaningless) -bonus bNoCastCancel2,n; Prevents casting from being interrupted when hit (works even in GvG | n is meaningless) - -bonus bDelayrate,n; Increases skill delay by n% -bonus2 bSkillCooldown,sk,t; Increases cooldown of skill sk by t milliseconds - -============================= -| 3. Group-specific Bonuses | -============================= - -Damage Modifiers ----------------- -bonus2 bAddSize,s,n; +n% Physical damage against size s -bonus2 bMagicAddSize,s,n; +n% Magical damage against size s -bonus2 bSubSize,s,n; +n% Damage reduction against size s - -bonus2 bAddRaceTolerance,r,n; +n% tolerance against race r (Renewal Only) - -bonus2 bAddRace,r,n; +n% Physical damage against race r -bonus2 bMagicAddRace,n,x; +n% Magical damage against race r -bonus2 bSubRace,r,n; +n% Damage reduction against race r - -bonus2 bAddRace2,mr,n; +n% Damage Against monster race mr -bonus2 bSubRace2,mr,n; +n% Damage reduction against monster race mr - -bonus2 bAddEle,e,n; +n% Physical damage against element e -bonus2 bMagicAddEle,e,n; +n% Magical damage against element e -bonus2 bMagicAtkEle,e,n; Increases damage of element e magic by n% -bonus3 bAddEle,e,n,bf; +n% physical damage against element e -bonus2 bSubEle,e,n; +n% Damage reduction against element e -bonus3 bSubEle,e,n,bf; +n% Damage reduction against element e. - -bonus2 bAddDamageClass,c,x; +n% extra physical damage against monsters of class c -bonus2 bAddMagicDamageClass,c,x; +n% extra magical damage against monsters of class c -bonus2 bAddDefClass,c,x; +n% physical damage reduction against monsters of class c -bonus2 bAddMDefClass,c,x; +n% magical damage reduction against monsters of class c -bonus2 bCriticalAddRace,r,n; +n Critical Against race r - -Attack/Def ----------- -bonus bAtkEle,e; Gives the player's attacks element e -bonus bDefEle,e; Gives the player's defense element e - -bonus bDefRatioAtkEle,e; Deals more damage to enemies of element e with higher defense -bonus bDefRatioAtkRace,r; Deals more damage to enemies of race r with higher defense - -bonus4 bSetDefRace,r,n,t,y; Set DEF to y of an enemy of race r at n/100% for t milliseconds with normal attack -bonus4 bSetMDefRace,r,n,t,y; Set MDEF to y of an enemy of race r at n/100% for t milliseconds with normal attack - -Ignore Def ----------- -bonus bIgnoreDefRace,r; Disregard DEF against enemies of race r -bonus bIgnoreMDefRace,r; Disregard MDEF against enemies of race r - -bonus bIgnoreDefEle,e; Disregard DEF against enemies of element e -bonus bIgnoreMDefEle,e; Disregard MDEF against enemies of element e - -bonus2 bIgnoreDefRate,r,n; Disregard n% of the target's DEF if the target belongs to race r -bonus2 bIgnoreMdefRate,r,n; Disregard n% of the target's MDEF if the target belongs to race r - -bonus bIgnoreMdefRate,n; Disregard n% of the target's MDEF - -Experience ----------- -bonus2 bExpAddRace,r,n; +n% Experience from enemies of race r - -============================= -| 4. Status-related Bonuses | -============================= -bonus2 bResEff,e,n; Adds a n/100% tolerance to effect e -bonus2 bAddEff,eff,n; Adds a n/100% chance to cause effect eff to the target when attacking -bonus2 bAddEff2,eff,n; Adds a n/100% chance to cause effect eff on self when attacking. -bonus3 bAddEff,eff,n,abf; Adds a n/100% chance to cause effect eff to the target when attacking for target abf -bonus4 bAddEff,eff,n,abf,t; Adds a n/100% chance to cause effect eff to the target when attacking for target abf for t milliseconds - (Note:The effect can't be avoided nor its duration reduced. Duration: 0-65535) -bonus3 bAddEffOnSkill,sk,eff,n; Adds a n/100% chance to cause effect eff on enemy when using skill sk -bonus4 bAddEffOnSkill,sk,eff,n,abf; Adds a n/100% chance to cause effect eff when using skill sk - -bonus2 bAddEffWhenHit,eff,n; n/100% chance to cause effect eff to the enemy when being hit by physical damage -bonus3 bAddEffWhenHit,eff,n,abf; Adds a n/100% chance to cause effect eff to the enemy when being hit by physical damage - -bonus2 bWeaponComaRace,r,n; Adds a n/100% chance to cause Coma when attacking a monster of race r with a weapon attack -bonus2 bWeaponComaEle,e,n; Adds a n/100% chance to cause Coma when attacking a monster of element e with weapon attack - -======================== -| 5. AutoSpell Bonuses | -======================== -NOTES: - - For all AutoSpell bonuses, target must be within the spell's range to go off. - - By default, AutoSpell skills are casted on target unless it is a self or support skill (inf = 4/16). - -bonus4 bAutoSpellOnSkill,sk,x,y,n; Adds a n/10% chance to autospell skill x at level y when using skill sk -bonus5 bAutoSpellOnSkill,sk,x,y,n,i; Adds a n/10% chance to autospell skill x at level y when using skill sk - i: Flags (bitfield) - &1: Forces the skill to be casted on self, rather than on the target of skill sk - &2: Random skill level between 1 and l is chosen. - -bonus4 bAutoSpell,sk,y,n,i; n/10% chance to cast skill sk of level y when attacking -bonus5 bAutoSpell,sk,y,n,bf,i; n/10% chance to cast skill sk of level y when attacking -bonus4 bAutoSpellWhenHit,sk,y,n,i; n/10% chance to cast skill sk of level y when being hit by a direct attack -bonus5 bAutoSpellWhenHit,sk,y,n,bf,i; n/10% chance to cast skill sk of level y when being hit by a direct attack - i: - 0 = cast on self - 1 = cast on enemy, not on self - 2 = use random skill lv in [1..y] - 3 = 1+2 (random lv on enemy) - -bonus3 bAutoSpellWhenHit,sk,x,n; n/10% chance to cast skill sk of level x on attacker when being hit by a direct attack -bonus3 bAutoSpell,sk,x,n; Auto Spell casting on attack of spell sk at level x with n/10% chance - -=================== -| 6. Misc Bonuses | -=================== - -HP/SP Drain ------------ -bonus bHPDrainValue,n; Heals +n HP with weapon attack. -bonus2 bHPDrainValue,n,x; Heals +n HP with weapon attack. When x is non-zero, the HP is drained instead. -bonus2 bHPDrainRate,n,x; n/10% probability to drain x% HP when attacking - -bonus bSPDrainValue,n; When hitting a monster by physical attack, you gain n SP -bonus2 bSPDrainRate,n,x; n/10% probability to drain x% SP when attacking -bonus2 bSPDrainValue,n,x; When hitting a monster by physical attack - x: - 0: Gain n SP - 1: drain n SP from target -bonus3 bSPDrainRate,n,x,y; When attacking there is a n/10% chance to either gain SP equivalent to x% of damage dealt, - OR drain the amount of sp from the enemy. - y: - 0: Gain SP - 1: Drain SP from target - -bonus2 bHPDrainValueRace,r,n; Heals +n HP when attacking a monster of race r with weapon attack. -bonus2 bSPDrainValueRace,r,n; Heals +n SP when attacking a monster of race r with weapon attack. - -bonus3 bHPDrainRateRace,r,n,x; Adds a n/10% chance to receive x% of damage dealt as HP from a monster of race r with weapon attack. -bonus3 bSPDrainRateRace,r,n,x; Adds a n/10% chance to receive x% of damage dealt as SP from a monster of race r with weapon attack. - -HP/SP Vanish ------------- -bonus2 bHPVanishRate,n,x; Add the (n/10)% chance of decreasing enemy HP amount by x% when attacking -bonus2 bSPVanishRate,n,x; Add the (n/10)% chance of decreasing enemy SP amount by x% when attacking - -bonus3 bHPVanishRate,n,x,bf; Add the (n/10)% chance of decreasing enemy HP amount by x% when attacking for criteria bf -bonus3 bSPVanishRate,n,x,bf; Add the (n/10)% chance of decreasing enemy SP amount by x% when attacking for criteria bf - -HP/SP Gain ----------- -bonus bHPGainValue,n; When killing a monster by physical attack, you gain n HP -bonus bSPGainValue,n; When killing a monster by physical attack, you gain n SP - -bonus bMagicHPGainValue,n; Gains +n HP when killing an enemy with magic attack -bonus bMagicSPGainValue,n; Gains +n SP when killing an enemy with magic attack - -bonus2 bHPGainRaceAttack,r,n; Heals n HP when attacking Race r on every hit -bonus2 bSPGainRaceAttack,r,n; Heals n SP when attacking Race r on every hit - -bonus2 bSPGainRace,r,n; When killing a monster of race r by physical attack gain n SP - -Damage return -------------- -bonus bMagicDamageReturn,n; Adds a n% chance to reflect targetted magic spells back to the enemy that caused it -bonus bShortWeaponDamageReturn,n; Reflects n% of received melee damage back to the enemy that caused it -bonus bLongWeaponDamageReturn,n; Reflects n% of received ranged damage back to the enemy that caused it - -Strip/Break equipment ---------------------- -NOTE: - - n is meaningless if not mentioned. -bonus bUnstripable,n; Equipment cannot be taken off via strip skills -bonus bUnstripableWeapon,n; Weapon cannot be taken off via Strip skills -bonus bUnstripableArmor,n; Armor cannot be taken off via Strip skills -bonus bUnstripableHelm,n; Helm cannot be taken off via Strip skills -bonus bUnstripableShield,n; Shield cannot be taken off via Strip skills - -bonus bUnbreakable,n; Reduces the break chance of all equipped equipment by n%. -bonus bUnbreakableGarment,n; Garment cannot be damaged/broken by any means -bonus bUnbreakableWeapon,n; Weapon cannot be damaged/broken by any means -bonus bUnbreakableArmor,n; Armor cannot be damaged/broken by any means -bonus bUnbreakableHelm,n; Helm cannot be damaged/broken by any means -bonus bUnbreakableShield,n; Shield cannot be damaged/broken by any means -bonus bUnbreakableShoes,n; Shoes cannot be damaged/broken by any means - -bonus bBreakWeaponRate,n; Adds a n/100% chance to break enemy's weapon while attacking (Stackable) -bonus bBreakArmorRate,n; Adds a n/100% chance to break enemy's armor while attacking (Stackable) - -Monster Related ---------------- -bonus3 bAddClassDropItem,id,c,n; Adds a n/100% chance of dropping item id when killing monster mid - -bonus2 bAddMonsterDropItem,id,n; Adds a n/100% chance for item id to be dropped, when killing any monster. -bonus3 bAddMonsterDropItem,id,r,n; Adds a n/100% chance for item id to be dropped, when killing any monster of race r. - If 'n' is negative value, then it's a part of formula - chance = -y*(killed_mob_level/10)+1 - -bonus bAddMonsterDropChainItem,ic; Able to get Item of chain ic when you kill a monster -bonus2 bAddMonsterDropChainItem,ic,r; Able to get item of chain ic when you kill a monster of race r - -bonus2 bGetZenyNum,x,n; When killing a monster, there is a n% chance of gaining 1~x zeny (only the highest among all is applied). -bonus2 bAddGetZenyNum,x,n; When killing a monster, there is a n% chance of gaining 1~x zeny (Stackable) - x: - < 0: Max Zeny gain is (-x*monster_level) - -Misc effects ------------- -skill i,n; Gives skill #i at level n - -bonus bDoubleRate,n; Double Attack probability +n% (works with all weapons | only the highest among all is applied) -bonus bDoubleAddRate,n; Double Attack probability +n% (works with all weapons) - -bonus bSplashRange,n; Splash attack radius +n (highest is applied) -bonus bSplashAddRange,n; Splash attack radius + n (e.g. n=1 makes a 3*3 cells area, n=2 a 5*5 area, etc) - n: - 1: 3*3 Area - 2: 5*5 Area - ... - -bonus bClassChange,n; Gives a n/100% chance to change the attacked monster's class with normal attack. -bonus bAddStealRate,n; n/100% increase to Steal skill success chance -bonus bRestartFullRecover,n; When reviving, HP and SP are fully healed -bonus bNoSizeFix,n; The attack revision with the size of the monster is not received -bonus bNoGemStone,n; Skills requiring Gemstones do no require them (Hocus Pocus will still require 1 Yellow Gemstone) -bonus bIntravision,n; Always see Hiding and Cloaking players/mobs - n: is meaningless - -bonus2 bAddSkillBlow,sk,n; Knockbacks the target by n cells when using skill sk -bonus bNoKnockback,n; Character is no longer knocked back by enemy skills with such effect (n is meaningless) - -bonus bPerfectHide,n; Hidden/cloaked character is no longer detected by monsters with 'detector' mode (n is meaningless). diff --git a/doc/mob_db_mode_list.md b/doc/mob_db_mode_list.md new file mode 100644 index 000000000..a8ad4fa0a --- /dev/null +++ b/doc/mob_db_mode_list.md @@ -0,0 +1,72 @@ +# Hercules Monster Modes Reference + +<!-- +## Copyright +> This file is part of Hercules. +> http://herc.ws - http://github.com/HerculesWS/Hercules +> +> Copyright (C) 2012-2018 Hercules Dev Team +> Copyright (C) Athena Dev Teams +> +> Hercules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +> +> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +> See the GNU General Public License for more details. +> +> You should have received a copy of the GNU General Public License along with this program. +> If not, see <http://www.gnu.org/licenses/>. +--> + +## Description +A reference description of Hercules's mob_db.conf `mode` field. + +## Monster Mode Legend: +Constant Name | Bits | Value | Description +:-------------------- | :-----: | :------: | :---------------- +MD_CANMOVE | 0x00001 | 1 | Enables the mob to move/chase characters. +MD_LOOTER | 0x00002 | 2 | The mob will loot up nearby items on the ground when it's on idle state. +MD_AGGRESSIVE | 0x00004 | 4 | Normal aggressive mob, will look for a close-by player to attack. +MD_ASSIST | 0x00008 | 8 | When a nearby mob of the same class attacks, assist types will join them. +MD_CASTSENSOR_IDLE | 0x00010 | 16 | Will go after characters who start casting on them if idle or walking (without a target). +MD_BOSS | 0x00020 | 32 | Special flag which makes mobs immune to certain status changes and skills. +MD_PLANT | 0x00040 | 64 | Always receives 1 damage from attacks. +MD_CANATTACK | 0x00080 | 128 | Enables the mob to attack/retaliate when you are within attack range. <br/>Note that this only enables them to use normal attacks, skills are always allowed. +MD_DETECTOR | 0x00100 | 256 | Enables mob to detect and attack characters who are in hiding/cloak. +MD_CASTSENSOR_CHASE | 0x00200 | 512 | Will go after characters who start casting on them if idle or chasing other players (they switch chase targets) +MD_CHANGECHASE | 0x00400 | 1024 | Allows chasing mobs to switch targets if another player happens to be within attack range (handy on ranged attackers, for example) +MD_ANGRY | 0x00800 | 2048 | These mobs are "hyper-active". Apart from "chase"/"attack", they have the states "follow"/"angry". </br>Once hit, they stop using these states and use the normal ones. The new states are used to determine a different skill-set for their "before attacked" and "after attacked" states. </br>Also, when "following", they automatically switch to whoever character is closest. +MD_CHANGETARGET_MELEE | 0x01000 | 4096 | Enables a mob to switch targets when attacked while attacking someone else. +MD_CHANGETARGET_CHASE | 0x02000 | 8192 | Enables a mob to switch targets when attacked while chasing another character. +MD_TARGETWEAK | 0x04000 | 16384 | Allows aggressive monsters to only be aggressive against characters that are five levels below it's own level. </br>For example, a monster of level 104 will not pick fights with a level 99. +MD_NOKNOCKBACK | 0x08000 | 32768 | Monsters will be immune to knockback's effect. +MD_RANDOMTARGET | 0x10000 | 65536 | Picks a new random target in range on each attack/skill. (not implemented) + +## Aegis Mob Types: +What Aegis has are mob-types, where each type represents an AI behavior that is mimicked by a group of eA mode bits. +This is the table to convert from one to another: + +No. | Bits | Mob Type | Aegis/eA Description +--: | :----: | :------: | :---------------- + 01 | 0x0081 | Any | passive + 02 | 0x0083 | Any | passive, looter + 03 | 0x1089 | Any | passive, assist and change-target melee + 04 | 0x3885 | Any | angry, change-target melee/chase + 05 | 0x2085 | Any | aggressive, change-target chase + 06 | 0x0000 | Plants | passive, immobile, can't attack + 07 | 0x108B | Any | passive, looter, assist, change-target melee + 08 | 0x6085 | Any | aggressive, change-target chase, target weak enemies + 09 | 0x3095 | Guardian | aggressive, change-target melee/chase, cast sensor idle + 10 | 0x0084 | Any | aggressive, immobile + 11 | 0x0084 | Guardian | aggressive, immobile + 12 | 0x2085 | Guardian | aggressive, change-target chase + 13 | 0x308D | Any | aggressive, change-target melee/chase, assist + 17 | 0x0091 | Any | passive, cast sensor idle + 19 | 0x3095 | Any | aggressive, change-target melee/chase, cast sensor idle + 20 | 0x3295 | Any | aggressive, change-target melee/chase, cast sensor idle/chase + 21 | 0x3695 | Any | aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target + 25 | 0x0001 | Pet | passive, can't attack + 26 | 0xB695 | Any | aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target, random target + 27 | 0x8084 | Any | aggressive, immobile, random target + +- Note that the detector bit due to being Insect/Demon, Plant and Boss mode bits need to be added independently of this list. + diff --git a/doc/mob_db_mode_list.txt b/doc/mob_db_mode_list.txt deleted file mode 100644 index 32e7a0e8d..000000000 --- a/doc/mob_db_mode_list.txt +++ /dev/null @@ -1,113 +0,0 @@ -//===== Hercules Documentation =============================== -//= Hercules Monster Modes Reference -//===== By: ================================================== -//= Hercules Dev Team -//===== Current Version: ===================================== -//= 20120630 -//===== Description: ========================================= -//= A reference description of Hercules' mob_db 'mode' field. -//============================================================ - -Bit Legend: -------------------------------------------------------------------------------- - -MD_CANMOVE | 0x00001 | 1 -MD_LOOTER | 0x00002 | 2 -MD_AGGRESSIVE | 0x00004 | 4 -MD_ASSIST | 0x00008 | 8 -MD_CASTSENSOR_IDLE | 0x00010 | 16 -MD_BOSS | 0x00020 | 32 -MD_PLANT | 0x00040 | 64 -MD_CANATTACK | 0x00080 | 128 -MD_DETECTOR | 0x00100 | 256 -MD_CASTSENSOR_CHASE | 0x00200 | 512 -MD_CHANGECHASE | 0x00400 | 1024 -MD_ANGRY | 0x00800 | 2048 -MD_CHANGETARGET_MELEE | 0x01000 | 4096 -MD_CHANGETARGET_CHASE | 0x02000 | 8192 -MD_TARGETWEAK | 0x04000 | 16384 -MD_NOKNOCKBACK | 0x08000 | 32768 -MD_RANDOMTARGET | 0x10000 | 65536 (not implemented) - -Explanation for modes: -------------------------------------------------------------------------------- - -CanMove: Enables the mob to move/chase characters. - -CanAttack: Enables the mob to attack/retaliate when you are within attack - range. Note that this only enables them to use normal attacks, skills are - always allowed. - -Looter: The mob will loot up nearby items on the ground when it's on idle state. - -Aggressive: normal aggressive mob, will look for a close-by player to attack. - -Assist: When a nearby mob of the same class attacks, assist types will join them. - -Cast Sensor Idle: Will go after characters who start casting on them if idle - or walking (without a target). - -Cast Sensor Chase: Will go after characters who start casting on them if idle - or chasing other players (they switch chase targets) - -Boss: Special flag which makes mobs immune to certain status changes and skills. - -Plant: Always receives 1 damage from attacks. - -Detector: Enables mob to detect and attack characters who are in hiding/cloak. - -ChangeChase: Allows chasing mobs to switch targets if another player happens - to be within attack range (handy on ranged attackers, for example) - -Angry: These mobs are "hyper-active". Apart from "chase"/"attack", they have - the states "follow"/"angry". Once hit, they stop using these states and use - the normal ones. The new states are used to determine a different skill-set - for their "before attacked" and "after attacked" states. Also, when - "following", they automatically switch to whoever character is closest. - -Change Target Melee: Enables a mob to switch targets when attacked while - attacking someone else. - -Change Target Chase: Enables a mob to switch targets when attacked while - chasing another character. - -Target Weak: Allows aggressive monsters to only be aggressive against - characters that are five levels below it's own level. - For example, a monster of level 104 will not pick fights with a level 99. - -NoKnockback: Monsters will be immune to Knockback's. - -Random Target: Picks a new random target in range on each attack / skill. - (not implemented) - -Aegis Mob Types: -------------------------------------------------------------------------------- - -What Aegis has are mob-types, where each type represents an AI behavior that -is mimicked by a group of eA mode bits. This is the table to convert from one -to another: - -Aegis/eA (description) -01: 0x0081 (passive) -02: 0x0083 (passive, looter) -03: 0x1089 (passive, assist and change-target melee) -04: 0x3885 (angry, change-target melee/chase) -05: 0x2085 (aggressive, change-target chase) -06: 0x0000 (passive, immobile, can't attack) [plants] -07: 0x108B (passive, looter, assist, change-target melee) -08: 0x6085 (aggressive, change-target chase, target weak enemies) -09: 0x3095 (aggressive, change-target melee/chase, cast sensor idle) [Guardian] -10: 0x0084 (aggressive, immobile) -11: 0x0084 (aggressive, immobile) [Guardian] -12: 0x2085 (aggressive, change-target chase) [Guardian] -13: 0x308D (aggressive, change-target melee/chase, assist) -17: 0x0091 (passive, cast sensor idle) -19: 0x3095 (aggressive, change-target melee/chase, cast sensor idle) -20: 0x3295 (aggressive, change-target melee/chase, cast sensor idle/chase) -21: 0x3695 (aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target) -25: 0x0001 (passive, can't attack) [Pet] -26: 0xB695 (aggressive, change-target melee/chase, cast sensor idle/chase, chase-change target, random target) -27: 0x8084 (aggressive, immobile, random target) - -- Note that the detector bit due to being Insect/Demon, plant and Boss mode - bits need to be added independently of this list. diff --git a/doc/quest_variables.md b/doc/quest_variables.md new file mode 100644 index 000000000..2f8922c41 --- /dev/null +++ b/doc/quest_variables.md @@ -0,0 +1,262 @@ +# Quest Variables + +<!-- +## Copyright +> This file is part of Hercules. +> http://herc.ws - http://github.com/HerculesWS/Hercules +> +> Copyright (C) 2012-2018 Hercules Dev Team +> Copyright (C) Athena Dev Teams +> +> Hercules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +> +> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +> See the GNU General Public License for more details. +> +> You should have received a copy of the GNU General Public License along with this program. +> If not, see <http://www.gnu.org/licenses/>. +--> + +## Description +This file should help to understand and manage bit-wise quest variables. +You can store up to 31 boolean value into a single variable. + +## Sample Variable: `MISC_QUEST` + +Quest # No | Sample Quest +:-------------| :------------ +Description | How to assign a bit-wise value and check it. +Assign Value | ```MISC_QUEST = MISC_QUEST \| X;``` +Check Value | ```if (MISC_QUEST & X) { ... }``` + +- Where `X` refer to the bit-wise value that could be used to represent the state/progress of a quest. + +-------------------------------------------------------------- + +## Example + +Quest # 1 | Juice Maker Quest +:-------------| :------------ +Description | How to make juices. This bit keeps final state of the quest. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 1;``` +Check Value | ```if (MISC_QUEST & 1) { ... }``` + +Quest # 2 | Tempestra Quest +:-------------| :------------ +Description | Determines if player has given a potion to Tempestra. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 2;``` +Check Value | ```if (MISC_QUEST & 2) { ... }``` + +Quest # 3 | Morgenstein Quest +:-------------| :------------ +Description | How to make Mixture & Counteragent. This bit keeps final state of the quest. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 4;``` +Check Value | ```if (MISC_QUEST & 4) { ... }``` + +Quest # 4 | Prontera Culvert Quest +:-------------| :------------ +Description | Determines if player can enter Prontera Culverts. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 8;``` +Check Value | ```if (MISC_QUEST & 8) { ... }``` + +Quest # 5 | Edgar's Offer +:-------------| :------------ +Description | Cheap ticket from Izlude to Alberta. This bit keeps final state of the quest. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 16;``` +Check Value | ```if (MISC_QUEST & 16) { ... }``` + +Quest # 6 | Piano Quest +:-------------| :------------ +Description | The only way from Niflheim to Umbala. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 32;``` +Check Value | ```if (MISC_QUEST & 32) { ... }``` + +Quest # 7 | Bio Ethics Quest +:-------------| :------------ +Description | Quest for homunculus skill for alchemists. This bit keeps final state of the quest. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 64;``` +Check Value | ```if (MISC_QUEST & 64) { ... }``` + +Quest # 8 | DTS Warper +:-------------| :------------ +Description | Determines if player has already voted. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 128;``` +Check Value | ```if (MISC_QUEST & 128) { ... }``` + +Quest # 9 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 256;``` +Check Value | ```if (MISC_QUEST & 256) { ... }``` + +Quest # 10 | Cube Room +:-------------| :------------ +Description | Lighthalzen Cube Room quest (to enter Bio-Lab) +Assign Value | ```MISC_QUEST = MISC_QUEST \| 512;``` +Check Value | ```if (MISC_QUEST & 512) { ... }``` + +Quest # 11 | Reset Skills Event +:-------------| :------------ +Description | Yuno, Hypnotist Teacher +Assign Value | ```MISC_QUEST = MISC_QUEST \| 1024;``` +Check Value | ```if (MISC_QUEST & 1024) { ... }``` + +Quest # 12 | Slotted Arm Guard Quest +:-------------| :------------ +Description | Ninja Job Room, Boshuu +Assign Value | ```MISC_QUEST = MISC_QUEST \| 2048;``` +Check Value | ```if (MISC_QUEST & 2048) { ... }``` + +Quest # 13 | Improved Arm Guard Quest +:-------------| :------------ +Description | Ninja Job Room, Basshu +Assign Value | ```MISC_QUEST = MISC_QUEST \| 4096;``` +Check Value | ```if (MISC_QUEST & 4096) { ... }``` + +Quest # 14 | Rachel Sanctuary Quest +:-------------| :------------ +Description | Determines if player can access Rachel Santuary. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 8192;``` +Check Value | ```if (MISC_QUEST & 8192) { ... }``` + +Quest # 15 | Message Delivery Quest +:-------------| :------------ +Description | Send a message to Elly, in Niflheim from Erious. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 16384;``` +Check Value | ```if (MISC_QUEST & 16384) { ... }``` + +Quest # 16 | Umbala Domestic Dispute? +:-------------| :------------ +Description | Reward: 1 Yggdrasil Leaf. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 32768;``` +Check Value | ```if (MISC_QUEST & 32768) { ... }``` + +Quest # 17 | Access to the Turtle Island +:-------------| :------------ +Description | Reward: ~1 Old Card Album , Old Violet Box, GB. +Assign Value | ```MISC_QUEST = MISC_QUEST \| 65536;``` +Check Value | ```if (MISC_QUEST & 65536) { ... }``` + +Quest # 18 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 131072;``` +Check Value | ```if (MISC_QUEST & 131072) { ... }``` + +Quest # 19 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 262144;``` +Check Value | ```if (MISC_QUEST & 262144) { ... }``` + +Quest # 20 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 524288;``` +Check Value | ```if (MISC_QUEST & 524288) { ... }``` + +Quest # 21 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 1048576;``` +Check Value | ```if (MISC_QUEST & 1048576) { ... }``` + +Quest # 22 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 2097152;``` +Check Value | ```if (MISC_QUEST & 2097152) { ... }``` + +Quest # 23 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 4194304;``` +Check Value | ```if (MISC_QUEST & 4194304) { ... }``` + +Quest # 24 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 8388608;``` +Check Value | ```if (MISC_QUEST & 8388608) { ... }``` + +Quest # 25 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 16777216;``` +Check Value | ```if (MISC_QUEST & 16777216) { ... }``` + +Quest # 26 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 33554432;``` +Check Value | ```if (MISC_QUEST & 33554432) { ... }``` + +Quest # 27 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 67108864;``` +Check Value | ```if (MISC_QUEST & 67108864) { ... }``` + +Quest # 28 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 134217728;``` +Check Value | ```if (MISC_QUEST & 134217728) { ... }``` + +Quest # 29 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 268435456;``` +Check Value | ```if (MISC_QUEST & 268435456) { ... }``` + +Quest # 30 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 536870912;``` +Check Value | ```if (MISC_QUEST & 536870912) { ... }``` + +Quest # 31 | - +:-------------| :------------ +Description | - +Assign Value | ```MISC_QUEST = MISC_QUEST \| 1073741824;``` +Check Value | ```if (MISC_QUEST & 1073741824) { ... }``` + +### Quest#32 and onwards +You had to use a new variable to store it. +The existing variable `MISC_QUEST`'s value may overflow as it already reaching the max value. +Basically the cycle repeat every 32th quests, unless the limit has been lifted in the future. + + No | Formulae | Bits Value | Accumulate +:--:|:-----------:|-----------:|-------------: + 1 | 2 ^ 0 | 1 | 1 + 2 | 2 ^ 1 | 2 | 3 + 3 | 2 ^ 2 | 4 | 7 + 4 | 2 ^ 3 | 8 | 15 + 5 | 2 ^ 4 | 16 | 31 + 6 | 2 ^ 5 | 32 | 63 + 7 | 2 ^ 6 | 64 | 127 + 8 | 2 ^ 7 | 128 | 255 + 9 | 2 ^ 8 | 256 | 511 + 10 | 2 ^ 9 | 512 | 1023 + 11 | 2 ^ 10 | 1024 | 2047 + 12 | 2 ^ 11 | 2048 | 4095 + 13 | 2 ^ 12 | 4096 | 8191 + 14 | 2 ^ 13 | 8192 | 16383 + 15 | 2 ^ 14 | 16384 | 32767 + 16 | 2 ^ 15 | 32768 | 65535 + 17 | 2 ^ 16 | 65536 | 131071 + 18 | 2 ^ 17 | 131072 | 262143 + 19 | 2 ^ 18 | 262144 | 524287 + 20 | 2 ^ 19 | 524288 | 1048575 + 21 | 2 ^ 20 | 1048576 | 2097151 + 22 | 2 ^ 21 | 2097152 | 4194303 + 23 | 2 ^ 22 | 4194304 | 8388607 + 24 | 2 ^ 23 | 8388608 | 16777215 + 25 | 2 ^ 24 | 16777216 | 33554431 + 26 | 2 ^ 25 | 33554432 | 67108863 + 27 | 2 ^ 26 | 67108864 | 134217727 + 28 | 2 ^ 27 | 134217728 | 268435455 + 29 | 2 ^ 28 | 268435456 | 536870911 + 30 | 2 ^ 29 | 536870912 | 1073741823 + 31 | 2 ^ 30 | 1073741824 | 2147483647 + diff --git a/doc/quest_variables.txt b/doc/quest_variables.txt deleted file mode 100644 index 0be144183..000000000 --- a/doc/quest_variables.txt +++ /dev/null @@ -1,108 +0,0 @@ -//===== Hercules Documentation =============================== -//= Permanent Quest Variables -//===== By: ================================================== -//= Lupus -//===== Current Version: ===================================== -//= 20120826 -//===== Description: ========================================= -//= This file should help to understand and manage bit-wise -//= quest variables. You can store up to 31 boolean value into -//= a single variable. -//============================================================ - -Variable: MISC_QUEST --------------------------------------------------------------- - -Quest: Juice Maker Quest -Info: How to make juices. This bit keeps final state of the quest. -How to set: set MISC_QUEST, MISC_QUEST | 1; -How to check: if (MISC_QUEST & 1) {} - -Quest: Tempestra Quest -Info: Determines if player has given a potion to Tempestra. -How to set: set MISC_QUEST, MISC_QUEST | 2; -How to check: if (MISC_QUEST & 2) {} - -Quest: Morgenstein Quest -Info: How to make Mixture & Counteragent. This bit keeps final state of the quest. -How to set: set MISC_QUEST, MISC_QUEST | 4; -How to check: if (MISC_QUEST & 4) {} - -Quest: Prontera Culvert Quest -Info: Determines if player can enter Prontera Culverts. -How to set: set MISC_QUEST, MISC_QUEST | 8; -How to check: if (MISC_QUEST & 8) {} - -Quest: Edgar's Offer -Info: Cheap ticket from Izlude to Alberta. This bit keeps final state of the quest. -How to set: set MISC_QUEST, MISC_QUEST | 16; -How to check: if (MISC_QUEST & 16) {} - -Quest: Piano Quest -Info: The only way from Niflheim to Umbala. -How to set: set MISC_QUEST, MISC_QUEST | 32; -How to check: if (MISC_QUEST & 32) {} - -Quest: Bio Ethics Quest -Info: Quest for homunculus skill for alchemists. This bit keeps final state of the quest. -How to set: set MISC_QUEST, MISC_QUEST|64; -How to check: if (MISC_QUEST & 64) {} - -Quest: DTS Warper -Info: Determines if player has already voted. -How to set: set MISC_QUEST, MISC_QUEST|128; -How to check: if (MISC_QUEST & 128) {} - -Quest: - -Info: - -How to set: set MISC_QUEST, MISC_QUEST | 256; -How to check: if (MISC_QUEST & 256) {} - -Quest: Cube Room -Info: Lighthalzen Cube Room quest (to enter Bio-Lab) -How to set: set MISC_QUEST, MISC_QUEST | 512; -How to check: if (MISC_QUEST & 512) {} - -Quest: Reset Skills Event -Info: Yuno, Hypnotist Teacher -How to set: set MISC_QUEST, MISC_QUEST | 1024; -How to check: if (MISC_QUEST & 1024) {} - -Quest: Slotted Arm Guard Quest -Info: Ninja Job Room, Boshuu -How to set: set MISC_QUEST, MISC_QUEST | 2048; -How to check: if (MISC_QUEST & 2048) {} - -Quest: Improved Arm Guard Quest -Info: Ninja Job Room, Basshu -How to set: set MISC_QUEST, MISC_QUEST | 4096; -How to check: if (MISC_QUEST & 4096) {} - -Quest: Rachel Sanctuary Quest -Info: Determines if player can access Rachel Santuary. -How to set: set MISC_QUEST, MISC_QUEST | 8192; -How to check: if (MISC_QUEST & 8192) {} - -Quest: Message Delivery Quest -Info: Send a message to Elly, in Niflheim from Erious. -How to set: set MISC_QUEST, MISC_QUEST | 16384; -How to check: if (MISC_QUEST & 16384) {} - -Quest: Umbala Domestic Dispute? -Info: Reward: 1 Yggdrasil Leaf. -How to set: set MISC_QUEST, MISC_QUEST | 32768; -How to check: if (MISC_QUEST & 32768) {} - -Quest: Access to the Turtle Island -Info: Reward: ~1 OCA, OVB, GB. -How to set: set MISC_QUEST, MISC_QUEST | 65536; -How to check: if (MISC_QUEST & 65536) {} - - -Variable: MISC_QUEST2 --------------------------------------------------------------- - -Quest: - -Info: - -How to set: set MISC_QUEST2, MISC_QUEST2 | ?; -How to check: if (MISC_QUEST2 & ?) {} diff --git a/doc/sample/npc_trader_sample.txt b/doc/sample/npc_trader_sample.txt index 0d50af8c5..24c53330b 100644 --- a/doc/sample/npc_trader_sample.txt +++ b/doc/sample/npc_trader_sample.txt @@ -56,3 +56,11 @@ OnMyResupply: sellitem Red_Potion,-1,49; end; } +/* demonstrate barter shop */ +prontera,159,284,4 trader Barter Shop#prt 4_M_KID1,{ +OnInit: + tradertype(NST_BARTER); + sellitem White_Herb, 100, Red_Potion, 2; + sellitem Blue_Herb, 200, Orange_Potion, 3; + end; +} diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 66b6cff90..db851128f 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -323,10 +323,12 @@ The types that a trader object can have are the following: - NST_MARKET (2) Normal NPC Market Shop (where items have limited availability and need to be refurbished) - NST_CUSTOM (3) Custom Shop (any currency, item/var/etca, check sample) +- NST_BARTER (4) Barter Shop (each item with own item currency) Unless otherwise specified via *tradertype an trader object will be defined as NST_ZENY. Note: NST_MARKET is only available with PACKETVER 20131223 or newer. +Note: NST_BARTER is only available with PACKETVER 20181226 zero or newer. See '12 - NPC Trader-Related Commands' and /doc/sample/npc_trader_sample.txt for more information regarding how to use this NPC type. @@ -714,6 +716,8 @@ MAX_BANK_ZENY - Maximum Zeny in the bank MAX_BG_MEMBERS - Maximum BattleGround members MAX_CHAT_USERS - Maximum Chat users MAX_REFINE - Maximum Refine level +MAX_MENU_OPTIONS - Maximum NPC menu options +MAX_MENU_LENGTH - Maximum NPC menu string length Send targets and status options are also hard-coded and can be found in 'doc/constants.md'. @@ -1600,21 +1604,24 @@ perfectly equivalent. --------------------------------------- *select("<option>"{, "<option>", ...}) -*prompt("<option>"{, "<option>", ...}) This function is a handy replacement for 'menu' that doesn't use a complex -label structure. It will return the number of menu option picked, -starting with 1. Like 'menu', it will also set the variable @menu to -contain the option the user picked. +label structure. It will return the number of the menu option picked, +starting with 1. If the player presses cancel, the script is terminated. - if (select("Yes:No") == 1) + if (select("Yes", "No") == 1) mes("You said yes, I know."); And like 'menu', the selected option is consistent with grouped options and empty options. -'prompt' works almost the same as select, except that when a character -clicks the Cancel button, this function will return 255 instead. +--------------------------------------- + +*prompt("<option>"{, "<option>", ...}) + +This function behaves exactly like select(), but when a player presses cancel +it returns MAX_MENU_OPTIONS and the script is not terminated. You almost always +want to use select() rather than prompt(). --------------------------------------- @@ -2574,15 +2581,12 @@ playerattached() to check for the character attached to the script. --------------------------------------- -*getnpcid(<type>{, "<npc name>"}) +*getnpcid({"<npc name>"}) Retrieves IDs of the currently invoked NPC. If a unique npc name is given, -IDs of that NPC are retrieved instead. Type specifies what ID to retrieve -and can be one of the following: - - 0 - Unit ID (GID) +IDs of that NPC are retrieved instead. -If an invalid type is given or the NPC does not exist, 0 is returned. +If the NPC does not exist, 0 is returned. --------------------------------------- @@ -6070,6 +6074,22 @@ Amount can be negative. See statusup(). --------------------------------------- +*needed_status_point(<type>, <val>, {<char_id>}); + +Returns the number of stat points needed to change the specified stat <type> by <val>. +If <val> is negative, returns the number of stat points that would be needed to +raise the specified stat from (current value - <val>) to current value. + +List of <type>: +bStr - Strength +bVit - Vitality +bInt - Intelligence +bAgi - Agility +bDex - Dexterity +bLuk - Luck + +--------------------------------------- + *bonus(<bonus type>, <val1>) *bonus2(<bonus type>, <val1>, <val2>) *bonus3(<bonus type>, <val1>, <val2>, <val3>) @@ -8623,6 +8643,18 @@ Example: --------------------------------------- +*data_to_string(<data>) + +Returns a string representation of the given data, similar to the .toString() +method in JavaScript. + +Example: + + data_to_string(DATATYPE_VAR) // "DATATYPE_VAR" + data_to_string(.@foo) // ".@foo" + +--------------------------------------- + *charisalpha("<string>", <position>) This function will return true if the character number Position in the given @@ -9945,6 +9977,7 @@ when the optional NPC_Name param is used. --------------------------------------- *sellitem(<Item_ID>{, <price>{, <qty>}}) +*sellitem(<Item_ID>, <qty>, <currency_id>, <currency_amount>) adds (or modifies) <Item_ID> data to the shop, when <price> is not provided (or when it is -1) itemdb default is used. @@ -9953,11 +9986,15 @@ qty is only necessary for NST_MARKET trader types. when <Item_ID> is already in the shop, the previous data (price/qty), is overwritten with the new. +currency_id and currency_amount can be used only with shop type NST_BARTER + --------------------------------------- *stopselling(<Item_ID>) +*stopselling(<Item_ID>{, <currency_id>, <currency_amount>}) attempts to remove <Item_ID> from the current shop list. +currency_id and currency_amount can be used only with shop type NST_BARTER --------------------------------------- @@ -10247,3 +10284,80 @@ Update already opened preview window with item from Works for 20181017 RE and main clients or newer. --------------------------------------- + +*enchantitem(<equip_pos>, <card_slot>, <card_id>); + +Insert card into equipped item in EQI_* slot. +card_slot - can be 0 to 3. +card_id - any card item id. + +returns true if all parameters correct +false in other case. +Works for 20160831 main, 20151118 RE, any zero version + +--------------------------------------- + +*servicemessage("<message>", <color>{, <account_id>}) +*servicemessage("<message>", <color>{, <player_name>}) + +That command will send a service message to the chat window of the character +specified by account ID or name, or to connected to npc player. +It will not be seen by anyone else. + +Works for 20170830 RE and main and for any zero clients + +--------------------------------------- + +*expandInventoryAck(<result>{, <itemId>}) + +Send initial inventory expansion result. +Normally this function should be called from script label +inventory_expansion::OnInventoryExpandRequest. + +Valid result statuses: + EXPAND_INVENTORY_ASK_CONFIRMATION - force client to ask player about inventory expansion + EXPAND_INVENTORY_FAILED - other failed reason + EXPAND_INVENTORY_OTHER_WORK - failed because player busy with other work + EXPAND_INVENTORY_MISSING_ITEM - failed because missing item + EXPAND_INVENTORY_MAX_SIZE - failed because inventory size already maximum + +ItemId make sense only if result is EXPAND_INVENTORY_ASK_CONFIRMATION +Works for 20181212 zero clients + +--------------------------------------- + +*expandInventoryResult(<result>) + +Send final inventory expansion result. +Normally this function should be called from script label +inventory_expansion::OnInventoryExpandConfirmed. + +Valid result values: + EXPAND_INVENTORY_RESULT_SUCCESS - success message + EXPAND_INVENTORY_RESULT_FAILED - other failed reason + EXPAND_INVENTORY_RESULT_OTHER_WORK - failed because player busy with other work + EXPAND_INVENTORY_RESULT_MISSING_ITEM - failed because missing item + EXPAND_INVENTORY_RESULT_MAX_SIZE - failed because inventory size already maximum + +Works for 20181212 zero clients + +--------------------------------------- + +*expandInventory(<value>) + +Adjust player inventory to given value. +Maximum inventory size is MAX_INVENTORY. +Minimum inventory size is FIXED_INVENTORY_SIZE. +For supported clients it send inventory change packet. For old clients, +this change is silent. +Current max inventory size can be read by function getInventorySize(). + +--------------------------------------- + +*getInventorySize() + +Return current player max inventory size. +This value always smaller or equal to MAX_INVENTORY. +Size can be changed by group of functions expandInventory* + +--------------------------------------- |