Author Topic: 3 bugs with tactics (v17) -- the bigg  (Read 1373 times)

Offline jcompton

  • Niche Exploiter
  • Administrator
  • Planewalker
  • *****
  • Posts: 7246
3 bugs with tactics (v17) -- the bigg
« on: May 20, 2004, 10:52:51 PM »
the bigg     
Posted: Apr 14 2004, 04:31 AM


1) cannot install gnome in the docks, I'll email you the debug file

2) Lich teleporting (again): you should not teleport in the "undead city" in the Unseeing quest. (since the lich appears offscreen).
Possibly you could use this code
CODE

/////////////////////////////////////////////////////////////////////
// Paranoia!
//
// Liches and other mages are smart enough to notice that they are
// mysteriously dying even if the PCs are protected from Undead or
// otherwise invisible, or they are wasting spell on summoned fodder,
// or players are doing tactical runaways to let spells expire.
/////////////////////////////////////////////////////////////////////
IF
 Global("active","locals",0)
 Detect(NearestEnemyOf(Myself))
 Allegiance(myself,ENEMY)
THEN
 RESPONSE #100
DisplayString(Myself,"You have three seconds to run away!")
SetGlobal("active","locals",1)
SetGlobalTimer("Active1","locals",3)
Continue()
END

IF
 Global("active1a","locals",0)
 !Detect(NearestEnemyOf(Myself))
 GlobalTimerExpired("active1","locals")
THEN
 RESPONSE #100
DisplayString(Myself,"Do not show again!")
SetGlobal("active1a","locals",1)
Continue()
END

IF
 Global("active","locals",1)
 Global("active1a","locals",1)
 Detect(NearestEnemyOf(Myself))
 GlobalTimerExpired("active1","locals")
 Allegiance(myself,ENEMY)
THEN
 RESPONSE #100
DisplayString(Myself,"You have chosen to die.")
     SetGlobal("active","locals",2)
SetGlobal("active1a","locals",1)
Continue()
END

IF
 Global("Paranoid","LOCALS",0)
OR (2)
 Detect([GOODCUTOFF.0.0.0.0.SUMMONED])
 !Detect(NearestEnemyOf(Myself))
!Detect([PC])


// This means:
// (See Summoned AND see not player) OR see nobody
//     =
//  (see Summ OR see nobody) AND (See not player OR see nobody)
//     =
//  (see summ OR see nobody) AND See not player

     OR(10)
     Detect([GOODCUTOFF.0.0.0.0.SUMMONED])     
     Global("active","locals",2)
     HPPercentLT(Myself,100)
     Exists(LastAttackerOf(Myself))
     SpellCastOnMe([GOODCUTOFF.0.0.0.0.SUMMONED],0)
     SpellCastOnMe([PC],0)
     SpellCastOnMe([FAMILIAR],0)
     SpellCastOnMe([ALLY],0)
     SpellCastOnMe([CONTROLLED],0)
     SpellCastOnMe([CHARMED],0)

// the flow is: I've been activated by having been watched for 3 secs, OR I'm threatened, OR I see Summoned but not PC

THEN
 RESPONSE #100
       SetGlobal("Paranoid","LOCALS",1)
       DisplayString(Myself,26703)
       Continue()
END

IF
 Global("Paranoid","LOCALS",1)
 !Detect(NearestEnemyOf(Myself))
 !GlobalTimerNotExpired("UndeadHate","LOCALS")
 General(Myself,UNDEAD) // GENERAL Undead
 OR(6)
   InMyArea(Player1)
   InMyArea(Player2)
   InMyArea(Player3)
   InMyArea(Player4)
   InMyArea(Player5)
   InMyArea(Player6)
THEN
 RESPONSE #100
   SetGlobalTimer("UndeadHate","LOCALS",24)
   DisplayString(Myself,62975)
   DisplayString(Myself,57171)
   ForceSpellRES("wwundead",Myself)
END

// a Lich will UndeadHate you in these five cases: he is hurt, he is attacked, he sees only summoned types, a spell is cast on him, OR he sees you once and then after at least three secs and then you disappear (the three secs thing is to allow you to go away if you do not want to fight him right now; but you cannot sneak past him or retreat a second time).


3) I installed Ease - locks before Imp Keep. The latter overwrites your .are, so the locks return triumphally closed. You should either use WRITE_LONG and whatnot to modify the .are, similar to Imp Ilyich, or state in Tactics readme that Imp Keep needs to be installed as soon as possible.

Also, I've found a way to make a "friendly" Imprisonment:
1)INTMOD.2DA: SET_2DA_ENTRY so that dice number for 25 int is 300 and dice size is 1. (it's 1 hour, or 6 minutes of Real Clock)
2) substitute Imprisonment with these actions:
a ) remove all Int bonus effects (Flayers)
b ) set intelligence to 25
c ) maze.

I've used 25 int because imp flayers do maze you, and had I used 1 int, an int-drained guy is kinda screwed up when mazed. Unless you cheese, you won't get 25 int. If you run out of scrls of freedom or whatnot, you'll have just to wait 6 minutes of your clock to get the PC back.
(Maybe you could use a longer timer, such as 2400, which is 8 hours, or a rest. But, in a rest-not area, you'll have to wait 48 minutes of real clock before continuing.)
This has the side consequence that Imprisoned people aren't considered "dead": this is great for Player1, but also means that if you imprison an E.G. Eclipse party member, you'll have to wait for him to come back and kill him the usual way. Before leaving the challenge area. Which takes away this simplicistic way of winning a battle.


*****
   
the bigg    
Posted: Apr 18 2004, 01:16 AM

   
Oh, another quick bug: in Imp Undead, the script does ReallyForceSpell(Myself,CLERIC_FINGER_OF_DEATH) (or MAGE_, I don't remember which). It should be cast on LastSeenBy(Myself), IMO, unless it's done to help Player1.
*****

   
weimer    
Posted: Apr 20 2004, 10:51 AM

   
(1) Gnome -- I can install it, so you'll have to send me the file to help me track down the problem you're having.

(2) Lich is Offscreen -- that's fine, it's not a valid reason (to me) for disabling teleporting here. Perhaps the lich has cast Farsight or Clairvoyance or has really good hearing.

(3) I'll mention that in the Ease-Locks component (which seems to be either strangely popular or strangely buggy). If someone wants to send me a TP2 patch for the Torgal ARE files, I'll use it instead.

(4) Imprisonment -- not sure what ot say about that. Cute idea, though. Note that some creatures have 'immunity to opcode - intelligence bonus' (either from equipment or a permanent effect) and would thus fail (2b).

******


the bigg    
Posted: Apr 25 2004, 01:04 AM

   
@1) Ok, I DLed V18 and the bug is squished. It was because tp2 was still referring to BCS while folder contained BAF. But, there's a little bug still in:
KRFAM1:
CODE

IF
 See(NearestEnemyOfType([GOODCUTOFF.0.0.MAGE_ALL]))
 OR(2)
   CheckStatGT(LastSeenBy(Myself),35,RESISTMAGIC)
   HasBounceEffects(LastSeenBy(Myself))
 Global("KR_CHAIN_CONT_FIRED","LOCALS",0)
THEN
 RESPONSE #100
   DisplayString(Myself,26328)  // ~Chain Contingency~
   ReallyForceSpell(LastSeenBy(Myself),WIZARD_PIERCE_SHIELD)
   ReallyForceSpell(LastSeenBy(Myself),WIZARD_PIERCE_SHIELD)
   ReallyForceSpell(LastSeenBy(Myself),WIZARD_PIERCE_SHIELD)
   SetGlobal("KR_CHAIN_CONT_FIRED","LOCALS",0)
END


KR_CHAIN_CONT_FIRED should be set to 1. (or the check would be unuseful and result in a loop; this issue was already opened by SixOfSpades).

@4) I think that, if a creature has immunity to INT change, it's probably done to make it harder (E.G. Ascension Yaga-Shura) to cheese it with Shapechange. this way, it would be difficult also to cheese it with Imprisonment. Just my thought anyway, but how many creatures do actually use it? I cannot check it myself, I can't get NI to work because it needs Java (which is 96 MB of DL, 86 too much for my 56k)

The small bug with general undead is still creeping
CODE

   SetGlobalTimer("UndeadPowers","LOCALS",18)
   ChangeClass(Myself,CLERIC)
   ReallyForceSpell(Myself,CLERIC_FINGER_OF_DEATH)

It should be RFS on LastSeenBy(Myself).
Cespenar says, "Kelsey and friends be at the Pocket Plane? Ohhh yesssss!" http://www.pocketplane.net

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
What color is grass?:
What is the seventh word in this sentence?:
What is five minus two (use the full word)?: