Skip to content

Commit

Permalink
Collated v35.21 updates
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidMWWallace committed Nov 21, 2024
1 parent 0220f1f commit 5dc240e
Show file tree
Hide file tree
Showing 48 changed files with 695 additions and 108 deletions.
29 changes: 27 additions & 2 deletions stratagems/doc/readme-stratagems.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ <h1>Sword Coast Stratagems</h1>
<div class="section">
<p><strong><a href="http://www.gibberlings3.net/">A Gibberlings Three Mod</a><br /> </strong>
Author: </strong><a href="http://www.gibberlings3.net/forums/index.php?showuser=1067">DavidW</a></p>
<p><strong>Version 35.20</strong><br />
<p><strong>Version 35.21</strong><br />
<strong> Languages:</strong> English, French, German, Italian, Polish, Russian, Spanish, and Traditional Chinese.<br />
<strong>Platforms: </strong>Windows, Linux (Enhanced Edition only), Mac OS X (Enhanced Edition only)</p>
<p>Sword Coast Stratagems (<acronym title="Sword Coast Stratagems">SCS
Expand Down Expand Up @@ -3620,15 +3620,40 @@ <h3>Version 30 (January 2015)</h3>
<li>A handful of EE items no longer have doubled-up 'usable by' blocks.</li>
</ul>
</li>
<li>Version 35.20 (8th September 2024)
<li>Version 35.20 (8th September 2024)
<ul>
<li>Updated Chinese translation.</li>
<li>Fixed some issues with NPC auto-levelling that arose when games were saved and loaded.</li>
<li>Seven Eyes spell now works correctly.</li>
<li>"NPC Customization and Management" was failing to fully remove dual class flags from dual-class characters, leading to awkward consequences if they multiclassed.</li>
<li>Interjections in Watcher's Keep are no longer messed up by the 'go to Watcher's Keep early' component.</li>
<li>'Thieves gain skill points in multiples of 5' is no longer offered for install if you already have its functionality via Talents of Faerun.</li>
</ul>
</li>
<li>Version 35.21 (21st November 2024)
<ul>
<li>Fixed some issues with NPC auto-levelling that arose when games were saved and loaded.</li>
<li>Fixed a (SFO1e) library bug that was interfering with the detection of shields and offhand weapons.</li>
<li>Corrected several oBG2 installation issues that had crept in since 35.0 was released.</li>
<li>Tanar'ri spies had inserted a bug that made all Baatezu Chaotic Evil. Fixing this hopefully ends the Great Baatezu Civil War.</li>
<li>The cosmetic effects of the Balor vorpal sword now grant a saving throw (to match the saving throw SCS already gives against the main vorpal effect).</li>
<li>The Gith captain (along with other high level paladins/blackguards) waits till he can see enemies before summoning an ally.</li>
<li>Enemy mages have read the readme and no longer use Death Spell on creatures it doesn't affect.</li>
<li>Carsa, while still traumatized by her ordeal with Kahrk, doesn't endlessly relive it in Gullykin by constantly respawning.</li>
<li>Fixed some awkward interactions between shapeshift tokens and mods that alter the proficiency system.</li>
<li>Fixed a library glitch that was causing compatibility issues between IWDification random items and SCS (it was replacing some shortbows with swords).</li>
<li>'Increased Spellhold cost' now updates journal entries.</li>
<li>Nishruu have been slightly lowered in level so that Death Spell still affects them.</li>
<li>The Ascension version of the innate Cure Light Wounds bhaalspawn ability is now affected by the Enhance Cure/Cause spell tweak.</li>
<li>The Larloch's Minor Drain tweak no longer does an extra 4 hp of damage.</li>
<li>Stonefist now grants the listed +2 bonus to AC.</li>
<li>The IWD-style color spray component now installs properly.</li>
<li>Slight tweak to the SFO library to handle possible (unconfirmed) compatibility errors on level-zero creatures.</li>
<li>The IWD spells now overwrite previous versions of the spells installed by other mods (except Spell Revisions) - not doing so was leading to subsequent install failures when the other-mod version of an IWD spell was configured differently from our version.</li>
<li>Removed some (harmless) WARNINGs if you install the IWD spells and the spell tweaks on oBG2.</li>

</ul>
</li>
</ul>
</div>

Expand Down
15 changes: 8 additions & 7 deletions stratagems/fiend/fiend.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -176,13 +176,14 @@ END

// Balor sword: extra SCS edits

MAKE_PATCH
patch_ability_inline=>~ability_range=>3~
proficiency=>PROFICIENCYLONGSWORD
enchantment=>5
patch_effect_inline=>"match=>~opcode=13~ parameter2=>4 save_vs_death=>1 save_bonus=>~-4~"
END
LAF edit_item STR_VAR item=balor edits=patch_data END
itm.edit[balor]
[
m.ab.alter{s_range=3}
m_proficiency:=PROFICIENCYLONGSWORD
m_enchantment=5
m.ab_fx.alter{s_save_vs_poison=1 s_savebonus="-4"}
]


// Baalor explosion, borrowed from Ascension

Expand Down
2 changes: 1 addition & 1 deletion stratagems/fiend/fiend_shared.tph
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ DEFINE_PATCH_MACRO baatezu BEGIN
m_resist_magic_cold=50
m_resist_acid=0
m.resist_electricity=100
m_alignment:=CHAOTIC_EVIL
m_alignment:=LAWFUL_EVIL
END

DEFINE_PATCH_MACRO fiend_general_2e BEGIN
Expand Down
3 changes: 0 additions & 3 deletions stratagems/gameplay/shapeshift.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -114,18 +114,15 @@ BEGIN
unusable_cleric_thief=>1
unusable_mage_thief=>1
twohanded=>1
proficiency=>PROFICIENCYKATANA
icon_ground=>gward01
icon_carried=>cmisc6p
enchantment=>~%enchantment%~
add_ability => core_ability_data
add_effect_global_inline=>~opcode=>233 parameter1=>1 parameter2=>96~
add_effect_global_inline'=>~opcode=>0 parameter1=>"%AC%" parameter2=>0x10~
add_effect_global_inline''=>~opcode=>53 parameter1=>%animation%~ // animation
add_effect_global_inline'''=>~opcode=>145 parameter2=>0~ // no spells
add_effect_global_inline''''=>~opcode=>145 parameter2=>1~ // no spells
add_effect_global_inline'0=>~opcode=>215 target=>1 duration=>1 resource=>SPPOLYMP~ // swirly lights on start
add_effect_global_inline'99=>~opcode=>233 parameter1=>1 parameter2=>94~ // set Katana proficiency to 1
END
ACTION_IF enhanced_edition BEGIN
OUTER_SPRINT $patch_data(forbid_offhand) 1
Expand Down
18 changes: 18 additions & 0 deletions stratagems/gameplay/spellhold_cost.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,24 @@ BEGIN
LPF strref_apply STR_VAR function=swap_strref_spellhold END
IF_EXISTS
END

// these journal strings also mention it

OUTER_PATCH "" BEGIN
PATCH_FOR_EACH arguments IN
34187
BEGIN
LPF swap_strref_spellhold STR_VAR arguments END
END
PATCH_IF enhanced_edition BEGIN
PATCH_FOR_EACH arguments IN
74374
96385
BEGIN
LPF swap_strref_spellhold STR_VAR arguments END
END
END
END
END

DEFINE_PATCH_FUNCTION swap_strref_spellhold
Expand Down
9 changes: 6 additions & 3 deletions stratagems/genai/ssl/hla.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ THEN DO
END

IF TRIGGER
!GlobalTimerNotExpired("summondeva","LOCALS")
See(NearestEnemyOf(Myself))
!GlobalTimerNotExpired("summondeva","LOCALS")
RequireBlock(IsPaladin)
IgnoreBlock(IsBlackguard)
RequireBlock(IsHighLevel)
Expand All @@ -89,6 +90,7 @@ THEN DO
END

IF TRIGGER
See(NearestEnemyOf(Myself))
!GlobalTimerNotExpired("summondeva","LOCALS")
RequireBlock(IsBlackguard)
RequireBlock(IsHighLevel)
Expand All @@ -102,6 +104,7 @@ THEN DO
END

IF TRIGGER
See(NearestEnemyOf(Myself))
RequireBlock(IsBlackguard)
RequireBlock(Talents)
RequireBlock(IsHighLevel)
Expand All @@ -125,7 +128,7 @@ IF TRIGGER
Alignment(scstarget,CHAOTIC_EVIL)
!HasItem("harm",Myself)
THEN DO
Action(AbilityRES,"%BLACKGUARD_ABYSSAL_PACT%")
Action(SpellRES,"%BLACKGUARD_ABYSSAL_PACT%")
END

IF TRIGGER
Expand All @@ -139,7 +142,7 @@ IF TRIGGER
Alignment(scstarget,LAWFUL_EVIL)
!HasItem("harm",Myself)
THEN DO
Action(AbilityRES,"%BLACKGUARD_INFERNAL_CONTRACT%")
Action(SpellRES,"%BLACKGUARD_INFERNAL_CONTRACT%")
END

IF TRIGGER
Expand Down
2 changes: 1 addition & 1 deletion stratagems/help/help.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ DEFINE_ACTION_FUNCTION install_bg1_help BEGIN
LAF edit_creature INT_VAR tv=1 STR_VAR creature=~geltik malkax bhobgob hobgob hobjoia zargal baruk hakt ihobgob hobgo5 nevill~
editstring= ~strip_script=>"%tutu_var%shout %tutu_var%hobgobf %tutu_var%hobgoba" insert_script_high=>dw#gpsht specifics=>72~
END
LAF edit_creature STR_VAR creature= ~%tutu_var%hobgoba~ ~%tutu_scripth%obelite %tutu_scripth%obgob_a %tutu_scripth%obgob_b %tutu_scripth%obgob_c %tutu_scripth%obgob_d %tutu_scripth%obgob_e
LAF edit_creature STR_VAR creature= ~%tutu_var%hobgoba %tutu_scripth%obelite %tutu_scripth%obgob_a %tutu_scripth%obgob_b %tutu_scripth%obgob_c %tutu_scripth%obgob_d %tutu_scripth%obgob_e
%tutu_scripth%obelite %tutu_scripth%obgoa_a %tutu_scripth%obgoa_b %tutu_scripth%obgoa_c %tutu_scripth%obgoa_d %tutu_scripth%obgoa_e
%tutu_scripth%obgzhur~
editstring= ~strip_script=>"%tutu_var%hobgobf %tutu_var%hobgoba dw#gpsht" insert_script_high=>dw#gpsht specifics=>72~
Expand Down
Empty file.
13 changes: 12 additions & 1 deletion stratagems/iwdspells/data/skip_sr.2da
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,15 @@ WIZARD_MONSTER_SUMMONING_4
WIZARD_MONSTER_SUMMONING_5
WIZARD_MONSTER_SUMMONING_6
CLERIC_CAUSE_SERIOUS_WOUNDS_IWD
CLERIC_CAUSE_CRITICAL_WOUNDS_IWD
CLERIC_CAUSE_CRITICAL_WOUNDS_IWD
CLERIC_CAUSE_LIGHT_WOUNDS
CLERIC_SUNSCORCH
CLERIC_CURE_MODERATE_WOUNDS
CLERIC_CAUSE_MODERATE_WOUNDS
CLERIC_CAUSE_MEDIUM_WOUNDS
WIZARD_ICELANCE
WIZARD_VITRIOLIC_SPHERE
WIZARD_CONJURE_LESSER_EARTH_ELEMENTAL
WIZARD_CONJURE_LESSER_FIRE_ELEMENTAL
WIZARD_CONJURE_LESSER_AIR_ELEMENTAL
WIZARD_SUMMON_SHADOW
3 changes: 2 additions & 1 deletion stratagems/iwdspells/iwdspells_arcane.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ DEFINE_ACTION_FUNCTION iwdspells_arcane STR_VAR version="" BEGIN
LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=no_cap_at_level_20 RET value END
OUTER_SET truncate_at_level=value?"-1":20

LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=overwrite_old_spells RET overwrite_always=value END
LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=do_not_overwrite_old_spells RET value END
OUTER_SET overwrite_always=!value

OUTER_SPRINT resource_loc "%MOD_FOLDER%/%component_loc%/copyover"
// greenify a few summoning spell icons
Expand Down
4 changes: 3 additions & 1 deletion stratagems/iwdspells/iwdspells_divine.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ DEFINE_ACTION_FUNCTION iwdspells_divine STR_VAR version="" BEGIN
LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=no_cap_at_level_20 RET value END
OUTER_SET truncate_at_level=value?"-1":20

LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=overwrite_old_spells RET overwrite_always=value END
LAF check_ini INT_VAR silent=1 STR_VAR section=iwdspells ini=do_not_overwrite_old_spells RET value END
OUTER_SET overwrite_always=!value


OUTER_SPRINT resource_loc "%MOD_FOLDER%/%component_loc%/copyover"
Expand All @@ -35,6 +36,7 @@ DEFINE_ACTION_FUNCTION iwdspells_divine STR_VAR version="" BEGIN

ACTION_IF MOD_IS_INSTALLED "spell_rev/setup-spell_rev.tp2" 0 BEGIN
OUTER_SPRINT overwrite_these_spells "overwrite_sr.2da"

OUTER_SPRINT skip_these_spells "skip_sr.2da"
END ELSE BEGIN
OUTER_SPRINT overwrite_these_spells "overwrite.2da"
Expand Down
4 changes: 2 additions & 2 deletions stratagems/iwdspells/lib/move_spell_resources.tph
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ BEGIN
ACTION_IF "%afterwards%" STR_CMP "" BEGIN
// because IWDspells assumes UTF-8 encoding, whereas e.g. SCS assumes localized encoding, we need special attention to the tra file, and can't just load it from sfo_tra_loc
WITH_SCOPE BEGIN // needed so we don't permanently redefine sfo_tra_loc
ACTION_IF !VARIABLE_IS_SET sfo_iwdspells_extern_loaded || !sfo_iwdspells_extern_loaded BEGIN
//ACTION_IF (!VARIABLE_IS_SET sfo_iwdspells_extern_loaded || !sfo_iwdspells_extern_loaded) BEGIN
ACTION_IF !enhanced_edition BEGIN
LAF HANDLE_CHARSETS
INT_VAR from_utf8=1
Expand All @@ -741,7 +741,7 @@ BEGIN
END ELSE BEGIN
OUTER_SPRINT sfo_tra_loc "%MOD_FOLDER%/%component_loc%/lang"
END
END
//END
LAF run STR_VAR file="%afterwards%" location=lib tra="%afterwards_tra%" END
END
END
Expand Down
2 changes: 1 addition & 1 deletion stratagems/iwdspells/lib/obg2_arcane.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ opcodes to oBG2 counterparts.
ACTION_IF VARIABLE_IS_SET $IWD_spell_installed("WIZARD_EMOTION_HOPELESSNESS") BEGIN

COPY_EXISTING ~spwi411.spl~ ~override~ // emotion: hopelessness
LPF DELETE_EFFECT INT_VAR silent = 1 match_opcode = 321 END // use silent in case we're not using IWDspell version
LPF DELETE_EFFECT INT_VAR match_opcode = 321 END
PATCH_IF VARIABLE_IS_SET $IWD_spell_installed("WIZARD_EMOTION_HOPE") BEGIN
LPF CLONE_EFFECT INT_VAR match_opcode = 45 opcode = 206 STR_VAR resource = EVAL ~%WIZARD_EMOTION_HOPE%~ END
END
Expand Down
2 changes: 1 addition & 1 deletion stratagems/iwdspells/lib/obg2_divine.tpa
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ opcodes to oBG2 counterparts.

COPY_EXISTING ~%spell%.spl~ ~override~
READ_LONG 0x34 level
LPF DELETE_EFFECT INT_VAR match_opcode = 324 silent = 1 END
LPF DELETE_EFFECT INT_VAR match_opcode = 324 END
LPF CD_CONVERT_61 END // op 61 crashes oBG2, so convert it to seven op 50s for body glow
LPF ADD_SPELL_EFFECT INT_VAR insert_point = 0 opcode = 177 power = level parameter1 = 4 parameter2 = 3 resist_dispel = 2 STR_VAR resource = EVAL ~%eff%~ END // undead immune
PATCH_FOR_EACH race IN 121 139 144 145 147 156 157 158 159 169 BEGIN
Expand Down
4 changes: 2 additions & 2 deletions stratagems/lang/english/initial.tra
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The Merchant of Nashkel has promised us gold if we were to bring back a winter w

'The unitarily branching state has an emergent branching structure, with each branch giving approximately definite positions and momenta to macroscopic objects and with those objects evolving in an approximately classical way within their branch'

Presumably the author is, or was, a past inmate of the Asylum.
Presumably the author is, or was, an inmate of the Asylum.

STATISTICS:

Expand All @@ -25,7 +25,7 @@ Weight: 2~

'The essence of reversibility is that reversible laws can equally well be used to predict the past - to retrodict, as philosophers sometimes say. The motion of the planets is reversible: the present data about the planets can be used just as easily to determine past and future eclipses. The mixing of milk or the melting of ice is irreversible, information is lost in the process, so that many early states are compatible with the same later state.'

An acerbic note in a later hand criticizes the author's apparent ignorance of Wild Space, the planar multiverse, or even the weave, and suggests that the tome probably originates from a society too primitive to develop magic.
An acerbic note in a later hand criticizes the author's apparent ignorance of Wild Space, the planar multiverse, or even the weave, and suggests that the tome probably originates from a society too primitive to have developed magic.

STATISTICS:

Expand Down
34 changes: 32 additions & 2 deletions stratagems/lib/always.tph
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@
END
END

// Construct HLA table if it doesn't exist (do this every time, it might change
// Construct HLA table if it doesn't exist (do this every time, it might change)

LAF include STR_VAR file=initialise_hla_feat.tph locbase=lib END

Expand Down Expand Up @@ -265,7 +265,7 @@
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////

ACTION_IF !(VARIABLE_IS_SET ~initialise~ && FILE_EXISTS "%workspace%/do_once_marker.mrk") BEGIN
ACTION_IF !(VARIABLE_IS_SET ~initialise~ && FILE_EXISTS "%workspace%/do_once_marker_scs.mrk") BEGIN

ACTION_IF FILE_EXISTS "%workspace%/do_once_marker_scs.mrk" BEGIN
DELETE + "%workspace%/do_once_marker_scs.mrk"
Expand All @@ -286,6 +286,36 @@ ACTION_IF !(VARIABLE_IS_SET ~initialise~ && FILE_EXISTS "%workspace%/do_once_mar
LAM indirect_load


////////////////////////////////////////////////////////
//// On IWDEE, point the 'BEHOLDER_XX' spell.ids entries at
/// the INNATE_BEHOLDER_XX spells (likewise a few Symbols)
/////////////////////////////////////////////////////////



ACTION_IF GAME_IS iwdee BEGIN
ACTION_DEFINE_ASSOCIATIVE_ARRAY spell_ids_missing BEGIN
1716=>CLERIC_SYMBOL_HOPELESSNESS
1714=>CLERIC_SYMBOL_PAIN
3137=>BEHOLDER_ANTIMAGIC_RAY
3141=>BEHOLDER_CHARM_PERSON
3142=>BEHOLDER_SLEEP
3143=>BEHOLDER_FLESH_TO_STONE
3144=>BEHOLDER_DISINTEGRATE
3145=>BEHOLDER_FEAR
3146=>BEHOLDER_SLOW
3147=>BEHOLDER_CAUSE_SERIOUS_WOUNDS
3148=>BEHOLDER_DEATH_RAY
END
ACTION_PHP_EACH spell_ids_missing AS code=>name BEGIN

ACTION_IF !FILE_CONTAINS_EVALUATED ("override/spell.ids" "%code%[ %TAB%]+%name%") BEGIN
APPEND "spell.ids" "%code% %name%"
END
END
END


////////////////////////////////////////////////////////
//// Set up hotkeys
////////////////////////////////////////////////////////
Expand Down
5 changes: 2 additions & 3 deletions stratagems/lib/initialise_hla_feat.tph
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
DEFINE_ACTION_FUNCTION initialise_hla_feat
STR_VAR extant_list=""
extant_list_dir=lib
BEGIN

// if we're bg2 then...

ACTION_IF is_bg2 BEGIN
// read extant HLAs not in spell.ids onto the list

MAKE_PATCH
MAKE_PATCH
USE_ANY_ITEM=>spcl915
EXTRA_LEVEL_6=>spcl928
EXTRA_LEVEL_7=>spcl929
Expand Down Expand Up @@ -67,7 +66,7 @@ DEFINE_ACTION_MACRO read_hla_feat BEGIN
OUTER_SET spelltype=0
OUTER_SPRINT resref EVAL "%%hla%%"
COPY_EXISTING - "%%hla%%.spl" nowhere
READ_SHORT 0x1e spelltype
READ_SHORT 0x1c spelltype
READ_LONG 0x34 level
IF_EXISTS
OUTER_SET $hla_spelltype("%hla%")=spelltype
Expand Down
1 change: 1 addition & 0 deletions stratagems/mage/ssl/combatblocks/kill_summons.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ IF TRIGGER
OR(2)
Gender(scstarget,SUMMONED)
Gender(scstarget,20)
!CheckStatGT(scstarget,8,LEVEL)
TriggerBlock(Enemy|Helpless)
/*slowspell*/
THEN DO
Expand Down
2 changes: 2 additions & 0 deletions stratagems/mage/ssl/combatblocks/kill_summons_if_no_pc.ssl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
IF TRIGGER
Target([GOODCUTOFF.0.0.0.0.SUMMONED])
Target([GOODCUTOFF.0.0.0.0.20])
!CheckStatGT(scstarget,8,LEVEL)
IgnoreBlock(SeeInvisible)
BEGIN LOOP(scsvar||1;2;3;4;5;6)
OR(3)
Expand All @@ -23,6 +24,7 @@ END
IF TRIGGER
Target([GOODCUTOFF.0.0.0.0.SUMMONED])
Target([GOODCUTOFF.0.0.0.0.20])
!CheckStatGT(scstarget,8,LEVEL)
RequireBlock(SeeInvisible)
BEGIN LOOP(scsvar||1;2;3;4;5;6)
OR(2)
Expand Down
Loading

0 comments on commit 5dc240e

Please sign in to comment.