Jump to content


jastey

Member Since 14 Jul 2004
Offline Last Active Today, 12:39 PM

Topics I've Started

SoD's "bdresurr.spl" - what is different?

07 January 2018 - 12:54 PM

The resurrection spell bdresurr.spl is used in SoD to raise potentially dead party members upon transition from BG:EE to SoD (in bdsodtrn.bcs).

Thing is: This spell changes the animation from my joinable dog NPC into a human fighter. None of the other resurrection spells do: sppr504.spl, sppr729.spl, spwi720.spl, sppr504.spl.

The change inot human fighter animation also happens for Adalon's "change into drow and back" spells, so the dog is immune to those.

Since I'd like my dog to remain a dog, does anyone know why bdresurr.spl is so different? When looking at it with NI, all I see is a ranged "Raise Dead" effect like it is also in sppr504.spl, so I am at a loss why this breaks my "dog kit". (The dog cre has "animal" for GENERAL and "dog" for RACE but the kit is a wild addition of several kits to restrict it from using normal items).

 

Also, how would I prevent this from happening? The only thing I can think of is making my dog immune to bdresurr.spl.


SoD: check whether item is identified?

05 January 2018 - 12:47 AM

In the EE, it is possible to set the flag of an item to identified:
ActionOverride(Player1,SetItemFlags("%tutu_var%SW2H03", IDENTIFIED, TRUE))

How would I check whether an item was already identified?

Need help with REPLACE_TEXTUALLY

29 December 2017 - 12:12 PM

DECOMPILE_AND_PATCH with REPLACE_TEXTUALLY is a highly fragile thing, so I learned. Normally, I try to apply it and the patches are not applied. This time, I don't even get it to compile. The error message is

 

[bdcut65.bcs.BAF]  ERROR at line 18 column 1-115
Near Text:
    Failure("lexing: empty token")
ERROR: parsing [bdcut65.bcs.BAF]: Failure("lexing: empty token")
ERROR: [bdcut65.bcs] -> [override] Patching Failed (COPY) (Failure("lexing: empty token"))
Stopping installation because of error.

(bdcut65.bcs is a game script from SoD. So I don't even know whether it's an error on my side.)

 

I also tried to use the [%tab% %lnl%%mnl%%wnl%]+ thingie but this didn't compile with another error message about no matching group or similar error message.

 

 

This is my tp2-code currently. I would be very grateful if someone with more knowledge tells me how to specify this so it a) compiles and b) actually patches (SoD and EET, only).

/* Breagar is kicked in hell dimension - teleport to other areas */

COPY_EXISTING ~bdcut59b.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
REPLACE_TEXTUALLY ~\(ActionOverride("voghiln",Face(NW)) END\)~


~\1
IF
	Global("ACBreagar_kicked_bd4700","global",1)
	!Dead("ACBre")  
	!InParty("ACBre")  
THEN
	RESPONSE #100
		CutSceneId(Player1)
		MoveGlobal("bd4300","ACBre",[600.320])  
		ActionOverride("ACBre",Face(N))
END

IF
	Global("ACBreagar_kicked_bd4700","global",0)
	!Dead("ACBre")  
	!InParty("ACBre")  
THEN
	RESPONSE #100
		CutSceneId(Player1)
		MoveGlobal("bd4300","ACBre",[690.1254])  
		ActionOverride("ACBre",Face(NW))
END~
  END
BUT_ONLY_IF_IT_CHANGES


COPY_EXISTING ~bdcut58.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
REPLACE_TEXTUALLY ~\(ActionOverride("voghiln",Face(NE)) END\)~
~\1 \2

IF
	Global("ACBreagar_kicked_bd4700","global",1)
	!Dead("ACBre")  
	!InParty("ACBre")  
THEN
	RESPONSE #100
		CutSceneId(Player1)
		MoveGlobal("bd4400","ACBre",[1170.1240])  
		ActionOverride("ACBre",Face(NE))
END~
  END
BUT_ONLY_IF_IT_CHANGES

/* End of SoD - Breagar follows to abduction site */
COPY_EXISTING ~bdcut65.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~\(DisableAI(Player6,TRUE)\)~
~\1 DisableAI("ACBre",TRUE)~

    REPLACE_TEXTUALLY ~\(ActionOverride(Player6,LeaveAreaLUA("bd6100","",\[470\.270\],SE))\)~
~\1 ActionOverride("ACBre",LeaveAreaLUA("bd6100","",\[480\.260\],SE))~

    REPLACE_TEXTUALLY ~\(ActionOverride(Player6,MoveToPoint(\[780\.765\]))\)~
~\1 ActionOverride("ACBre",MoveToPoint(\[770\.790\]))~

  END
BUT_ONLY_IF_IT_CHANGES

/* End of SoD - Abduction */

COPY_EXISTING ~bd6100.bcs~ ~override~
  DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~\(ActionOverride(Player6,JumpToPoint([795.825]))\)~
~\1 ActionOverride("ACBre",JumpToPoint([760.800]))~

    REPLACE_TEXTUALLY ~\(ActionOverride(Player6,Face(SW))\)~
~\1 ActionOverride("ACBre",Face(SW))~

    REPLACE_TEXTUALLY ~\(ActionOverride(Player6,SetSequence(SEQ_SLEEP))\)~
~\1 ActionOverride("ACBre",SetSequence(SEQ_SLEEP))~

REPLACE_TEXTUALLY ~ApplySpellRES("bdfinal",Player6) Continue() END\)~
~\1 \2 \3 
IF
	Global("ACBreSoD_sleep","bd6100",0)
	StateCheck("ACBre",STATE_SLEEPING)
THEN
	RESPONSE #100
		SetGlobal("ACBreSoD_sleep","bd6100",1)
		ActionOverride("ACBre",MakeUnselectable(3600000))
		ApplySpellRES("bdfinal","ACBre")  // No such index
		Continue()
END

IF
	Global("ACBre_SoD_down","bd6100",0)
	OR(2)
		StateCheck("ACBre",STATE_REALLY_DEAD)
		TriggerOverride("ACBre",Global("bd_final","locals",1))
THEN
	RESPONSE #100
		SetGlobal("ACBre_SoD_down","bd6100",1)
		SetGlobalTimer("bd_sleep_timer","bd6100",THREE_MINUTES)
		Continue()
END
~

REPLACE_TEXTUALLY ~ApplySpellRES("bdsleep",Player6) END~
~\1 \2 

IF
	Global("bd_finale","bd6100",4)
	Global("ACBre_SoD_down","bd6100",0)
	!GlobalTimerNotExpired("bd_sleep_timer","bd6100")
THEN
	RESPONSE #100
		SetGlobalTimer("bd_sleep_timer","bd6100",THREE_MINUTES)
		ApplySpellRES("bdsleep","ACBre")  // No such index
END
~
  END
BUT_ONLY_IF_IT_CHANGES



May I also point out that making transitions of non-party members via cutscenes (that terminate themselves so there is no variable to work with for a mod NPC) is an evil thing to do of game developpers. Also, if someone solved this "move NPCs around in SoD" without having to patch cutscenes I am all ears.


[solved] Variable does not get set in CHAIN - need help

16 December 2017 - 10:18 AM

Do you see anything wrong with this chain? Because the "DO ~SetGlobal("C#AjantisBG1_RasaadRomanceConflict","GLOBAL",1)~" is not performed in the game (even though I doubled it to get it to work), i.e. "C#AjantisBG1_RasaadRomanceConflict" does not exist after the dialogue run, and the dialogue loops.
 

/* Ajantis - Rasaad romance conflict BG1 */
CHAIN
IF WEIGHT #-1 ~%BGT_VAR% Global("C#AjantisBG1_RasaadRomanceConflict","GLOBAL",0)
GlobalGT("RASAAD_ROMANCE","GLOBAL",0)
Global("X#AjantisRomanceActive","GLOBAL",1)
InParty(Myself)
InParty("rasaad")
See("rasaad")
!StateCheck("rasaad",CD_STATE_NOTVALID)
!StateCheck(Myself,CD_STATE_NOTVALID) CombatCounter(0) !See([ENEMY])~ THEN ~%AJANTIS_BANTER%~ rasaad_romanceconflict
@70 DO ~SetGlobal("C#AjantisBG1_RasaadRomanceConflict","GLOBAL",1)~
== ~%RASAAD_BANTER%~ @71
== ~%AJANTIS_BANTER%~ @72
== ~%RASAAD_BANTER%~ @73
== ~%AJANTIS_BANTER%~ @74 DO ~SetGlobal("C#AjantisBG1_RasaadRomanceConflict","GLOBAL",1)~
EXIT


I'm using this CHAIN structure for xx other banters without any problems. I looked at BAJANT.dlg, and the "DO ~SetGlobal("C#AjantisBG1_RasaadRomanceConflict","GLOBAL",1)~" is in there alright.
- I know Ajantis is jealous, but this much?...


G3: bg1re updates to v2.4

13 December 2017 - 08:34 AM

bg1re

The Baldur's Gate version of the popular Romantic Encounters mod, adding several encounters and quests all over the game, aims at populating the game with romantic encounters, intense dialogues, unexpected private dinners, romantic traces of long lost times, and real quests that all deal with true love, fulfilled or unfulfilled.
The mod installs on BG w/TotSC, Tutu, BGT, BGEE, and EET.

Version 2.4 increases compatibility and fixes some oversights.

Changes:

  • "Necromancr's Trouble": Ramazith now agrees to sell Nymph's blood (but his conditions are inacceptable).
  • (BGT) all journal entries will be deleted upon transition to BGII
  • (German version) "Bardolan": changed "Kommandant" to "Hauptmann"
  • (compatibility) changed DV of %tutu_var%poe back to "poe" (compatibility with bg1npc and MotSC (= TWM)!)
  • g3_bgee_cpmvars.tpa corrected (Post dialogue for Dynaheir and Jaheira - not important for this mod)

Learn more about the mod
Readme
Visit the Forum
Download