https://github.com/HerculesWS/Hercules/pull/2061
before understanding this pull request, let's talk about the history of OnNPCKillEvent
History
during the time OnNPCKillEvent implement, monster only spawn on the fields and dungeon, in this syntax
** Create a permanent monster spawn:
<map name>,<x>,<y>,<xs>,<ys>%TAB%monster%TAB%<monster name>%TAB%<mob id>,<amount>,<delay1>,<delay2>
and the monsters that spawned with event labels were only use in job changer quests
*monster("<map name>", <x>, <y>, "<name to show>", <mob id>, <amount>{, "<event label>";}
Note: if you noticed some parameter missing, yup those were added later.
Notice the permanent monster spawn during that time still doesn't support event labels
So, in order to trigger the permanent monster spawn, OnNPCKillEvent was the only way (during that time)
this was to separate the trigger between OnNPCKillEvent and monster with event labels
Why separate them ?
there's a good reason to separate them, aleos also said in this issue
in fact, this bug was also brought up several times during eathena ...
Let's give 2 examples:
Example 1: Bot-killer script
Bot-killer script is intended to kill bots, and bots usually only appear on fields/dungeon
which makes OnNPCKillEvent: label an ideal solution to work on them
currently, Bot-Killer script doesn't trigger with job changer script or event script
because the job changer npc, the monster was spawned with event labels
example like priest job change quest -> you have to kill all the undeads within 5 minutes
imagine ... IF the Bot-Killer script was able to trigger monster with event labels,
while the players was rushing against time, suddenly a bot-killer script pops up !!
this is enough to make them fail the test ...
same thing goes to other event scripts such as devil square
when players were busy killing monsters, trying to get the most kills, suddenly a bot-killer script pops up !!
enough to make them lose the 1st place
Example 2: MVP ranking script + MVP Ladder game
MVP ranking script ... show the top 10 MVP hunters in your server MVP ladder game ... a game to form a party then kill MVPs inside arena
currently, the MVP ranking script doesn't record the MVP kills from MVP ladder game
the reason is ... the MVP ladder game spawn the MVPs with event labels ...
imagine IF the OnNPCKillEvent label able to trigger monster with event label
players just has to replay the MVP ladder game again and again to earn themselves the best MVP hunter ...
each game adds 39 kills, so cheap !! Don't need to find MVPs on the field anymore
now that's defeat the purpose of MVP hunting .... I mean the MVP ranking script
So why propose the change now ?
Things has changed since then, especially with the introduction of instance script
since all instance monster has event labels, previously said that monster only spawn on the fields and dungeon no longer apply
Take a look back at Example 2 ... the MVP ranking script
currently the MVP ranking only record the MVP kills that spawn MVP tombs
but it doesn't record the kills from instance ... for example Nacht Sieger or Nidhoggur's Shadow or even Lighthalzen MVP
Now here's the tricky part ...
Example 1: Bot-Killer
If we keep it as it is, the script works fine
and if let OnNPCKillEvent run event labels, bot-killer can trigger inside job change npc (BUG)
Example 2: MVP ranking script + MVP Ladder game
If we keep it as it is, the MVP ranking script doesn't record the MVP kills from instance script (BUG)
and if allow OnNPCKillEvent run event labels, MVP ranker script record the kills from MVP ladder game (BUG)
both options are not a perfect solution
but there is a way to actually solve all these problem,
find this line
OnNPCKillEvent:
replace with ...
OnNPCKillEvent:
if ( getmapflag( strcharinfo(PC_MAP), mf_nosave ) )
end;
let ALL OnNPCKillEvent: doesn't trigger on the map that has nosave mapflag
simple because, all job changer npc and event maps has nosave mapflag ... this is easy
this simple solution actually solve both example's problem above
.... well actually I also has another patch ready ...
but not sure if this setting make things more complicated ?
well ... currently still in the discussion stage ~