summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLed Mitz <smoothshifter@tuta.io>2023-07-14 15:42:42 +0000
committerLed Mitz <smoothshifter@tuta.io>2023-07-14 15:42:42 +0000
commitff30d15b053dfa68b825320c94451d19545e7264 (patch)
treefaabde58de069fd2cee0e837a7ac762f3518a435
parentd8eb983f077617326bf86900a9f249ab9171d4dd (diff)
parentb048e5c26c46f542d99b4f0660fb8bf85e7f0edf (diff)
downloadserverdata-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.txt1
-rw-r--r--world/map/npc/functions/mob_points.txt285
-rw-r--r--world/map/npc/mobs/mob_kill_handler.txt66
-rw-r--r--world/map/npc/mobs/mob_points.txt178
-rw-r--r--world/map/npc/scripts.conf7
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