Jump to content

IWD2 Scripting help


plainab

Recommended Posts

Got a situation that is just irritating to me. (fyi - this is my second time in normal mode)

 

On my way to clear the horde fortress, I have to get the key from the orc shaman Trugnuk. That's all fine and good. I kill him and his party and get the key. The problem is that even after death he keeps casting a lightning bolt. If one of my characters is in sight of the corpse they will most likely get hit. If I'm on the other side of the map, the chat box gets spammed around once per round with statements that the lightning buildup dissipates harmlessly.

 

I've narrowed it down (I think) to one of the scripts assigned to his entry in the area file. 30TRUGN0.BCS

 

Contents of which follow

 

IF
!TimerActive(21)
Global("SUMMON_WORG","LOCALS",0)
See(NearestEnemyOf(Myself),0)
THEN
RESPONSE #75
 FloatMessage(Myself,476) // "You will fall before He-Who-Never-Sleeps!"
 StartRandomTimer(21,6,12)
 Continue()
RESPONSE #25
 StartRandomTimer(21,6,12)
 Continue()
END
IF
!TimerActive(21)
!Global("SUMMON_WORG","LOCALS",0)
Global("AR3000_DRUM_SUMMON","GLOBAL",0)
THEN
RESPONSE #100
 FloatMessage(Myself,477) // "RIDERS!  Riders to Trugnuk!"
 StartRandomTimer(21,25,35)
 SetGlobal("AR3000_DRUM_SUMMON","GLOBAL",5)
 SetGlobal("SUMMON_WORG","LOCALS",0)
 Continue()
END
IF
HaveSpell(CLERIC_CURE_MODERATE_WOUNDS)
HPLostGT(Myself,18)
IsSpellTargetValid(Myself,CLERIC_CURE_MODERATE_WOUNDS,0)
THEN
RESPONSE #100
 ForceSpell(Myself,CLERIC_CURE_MODERATE_WOUNDS)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
HaveSpell(CLERIC_CURE_LIGHT_WOUNDS)
HPLostGT(Myself,8)
IsSpellTargetValid(Myself,CLERIC_CURE_LIGHT_WOUNDS,0)
THEN
RESPONSE #100
 ForceSpell(Myself,CLERIC_CURE_LIGHT_WOUNDS)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
HasItem("00potn04",Myself) // Potion of Healing
HPPercentLT(Myself,35)
THEN
RESPONSE #100
 UseItem("00potn04",Myself) // Potion of Healing
END
IF
HasItem("00potn05",Myself) // Potion of Extra Healing
HPPercentLT(Myself,35)
THEN
RESPONSE #100
 UseItem("00potn05",Myself) // Potion of Extra Healing
END
IF
HaveSpell(CLERIC_ENTANGLE)
See([PC],0)
IsSpellTargetValid(LastMarkedObject,CLERIC_ENTANGLE,0)
THEN
RESPONSE #100
 Spell(LastMarkedObject,CLERIC_ENTANGLE)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
ForceMarkedSpell(MARKED_SPELL)
SetSpellTarget(Nothing)
See(NearestEnemyOf(Myself),0)
THEN
RESPONSE #100
 MarkSpellAndObject("13021101",Myself,SPELLCAST_IGNORE_SEE | SPELLCAST_IGNORE_VALID_SPELL_TARGET) // CLERIC_CALL_LIGHTNING - 1302, CLERIC_BLESS - 1101
 Continue()
END
IF
!IsMarkedSpell(MARKED_SPELL)
THEN
RESPONSE #100
 Spell(SpellTarget,MARKED_SPELL)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
 ForceMarkedSpell(MARKED_SPELL)
END
IF
HaveSpell(CLERIC_CURSE)
See([PC],0)
IsSpellTargetValid(LastMarkedObject,CLERIC_CURSE,0)
THEN
RESPONSE #100
 Spell(LastMarkedObject,CLERIC_CURSE)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
Global("HOLD_PERSON_1_CAST","LOCALS",0)
HaveSpell(CLERIC_HOLD_PERSON)
See([PC],0)
IsSpellTargetValid(LastMarkedObject,CLERIC_HOLD_PERSON,0)
THEN
RESPONSE #100
 SetGlobal("HOLD_PERSON_1_CAST","LOCALS",1)
 SetGlobal("SUMMON_WORG","LOCALS",1)
 Spell(LastMarkedObject,CLERIC_HOLD_PERSON)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
HaveSpell(CLERIC_COMMAND)
See(NearestEnemyOf(Myself),0)
IsSpellTargetValid(LastMarkedObject,CLERIC_COMMAND,0)
THEN
RESPONSE #100
 Spell(LastMarkedObject,CLERIC_COMMAND)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
Global("HOLD_PERSON_2_CAST","LOCALS",0)
HaveSpell(CLERIC_HOLD_PERSON)
See(NearestEnemyOf(Myself),0)
IsSpellTargetValid(LastMarkedObject,CLERIC_HOLD_PERSON,0)
THEN
RESPONSE #100
 SetGlobal("HOLD_PERSON_2_CAST","LOCALS",1)
 SetGlobal("SUMMON_WORG","LOCALS",1)
 Spell(LastMarkedObject,CLERIC_HOLD_PERSON)
 WaitAnimation(Myself,WALK)
 WaitAnimation(Myself,CONJURE)
 WaitAnimation(Myself,CAST)
END
IF
Global("RW_30TRUGN00","LOCALS",0)
!NearSavedLocation(3)
THEN
RESPONSE #100
 SetGlobal("RW_30TRUGN00","LOCALS",1)
 Continue()
END
IF
!Global("RW_30TRUGN00","LOCALS",0)
NearSavedLocation(3)
THEN
RESPONSE #100
 SetGlobal("RW_30TRUGN00","LOCALS",0)
 NoAction()
END
IF
!Global("RW_30TRUGN00","LOCALS",0)
!See(NearestEnemyOf(Myself),0)
THEN
RESPONSE #100
 MoveToPoint([-2.-2])
END
IF
!TimerActive(22)
Global("RW_30TRUGN00","LOCALS",0)
!See(NearestEnemyOf(Myself),0)
THEN
RESPONSE #100
 RandomWalk()
 StartRandomTimer(22,5,10)
END

 

 

I'm not exactly sure how to read that. IWD2 is a different beast than the other IE games. Is there any one particular block that might do well to have some sort of check to make sure he isn't dead? I've not heard of any orc shaman that can call upon lightning from behind the grave....

 

Saving and exiting the game then reloading for some reason clears it. I'm not yet sure but resting long enough to clear the corpse might also clear it.

 

I can deal with it for this run through as it is gone now since I had exited to look for the offending script in NearInfinity. But I was thinking about future runs and perhaps having it available for anyone else who wants to use it.

Link to comment
If I'm on the other side of the map, the chat box gets spammed around once per round with statements that the lightning buildup dissipates harmlessly.

I have no specific help to offer, but I'm sure I've seen that line in IWD as well, usually after I've killed someone via Static Charge.

Link to comment

Yeah, I doubt you can fix this in the script (save removing the whole casting block). The effect is out there and just plays out. He conjured a storm and just like summons, it can outlive the caster.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...