Difference between revisions of "Distinguishing Between Physical and Magickal Hits"

no edit summary
imported>Diablerie
(Potential solution)
Tag: Manual revert
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Question ==
{{Unfinished}}


I'd like to script behaviour that occurs when an actor is hit by a weapon, but not by a spell.
To determine whether an attack upon a trigger or NPC is either physical or magical, the following script should be used:
 
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? -- [[User:Diablerie|Diablerie]] 12:28, 15 April 2006 (EDT)
 
== Discussion ==
 
--[[User:Mrflippy|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:


<pre>
<pre>
scriptname WeaponHitScript
scriptname WeaponHitScript
short bMagicEffect


begin OnMagicEffectHit
begin OnMagicEffectHit
     set bMagicEffect to 1
     return
end
end


begin OnHit Player
begin OnHit Player
     if (bMagicEffect == 0)
     <do stuff...>
        <do stuff...>
    endif
end
 
begin GameMode
    set bMagicEffect to 0
end
end
</pre>
</pre>


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)
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.


[[Category:Questions]]
[[Category:Useful Code]]
[[Category:Solutions]]
Anonymous user