Aller au contenu

Photo

Possible to create new Tactics triggers?


  • Veuillez vous connecter pour répondre
10 réponses à ce sujet

#1
Guurzak

Guurzak
  • Members
  • 184 messages
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.

#2
NobillyT

NobillyT
  • Members
  • 21 messages
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.

#3
Straudos

Straudos
  • Members
  • 6 messages
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);

#4
Guurzak

Guurzak
  • Members
  • 184 messages
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
Guurzak

Guurzak
  • Members
  • 184 messages
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
Nodrak

Nodrak
  • Members
  • 144 messages
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
robmack

robmack
  • Members
  • 7 messages
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?

#8
Guurzak

Guurzak
  • Members
  • 184 messages
"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 B) 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.)

#9
NobillyT

NobillyT
  • Members
  • 21 messages

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
KehlarTVH

KehlarTVH
  • Members
  • 3 messages
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.

Modifié par KehlarTVH, 19 novembre 2009 - 10:05 .


#11
KehlarTVH

KehlarTVH
  • Members
  • 3 messages
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.