From 6469da669812c83434459e7d7c61347528714fe1 Mon Sep 17 00:00:00 2001 From: DavidMWWallace Date: Sun, 3 Feb 2019 14:20:34 -0800 Subject: [PATCH] Rest of the fixes for 2nd 'last call' list; detect T&B sequencers --- stratagems/bodhi/bodhi.tpa | 6 +- stratagems/bodhi/ssl/bodhi2.ssl | 32 ---- stratagems/bodhi/ssl/c6bodhi.ssl | 2 +- stratagems/demilich/ssl/dw#wkdem.ssl | 173 ------------------ stratagems/fiend/ssl/demlord.ssl | 143 +++++++++++++++ stratagems/gameplay/ease_of_use_ai.tpa | 3 + stratagems/gameplay/resource/bddefai.ssl | 40 ++++ stratagems/genie/ssl/dvefreet.ssl | 2 + stratagems/lang/english/gameplay.tra | 6 + stratagems/lang/english/setup.tra | 1 + stratagems/lang/english/vampire.tra | 1 + stratagems/lib/always.tph | 4 +- stratagems/lib/testing_suite.tpa | 41 ++++- stratagems/mage/override/bg2/level.2da | 2 +- .../mage/spellchoices/demivrgvs/conjurer.2da | 4 +- .../demivrgvs/conjurer.tph | 2 +- .../demivrgvs/invoker.tph | 5 + .../vanilla/invoker.tph | 6 + .../vanilla/necromancer.tph | 5 + .../ssl/combatblocks/highpowered_summons.ssl | 5 +- stratagems/mage/ssl/generalblocks/renew.ssl | 32 +++- stratagems/mage/ssl/main/dw#mislm.ssl | 1 - stratagems/mage/ssl/prep/chaincont.ssl | 2 + stratagems/mage/ssl/prep/medium.ssl | 7 + stratagems/readme-stratagems.html | 6 +- stratagems/setup-stratagems.tp2 | 1 + stratagems/sfo/filetype/lib_cre.tpa | 4 +- .../tactical_bg2/spellhold_irenicus.tpa | 2 +- stratagems/tactical_bg2/ssl/ppjon_add.ssl | 8 - stratagems/tactical_bg2/ssl/spirit_troll.ssl | 2 +- stratagems/test/diff_button.menu | 14 ++ stratagems/test/test.tpa | 5 +- stratagems/vampire/resource/SPWI206.SPL | Bin 0 -> 298 bytes .../vampire/ssl/vampire_definitions.ssl | 4 +- stratagems/vampire/ssl/vampire_initialise.ssl | 102 ++++++++++- stratagems/vampire/ssl/vampire_summons.ssl | 3 - stratagems/vampire/vampire.tpa | 17 +- 37 files changed, 443 insertions(+), 250 deletions(-) delete mode 100644 stratagems/demilich/ssl/dw#wkdem.ssl create mode 100644 stratagems/fiend/ssl/demlord.ssl create mode 100644 stratagems/genie/ssl/dvefreet.ssl create mode 100644 stratagems/test/diff_button.menu create mode 100644 stratagems/vampire/resource/SPWI206.SPL diff --git a/stratagems/bodhi/bodhi.tpa b/stratagems/bodhi/bodhi.tpa index 593d78ba..8886ebbb 100644 --- a/stratagems/bodhi/bodhi.tpa +++ b/stratagems/bodhi/bodhi.tpa @@ -53,7 +53,7 @@ BEGIN // bodhi's grimwards LAF install STR_VAR location=resource files="dw#bodfg.baf" END - LAF edit_creature STR_VAR creature=bodfgt02 editstring="insert_script_high=>dw#bodfg" END + LAF edit_creature STR_VAR creature="bodfgt01 bodfgt02" editstring="insert_script_high=>dw#bodfg" END END @@ -200,8 +200,8 @@ END script_new easiest easy core hard insane dw#c6bt1 c6vamp01 vampif01 vampif01 impbod1 impbod1 dw#c6bt2 c6vamp01 vampim01 vampim01 impbod2 impbod2 -dw#c6bt3 c6vamp01 c6vamp01 vampif01 vampif01 vamold1 -dw#c6bt4 c6vamp01 c6vamp01 vampim01 vampim01 vamold1 +dw#c6bt3 c6vamp01 c6vamp01 vampif01 vampif01 vamold01 +dw#c6bt4 c6vamp01 c6vamp01 vampim01 vampim01 vamold01 >>>>>>>> diff --git a/stratagems/bodhi/ssl/bodhi2.ssl b/stratagems/bodhi/ssl/bodhi2.ssl index 11fc249a..8e24e039 100644 --- a/stratagems/bodhi/ssl/bodhi2.ssl +++ b/stratagems/bodhi/ssl/bodhi2.ssl @@ -52,38 +52,6 @@ THEN StartDialogueNoSet(Player1) END -///// Summons - hardcore only - -IF TRIGGER - TriggerBlock(Insane) - Global("Init","LOCALS",0) - GlobalLT("CHAPTER","GLOBAL",5) - See([PC]) -THEN DO - Action(Literal) - SetGlobal("Init","LOCALS",1) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) -END - -IF TRIGGER - TriggerBlock(Hard) - Global("Init","LOCALS",0) - GlobalLT("CHAPTER","GLOBAL",5) - See([PC]) -THEN DO - Action(Literal) - SetGlobal("Init","LOCALS",1) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) - CreateCreatureObject("bodfgt02",Myself,0,0,0) -END - - INCLUDE FILE (%scsroot%/bodhi/ssl/bodhi_sleep.ssl) INCLUDE FILE (%scsroot%/bodhi/ssl/bodhi_touch.ssl) INCLUDE FILE (%scsroot%/vampire/ssl/vampire_melee.ssl) diff --git a/stratagems/bodhi/ssl/c6bodhi.ssl b/stratagems/bodhi/ssl/c6bodhi.ssl index d6c80ea3..7678924b 100644 --- a/stratagems/bodhi/ssl/c6bodhi.ssl +++ b/stratagems/bodhi/ssl/c6bodhi.ssl @@ -118,7 +118,7 @@ END IF - Global("Init","LOCALS",0) + Global("DMWW_Bodhi_Init","AR0809",0) THEN RESPONSE #100 // stall diff --git a/stratagems/demilich/ssl/dw#wkdem.ssl b/stratagems/demilich/ssl/dw#wkdem.ssl deleted file mode 100644 index c081d186..00000000 --- a/stratagems/demilich/ssl/dw#wkdem.ssl +++ /dev/null @@ -1,173 +0,0 @@ -IF - OnCreation() - PartyHasItem("clck26") //guard against multiple copies of the Cloak of Mirroring - relevant if SCS is installed midgame -THEN - RESPONSE #100 - DestroyItem("clck26") - Continue() -END - - -///////////////////////////////////////////////////////////////// -///// Block pro/undead scrolls -///////////////////////////////////////////////////////////////// - -IF - !GlobalTimerNotExpired("blockproundead","LOCALS") - See(NearestEnemyOf(Myself)) -THEN - RESPONSE #100 - ApplySpellRES("dw#nprun",Player1) - ApplySpellRES("dw#nprun",Player2) - ApplySpellRES("dw#nprun",Player3) - ApplySpellRES("dw#nprun",Player4) - ApplySpellRES("dw#nprun",Player5) - ApplySpellRES("dw#nprun",Player6) - SetGlobalTimer("blockproundead","LOCALS",300) - Continue() -END - - - - -////////////////////////////////////////////////////////////////////////////////////// -/// I'm a lich -/////////////////////////////////////////////////////////////////////////////////// - -VARIABLE(IsLich=True) -VARIABLE(HasL1=True) -VARIABLE(HasL2=True) -VARIABLE(HasL3=True) -VARIABLE(HasL4=True) -VARIABLE(HasL5=True) -VARIABLE(HasL6=True) -VARIABLE(HasL7=True) -VARIABLE(HasL8=True) -VARIABLE(HasL9=True) -VARIABLE(/*slowspell*/= ) -VARIABLE(IsConjurer=True) - -////////////////////////////////////////////////////////////////////////////////// -/// -/// Define actions -/// -//////////////////////////////////////////////////////////////////////////////////////// - -BEGIN LOOP(scsspellsubstitute1|| ) -BEGIN LOOP(scsspellsubstitute2|| ) - INCLUDE FILE(%scsroot%/mage/ssl/mage_definitions.ssl) -END LOOP -END LOOP - -/////////////////////////////////////////////////////////////////////////////////////// -//// Setup -/////////////////////////////////////////////////////////////////////////////////////// - - - -INCLUDE FILE (%scsroot%/mage/ssl/bg2/generalblocks/rest.ssl) - -IF - !Global("chaincontingencyfired","LOCALS",1) - OR(7) - Detect(NearestEnemyOf(Myself)) - BEGIN LOOP(scsplayer||1;2;3;4;5;6) - Range(Playerscsplayer,15) - END LOOP -THEN - RESPONSE #100 - SetGlobal("chaincontingencyfired","LOCALS",1) - SetGlobalTimer("redefend","LOCALS",0) - ReallyForceSpell(Myself,WIZARD_STONE_SKIN) - DisplayStringHead(Myself,26328) - ReallyForceSpell(Myself,WIZARD_PROTECTION_FROM_THE_ELEMENTS) - ReallyForceSpell(Myself,WIZARD_SPELL_IMMUNITY_ABJURATION) - ReallyForceSpell(Myself,WIZARD_SPELL_TURNING) - DisplayString(Myself,25942) - ReallyForceSpell(Myself,WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) - SetGlobal("spelltrigger","LOCALS",1) - SetGlobal("spellsequencer","LOCALS",3) - SetGlobal("melfnum","LOCALS",10) - ReallyForceSpell(Myself,DEMILICH_DEATH) - SetGlobal("seeabjuration","LOCALS",25) // this may seem long, but the demilich is likely to get a timestop off -END - -/////////////////////////////////////////////////////////////////////////// -// Melee -/////////////////////////////////////////////////////////////////////////// - -IF - GlobalGT("melfnum","LOCALS",0) - !HasItem("dw#melf",Myself) -THEN - RESPONSE #100 - IncrementGlobal("melfnum","LOCALS",-1) - ApplySpellRes("dw#melf",Myself) - Continue() -END - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/meleeblocks/demilich.ssl) - -///////////////////////////////////////////////////////////////////////////////////// -//// Demilich starts with a timestop/multisummon combo -///////////////////////////////////////////////////////////////////////////////////// - -DEFAULT TRIGGER(!GlobalTimerNotExpired("castspell","LOCALS")) - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/combatblocks/timestop.ssl) -INCLUDE FILE(%scsroot%/mage/ssl/bg2/combatblocks/planetar.ssl) -INCLUDE FILE(%scsroot%/mage/ssl/bg2/combatblocks/gate.ssl) - -////////////////////////////////////////////////////////////////////////// -// Renew and retreat -////////////////////////////////////////////////////////////////////////// - - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/generalblocks/renew.ssl) - - -////////////////////////////////////////////////////////////////////////// -// Look for PCs -////////////////////////////////////////////////////////////////////////// - -DEFAULT TRIGGER() - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/generalblocks/mill.ssl) - -DEFAULT TRIGGER(!GlobalTimerNotExpired("castspell","LOCALS")) - - -//////////////////////////////////////////////////////////////////////////// -// Core magic block -/////////////////////////////////////////////////////////////////////////// - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/magetypes/demilich.ssl) - -//////////////////////////////////////////////////////////////////////////// -///// Chase PCs -//////////////////////////////////////////////////////////////////////////// - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/generalblocks/chase.ssl) - - -////////////////////////////////////////////////////// -/// If everyone is helpless, kill'em. -////////////////////////////////////////////////////// - -IF - See(NearestEnemyOf(Myself)) - BEGIN LOOP(scsloopvar||1;2;3;4;5;6) - OR(3) - !See(Playerscsloopvar) - StateCheck(Playerscsloopvar,STATE_IMMOBILE) - CheckStatGT(Playerscsloopvar,0,HELD) - END LOOP -THEN - RESPONSE #100 - AttackReevaluate(NearestEnemyOf(Myself),15) -END - -INCLUDE FILE(%scsroot%/mage/ssl/bg2/generalblocks/closedown.ssl) -//////////////////////////// - - diff --git a/stratagems/fiend/ssl/demlord.ssl b/stratagems/fiend/ssl/demlord.ssl new file mode 100644 index 00000000..998d9212 --- /dev/null +++ b/stratagems/fiend/ssl/demlord.ssl @@ -0,0 +1,143 @@ +/////////////////////////////////////////////////////////////////////////////////////// +// manage conversation with PC (from vanilla script) +/////////////////////////////////////////////////////////////////////////////////////// + +IF + Detect([PC]) + Global("spoke","LOCALS",0) +THEN + RESPONSE #100 + SetGlobal("spoke","LOCALS",1) + StartDialogueNoSet(LastSeenBy(Myself)) +END + +IF + Dead("Ardulace") + Global("spoke","LOCALS",1) + Detect(Player1) + Allegiance(Myself,NEUTRAL) +THEN + RESPONSE #100 + SetGlobal("spoke","LOCALS",2) + SetGlobal("udDrowPlot","GLOBAL",40) + StartDialogueNoSet(LastSeenBy(Myself)) +END + +IF + Global("udDrowPlot","GLOBAL",44) + Dead("Phaere") + See(Player1) + Allegiance(Myself,NEUTRAL) +THEN + RESPONSE #100 + SetGlobal("udDrowPlot","GLOBAL",45) + StartDialogueNoSet(LastSeenBy(Myself)) +END + +//////////////////////////////////////////////////////////////////////// +// +// This block from the vanilla script is skipped. It acts as a block for +// other content; we replicate that block +// +//IF +// Global("DemonHatesAll","GLOBAL",0) +// Allegiance(Myself,ENEMY) +// Detect([PC]) +//THEN +// RESPONSE #100 +// AttackReevaluate(LastSeenBy(Myself),15) +//END +// +//////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////////////////////////// +/// Demon walks (from vanilla script) +////////////////////////////////////////////////////////////////////////// + +IF + OR(3) + !Global("DemonHatesAll","GLOBAL",0) + !Allegiance(Myself,ENEMY) + !Detect([PC]) + AreaCheck("AR2201") + Global("DemonWalks","GLOBAL",1) +THEN + RESPONSE #100 + Wait(3) + CreateVisualEffectObject("SPPORTAL",Myself) + SetGlobal("DemonWalks","GLOBAL",2) + MoveBetweenAreasEffect("AR2200","SPPORTAL",[4092.2503],S) +END + +IF + AreaCheck("AR2200") + Global("DemonWalks","GLOBAL",2) + See([PC]) +THEN + RESPONSE #100 + MoveToPointNoInterrupt([3848.2617]) + MoveToPointNoInterrupt([3823.2847]) + MoveToPointNoInterrupt([3711.2939]) + MoveToPointNoInterrupt([3469.2961]) + Wait(1) + MoveToPointNoInterrupt([3316.2769]) + MoveToPointNoInterrupt([3329.2594]) + MoveToPointNoInterrupt([2974.2309]) + Wait(1) + MoveToPointNoInterrupt([2799.2161]) + SetGlobal("DemonWalks","GLOBAL",3) +END + +IF + AreaCheck("AR2200") + Global("DemonWalks","GLOBAL",3) + See([PC]) +THEN + RESPONSE #100 + CreateVisualEffectObject("SPPORTAL",Myself) + Wait(3) + JumpToPoint([2376.2166]) + CreateVisualEffect("SPPORTAL",[2376.2166]) + Wait(4) + MoveToPointNoInterrupt([1843.2659]) + Wait(1) + MoveToPointNoInterrupt([1576.2712]) + Wait(1) + MoveToPointNoInterrupt([1472.2973]) + Wait(1) + SetGlobal("DemonWalks","GLOBAL",4) +END + +IF + AreaCheck("AR2200") + Global("DemonWalks","GLOBAL",4) + See([PC]) +THEN + RESPONSE #100 + CreateVisualEffectObject("SPPORTAL",Myself) + Wait(3) + JumpToPoint([1303.3073]) + CreateVisualEffect("SPPORTAL",[1303.3073]) + Wait(4) + MoveToPointNoInterrupt([1290.3234]) + Wait(2) + MoveToPointNoInterrupt([902.3765]) + SetGlobal("DemonWalks","GLOBAL",5) +END + +IF + AreaCheck("AR2200") + Global("DemonWalks","GLOBAL",5) + See([PC]) +THEN + RESPONSE #100 + CreateVisualEffectObject("SPPORTAL",Myself) + DestroySelf() +END + +///// combat script needs to kick in here + +VARIABLE(IsDemonLord=True) +INCLUDE FILE(%scsroot%/fiend/ssl/dembal01.ssl) + diff --git a/stratagems/gameplay/ease_of_use_ai.tpa b/stratagems/gameplay/ease_of_use_ai.tpa index 96761813..528f518e 100644 --- a/stratagems/gameplay/ease_of_use_ai.tpa +++ b/stratagems/gameplay/ease_of_use_ai.tpa @@ -47,6 +47,9 @@ DEFINE_ACTION_FUNCTION ~ease_of_use_ai~ BEGIN SCRIPT_TURN_UNDEAD_DESCRIPTION => 713 CHARACTER_SCRIPT_SMART_SCRIPT => 750 CHARACTER_SCRIPT_SMART_SCRIPT_DESCRIPTION => 751 + SCRIPT_USE_MELEE_WEAPONS_DESCRIPTION => 609 + SCRIPT_USE_RANGED_WEAPONS_DESCRIPTION => 610 + SCRIPT_ATTACK_ENEMIES_DESCRIPTION => 611 END ACTION_IF iwd_arcane BEGIN diff --git a/stratagems/gameplay/resource/bddefai.ssl b/stratagems/gameplay/resource/bddefai.ssl index 5f1d225b..e7d8cb73 100644 --- a/stratagems/gameplay/resource/bddefai.ssl +++ b/stratagems/gameplay/resource/bddefai.ssl @@ -19,6 +19,46 @@ END END LOOP END LOOP +/////////////////////////////////////////////////////////////////// +///// hot-keys +/////////////////////////////////////////////////////////////////// + +IF + HotKey(K) + Global("%disable_attacks%","LOCALS",0) +THEN + RESPONSE #100 + DisplayStringHead(Myself,@607) + SetGlobal("%disable_attacks%","LOCALS",1) +END + +IF + HotKey(K) + Global("%disable_attacks%","LOCALS",1) +THEN + RESPONSE #100 + DisplayStringHead(Myself,@608) + SetGlobal("%disable_attacks%","LOCALS",0) +END + +IF + HotKey(D) + Global("%disable_attacks%","LOCALS",0) +THEN + RESPONSE #100 + SetGlobal("%attack_mode%","LOCALS",1) + EquipMostDamagingMelee() +END + +IF + HotKey(F) + Global("%disable_attacks%","LOCALS",0) +THEN + RESPONSE #100 + SetGlobal("%attack_mode%","LOCALS",2) + EquipRanged() +END + /////////////////////////////////////////////////////////////////// ///// combat block ///// diff --git a/stratagems/genie/ssl/dvefreet.ssl b/stratagems/genie/ssl/dvefreet.ssl new file mode 100644 index 00000000..1c1e2f6d --- /dev/null +++ b/stratagems/genie/ssl/dvefreet.ssl @@ -0,0 +1,2 @@ +VARIABLE(IsSummoned=True) +INCLUDE FILE(%scsroot%/genie/ssl/efreet01.ssl) \ No newline at end of file diff --git a/stratagems/lang/english/gameplay.tra b/stratagems/lang/english/gameplay.tra index 0e4e9420..ad90a287 100644 --- a/stratagems/lang/english/gameplay.tra +++ b/stratagems/lang/english/gameplay.tra @@ -15,6 +15,11 @@ Invisibility. You can shift the character between melee (D) and ranged weapons ( 6) The character will cast some spells, by hotkey, on the whole party. This casting is highly accelerated, cannot be done in combat, and only casts on characters who are not already protected. Its main function is for later in the game when you can afford to carry enough spells to protect the whole party. The hot-keys are: C for Chaotic Commands; V for Death Ward; B for Protection from Fire, Protection from Lightning, and Protection from Magic Energy; Z for a paladin's Protection from Evil.~ @607 = ~No-melee mode activated~ @608 = ~No-melee mode deactivated~ +@609 = ~The character will prefer using melee weapons such as swords or maces. You can turn this on for the selected character(s) using hot-key D, if they are set to attack enemies.~ +@610 = ~The character will prefer using ranged weapons such as bows or slings. You can turn this on for the selected character(s) using hot-key F, if they are set to attack enemies.~ + +@611 = ~If enabled, the character will attack enemies on sight. If disabled, the character will only attack when enemies are within melee range. You can toggle this on and off for the selected character(s) using hot-key K.~ + @700= "No automatic healing" @701="Use healing spells / goodberries" @@ -25,6 +30,7 @@ Invisibility. You can shift the character between melee (D) and ranged weapons ( @706="Minute meteors" @707="Create items" + @710="The character will not automatically cast healing spells or use healing potions." @711="Out of combat, the character will cast healing spells on injured party members (though not their highest-level spells), and will consume Goodberries if injured." @712="Out of combat, the character will cast healing spells on injured party members (though not their highest-level spells), and will consume Goodberries and potions of healing if injured." diff --git a/stratagems/lang/english/setup.tra b/stratagems/lang/english/setup.tra index 20073ed5..965a34ad 100644 --- a/stratagems/lang/english/setup.tra +++ b/stratagems/lang/english/setup.tra @@ -78,6 +78,7 @@ @228 = ~Spells heal or inflict the maximum amount of damage in this range~ @229 = ~Spells heal or inflict about the average amount of damage in this range~ @230 = ~Skipping this component, as a very similar change is already installed via Spell Revisions~ +@231 = ~Skipping this component, as a very similar change is already installed via Tome and Blood~ @2000 = ~This component only works on Windows installs and does not work on the Enhanced Edition~ @3203 = ~Improved Minor Encounters~ @3209 = ~Smarter Throne of Bhaal final villain~ diff --git a/stratagems/lang/english/vampire.tra b/stratagems/lang/english/vampire.tra index 07d85161..79ebc961 100644 --- a/stratagems/lang/english/vampire.tra +++ b/stratagems/lang/english/vampire.tra @@ -8,5 +8,6 @@ @14503 = ~Children of the Night: calls wolf pack~ @14504 = ~Shapeshifts Rat~ @14505 = ~Shapeshifts Gaseous Form~ +@14506 = ~Fades into the mist~ @14507 = ~Shapeshifts Bat~ @14508 = ~Mesmerism~ diff --git a/stratagems/lib/always.tph b/stratagems/lib/always.tph index f9118cbb..cff901d9 100644 --- a/stratagems/lib/always.tph +++ b/stratagems/lib/always.tph @@ -376,14 +376,14 @@ END ACTION_IF dw_iwd_arcane BEGIN OUTER_SPRINT sslvariables "%sslvariables%"^"&"^"SCSIWDArcane=True" END - ACTION_IF iwd_arcane BEGIN + ACTION_IF iwd_arcane && !demivrgvs BEGIN OUTER_SPRINT sslvariables "%sslvariables%"^"&"^"IsIWDArcane=True" END ACTION_IF dw_iwd_divine BEGIN OUTER_SPRINT sslvariables "%sslvariables%"^"&"^"SCSIWDDivine=True" END - ACTION_IF iwd_divine BEGIN + ACTION_IF iwd_divine && !demivrgvs BEGIN OUTER_SPRINT sslvariables "%sslvariables%"^"&"^"IsIWDDivine=True" END diff --git a/stratagems/lib/testing_suite.tpa b/stratagems/lib/testing_suite.tpa index 54e8d6d8..ad81826e 100644 --- a/stratagems/lib/testing_suite.tpa +++ b/stratagems/lib/testing_suite.tpa @@ -164,7 +164,7 @@ END >>>>>>>> LAF extend_area_script STR_VAR area=ar2102 top=ada_ar inline=yes END - +// test final battle with Jon <<<<<<<< .../stratagems-inline/hellslay_global.baf IF @@ -202,6 +202,7 @@ END LAF extend_area_script STR_VAR area=ar2900 top=hellslay_ar2900 inline=yes END +// test Demogorgon battle <<<<<<<< .../stratagems-inline/demogorgon_global.baf IF @@ -223,6 +224,8 @@ END LAF extend STR_VAR script="baldur baldur25" top=demogorgon_global inline=yes END +// test Kangaxx + <<<<<<<< .../stratagems-inline/kangaxx_global.baf IF Global("DW_kangaxx","GLOBAL",1) @@ -242,7 +245,7 @@ END LAF extend STR_VAR script="baldur baldur25" top=kangaxx_global inline=yes END - <<<<<<<< .../stratagems-inline/kangaxx_ar0331.baf +<<<<<<<< .../stratagems-inline/kangaxx_ar0331.baf IF Global("DW_kangaxx","GLOBAL",2) THEN @@ -255,7 +258,41 @@ END LAF extend_area_script STR_VAR area=ar0331 top=kangaxx_ar0331 inline=yes END +// test C6 Bodhi fight + +<<<<<<<< .../stratagems-inline/c6bodhi_global.baf + +IF + Global("DW_c6bodhi","GLOBAL",1) +THEN + RESPONSE #100 + SetGlobal("DW_c6bodhi","GLOBAL",2) + ActionOverride(Player1,LeaveAreaLUA("AR0809","",[1240.490],NE)) + ActionOverride(Player2,LeaveAreaLUA("AR0809","",[1245.495],NE)) + ActionOverride(Player3,LeaveAreaLUA("AR0809","",[1250.500],NE)) + ActionOverride(Player4,LeaveAreaLUA("AR0809","",[1255.505],NE)) + ActionOverride(Player5,LeaveAreaLUA("AR0809","",[1260.510],NE)) + ActionOverride(Player6,LeaveAreaLUA("AR0809","",[1265.515],NE)) + Continue() +END +>>>>>>>> + +LAF extend STR_VAR script="baldur baldur25" top=c6bodhi_global inline=yes END + +<<<<<<<< .../stratagems-inline/c6bodhi.d +APPEND c6bodhi + +IF WEIGHT #-1000 ~Global("DW_c6bodhi","GLOBAL",2)~ THEN BEGIN bodhi_tangle SAY ~Let's cut to the chase, sweetheart.~ +IF ~~ THEN DO ~SetGlobal("DW_c6bodhi","GLOBAL",0)~ GOTO 22 END END +>>>>>>>> + +// LAF extend_area_script STR_VAR area=ar0809 top=c6bodhi_area inline=yes END +COMPILE ".../stratagems-inline/c6bodhi.d" + +END // end of BG2 bit + + ACTION_IF is_bg1 BEGIN diff --git a/stratagems/mage/override/bg2/level.2da b/stratagems/mage/override/bg2/level.2da index ccb83722..2bc39a20 100644 --- a/stratagems/mage/override/bg2/level.2da +++ b/stratagems/mage/override/bg2/level.2da @@ -59,7 +59,7 @@ HLSION 22 PPIRENI2 30 PPWANEV2 18 YAGA02 27 -NEVAZIAH 18 +NEVAZIAH 14 GORLIC01 33 GROMG08 24 IOGREMAG 7 diff --git a/stratagems/mage/spellchoices/demivrgvs/conjurer.2da b/stratagems/mage/spellchoices/demivrgvs/conjurer.2da index 30939d45..443f23c2 100644 --- a/stratagems/mage/spellchoices/demivrgvs/conjurer.2da +++ b/stratagems/mage/spellchoices/demivrgvs/conjurer.2da @@ -4,7 +4,7 @@ DEMIVRGVS CONJURER 3 FLAME_ARROW MONSTER_SUMMONING_1 4 MONSTER_SUMMONING_2 MONSTER_SUMMONING_2 VITRIOLIC_SPHERE VITRIOLIC_SPHERE CONFUSION 5 CONJURE_LESSER_AIR_ELEMENTAL CONJURE_LESSER_FIRE_ELEMENTAL CONJURE_LESSER_EARTH_ELEMENTAL MONSTER_SUMMONING_3 MONSTER_SUMMONING_3 WAVES_OF_FATIGUE -6 INVISIBLE_STALKER INVISIBLE_STALKER POWER_WORD_SILENCE CONJURE_EARTH_ELEMENTAL CONJURE_FIRE_ELEMENTAL CONJURE_AIR_ELEMENTAL -7 SPHERE_OF_CHAOS SUMMON_EFREET SUMMON_DJINNI SUMMON_HAKEASHAR +6 INVISIBLE_STALKER INVISIBLE_STALKER POWER_WORD_SILENCE CONJURE_EARTH_ELEMENTAL CONJURE_FIRE_ELEMENTAL CONJURE_AIR_ELEMENTAL MONSTER_SUMMONING_4 MONSTER_SUMMONING_4 +7 SPHERE_OF_CHAOS SUMMON_EFREET SUMMON_DJINNI SUMMON_HAKEASHAR MONSTER_SUMMONING_5 8 MONSTER_SUMMONING_6 MONSTER_SUMMONING_6 SYMBOL_STUN SYMBOL_DEATH SYMBOL_WEAKNESS 9 POWER_WORD_KILL IMPRISONMENT \ No newline at end of file diff --git a/stratagems/mage/spellchoices_defensive/demivrgvs/conjurer.tph b/stratagems/mage/spellchoices_defensive/demivrgvs/conjurer.tph index 681ef438..2cb6e96d 100644 --- a/stratagems/mage/spellchoices_defensive/demivrgvs/conjurer.tph +++ b/stratagems/mage/spellchoices_defensive/demivrgvs/conjurer.tph @@ -130,7 +130,7 @@ BEGIN PUSH_RANDOM spells (BREACH null) PUSH_RANDOM spells (DISPEL_MAGIC null) PUSH_RANDOM spells (DEATH_SPELL TRUE_SIGHT null) - PUSH_RANDOM spells (MESTILS_ACID_SHEATH null ) + PUSH_RANDOM spells (MESTILS_ACID_SHEATH null ) PUSH_RANDOM spells (TELEPORT_FIELD GREATER_MALISON GREATER_MALISON null null null) PUSH_RANDOM spells (SLOW null) PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) diff --git a/stratagems/mage/spellchoices_defensive/demivrgvs/invoker.tph b/stratagems/mage/spellchoices_defensive/demivrgvs/invoker.tph index 1b7a3ba1..a285e0eb 100644 --- a/stratagems/mage/spellchoices_defensive/demivrgvs/invoker.tph +++ b/stratagems/mage/spellchoices_defensive/demivrgvs/invoker.tph @@ -51,6 +51,7 @@ BEGIN PUSH_RANDOM spells (DETECT_INVISIBILITY null) PUSH_RANDOM spells (INVISIBILITY null null) PUSH_RANDOM spells (SLOW DISPEL_MAGIC) + PUSH_RANDOM spells (FIRE_SHIELD_RED null null) END //////////////////////////////////// levels 9-10 ////////////////////////////////////////// @@ -63,6 +64,7 @@ BEGIN PUSH_RANDOM spells (DETECT_INVISIBILITY null) PUSH spells MIRROR_IMAGE PUSH_RANDOM spells (MIRROR_IMAGE+MS_OFFENSIVE MIRROR_IMAGE+MS_OFFENSIVE VOCALIZE+MS_DEFENSIVE MS_DEFENSIVE) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 11 ////////////////////////////////////////// 11 BEGIN @@ -77,6 +79,7 @@ BEGIN PUSH_RANDOM spells (MIRROR_IMAGE+MS_OFFENSIVE MIRROR_IMAGE+MS_OFFENSIVE VOCALIZE+MS_DEFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (TELEPORT_FIELD null) PUSH_RANDOM spells (BREACH null) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 12 ////////////////////////////////////////// 12 BEGIN @@ -89,6 +92,7 @@ BEGIN PUSH_RANDOM spells (TELEPORT_FIELD null) PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 13 ////////////////////////////////////////// 13 BEGIN @@ -104,6 +108,7 @@ BEGIN PUSH_RANDOM spells (SLOW null) PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 14 ////////////////////////////////////////// 14 BEGIN diff --git a/stratagems/mage/spellchoices_defensive/vanilla/invoker.tph b/stratagems/mage/spellchoices_defensive/vanilla/invoker.tph index f9a8c4af..9da88241 100644 --- a/stratagems/mage/spellchoices_defensive/vanilla/invoker.tph +++ b/stratagems/mage/spellchoices_defensive/vanilla/invoker.tph @@ -48,6 +48,7 @@ BEGIN PUSH_RANDOM spells (MINOR_SPELL_DEFLECTION null) PUSH_RANDOM spells (INVISIBILITY null null) PUSH_RANDOM spells (SLOW DISPEL_MAGIC) + PUSH_RANDOM spells (FIRE_SHIELD_RED null null) END //////////////////////////////////// levels 9-10 ////////////////////////////////////////// @@ -59,6 +60,7 @@ BEGIN PUSH_RANDOM spells (INVISIBILITY null) PUSH spells MIRROR_IMAGE PUSH_RANDOM spells (MIRROR_IMAGE+MS_OFFENSIVE MIRROR_IMAGE+MS_OFFENSIVE VOCALIZE+MS_DEFENSIVE MS_DEFENSIVE) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 11 ////////////////////////////////////////// 11 BEGIN @@ -70,6 +72,7 @@ BEGIN PUSH spells MIRROR_IMAGE PUSH_RANDOM spells (MIRROR_IMAGE+MS_OFFENSIVE MIRROR_IMAGE+MS_OFFENSIVE VOCALIZE+MS_DEFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (BREACH null) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 12 ////////////////////////////////////////// 12 BEGIN @@ -80,6 +83,7 @@ BEGIN PUSH_RANDOM spells (TELEPORT_FIELD null) PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 13 ////////////////////////////////////////// 13 BEGIN @@ -94,6 +98,7 @@ BEGIN PUSH_RANDOM spells (SLOW null) PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 14 ////////////////////////////////////////// 14 BEGIN @@ -109,6 +114,7 @@ BEGIN PUSH_RANDOM spells (MS_OFFENSIVE MS_DEFENSIVE) PUSH_RANDOM spells (SEQ_D1 SEQ_D2 SEQ_O) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_RED null) END //////////////////////////////////// level 15 ////////////////////////////////////////// 15 BEGIN diff --git a/stratagems/mage/spellchoices_defensive/vanilla/necromancer.tph b/stratagems/mage/spellchoices_defensive/vanilla/necromancer.tph index b5ddcf3d..18d4d251 100644 --- a/stratagems/mage/spellchoices_defensive/vanilla/necromancer.tph +++ b/stratagems/mage/spellchoices_defensive/vanilla/necromancer.tph @@ -48,6 +48,7 @@ BEGIN PUSH_RANDOM spells (DIMENSION_DOOR null null) PUSH_RANDOM spells (STONE_SKIN PROTECTION_FROM_NORMAL_MISSILES) PUSH_RANDOM spells (SLOW null) + PUSH_RANDOM spells (FIRE_SHIELD_BLUE null null) PUSH spells MS_OFFENSIVE END //////////////////////////////////// level 11 ////////////////////////////////////////// @@ -58,6 +59,7 @@ BEGIN PUSH_RANDOM spells (MINOR_SPELL_DEFLECTION MINOR_SPELL_TURNING null) PUSH_RANDOM spells (TELEPORT_FIELD GREATER_MALISON GREATER_MALISON null null null) PUSH_RANDOM spells (BREACH null) + PUSH_RANDOM spells (FIRE_SHIELD_BLUE null) END //////////////////////////////////// level 12 ////////////////////////////////////////// 12 BEGIN @@ -72,6 +74,7 @@ BEGIN PUSH_RANDOM spells (TELEPORT_FIELD GREATER_MALISON GREATER_MALISON null null null) PUSH spells MS_OFFENSIVE PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_MINOR_SPELL_DEFLECTION CNT_STONESKIN CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_BLUE null) END //////////////////////////////////// level 13 ////////////////////////////////////////// 13 BEGIN @@ -84,6 +87,7 @@ BEGIN PUSH_RANDOM spells (SLOW null) PUSH spells MS_OFFENSIVE PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_MINOR_SPELL_DEFLECTION CNT_STONESKIN CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_BLUE null) END //////////////////////////////////// level 14 ////////////////////////////////////////// 14 BEGIN @@ -97,6 +101,7 @@ BEGIN PUSH spells MS_OFFENSIVE PUSH_RANDOM spells (SEQ_D1 SEQ_D2 SEQ_O) PUSH_RANDOM spells (CNT_MINOR_GLOBE_OF_INVULNERABILITY CNT_MINOR_SPELL_DEFLECTION CNT_STONESKIN CNT_STONESKIN) + PUSH_RANDOM spells (FIRE_SHIELD_BLUE null) END //////////////////////////////////// level 15 ////////////////////////////////////////// 15 BEGIN diff --git a/stratagems/mage/ssl/combatblocks/highpowered_summons.ssl b/stratagems/mage/ssl/combatblocks/highpowered_summons.ssl index d470b965..581b2bd7 100644 --- a/stratagems/mage/ssl/combatblocks/highpowered_summons.ssl +++ b/stratagems/mage/ssl/combatblocks/highpowered_summons.ssl @@ -1,12 +1,11 @@ + IF TRIGGER - RequireBlock(IsIWDArcane) + RequireBlock(Demivrgvs|IsIWDArcane) TargetBlock(PCsPreferringWeak) TriggerBlock(Enemy|Helpless) THEN DO Combine() - Action(Spell,WIZARD_CREATE_BONEGUARD|100|50) - Action(Spell,WIZARD_MONSTER_SUMMONING_7|100|50) Action(Spell,WIZARD_MONSTER_SUMMONING_6|100|50) END diff --git a/stratagems/mage/ssl/generalblocks/renew.ssl b/stratagems/mage/ssl/generalblocks/renew.ssl index 51189351..05f40b09 100644 --- a/stratagems/mage/ssl/generalblocks/renew.ssl +++ b/stratagems/mage/ssl/generalblocks/renew.ssl @@ -53,6 +53,15 @@ THEN DO Action(SpellMyself,WIZARD_FIRE_SHIELD_BLUE) END +IF TRIGGER + RequireBlock(Demivrgvs) + CheckStatGT(Myself,0,CLERIC_INSECT_PLAGUE) + CheckStat(Myself,0,WIZARD_FIRE_SHIELD) + TriggerBlock(EasyPlus) +THEN DO + Action(SpellMyself,WIZARD_MESTILS_ACID_SHEATH) +END + ////////////////////////////////////////////////////////////////////// /// Clear Blindness //////////////////////////////////////////////////////////////////// @@ -763,9 +772,30 @@ END //////////////////////////////////////////////////////////////////////// -/// Priority 5: Use armour-type spells if not already in place +/// Priority 5: Use fire-shield-type and armour-type spells if not already in place //////////////////////////////////////////////////////////////////////// + +IF TRIGGER + CheckStat(Myself,0,WIZARD_FIRE_SHIELD) + TriggerBlock(EasyPlus) + GlobalTimerExpired("redefend","LOCALS") +THEN DO + Action(SpellMyself,WIZARD_FIRE_SHIELD_RED|70|30) + Action(SpellMyself,WIZARD_FIRE_SHIELD_BLUE|70|30) + SetGlobalTimer("redefend","LOCALS",7) +END + +IF TRIGGER + RequireBlock(Demivrgvs) + CheckStat(Myself,0,WIZARD_FIRE_SHIELD) + TriggerBlock(EasyPlus) + GlobalTimerExpired("redefend","LOCALS") +THEN DO + Action(SpellMyself,WIZARD_MESTILS_ACID_SHEATH|70|30) + SetGlobalTimer("redefend","LOCALS",7) +END + IF TRIGGER See(NearestEnemyOf(Myself)) Range(NearestEnemyOf(Myself),8) diff --git a/stratagems/mage/ssl/main/dw#mislm.ssl b/stratagems/mage/ssl/main/dw#mislm.ssl index 313639bd..035c030c 100644 --- a/stratagems/mage/ssl/main/dw#mislm.ssl +++ b/stratagems/mage/ssl/main/dw#mislm.ssl @@ -57,7 +57,6 @@ END IF TRIGGER THEN DO - Action(FakePrebuff,SPELL_IMMUNITY_ABJURATION|100|100) Action(FakePrebuff,SPELL_TURNING|100|100) Action(FakePrebuff,MINOR_GLOBE_OF_INVULNERABILITY|100|100) Action(FakePrebuff,GHOST_ARMOR|100|100) diff --git a/stratagems/mage/ssl/prep/chaincont.ssl b/stratagems/mage/ssl/prep/chaincont.ssl index 6ab9575d..e3203e64 100644 --- a/stratagems/mage/ssl/prep/chaincont.ssl +++ b/stratagems/mage/ssl/prep/chaincont.ssl @@ -104,6 +104,7 @@ IF TRIGGER IgnoreBlock(IsNormalWeaponImmune) GlobalGT("Chapter","GLOBAL",%bg2_chapter_7%) Global("ChainContingencyFired","LOCALS",0) + Global("contingencyfired","LOCALS",0) // guards against non-hostile mage edge cases TriggerBlock(CorePlus) THEN DO Action(Literal) @@ -119,6 +120,7 @@ IF TRIGGER !SSLBoolean(NoContingency) RequireBlock(IsNormalWeaponImmune) Global("ChainContingencyFired","LOCALS",0) + Global("contingencyfired","LOCALS",0) TriggerBlock(CorePlus) THEN DO Action(Literal) diff --git a/stratagems/mage/ssl/prep/medium.ssl b/stratagems/mage/ssl/prep/medium.ssl index ac568204..28679497 100644 --- a/stratagems/mage/ssl/prep/medium.ssl +++ b/stratagems/mage/ssl/prep/medium.ssl @@ -12,6 +12,13 @@ THEN DO Action(SpellL9Precast,WIZARD_ENERGY_BLADES) END +IF TRIGGER + RequireBlock(Demivrgvs) + TriggerBlock(HardPlusPrep) +THEN DO + Action(SpellPrecast,WIZARD_MESTILS_ACID_SHEATH) +END + //////////////////////////////////////////////////////////////////////////////////////////// diff --git a/stratagems/readme-stratagems.html b/stratagems/readme-stratagems.html index 9e04db67..19553bf9 100644 --- a/stratagems/readme-stratagems.html +++ b/stratagems/readme-stratagems.html @@ -94,7 +94,7 @@

Table of Contents

done so systematically.) However, "fair" is sometimes in the eye of the beholder, so please do read the component descriptions if this is important to you!
  • SCS is highly sensitive to the difficulty slider. SCS - has five difficulty settings (Basic, Improved, Tactical, Hardcore, and Insane) and the great majority of enemies are affected by the slider. At the lowest settings, SCS is about as difficulty as the unmodded game on Core difficulty; at Improved and Higher then enemies will behave much more intelligently; at higher difficulties, the enemies make more systematic use of their powers, and occasionally gain ability boosts. The difficulty of each individual component may be set via a special ability granted to your character, overriding the difficulty slider for that component.
  • + has five difficulty settings (Basic, Improved, Tactical, Hardcore, and Insane) and the great majority of enemies are affected by the slider. At the lowest settings, SCS is about as difficulty as the unmodded game on Core difficulty; at Improved and Higher then enemies will behave much more intelligently; at higher difficulties, the enemies make more systematic use of their powers, and occasionally gain ability boosts. The difficulty of each individual component may be set in Enhanced-Edition games via a new control on the Gameplay page, or on non-Enhanced games by a new special ability granted to your character; in either case this overrides the difficulty slider for that component.
  • SCS is almost pure AI. SCS mucks around rather little with the core powers of creatures, @@ -2716,7 +2716,10 @@

    Version 32 (October 2018)

  • Added a couple of yochlol to the drow ambush groups in Sendai's enclave.
  • Smarter Priests now includes the Priestesses of Umberlee in Baldur's Gate.
  • Carbos and Shank have been expelled from the Assassin's Guild.
  • +
  • Nevaziah is now level 14, and so less overwhelming for players who recruit Edwin. (If you prefer the original one, just edit stratagems/mage/override/bg2/level.2da before installing.
  • Slightly increased the number of 'real' magic weapons left by the Fine Weapons component.
  • +
  • Revised Bodhi's summons (she doesn't summon in chapter 3, when she's just playing with you; her summons in chapter 6 are sensitive to the difficulty slider.
  • +
  • Gibberlings now get AI more suited to their intellectual capacities.
  • Under-the-hood changes (not visible in game) diff --git a/stratagems/setup-stratagems.tp2 b/stratagems/setup-stratagems.tp2 index 6efbfde6..0183629d 100644 --- a/stratagems/setup-stratagems.tp2 +++ b/stratagems/setup-stratagems.tp2 @@ -499,6 +499,7 @@ CLEAR_MEMORY // force re-acquisition of spell data //////////////////////////////////////////////////////////////////////////////////////// BEGIN @3400 DESIGNATED 4250 GROUP @4 +REQUIRE_PREDICATE !FILE_EXISTS_IN_GAME "qdtnb_metamagic.qd" @231 LAF run STR_VAR files=innate_triggers location=spell END diff --git a/stratagems/sfo/filetype/lib_cre.tpa b/stratagems/sfo/filetype/lib_cre.tpa index 331336d0..dbc0de66 100644 --- a/stratagems/sfo/filetype/lib_cre.tpa +++ b/stratagems/sfo/filetype/lib_cre.tpa @@ -2546,13 +2546,13 @@ END /// Returns 1 if creature is unintelligent ///////////////////////////////////////////////////////////////////////////////////////////// -DEFINE_PATCH_FUNCTION CRE_check_if_moron // morons, by definition, are non-zombies, non-golems, and in one of the following categories: (i) general=HUMANOID,GIANTHUMANOID, or UNDEAD; (ii) race=DEMONIC, BEHOLDER or LYCANTHROPE; (iii) class=WOLF_VAMPIRIC, DOPPLEGANGER, or DRAGON +DEFINE_PATCH_FUNCTION CRE_check_if_moron // non-morons, by definition, are non-zombies, non-golems, non-gibberlings, and in one of the following categories: (i) general=HUMANOID,GIANTHUMANOID, or UNDEAD; (ii) race=DEMONIC, BEHOLDER or LYCANTHROPE; (iii) class=WOLF_VAMPIRIC, DOPPLEGANGER, or DRAGON RET value BEGIN LPF CRE_read_race RET race=value END TO_UPPER race PATCH_MATCH ~%race%~ WITH - ZOMBIE BEGIN + ZOMBIE GIBBERLING BEGIN SET value=1 END DEMONIC DOPPLEGANGER LYCANTHROPE BEHOLDER BEGIN diff --git a/stratagems/tactical_bg2/spellhold_irenicus.tpa b/stratagems/tactical_bg2/spellhold_irenicus.tpa index ccd5d343..8368007c 100644 --- a/stratagems/tactical_bg2/spellhold_irenicus.tpa +++ b/stratagems/tactical_bg2/spellhold_irenicus.tpa @@ -4,7 +4,7 @@ DEFINE_ACTION_FUNCTION spellhold_irenicus BEGIN // "mirrored clones" are actual copies LAF player_clones END - LAF swap_text STR_VAR files=ppjon.bcs swaps=~Global("Sim","LOCALS",0)=>False()~ END + LAF edit_script STR_VAR script=ppjon editstring="patch=>delete_action_if(DisplayString(Myself,48812))" END LAF extend STR_VAR file=ppjon location=ssl bottom=ppjon_add ssl=yes END diff --git a/stratagems/tactical_bg2/ssl/ppjon_add.ssl b/stratagems/tactical_bg2/ssl/ppjon_add.ssl index 7d3570d4..32e5bd3e 100644 --- a/stratagems/tactical_bg2/ssl/ppjon_add.ssl +++ b/stratagems/tactical_bg2/ssl/ppjon_add.ssl @@ -7,14 +7,6 @@ THEN CloseDoor("Door11") Lock("Door11") ReallyForceSpellRES("ag#immun",Myself) // shielding all PCs in the area from AI switch - ReallyForceSpellRES("%WIZARD_STONE_SKIN_PREBUFF%",Myself) - ReallyForceSpellRES("%WIZARD_PROTECTION_FROM_MAGIC_ENERGY_PREBUFF%",Myself) - ReallyForceSpell(Myself,WIZARD_PROTECTION_FROM_ELECTRICITY) - SetGlobal("ChainContingencyFired","LOCALS",1) - DisplayStringHead(Myself,26328) // Chain Contingency - ReallyForceSpell(Myself,WIZARD_IMPROVED_MANTLE) - ReallyForceSpell(Myself,WIZARD_SPELL_TURNING) - ReallyForceSpell(Myself,WIZARD_SPELL_IMMUNITY_ABJURATION) ForceSpell(Myself,DO_NOTHING) DisplayString(Myself,48812) // Spawn Clones ReallyForceSpellRES("dw#clone",Player1) diff --git a/stratagems/tactical_bg2/ssl/spirit_troll.ssl b/stratagems/tactical_bg2/ssl/spirit_troll.ssl index 9eb920e2..03b0831d 100644 --- a/stratagems/tactical_bg2/ssl/spirit_troll.ssl +++ b/stratagems/tactical_bg2/ssl/spirit_troll.ssl @@ -52,7 +52,7 @@ END IF TRIGGER TargetBlock(PCsInOrder) - TriggerBlock(Hard) + TriggerBlock(Insane) THEN DO Action(SpiritTrollSpell,12,12) END diff --git a/stratagems/test/diff_button.menu b/stratagems/test/diff_button.menu new file mode 100644 index 00000000..ab520e9d --- /dev/null +++ b/stratagems/test/diff_button.menu @@ -0,0 +1,14 @@ + button + { + area 158 550 302 44 + bam GUIOSTCL + sequence 2 + text "FEEDBACK_BUTTON" + text style "button" + action + " + + Infinity_PushMenu( 'OPTIONS_FEEDBACK' ); + selectedOpt = 0 + " + } diff --git a/stratagems/test/test.tpa b/stratagems/test/test.tpa index 2f47d6d1..5e75efdc 100644 --- a/stratagems/test/test.tpa +++ b/stratagems/test/test.tpa @@ -40,10 +40,11 @@ ACTION_IF GAME_IS iwdee BEGIN END ELSE BEGIN - LAF run STR_VAR file=difficulty_controls locbase=lib tra=difficulty END - + // LAF run STR_VAR file=difficulty_controls locbase=lib tra=difficulty END + LAF run STR_VAR file=testing_suite locbase=lib END + // LAF edit_script STR_VAR script=ppjon editstring="patch=>delete_action_if(DisplayString(Myself,48812))" END diff --git a/stratagems/vampire/resource/SPWI206.SPL b/stratagems/vampire/resource/SPWI206.SPL new file mode 100644 index 0000000000000000000000000000000000000000..f87cb2ac3a6de989ef9b61fec18b0485acf8bc1e GIT binary patch literal 298 zcmWFz@KFdeR8aV+$G}iOZ3ct0V{p8$fguA3FfuR*Ffi~kFt9Q(g9V@j6Id=dAl%c) zz|0xQ`6J~3R09Sxxgq8NISYEAqD4RsBf~6+0w9Zt0jk%D5y%7a85r2WvW#GhAfh4+ zOdtseU{;V}U`PS84MZKFf~ZtCQ2h}zh!`W-y+HM@6$P0^i6y8iA-r`AjBxW|>RsL3 M;(d*cu_2400 primary=>0 patch_ability_inline=>~casting_time=>0~ - patch_effect_inline'=>~resist_dispel=>0~ + patch_effect_inline'=>~resist_dispel=>0 duration=>"if duration>3 then 18 else no_change"~ END LAF edit_spell STR_VAR spell="%VAMPIRE_BAT_CLOUD%" edits=patch_data END @@ -147,17 +147,17 @@ DEFINE_ACTION_FUNCTION vampire_shapeshifts BEGIN // hiding spells + COPY "%scsroot%/%component_loc%/resource/spwi206.spl" "override/dw#vmhid.spl" // pristine copy (SR mucks with the core one a lot) MAKE_PATCH patch_effect_inline=>~match=>"opcode=139" parameter1=>15075~ - delete_global_effect=>true END - LAF clone_spell STR_VAR spell=~%WIZARD_INVISIBILITY%=>dw#vmhid~ edits=patch_data END + LAF edit_spell STR_VAR spell=dw#vmhid edits=patch_data END + OUTER_SET mist_strref=RESOLVE_STR_REF (@14506) MAKE_PATCH - patch_effect_inline=>~match=>"opcode=139" parameter1=>14506~ - delete_global_effect=>true + patch_effect_inline=>~match=>"opcode=139" parameter1=>%mist_strref%~ END - LAF clone_spell STR_VAR spell=~%WIZARD_INVISIBILITY%=>dw#vmmis~ edits=patch_data END + LAF clone_spell STR_VAR spell=~dw#vmhid=>dw#vmmis~ edits=patch_data END END @@ -232,9 +232,14 @@ DEFINE_ACTION_FUNCTION vampire_blood_drain BEGIN END LAF clone_item STR_VAR item=~%item_old%=>%item_new%~ edits=patch_data END + MAKE_PATCH + patch_ability_inline=>~backhand=>50 overhand=>50 thrust=>0~ + END + LAF edit_item STR_VAR item="%item_old%" edits=patch_data END END + END ////////////////////////////////////////////////////////////////////////////////////////////////