Difference between revisions of "Distinguishing Between Physical and Magickal Hits"
imported>Diablerie m (How to determine what hit an actor? moved to How to distinguish between weapon and spell hits?) |
imported>Diablerie (Moved to Solutions category) |
||
Line 32: | Line 32: | ||
From what I saw, if the actor is hit by a spell, it will trigger both [[OnMagicEffectHit]] and [[OnHit]]. I'm not sure if the block ordering in the script makes any difference, but in my experiments, the ''OnHit'' block always saw the ''bMagicEffect'' variable set in the ''OnMagicEffectHit'' block. Hopefully, the ''GameMode'' block won't cause a performance hit. | From what I saw, if the actor is hit by a spell, it will trigger both [[OnMagicEffectHit]] and [[OnHit]]. I'm not sure if the block ordering in the script makes any difference, but in my experiments, the ''OnHit'' block always saw the ''bMagicEffect'' variable set in the ''OnMagicEffectHit'' block. Hopefully, the ''GameMode'' block won't cause a performance hit. | ||
-- [[User:Diablerie|Diablerie]] 22:11, 15 April 2006 (EDT) | -- [[User:Diablerie|Diablerie]] 22:11, 15 April 2006 (EDT) | ||
== Solution == | |||
I think I've found a more elegant solution: | I think I've found a more elegant solution: | ||
Line 47: | Line 49: | ||
</pre> | </pre> | ||
It looks like the [[Return]] command terminates the entire ''script'', and not just the block that it's called from. This can be used to have one trigger override another. | It looks like the [[Return]] command terminates the entire ''script'', and not just the block that it's called from. This can be used to have one trigger override another if they are triggered at the same time. | ||
-- [[User:Diablerie|Diablerie]] 23:34, 15 April 2006 (EDT) | -- [[User:Diablerie|Diablerie]] 23:34, 15 April 2006 (EDT) | ||
[[Category: | [[Category:Solutions]] |
Revision as of 12:04, 16 April 2006
Question
I'd like to script behaviour that occurs when an actor is hit by a weapon, but not by a spell.
I have noticed that "Begin OnHit" triggers if an actor is hit by a melee weapon, projectile weapon, or a spell. Is there any way of determining what the actor was hit by? -- Diablerie 12:28, 15 April 2006 (EDT)
Discussion
--Mrflippy 12:45, 15 April 2006 (EDT): You might be able to work something up using OnMagicEffectHit.
- Not a bad idea. I managed to get something working:
scriptname WeaponHitScript short bMagicEffect begin OnMagicEffectHit set bMagicEffect to 1 end begin OnHit Player if (bMagicEffect == 0) <do stuff...> endif end begin GameMode set bMagicEffect to 0 end
From what I saw, if the actor is hit by a spell, it will trigger both OnMagicEffectHit and OnHit. I'm not sure if the block ordering in the script makes any difference, but in my experiments, the OnHit block always saw the bMagicEffect variable set in the OnMagicEffectHit block. Hopefully, the GameMode block won't cause a performance hit. -- Diablerie 22:11, 15 April 2006 (EDT)
Solution
I think I've found a more elegant solution:
scriptname WeaponHitScript begin OnMagicEffectHit return end begin OnHit Player <do stuff...> end
It looks like the Return command terminates the entire script, and not just the block that it's called from. This can be used to have one trigger override another if they are triggered at the same time. -- Diablerie 23:34, 15 April 2006 (EDT)