diff options
author | Led Mitz <smoothshifter@tuta.io> | 2023-07-14 15:42:42 +0000 |
---|---|---|
committer | Led Mitz <smoothshifter@tuta.io> | 2023-07-14 15:42:42 +0000 |
commit | ff30d15b053dfa68b825320c94451d19545e7264 (patch) | |
tree | faabde58de069fd2cee0e837a7ac762f3518a435 | |
parent | d8eb983f077617326bf86900a9f249ab9171d4dd (diff) | |
parent | b048e5c26c46f542d99b4f0660fb8bf85e7f0edf (diff) | |
download | serverdata-ff30d15b053dfa68b825320c94451d19545e7264.tar.gz serverdata-ff30d15b053dfa68b825320c94451d19545e7264.tar.bz2 serverdata-ff30d15b053dfa68b825320c94451d19545e7264.tar.xz serverdata-ff30d15b053dfa68b825320c94451d19545e7264.zip |
Merge branch 'mob_kill_handler' into 'master'
mob kill handler
See merge request legacy/serverdata!663
-rw-r--r-- | world/map/npc/functions/global_event_handler.txt | 1 | ||||
-rw-r--r-- | world/map/npc/functions/mob_points.txt | 285 | ||||
-rw-r--r-- | world/map/npc/mobs/mob_kill_handler.txt | 66 | ||||
-rw-r--r-- | world/map/npc/mobs/mob_points.txt | 178 | ||||
-rw-r--r-- | world/map/npc/scripts.conf | 7 |
5 files changed, 251 insertions, 286 deletions
diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt index 8c4425d8..9467d9e4 100644 --- a/world/map/npc/functions/global_event_handler.txt +++ b/world/map/npc/functions/global_event_handler.txt @@ -29,6 +29,7 @@ OnPCKillEvent: OnMobKillEvent: callfunc "MobPoints"; + callfunc "MobKillHandler"; callfunc "SweetTooth"; end; diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt deleted file mode 100644 index 9ac0e03e..00000000 --- a/world/map/npc/functions/mob_points.txt +++ /dev/null @@ -1,285 +0,0 @@ -// Mob points - -function|script|MobPoints -{ - if (@mobID < 1002) goto L_Return; - - callsub S_Vault; - - setarray @points, - 1, // 1002 Maggot - 2, // 1003 Scorpion - 20, // 1004 Red Scorpion - 40, // 1005 Green Slime - 30, // 1006 Giant Maggot - 15, // 1007 Yellow Slime - 25, // 1008 Red Slime - 45, // 1009 Black Scorpion - 50, // 1010 Snake - 6, // 1011 Fire Goblin - 55, // 1012 Spider - 35, // 1013 Evil Mushroom - 35, // 1014 Pink Flower - 40, // 1015 Santa Slime - 15, // 1016 Rudolph Slime - 2, // 1017 Bat - 16, // 1018 Pinkie - 10, // 1019 Spiky Mushroom - 14, // 1020 Fluffy - 25, // 1021 Cave Snake - 200, // 1022 Jack O - 85, // 1023 Fire Skull - 85, // 1024 Poison Skull - 20, // 1025 Log Head - 70, // 1026 Mountain Snake - 15, // 1027 Easter Fluffy - 40, // 1028 Mouboo - 0, // 1029 Mauve Plant - 0, // 1030 Cobalt Plant - 0, // 1031 Gamboge Plant - 0, // 1032 Alizarin Plant - 20, // 1033 Sea Slime - 75, // 1034 Grass Snake - 0, // 1035 Silk Worm - 125, // 1036 Zombie - 0, // 1037 Clover Patch - 5, // 1038 Squirrel - 0, // 1039 Fire Lizard - 80, // 1040 Wisp - 15, // 1041 Snail - 80, // 1042 Spectre - 100, // 1043 Skeleton - 100, // 1044 Lady Skeleton - 150, // 1045 Fallen - 0, // 1046 Snake Lord - 80, // 1047 Poltergeist - 0, // 1048 Duck - 15, // 1049 Bee - 0, // 1050 Larvespa [DOES NOT EXIST] - 0, // 1051 Vespa [DOES NOT EXIST] - 0, // 1052 Hivespa [DOES NOT EXIST] - 0, // 1053 Froad [DOES NOT EXIST] - 0, // 1054 Troll - 15, // 1055 Butterfly - 2, // 1056 Cave Maggot - 10, // 1057 Angry Scorpion - 6, // 1058 Ice Goblin - 40, // 1059 Giant Cave Maggot - 20, // 1060 Archant - 35, // 1061 Moggun - 100, // 1062 Terranite - 10, // 1063 Pumpkin - 10, // 1064 Bandit - 20, // 1065 Bandit Lord - 30, // 1066 Vampire Bat - 150, // 1067 Reaper2 - 100, // 1068 Reaper - 20, // 1069 Flying Scythe - 20, // 1070 Ball Lightning - 60, // 1071 Ice Element - 80, // 1072 Yeti - 100, // 1073 The Lost - 60, // 1074 Red Bone - 60, // 1075 Stalker - 0, // 1076 Dreadwing [DOES NOT EXIST] - 100, // 1077 Drunken Skeleton - 100, // 1078 Tipsy Skeleton - 100, // 1079 Drunken Lady Skeleton - 60, // 1080 BlueSpark - 60, // 1081 RedSpark - 0, // 1082 Serqet - 60, // 1083 HuntsmanSpider, - 40, // 1084 CrotcherScorpion, - 0, // 1085 IceSkull, - 120, // 1086 FeyElement, - 10, // 1087 Larvern, - 60, // 1088 Hyvern, - 20, // 1089 HungryFluffy, - 40, // 1090 Wolvern, - 50, // 1091 BlueSlime, - 0, // 1092 SlimeBlast, - 20, // 1093 WhiteSlime, - 40, // 1094 Reinboo, - 0, // 1095 WhiteBell, - 60, // 1096 SoulSnake - 100, // 1097 SoulEater - 25, // 1098 CopperSlime - 0, // 1099 SleepingBandit - 20, // 1100 AzulSlime - 80, // 1101 DemonicSpirit - 940, // 1102 Luvia - 150, // 1103 WitchGuard - 50, // 1104 DemonicMouboo - 15, // 1105 ViciousSquirrel - 20, // 1106 WickedMushroom - 18, // 1107 Bluepar - 10, // 1108 AngryFireGoblin - 35, // 1109 AngrySeaSlime - 50, // 1110 AngryGreenSlime - 50, // 1111 CandiedSlime - 40, // 1112 Santaboo - 30, // 1113 Pollett - 100, // 1114 Nutcracker - 40, // 1115 SeaSlimeMother - 50, // 1116 UndeadWitch - 60, // 1117 UndeadTroll - 80, // 1118 GreenSlimeMother - 100, // 1119 Thug - 100, // 1120 Swashbuckler - 100, // 1121 Grenadier - 150, // 1122 DreadPirateMarley - 10, // 1123 DreadPirateMarleyClone - 100, // 1124 Wight - 100, // 1125 ManaGhost - 100, // 1126 PsiBrain - 150 // 1127 GeneralKurkan - // No more room! script engine is buggy, sorry. - // -o11c - ; // END - - setarray @points_extended, - 175, // 1128 GeneralRazha - 200, // 1129 GeneralTerogan - 100, // 1130 Moonshroom - 20, // 1131 ManaBug - 80, // 1132 LavaSlime - 80, // 1133 Anne - 200, // 1134 SUSAN - 80, // 1135 LovelyMaggot - 10, // 1136 LesserGhost - 500, // 1137 Tormenta - 200, // 1138 ManaGuardian - 10, // 1139 Virus - 200, // 1140 Tengu - 200, // 1141 Sasquatch - 999, // 1142 ZaxDeKagen - 200, // 1143 ManaSlayer - 200, // 1144 GreatDragon - -99, // 1145 KageGolem - 200, // 1146 Flashmob - 200, // 1147 Koyntety - 100, // 1148 DoomGolem - 100, // 1149 Enchanter - 0, // 1150 ManaTyrant - 0, // 1151 VoidFlower - 0, // 1152 VoidArchant - 0, // 1153 VoidSlime - 0, // 1154 VoidSnake - 0, // 1155 VoidBat - 0, // 1156 VoidMaggot - 25, // 1157 VoidSoldier - 0, // 1158 VoidMouboo - 0, // 1159 VoidScorpion - 0, // 1160 VoidShroom - -99, // 1161 Xakelbael - 0, // 1162 Grinchboo - 15, // 1163 Friday - 0, // 1164 RESERVED - 0, // 1165 RESERVED - 0, // 1166 RESERVED - 0, // 1167 RESERVED - 0, // 1168 Floyd - 0, // 1169 Crystal Spider - 0, // 1170 Crystal Golem - 0, // 1171 Black Crystal Golem - 0 // 1172 Bif - ; - - if ((MPQUEST == 1) && (@mobID < 1128)) - goto L_Table1; - - if ((MPQUEST == 1) && (@mobID > 1127)) - goto L_Table2; - - goto L_PostLoop; - -L_Table1: - set Mobpt, Mobpt + @points[@mobID - 1002]; - goto L_PostLoop; - -L_Table2: - set Mobpt, Mobpt + @points_extended[@mobID - 1128]; - goto L_PostLoop; - -L_PostLoop: - callfunc "ValonCount"; - if (((QL_VALON >= 2) && (QL_VALON < 6)) && (@mobID == $@ValonMob[@valon_mob])) - goto L_ValonMobKill; - goto L_NatureKarma; - -L_ValonMobKill: - callfunc "AddValonCntMask"; - goto L_NatureKarma; - -L_NatureKarma: -// Scorpion, Red Scorpion, Black Scorpion, Angry Scorpion -// DemonicMouboo, ViciousSquirrel, WickedMushroom, Bluepar - if ((@mobID == 1003) || (@mobID == 1004) || (@mobID == 1009) || (@mobID == 1057) - || (@mobID == 1104) || (@mobID == 1105) || (@mobID == 1106) || (@mobID == 1107)) - goto L_good; - - // Attitude adjustment for the witch (can we refactor this to another function? Not sure about max. recursion depth) - - set @value, 0; -// Pinkie - if (@mobID == 1018) - set @value, 3; - -// Fluffy - if (@mobID == 1020) - set @value, 3; -// Easter Fluffy - if (@mobID == 1027) - set @value, 3; -// Mouboo - if (@mobID == 1028) - set @value, 4; -// Squirrel - if (@mobID == 1038) - set @value, 2; -// Reinboo - if (@mobID == 1094) - set @value, 3; -// Santaboo - if (@mobID == 1112) - set @value, 3; -// Pollett - if (@mobID == 1113) - set @value, 3; - - if (@value == 0) - goto L_Celestia; - - callfunc "QuestSagathaAnnoy"; - goto L_Celestia; - -L_good: - set @value, 1; - callfunc "QuestSagathaHappy"; - goto L_Celestia; - -L_Celestia: - if (QL_CELESTIA < 5 || QL_CELESTIA >= 205 || @mobID != 1072) goto L_Terranite; - set QL_CELESTIA, QL_CELESTIA + 1; - if (QL_CELESTIA == 205) - message strcharinfo(0), "Yeti : ##3This should be enough yetis killed to please Celestia."; - goto L_Terranite; - -L_Terranite: - if (TERRAC < 1 || TERRAC > 1500 || @mobID != 1062) goto L_Return; - if (TERRAC % 100 == 0) - message strcharinfo(0), "Terranite : ##3Total Terranites Slain: "+TERRAC; - set TERRAC, TERRAC + 1; - goto L_Return; - -S_Vault: - if (#EXP_CREDIT < 1) goto L_Return; - set @exp_bonus, min(#EXP_CREDIT, mobinfo(@mobID, MOB_BASEEXP) * 2); - set #EXP_CREDIT, #EXP_CREDIT - @exp_bonus; - getexp @exp_bonus, 0; - return; - -L_Return: - set @value, 0; - return; -} diff --git a/world/map/npc/mobs/mob_kill_handler.txt b/world/map/npc/mobs/mob_kill_handler.txt new file mode 100644 index 00000000..5542dcdb --- /dev/null +++ b/world/map/npc/mobs/mob_kill_handler.txt @@ -0,0 +1,66 @@ + +-|script|#MobKillHandlerInit|32767 +{ + end; + +OnInit: + setarray $@QuestMobs, Maggot, Scorpion, RedScorpion, BlackScorpion, Pinkie, Fluffy, EasterFluffy, Mouboo, Squirrel, TameScorpion, HouseMaggot, AngryScorpion, + Terranite, Yeti, Reinboo, DemonicMouboo, ViciousSquirrel, WickedMushroom, Bluepar, Santaboo, Pollett; + setarray $@NatureKarmaGood, Scorpion, RedScorpion, BlackScorpion, AngryScorpion, DemonicMouboo, ViciousSquirrel, WickedMushroom, Bluepar; + setarray $@NatureKarmaBad, Pinkie, Fluffy, EasterFluffy, Mouboo, Squirrel, Reinboo, Santaboo, Pollett; + setarray $@NatureKarmaBadVal, 3, 3, 3, 4, 2, 3, 3, 3; + end; +} + +function|script|MobKillHandler +{ + if (@mobID < 1002) goto L_Return; + + set .@find, array_search(@mobID, $@QuestMobs); + if (.@find < 0) goto L_Return; + + callfunc "ValonCount"; + if (((QL_VALON >= 2) && (QL_VALON < 6)) && (@mobID == $@ValonMob[@valon_mob])) + goto L_ValonMobKill; + goto L_NatureKarma; + +L_ValonMobKill: + callfunc "AddValonCntMask"; + goto L_NatureKarma; + +L_NatureKarma: + set .@find, array_search(@mobID, $@NatureKarmaGood); + if (.@find >= 0) goto L_Good; + set .@find, array_search(@mobID, $@NatureKarmaBad); + if (.@find >= 0) goto L_Bad; + goto L_Celestia; + + // Attitude adjustment for the witch (can we refactor this to another function? Not sure about max. recursion depth) + +L_Bad: + set @value, $@NatureKarmaBadVal[.@find]; + callfunc "QuestSagathaAnnoy"; + goto L_Celestia; + +L_Good: + set @value, 1; + callfunc "QuestSagathaHappy"; + goto L_Celestia; + +L_Celestia: + if (QL_CELESTIA < 5 || QL_CELESTIA >= 205 || @mobID != Yeti) goto L_Terranite; + set QL_CELESTIA, QL_CELESTIA + 1; + if (QL_CELESTIA == 205) + message strcharinfo(0), "Yeti : ##3This should be enough yetis killed to please Celestia."; + goto L_Terranite; + +L_Terranite: + if (TERRAC < 1 || TERRAC > 1500 || @mobID != Terranite) goto L_Return; + if (TERRAC % 100 == 0) + message strcharinfo(0), "Terranite : ##3Total Terranites Slain: "+TERRAC; + set TERRAC, TERRAC + 1; + goto L_Return; + +L_Return: + return; +} diff --git a/world/map/npc/mobs/mob_points.txt b/world/map/npc/mobs/mob_points.txt new file mode 100644 index 00000000..4d63fca3 --- /dev/null +++ b/world/map/npc/mobs/mob_points.txt @@ -0,0 +1,178 @@ +// Mob points + +function|script|MobPoints +{ + if (@mobID < 1002) goto L_Return; + + setarray @points, + 1, // Maggot + 2, // Scorpion + 20, // Red Scorpion + 40, // Green Slime + 30, // Giant Maggot + 15, // Yellow Slime + 25, // Red Slime + 45, // Black Scorpion + 50, // Snake + 6, // Fire Goblin + 55, // Spider + 35, // Evil Mushroom + 35, // Pink Flower + 40, // Santa Slime + 15, // Rudolph Slime + 2, // Bat + 16, // Pinkie + 10, // Spiky Mushroom + 14, // Fluffy + 25, // Cave Snake + 200, // Jack O + 85, // Fire Skull + 85, // Poison Skull + 20, // Log Head + 70, // Mountain Snake + 15, // Easter Fluffy + 40, // Mouboo + 0, // Mauve Plant + 0, // Cobalt Plant + 0, // Gamboge Plant + 0, // Alizarin Plant + 20, // Sea Slime + 75, // Grass Snake + 0, // Silk Worm + 125, // Zombie + 0, // Clover Patch + 5, // Squirrel + 0, // Fire Lizard + 80, // Wisp + 15, // Snail + 80, // Spectre + 100, // Skeleton + 100, // Lady Skeleton + 150, // Fallen + 0, // Snake Lord + 80, // Poltergeist + 0, // Duck + 15, // Bee + 0, // Larvespa + 0, // Vespa + 0, // Hivespa + 0, // Froad + 0, // Troll + 15, // Butterfly + 2, // Cave Maggot + 10, // Angry Scorpion + 6, // Ice Goblin + 20, // Archant + 40, // Giant Cave Maggot + 35, // Moggun + 100, // Terranite + 10, // Pumpkin + 10, // Bandit + 20, // Bandit Lord + 30, // Vampire Bat + 20, // Reaper + 20, // Reaper2 + 100, // Scythe + 20, // Ball Lightning + 60, // Ice Element + 80, // Yeti + 100, // The Lost + 60, // Red Bone + 60, // Stalker + 0, // Dreadwing + 100, // Drunken Skeleton + 100, // Tipsy Skeleton + 100, // Drunken Lady Skeleton + 60, // BlueSpark + 60, // RedSpark + 0, // Serqet + 60, // HuntsmanSpider, + 40, // CrotcherScorpion, + 0, // IceSkull, + 120, // FeyElement, + 10, // Larvern, + 60, // Hyvern, + 20, // HungryFluffy, + 40, // Wolvern, + 50, // BlueSlime, + 0, // SlimeBlast, + 20, // WhiteSlime, + 40, // Reinboo, + 0, // WhiteBell, + 60, // SoulSnake + 100, // SoulEater + 25, // CopperSlime + 0, // SleepingBandit + 20, // AzulSlime + 80, // DemonicSpirit + 940, // Luvia + 150, // WitchGuard + 50, // DemonicMouboo + 15, // ViciousSquirrel + 20, // WickedMushroom + 18, // Bluepar + 10, // AngryFireGoblin + 35, // AngrySeaSlime + 50, // CandiedSlime + 40, // Santaboo + 30, // Pollett + 100, //Nutcracker + 40, // SeaSlimeMother + 50, // UndeadWitch + 60, // UndeadTroll + 80, // GreenSlimeMother + 100, // Thug + 100, // Swashbuckler + 100, // Grenadier + 150, // DreadPirateMarley + 10, // DreadPirateMarleyClone + 100, // Wight + 100, // ManaGhost + 100, // PsiBrain + 150, // GeneralKurkan + 175 // GeneralRazha + // No more room! script engine is buggy, sorry. + // -o11c + ; // END + + setarray @points_extended, + 200, // 1129 GeneralTerogan + 100, // 1130 Moonshroom + 20, // 1131 ManaBug + 80, // 1132 LavaSlime + 80, // 1133 Anne + 200, // 1134 SUSAN + 80, // 1135 LovelyMaggot + 10, // 1136 LesserGhost + 500, // 1137 Tormenta + 200, // 1138 ManaGuardian + 10, // 1139 Virus + 200, // 1140 Tengu + 200, // 1141 Sasquatch + 999, // 1142 ZaxDeKagen + 200, // 1143 ManaSlayer + 200 // 1144 GreatDragon + ; + + if ((MPQUEST == 1) && (@mobID < 1129)) + goto L_Table1; + + if ((MPQUEST == 1) && (@mobID > 1128)) + goto L_Table2; + + goto L_PostLoop; + +L_Table1: + set Mobpt, Mobpt + @points[@mobID - 1002]; + goto L_PostLoop; + +L_Table2: + set Mobpt, Mobpt + @points_extended[@mobID - 1129]; + goto L_PostLoop; + +L_PostLoop: + goto L_Return; + +L_Return: + return; +} diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf index 10e9448d..46dad1e0 100644 --- a/world/map/npc/scripts.conf +++ b/world/map/npc/scripts.conf @@ -16,7 +16,6 @@ npc: npc/functions/game_rules.txt npc: npc/functions/inn.txt npc: npc/functions/item_menu.txt npc: npc/functions/magic.txt -npc: npc/functions/mob_points.txt npc: npc/functions/process_equip.txt npc: npc/functions/slot_machine.txt npc: npc/functions/soul_menhir.txt @@ -61,6 +60,12 @@ npc: npc/items/nobow_item.txt npc: npc/items/love_potion.txt npc: npc/items/manapearl_item.txt npc: npc/items/underworld_troll.txt + +// Mob Functions +npc: npc/mobs/mob_points.txt +npc: npc/mobs/mob_kill_handler.txt + +// Map Functions import: npc/_import.txt // magic |