Jump to content

Ka'rashur related bug


Recommended Posts

Ka'rashur is the Baatezu leader you encounter in Watcher's Keep.

Provided you meet his criteria, you are supposed to be offered a job (kill Tahzzar, Tanar'ri) and get rewarded for the deed.

However, upon accepting his quest, all three conditions for him turning hostile and attacking may evaluate as true (even though they shouldn't).

 

IF
Global("BatAttacked","GLOBAL",1)
GlobalGT("zGorBat1Job","GLOBAL",0)
Global("Attacked","LOCALS",0)
Allegiance(Myself,NEUTRAL)
THEN
RESPONSE #100
	SetGlobal("Attacked","LOCALS",1)
	StartDialogueNoSet(Player1)

IF WEIGHT #0 ~Global("BatAttacked","GLOBAL",1)
GlobalGT("zGorBat1Job","GLOBAL",0)
Global("BatEnemy","GLOBAL",0)~ THEN BEGIN 0 // from:
 SAY #63166 /* ~Ahh... betrayal comes as no surprise to demons made only of lies...~ [GORBAT08] */
 IF ~~ THEN DO ~SetGlobal("BatEnemy","GLOBAL",1)~ EXIT
END

IF
Global("BatEnemy","GLOBAL",1)
Allegiance(Myself,NEUTRAL)
THEN
RESPONSE #100
	Enemy()

Accepting his quest sets zGorBat1Job to 1.

 

There're 1 Erinyes and 2 Bonefiends in Marching Mountains (they spawn when you open the container behind the "lower" force field) that set BatAttacked to 1 when they are attacked (but apparently, it's the Erinyes' script alone that does it). Admittedly, they are Baatezu as well, but I don't think this was intended.

 

(Yeah, that wasn't very helpful, was it?)

 

The trap script is YSSUMM2.BCS

 

IF
Opened([ANYONE])
THEN
RESPONSE #100
	CreateVisualEffect("ICWRATI",[2136.2329])
	CreateVisualEffect("SPPLANAR",[2084.2106])
	CreateVisualEffect("SPPLANAR",[1828.2367])
	CreateVisualEffect("SPPLANAR",[2461.2297])
	Wait(1)
	CreateCreature("DBONEF01",[2084.2106],0) // Bone Fiend
	CreateCreature("DBONEF01",[1828.2367],0) // Bone Fiend
	CreateCreature("GORBAT2",[2461.2297],0) // Erinyes
	ActionOverride("GORBAT2",Enemy())
END

I'll leave the rest in your competent hands.

Link to comment

Ugh, gorbat1.bcs does get around, doesn't it?

 

I suppose we could avoid adding any new scripts by adding a bunch of area checks, but it's not pretty.

 

/edit

 

Let's think of something better to do.

ACTION_IF GAME_IS ~tob~ THEN BEGIN
 COPY_EXISTING gorbat.bcs override
DECOMPILE_BCS_TO_BAF
  READ_ASCII   0 t_0 (BUFFER_LENGTH)
  DELETE_BYTES 0 BUFFER_LENGTH
  INNER_PATCH_SAVE t_0 ~%t_0%~ BEGIN
	REPLACE_TEXTUALLY ~IF~ ~IF%lnl%  AreaCheck("ar3013")~
  END
  INNER_PATCH_SAVE t_1 ~%t_0%~ BEGIN
	REPLACE_TEXTUALLY ~AreaCheck("ar3013")~ ~!AreaCheck("ar3013")~
	REPLACE_TEXTUALLY ~SetGlobal("BatAttacked","GLOBAL",1)~ ~~
	REPLACE_TEXTUALLY ~Global("BatEnemy","GLOBAL",1)~ ~~
  END
  INSERT_BYTES 0 STRING_LENGTH EVALUATE_BUFFER ~%t_0%~
  WRITE_ASCIIE 0 ~%t_0%~
  SET len = BUFFER_LENGTH
  INSERT_BYTES len STRING_LENGTH EVALUATE_BUFFER ~%t_1%~
  WRITE_ASCIIE len ~%t_1%~
COMPILE_BAF_TO_BCS
 BUT_ONLY
 UNLESS ~ar3013~
END

Link to comment

Archived

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

×
×
  • Create New...