The program receives a file that contains all C++ classes that it will edit. The target is to modify the chance that a character get quests drop item when kill required monster, since default values are hidden on math random functions "gg::Rand" inside more than 6 million lines of code, and many game administrators have interest on customize such rate, a task that often they do handmade with decompilers and notepad.
AI.obj is a c++ object that NPC MANAGER loads on memory that is where is defined the behavior of monsters and citizens of the game (NPCs).
NASC is oriented to events, so each ai class have defined event handlers that manage each event like : TALKED : when someone talks to the NPC, MY_DYING : when NPC dies, that is the handler that we need to check because once NPC dies he check if the player who killed him had the quest that requires kill him, and then after random function decides if give quest item or not..
The tool analyze each class code patterns and it determines :
-1 The NPC is involved in to a quest. Check 5.a
-2 NPC have a math random function. Check 4
-3 NPC drop item after random function. Check 6
Then calculates the original chance, multiplies it for desired amount, and define a parameter name like this :
int 100_30_trial_of_the_seeker_medusas_scales = 30;.
And place it on local parameters of that class, so administrator can modify it once the AI is compiled in not readable format (something similar than assembler) except parameters