I just don't get it, using the walk mod for example, it dived straight into the memory addresses, found the values used for controllers between walk/run/jog speeds, binded it to a script using a third party program, and based on the game's sensitivity to code changes, shouldn't it be more sensitive to third party changes especially something tweaking memory addresses? Not the mention the banter code was already re-wrote, I used patch 2 previously hence the banter trigger mod could not work until patch 3, hence I noted there had to be enough of a rewrite to make the trigger patch 3+ only.
However I've only scripted in mods, never in large scale programs like this, smaller programs I only assisted in coding for a property management system but that's about it. I still just don't get it.
The functions for auto-attack/click-to-move/loot/interact are already there, you know what would be embarrassing for BW yet again? If modders fix this again. Come on...
The difference is that Bio must change the value of a variable and re-compile. The potential problem(s) with variables is that they may not all be set globally or locally. In other words, changing a variable may change it globally instead of locally.... which will give you head aches. Then you have to chase down that variable in all the code routines to ensure it is set properly.
For example:
Global Storage structure loot #<-- variables in structure is known to all game routines
{
define Integer
loot_drops_from_Dragon = 1
loot_drops_from_Giant = 1
Experience = 1
char_level = 1
}
Subroutine Calculate_loot_drops
/include Global Storage structure loot
Define integer
{
loot_drops_from_Dragon =1 #<--- variable known only to this routine
}
loot_drops_from_Dragon = Func(char_level/Xperience + loot_drops_from_Dragon)
End Calculate_loot_drops
Let's talk about the variable loot_drops_from_Dragon
It's a global variable that is set to 1. We want to change the initial value to 2 and so it is done at the global level. However, a programmer inadvertently defines loot_drops_from_Dragon as a local variable. So, during gameplay, when the Dragon drops the loot, the result is not what is expected because the global variable loot_drops_from_Dragon is untouched. Instead, the local variable loot_drops_from_Dragon is used and changed. Simple mistake but you can see how confusing it can be and hunt down the bug.
The reverse, of course, is also true.
PS: for the programmers I've used the above as an example aand is not proper code.