One can currently set up tactics which fire on enemy conditions such as Paralyzed, Charmed, or Sleeping, but there's no trigger for Frozen. This makes it impossible to set up useful shattering tactics.
Does the toolset offer capabilities to either create new triggers, or modify existing ones, so that this functionality could be added? The game engine obviously knows the difference somewhere, since it must make a frozen/not frozen decision when evaluating whether a critical hit will shatter its target.
Possible to create new Tactics triggers?
Débuté par
Guurzak
, nov. 18 2009 07:55
#1
Posté 18 novembre 2009 - 07:55
#2
Posté 18 novembre 2009 - 08:10
I'd like to see a NOT operator for some of the conditions...would allow for more in depth tactics. I can't remember quite what tactic I was trying to set up the other day, but a NOT operator would've helped. It was something on the lines of "While X and not Y, do Z."
I've read in some other post at the old forums that an AND operator was included via a sort of "Jump to tactic number X," but I don't recall seeing a way to currently implement a NOT operator...unless I'm mistaken which is entirely in the realm of possibility.
Not sure if anyone else can see a use for a NOT operator, or even if I can again in the future...I just recall wanting it in a recent play session.
I've read in some other post at the old forums that an AND operator was included via a sort of "Jump to tactic number X," but I don't recall seeing a way to currently implement a NOT operator...unless I'm mistaken which is entirely in the realm of possibility.
Not sure if anyone else can see a use for a NOT operator, or even if I can again in the future...I just recall wanting it in a recent play session.
#3
Posté 18 novembre 2009 - 08:20
I could be wrong, but I don't think there's a "frozen" effect in the game. A "frozen" character is simply paralyzed and petrified. Here's the code for Cone of Cold:
// physical resistance
if (ResistanceCheck(stEvent.oCaster, stEvent.oTarget, PROPERTY_ATTRIBUTE_SPELLPOWER, RESISTANCE_PHYSICAL) == FALSE)
{
// frozen
eEffect = EffectParalyze();
ApplyEffectOnObject(EFFECT_DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration, stEvent.oCaster, stEvent.nAbility);
// petrify
eEffect = Effect(EFFECT_TYPE_PETRIFY);
eEffect = SetEffectInteger(eEffect, 0, 1);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, CONE_OF_COLD_FROZEN_VFX);
} else
{
// slow
eEffect = EffectModifyMovementSpeed(CONE_OF_COLD_SPEED_PENALTY, TRUE);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, CONE_OF_COLD_SLOW_VFX);
}
ApplyEffectOnObject(EFFECT_DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration, stEvent.oCaster, stEvent.nAbility);
// physical resistance
if (ResistanceCheck(stEvent.oCaster, stEvent.oTarget, PROPERTY_ATTRIBUTE_SPELLPOWER, RESISTANCE_PHYSICAL) == FALSE)
{
// frozen
eEffect = EffectParalyze();
ApplyEffectOnObject(EFFECT_DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration, stEvent.oCaster, stEvent.nAbility);
// petrify
eEffect = Effect(EFFECT_TYPE_PETRIFY);
eEffect = SetEffectInteger(eEffect, 0, 1);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, CONE_OF_COLD_FROZEN_VFX);
} else
{
// slow
eEffect = EffectModifyMovementSpeed(CONE_OF_COLD_SPEED_PENALTY, TRUE);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, CONE_OF_COLD_SLOW_VFX);
}
ApplyEffectOnObject(EFFECT_DURATION_TYPE_TEMPORARY, eEffect, oTarget, fDuration, stEvent.oCaster, stEvent.nAbility);
#4
Posté 18 novembre 2009 - 09:10
Thanks, Straudos. Can you also paste in the code for Stone Fist, so we can see what it's checking against to verify shatterability?
#5
Posté 19 novembre 2009 - 04:36
OK. The Stone Fist spell script relies on the Shattercheck function, which works on the Petrified flag- both ice spells and the Petrify spell set this flag. So my problem now is that Petrified is not a status option in the tactics menu- it has Charmed, Paralyzed, Sleeping, and several other options, but not that one. Anyone have an idea about where the list of possible status effects for use as tactics triggers is kept?
#6
Posté 19 novembre 2009 - 04:42
The 'cant attack' one is any effect under which the target is unable to attack or preform actions, which is similar but not exclusive to the one encompassing being unable to move, which is rooted IIRC.
#7
Posté 19 novembre 2009 - 07:39
This seems like a good thread. I've been poking around in the files as well for way to add new conditions as well. I've had about as much luck as you guys so far. I want to encourage you since I think a lot of people are looking for these type of improvements.
I wanted to chime in about the NOT capability. I think you can do that with the jump command. Something like this:
1. condition you want to avoid > jump to 3
2. action you want to perform
3. etc
Actually, what I can't see is how to do a logical AND. Do you know where you saw that?
I wanted to chime in about the NOT capability. I think you can do that with the jump command. Something like this:
1. condition you want to avoid > jump to 3
2. action you want to perform
3. etc
Actually, what I can't see is how to do a logical AND. Do you know where you saw that?
#8
Posté 19 novembre 2009 - 03:12
"can't attack" includes a large number of non-shatterable conditions, so it wouldn't be useful for the specific purpose I'm looking for. I really need a specific "petrified" tactic condition.
I found the spreadsheet AI_TacticsConditions which looks like at least part of what I want. For example, it looks like a Knockdown condition is based on Status ID 16:
69 Knockdown 360000 1 Has Status ID 16 0 1 **** 0 0
There's nothing in that list for petrified, though. So I guess the next steps would be to 1) figure out what status ID number is associated with the petrified condition, and then 2) figure out how to modify the necessary files to get the new condition into a) the combat engine, and
the GUI menus. (The .xls obviously doesn't have anything to do with GUI presentation; the conditions in the tactics GUI are presented in a tree-and-branch format while the xls is a single flat file.)
I found the spreadsheet AI_TacticsConditions which looks like at least part of what I want. For example, it looks like a Knockdown condition is based on Status ID 16:
69 Knockdown 360000 1 Has Status ID 16 0 1 **** 0 0
There's nothing in that list for petrified, though. So I guess the next steps would be to 1) figure out what status ID number is associated with the petrified condition, and then 2) figure out how to modify the necessary files to get the new condition into a) the combat engine, and
#9
Posté 19 novembre 2009 - 09:26
robmack wrote...
Actually, what I can't see is how to do a logical AND. Do you know where you saw that?
Unfortunately, it was at the old Dragon Age forums that was shut down a couple of days ago.
When I have the time though, I'm going to try and see if I can figure out how the current tactics system works with regard to logical AND and NOT. Might be hard to do, what with the lack of a combat log and all, but I'll see what I can see.
#10
Posté 19 novembre 2009 - 09:58
I've found a list of constants referencing the various status effects in ai_constants_h.nss that match the "ai_conditions.xls" integers
These effects are then referenced in "ai_conditions_h.nss" when the actual check for the status occurs.
Petrify is missing but i'd imagine it is simply a case of setting up the constant with a unique number (6 is strangely missing /shifteyes) into "ai_constants_h.nss", then adding the status check AI_EFFECT_PETRIFIED into "ai_conditions_h.nss"
The problem i have at the moment is i can't figure out how to use this damned toolset to get anything out of it into a usable mod.
EDIT: On a side note...There is a check for "vulnerable to damage type". Not sure if it could be any use (i haven't looked into it) but it's food for thought.
These effects are then referenced in "ai_conditions_h.nss" when the actual check for the status occurs.
Petrify is missing but i'd imagine it is simply a case of setting up the constant with a unique number (6 is strangely missing /shifteyes) into "ai_constants_h.nss", then adding the status check AI_EFFECT_PETRIFIED into "ai_conditions_h.nss"
The problem i have at the moment is i can't figure out how to use this damned toolset to get anything out of it into a usable mod.
EDIT: On a side note...There is a check for "vulnerable to damage type". Not sure if it could be any use (i haven't looked into it) but it's food for thought.
Modifié par KehlarTVH, 19 novembre 2009 - 10:05 .
#11
Posté 20 novembre 2009 - 05:34
OK i tested my theory and it works. Winter's grasp paralyses the target but cone of cold triggers the petrify check (not sure what else does) that i added.





Retour en haut






