Torias wrote...
Ok, first post here, haven't actually downloaded the toolset yet.. just want to see if people think this is at all feasible.
I am a micro-manager in combat, absolutely and completely.
I love the DA combat, but I want it to pause for me automatically more.
So what I want to add:
1) Automatic pause whenever a party member casts a spell or uses a special ability, NOT including each default "auto-attack".
2) Automatic pause whenever a party member casts completes a "move to point" command.
3) Automatic pause whenever a party member's current target dies.
4) Automatic pause whenever a party member's current target moves out of melee range.
So, anyone have any ideas for any or all of them are feasible to accomplish via script changes?
Also, it'd be cool to be able to get the game to select the party member that triggered the pausing and make them active...
And finally, it'd be great to be able to enable or disable this on a party member by party member basis, perhaps with a "sustainable" ability that has 0 upkeep and 0% fatigue....
Barring any definite "no that'll never work", I'll probably start down the path of figuring it out tomorrow night :-)
At first, I was thinking, no way in hell this could be done. On further thinking, parts of it may be feasible. More specifically:
1) There is already a function called,
ToggleGamePause(int bPause = TRUE) which assumingly will pause the game for you when called. Obviously, that is the most important function for what you want.
2) Whenever someone uses an ability (spell, talent, etc.), it's sent through the script,
ability_core.nss. I don't advocate the overriding of any core scripts in any way, shape, or form. However, I was reading one thread, where someone was making a reference about
events.xls, which apparently has events contained in it, and a script column that can specify where the event will be processed. So, I have not tried this yet (but will soon), but that may be one way of overriding
ability_core.nss.
3) As for determining when someone completes a
"move to point" action, I was so sure there was no way, but it turns out, there is a
EVENT_TYPE_COMMAND_COMPLETE event, that will contain the command needed (
COMMAND_TYPE_MOVE_TO_OBJECT or COMMAND_TYPE_MOVE_TO_LOCATION). So, you would just need to override
rules_core.nss for this to work.
4) For dealing with enemy death, I'm pretty sure there is already an
EVENT_TYPE_DEATH that can be utililized.
5) As for pausing when a target is out of melee range, I mean, I guess this possible. Do you mean, whenever
any target of
any party member is out of range? If so, yeah, this is possible.
6) As for selecting party members that caused the pause, there are functions like
SetPrimaryControlled(object oFollower) that you may want to check out. Again, I have never used them, but they may be what you're looking for.
7) Finally, yes, I guess you could enable this via a sustained ability. Creating a custom sustained ability is easy enough, as is checking to see if the ability is currently sustained. Something like the following:
effect [] effects = GetEffects(OBJECT_SELF, EFFECT_TYPE_UPKEEP, ABILITY_TALENT_AUTOPAUSE);
Where
ABILITY_TALENT_AUTOPAUSE is the constant of the new ability you created.
-----------------------------------------
In conclusion, this is mostly ideas, I don't know how they will pan out, as I haven't tested most of them. But, hopefully, this should get you on the right path.
EDIT: Just snuck a peak at rules_core.nss, in regards to my point, 2). Turns out, when it catches the EVENT_TYPE_COMMAND_PENDING, if the command is an ability, it sends the event to ability_core.nss. So, you may be able to override this particular part of the script, and send things to your own overrided version of ability_core.nss, instead of having to mess with that events 2DA I was talking about. Just another random idea...
Modifié par Challseus, 23 novembre 2009 - 04:12 .