Jump to content

Mod help request for my current game


Recommended Posts

Playing bg1 for a second time this year, with more mod installed now, and I worried I will get jaded fast initially due to playing the same game too frequently…but I didin’t… 40 hours so far and I’m enjoying the game because it is full of surprises. I think it is mainly due to:

- scs (first time playing bg1 with it)

- bg1 mini quest and encounter

- Shades of the SC

- Ascalon Quests

- Glam Npc 

- BG1 npc mod

 

Those mini quests mods really make BG1 like a new game or old game with dlc, visiting same areas got new fun.

The tweaks and power gaming scripts also contributed greatly as I can customise the game to make it less tedious now

Really appreciate the amazing works from the modders.

 

Edited by marcnivar
Link to comment
On 11/20/2021 at 2:32 PM, marcnivar said:

The game was not running properly with the debug tool installed, the dialogue paused somewhere, and Anomen didn't initiate the talk when it was installed. Additionally, when Anomen turned hostile,  many types of BCS and blocks appeared, looks confusing to identify which one to look for.

Who is Daria? In my GENSHT01, block three means that she was attacked and turns hostile. There is no block 15 in my unmodded install.

Thanks for trying, I fear this is a compatibility issue that we'll have to keep in mind until the reason is analyzed eventually.

And thanks for the kind words.

Link to comment
24 minutes ago, jastey said:

Who is Daria? In my GENSHT01, block three means that she was attacked and turns hostile. There is no block 15 in my unmodded install.

Thanks for trying, I fear this is a compatibility issue that we'll have to keep in mind until the reason is analyzed eventually.

And thanks for the kind words.

Daria is the charname.

When I try to install the debug tool (1st option), the following error appeared:

Spoiler


[A7Q5FES.BCS.BAF] PARSE ERROR at line 38 column 1-25
Near Text: ActionOverride
        syntax error

[A7Q5FES.BCS.BAF]  ERROR at line 38 column 1-25
Near Text: ActionOverride
        Parsing.Parse_error
ERROR: parsing [A7Q5FES.BCS.BAF]: Parsing.Parse_error
ERROR: [A7Q5FES.BCS] -> [override/A7Q5FES.BCS] Patching Failed (COPY) (Parsing.Parse_error)
Stopping installation because of error.
Stopping installation because of error.

ERROR Installing [Stutter Debug Tool -> Patching all scripts except NoAction() blocks - chose this when installing the first time (Installation could take a while!)], rolling back to previous state
Will uninstall 247 files for [STUTTERDEBUG/STUTTERDEBUG.TP2] component 1.
Uninstalled    247 files for [STUTTERDEBUG/STUTTERDEBUG.TP2] component 1.
ERROR: Parsing.Parse_error
Please make a backup of the file: SETUP-STUTTERDEBUG.DEBUG and look for support at: Jarno Mikkola & jastey
Using Language [English]

Installed via the second option, but the in game behavior is weird, like the dialogue is not initiated automatically.

Edited by marcnivar
Link to comment

Could you post the decompiled A7Q5FES.bcs here in a spoiler?

The additional output of the Stuter Debug Tool can cause issues, yes, although I wasn't aware it would make so much trouble for initiated dialogues. But Anomen's is quite delicate as it might not happen if Garren arrives too early.

Link to comment
Spoiler

IF
    Global("A7Q5SalamanderAllied","A77003",0)
    Global("FESFollow","LOCALS",1)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195898))  // Running block 1 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195898))  // Running block 1 of A7Q5FES.BCS
        SetGlobal("FESFollow","LOCALS",0)
        MoveToObjectFollow(LastTalkedToBy)
END

IF
    Global("FESWait","LOCALS",1)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195899))  // Running block 2 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195899))  // Running block 2 of A7Q5FES.BCS
        SetGlobal("FESWait","LOCALS",0)
        NoAction()
END

IF
    Global("A7Q5SalamanderAllied","A77003",0)
    Global("A7Q5FESDeny","A77003",1)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195900))  // Running block 3 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195900))  // Running block 3 of A7Q5FES.BCS
        SetInterrupt(FALSE)
        MoveToPointNoInterrupt([1925.1050])
        Face(N)
        SetGlobal("A7Q5FESDeny","A77003",0)
        SetInterrupt(TRUE)
END

IF
    Detect([PC])
    !Allegiance(Myself,ENEMY)
    Global("A7Q5SalamandersTakeOver","A77003",0)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("MyRound","LOCALS",0)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195906))  // Running block 4 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195906))  // Running block 4 of A7Q5FES.BCS
    RESPONSE #75
        ActionOverride(Player1,DisplayString(Myself,195907))  // Running block 5 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195907))  // Running block 5 of A7Q5FES.BCS
        MoveToPoint([1872.2070])
        Wait(1)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS01",FaceObject("A7Q5FES"))  // Fire Elemental
        SmallWait(2)
        ActionOverride("A7Q5FS02",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(2)
        DisplayStringHead("A7Q5FS01",148144)  // Another glass of wine please.
        Wait(3)
        FaceObject("A7Q5FS02")  // Fire Salamander
        Wait(1)
        DisplayStringHead(Myself,134296)  // And what about you?
        Wait(2)
        DisplayStringHead("A7Q5FS02",148145)  // Give me something strong.
        Wait(3)
        ActionOverride("A7Q5FS01",FaceObject("A7Q5FS02"))  // Fire Salamander
        ActionOverride("A7Q5FS02",FaceObject("A7Q5FS01"))  // Salamander Noble
        SetGlobal("MyRound","LOCALS",1)
    RESPONSE #25
        ActionOverride(Player1,DisplayString(Myself,195908))  // Running block 6 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195908))  // Running block 6 of A7Q5FES.BCS
        MoveToPoint([1872.2070])
        Wait(7)
        SetGlobal("MyRound","LOCALS",1)
END

IF
    Detect([PC])
    !Allegiance(Myself,ENEMY)
    Global("A7Q5SalamandersTakeOver","A77003",0)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("MyRound","LOCALS",1)
THEN
    RESPONSE #75
        ActionOverride(Player1,DisplayString(Myself,195909))  // Running block 7 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195909))  // Running block 7 of A7Q5FES.BCS
        MoveToPoint([1935.2066])
        Face(SSE)
        Wait(1)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS04",FaceObject("A7Q5FES"))  // Fire Elemental
        ActionOverride("A7Q5FS05",FaceObject("A7Q5FES"))  // Fire Elemental
        ActionOverride("A7Q5FS06",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(2)
        DisplayStringHead("A7Q5FS04",148146)  // Maybe another mug of ale.
        Wait(1)
        DisplayStringHead("A7Q5FS05",98148)  // Me too!
        Wait(1)
        DisplayStringHead("A7Q5FS06",148147)  // And me too!
        Wait(3)
        ActionOverride("A7Q5FS04",FaceObject("A7Q5FS05"))  // Fire Salamander
        ActionOverride("A7Q5FS05",FaceObject("A7Q5FS04"))  // Fire Salamander
        ActionOverride("A7Q5FS06",Face(S))
        SetGlobal("MyRound","LOCALS",2)
    RESPONSE #25
        ActionOverride(Player1,DisplayString(Myself,195910))  // Running block 8 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195910))  // Running block 8 of A7Q5FES.BCS
        MoveToPoint([1935.2066])
        Face(SSE)
        Wait(7)
        SetGlobal("MyRound","LOCALS",2)
END

IF
    Detect([PC])
    !Allegiance(Myself,ENEMY)
    Global("A7Q5SalamandersTakeOver","A77003",0)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("MyRound","LOCALS",2)
THEN
    RESPONSE #75
        ActionOverride(Player1,DisplayString(Myself,195911))  // Running block 9 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195911))  // Running block 9 of A7Q5FES.BCS
        MoveToPoint([2045.2063])
        Face(E)
        Wait(1)
        DisplayStringHead(Myself,148143)  // Do you need something?
        Wait(1)
        ActionOverride("A7Q5FS03",FaceObject("A7Q5FES"))  // Fire Elemental
        DisplayStringHead("A7Q5FS03",148148)  // No thanks. I'm still enjoying my cup of tea.
        Wait(4)
        ActionOverride("A7Q5FS03",Face(E))
        SetGlobal("MyRound","LOCALS",3)
    RESPONSE #25
        ActionOverride(Player1,DisplayString(Myself,195912))  // Running block 10 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195912))  // Running block 10 of A7Q5FES.BCS
        MoveToPoint([2045.2063])
        Face(E)
        Wait(7)
        SetGlobal("MyRound","LOCALS",3)
END

IF
    Detect([PC])
    !Allegiance(Myself,ENEMY)
    Global("A7Q5SalamandersTakeOver","A77003",0)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("MyRound","LOCALS",3)
THEN
    RESPONSE #75
        ActionOverride(Player1,DisplayString(Myself,195913))  // Running block 11 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195913))  // Running block 11 of A7Q5FES.BCS
        MoveToPoint([1960.2000])
        Face(N)
        DisplayStringHead(Myself,148149)  // Welcome to the 'Flaming Wand'
        Wait(4)
        DisplayStringHead(Myself,148150)  // We offer hot meals and cold drinks.
        Wait(5)
        SetGlobal("MyRound","LOCALS",0)
    RESPONSE #25
        ActionOverride(Player1,DisplayString(Myself,195914))  // Running block 12 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195914))  // Running block 12 of A7Q5FES.BCS
        SetGlobal("MyRound","LOCALS",0)
END

IF
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("A7Q5SalamandersTakeOver","A77003",1)
    Global("MoveOutOfTheWay","LOCALS",0)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195915))  // Running block 13 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195915))  // Running block 13 of A7Q5FES.BCS
        SetGlobal("MoveOutOfTheWay","LOCALS",1)
        MoveToPoint([1960.2000])
        Face(N)
END

IF
    Global("FS01TookOver","A77003",2)
    Global("FS02TookOver","A77003",2)
    Global("FS03TookOver","A77003",2)
    Global("FS04TookOver","A77003",2)
    Global("FS05TookOver","A77003",2)
    Global("FS06TookOver","A77003",2)
    Global("A7Q5SalamandersTakeOver","A77003",1)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("SalamandersInPosition","LOCALS",0)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,195916))  // Running block 14 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195916))  // Running block 14 of A7Q5FES.BCS
        SetGlobal("SalamandersInPosition","LOCALS",1)
END

IF
    Detect([PC])
    !Allegiance(Myself,ENEMY)
    Global("A7Q5SalamandersTakeOver","A77003",1)
    Global("A7Q5SalamanderAllied","A77003",1)
    Global("SalamandersInPosition","LOCALS",1)
    Global("MyRound2","LOCALS",0)
THEN
    RESPONSE #40
        ActionOverride(Player1,DisplayString(Myself,195917))  // Running block 15 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195917))  // Running block 15 of A7Q5FES.BCS
        MoveToPoint([1918.1994])
        MoveToPoint([1930.1730])
        MoveToPoint([2404.1598])
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS03",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS03",148151)  // Yes, another cup of tea please.
        Wait(2)
        ActionOverride("A7Q5FS03",Face(SWW))
        MoveToPoint([1930.1730])
        MoveToPoint([1918.1994])
        MoveToPoint([1884.2070])
        FaceObject("A7Q5FS02")  // Fire Salamander
        SmallWait(5)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS02",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS02",148145)  // Give me something strong.
        Wait(2)
        ActionOverride("A7Q5FS02",Face(NNE))
        MoveToPoint([2020.2080])
        FaceObject("A7Q5FS06")  // Salamander Servant
        SmallWait(3)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS06",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS06",148152)  // Bring me your best wine.
        Wait(2)
        ActionOverride("A7Q5FS06",Face(E))
    RESPONSE #30
        ActionOverride(Player1,DisplayString(Myself,195918))  // Running block 16 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195918))  // Running block 16 of A7Q5FES.BCS
        MoveToPoint([1918.1994])
        MoveToPoint([1887.1764])
        MoveToPoint([1416.1912])
        MoveToPoint([1341.2000])
        SmallWait(5)
        MoveToPoint([1091.1888])
        MoveToPoint([1091.1386])
        MoveToPoint([1311.1147])
        MoveToPoint([1638.1106])
        FaceObject("A7Q5FS01")  // Salamander Noble
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS01",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS01",148153)  // Just someone who will listen to my stories.
        Wait(2)
        ActionOverride("A7Q5FS01",Face(SE))
        MoveToPoint([1311.1147])
        MoveToPoint([1091.1386])
        MoveToPoint([1091.1888])
        MoveToPoint([1341.2000])
        MoveToPoint([1416.1912])
        MoveToPoint([1887.1764])
        MoveToPoint([1918.1994])
        MoveToPoint([1884.2070])
        FaceObject("A7Q5FS02")  // Fire Salamander
        SmallWait(3)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS02",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS02",148154)  // (snore...zzz)
        Wait(2)
        ActionOverride("A7Q5FS02",Face(NNE))
        MoveToPoint([2020.2080])
        FaceObject("A7Q5FS06")  // Salamander Servant
        SmallWait(3)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS06",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS06",148144)  // Another glass of wine please.
        Wait(2)
        ActionOverride("A7Q5FS06",Face(E))
    RESPONSE #30
        ActionOverride(Player1,DisplayString(Myself,195919))  // Running block 17 of A7Q5FES.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,195919))  // Running block 17 of A7Q5FES.BCS
        MoveToPoint([1918.1994])
        MoveToPoint([1887.1764])
        MoveToPoint([1416.1912])
        MoveToPoint([1341.2000])
        SmallWait(5)
        MoveToPoint([1091.1888])
        MoveToPoint([1091.1386])
        MoveToPoint([1311.1147])
        MoveToPoint([1638.1106])
        FaceObject("A7Q5FS01")  // Salamander Noble
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS01",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS01",148155)  // Another beer please.
        Wait(2)
        ActionOverride("A7Q5FS01",Face(SE))
        MoveToPoint([1311.1147])
        MoveToPoint([1091.1386])
        MoveToPoint([1091.1888])
        MoveToPoint([1341.2000])
        MoveToPoint([1416.1912])
        MoveToPoint([1416.1912])
        MoveToPoint([2404.1598])
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(5)
        ActionOverride("A7Q5FS03",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS03",148156)  // Another cup of tea please.
        Wait(2)
        ActionOverride("A7Q5FS03",Face(SWW))
        MoveToPoint([1930.1730])
        MoveToPoint([1918.1994])
        MoveToPoint([1884.2070])
        FaceObject("A7Q5FS02")  // Fire Salamander
        SmallWait(3)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS02",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS02",148157)  // I needsh some (urkh) ale... (hic)
        Wait(2)
        ActionOverride("A7Q5FS02",Face(NNE))
        MoveToPoint([2020.2080])
        FaceObject("A7Q5FS06")  // Salamander Servant
        SmallWait(3)
        DisplayStringHead(Myself,148143)  // Do you need something?
        SmallWait(10)
        ActionOverride("A7Q5FS06",FaceObject("A7Q5FES"))  // Fire Elemental
        Wait(1)
        DisplayStringHead("A7Q5FS06",148158)  // Some wine, bread, cheese and fireberry syrup please.
        Wait(3)
        ActionOverride("A7Q5FS06",Face(E))
END

line 38 stated !Allegiance(Myself,ENEMY)

Link to comment
Spoiler

IF
    Allegiance(Myself,NEUTRAL)
    OR(7)
        AttackedBy([GOODCUTOFF.0.0.0.0.SUMMONED],DEFAULT)
        AttackedBy([PC],DEFAULT)
        AttackedBy([FAMILIAR],DEFAULT)
        AttackedBy([ALLY],DEFAULT)
        AttackedBy([CONTROLLED],DEFAULT)
        AttackedBy([CHARMED],DEFAULT)
        SpellCastOnMe([GOODCUTOFF.0.0.0.0.SUMMONED],0)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653437))  // Running block 1 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653437))  // Running block 1 of GENSHT01.BCS
        Enemy()
        Shout(89)
        Continue()
END

IF
    OR(6)
        HitBy([GOODCUTOFF.0.0.0.0.SUMMONED],CRUSHING)
        HitBy([PC],CRUSHING)
        HitBy([FAMILIAR],CRUSHING)
        HitBy([ALLY],CRUSHING)
        HitBy([CONTROLLED],CRUSHING)
        HitBy([CHARMED],CRUSHING)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653438))  // Running block 2 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653438))  // Running block 2 of GENSHT01.BCS
        Shout(89)
        Continue()
END

IF
    Allegiance(Myself,ENEMY)
    See(NearestEnemyOf(Myself))
    !GlobalTimerNotExpired("help_initial","LOCALS")
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653439))  // Running block 3 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653439))  // Running block 3 of GENSHT01.BCS

        SetGlobalTimer("help_initial","LOCALS",THREE_ROUNDS)
        Shout(89)
        Continue()
END

IF
    Heard([ANYONE],89)
    Allegiance(Myself,NEUTRAL)
    Class(Myself,INNOCENT)
    !CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653440))  // Running block 4 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653440))  // Running block 4 of GENSHT01.BCS
        SetGlobalTimer("runfromPC","LOCALS",TEN_ROUNDS)
        Continue()
END

IF
    Heard([ANYONE],89)
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    Allegiance(Myself,NEUTRAL)
    !HasItem("dw#nohlp",Myself)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653441))  // Running block 5 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653441))  // Running block 5 of GENSHT01.BCS
        Enemy()
        Shout(189)
        Continue()
END

IF
    Heard([ANYONE],89)
    GlobalLT("DMWW_genai_difficulty","GLOBAL",3)
    OR(2)
        DifficultyLT(NORMAL)
        !Global("DMWW_genai_difficulty","GLOBAL",0)
    Allegiance(Myself,NEUTRAL)
    !HasItem("dw#nohlp",Myself)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653442))  // Running block 6 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653442))  // Running block 6 of GENSHT01.BCS
        Enemy()
        Continue()
END

IF
    Heard([ANYONE],189)
    Allegiance(Myself,NEUTRAL)
    !HasItem("dw#nohlp",Myself)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653443))  // Running block 7 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653443))  // Running block 7 of GENSHT01.BCS
        Enemy()
        Continue()
END

IF
    GlobalGT("helptarget","LOCALS",0)
    Global("looking","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !See(NearestEnemyOf(Myself))
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653444))  // Running block 8 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653444))  // Running block 8 of GENSHT01.BCS
        SetGlobal("helptarget","LOCALS",0)
        SetGlobal("looking","LOCALS",0)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player1)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653445))  // Running block 9 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653445))  // Running block 9 of GENSHT01.BCS

        Shout(891)
        SetGlobal("helptarget","LOCALS",1)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],891)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653446))  // Running block 10 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653446))  // Running block 10 of GENSHT01.BCS
        Shout(1891)
        Enemy()
        SetGlobal("helptarget","LOCALS",1)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1891)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653447))  // Running block 11 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653447))  // Running block 11 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",1)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player1)
    Global("helptarget","LOCALS",1)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player1,STATE_INVISIBLE)
        CheckStatGT(Player1,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653448))  // Running block 12 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653448))  // Running block 12 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player1)
    !StateCheck(Player1,STATE_INVISIBLE)
    !CheckStatGT(Player1,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",1)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653449))  // Running block 13 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653449))  // Running block 13 of GENSHT01.BCS
        MoveToObject(Player1)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player1)
    !StateCheck(Player1,STATE_INVISIBLE)
    !CheckStatGT(Player1,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",1)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653450))  // Running block 14 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653450))  // Running block 14 of GENSHT01.BCS
        MoveToObject(Player1)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player2)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653451))  // Running block 15 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653451))  // Running block 15 of GENSHT01.BCS

        Shout(892)
        SetGlobal("helptarget","LOCALS",2)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],892)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653452))  // Running block 16 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653452))  // Running block 16 of GENSHT01.BCS
        Shout(1892)
        Enemy()
        SetGlobal("helptarget","LOCALS",2)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1892)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653453))  // Running block 17 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653453))  // Running block 17 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",2)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player2)
    Global("helptarget","LOCALS",2)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player2,STATE_INVISIBLE)
        CheckStatGT(Player2,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653454))  // Running block 18 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653454))  // Running block 18 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player2)
    !StateCheck(Player2,STATE_INVISIBLE)
    !CheckStatGT(Player2,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",2)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653455))  // Running block 19 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653455))  // Running block 19 of GENSHT01.BCS
        MoveToObject(Player2)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player2)
    !StateCheck(Player2,STATE_INVISIBLE)
    !CheckStatGT(Player2,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",2)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653456))  // Running block 20 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653456))  // Running block 20 of GENSHT01.BCS
        MoveToObject(Player2)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player3)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653457))  // Running block 21 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653457))  // Running block 21 of GENSHT01.BCS
        Shout(893)
        SetGlobal("helptarget","LOCALS",3)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],893)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653458))  // Running block 22 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653458))  // Running block 22 of GENSHT01.BCS
        Shout(1893)
        Enemy()
        SetGlobal("helptarget","LOCALS",3)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1893)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653459))  // Running block 23 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653459))  // Running block 23 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",3)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player3)
    Global("helptarget","LOCALS",3)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player3,STATE_INVISIBLE)
        CheckStatGT(Player3,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653460))  // Running block 24 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653460))  // Running block 24 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player3)
    !StateCheck(Player3,STATE_INVISIBLE)
    !CheckStatGT(Player3,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",3)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653461))  // Running block 25 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653461))  // Running block 25 of GENSHT01.BCS
        MoveToObject(Player3)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player3)
    !StateCheck(Player3,STATE_INVISIBLE)
    !CheckStatGT(Player3,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",3)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653462))  // Running block 26 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653462))  // Running block 26 of GENSHT01.BCS
        MoveToObject(Player3)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player4)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653463))  // Running block 27 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653463))  // Running block 27 of GENSHT01.BCS
        Shout(894)
        SetGlobal("helptarget","LOCALS",4)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],894)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653464))  // Running block 28 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653464))  // Running block 28 of GENSHT01.BCS
        Shout(1894)
        Enemy()
        SetGlobal("helptarget","LOCALS",4)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1894)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653465))  // Running block 29 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653465))  // Running block 29 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",4)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player4)
    Global("helptarget","LOCALS",4)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player4,STATE_INVISIBLE)
        CheckStatGT(Player4,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653466))  // Running block 30 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653466))  // Running block 30 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player4)
    !StateCheck(Player4,STATE_INVISIBLE)
    !CheckStatGT(Player4,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",4)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653467))  // Running block 31 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653467))  // Running block 31 of GENSHT01.BCS
        MoveToObject(Player4)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player4)
    !StateCheck(Player4,STATE_INVISIBLE)
    !CheckStatGT(Player4,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",4)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653468))  // Running block 32 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653468))  // Running block 32 of GENSHT01.BCS
        MoveToObject(Player4)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player5)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653469))  // Running block 33 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653469))  // Running block 33 of GENSHT01.BCS
        Shout(895)
        SetGlobal("helptarget","LOCALS",5)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],895)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653470))  // Running block 34 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653470))  // Running block 34 of GENSHT01.BCS
        Shout(1895)
        Enemy()
        SetGlobal("helptarget","LOCALS",5)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1895)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653471))  // Running block 35 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653471))  // Running block 35 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",5)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player5)
    Global("helptarget","LOCALS",5)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player5,STATE_INVISIBLE)
        CheckStatGT(Player5,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653472))  // Running block 36 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653472))  // Running block 36 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player5)
    !StateCheck(Player5,STATE_INVISIBLE)
    !CheckStatGT(Player5,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",5)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653473))  // Running block 37 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653473))  // Running block 37 of GENSHT01.BCS
        MoveToObject(Player5)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player5)
    !StateCheck(Player5,STATE_INVISIBLE)
    !CheckStatGT(Player5,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",5)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653474))  // Running block 38 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653474))  // Running block 38 of GENSHT01.BCS
        MoveToObject(Player5)
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    Allegiance(Myself,ENEMY)
    See(Player6)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653475))  // Running block 39 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653475))  // Running block 39 of GENSHT01.BCS
        Shout(896)
        SetGlobal("helptarget","LOCALS",6)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
        Continue()
END

IF
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],896)
    !GlobalTimerNotExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653476))  // Running block 40 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653476))  // Running block 40 of GENSHT01.BCS
        Shout(1896)
        Enemy()
        SetGlobal("helptarget","LOCALS",6)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    OR(2)
        Global("DMWW_genai_difficulty","GLOBAL",0)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    OR(2)
        DifficultyGT(EASY)
        GlobalGT("DMWW_genai_difficulty","GLOBAL",2)
    !GlobalGT("helptarget","LOCALS",0)
    !See(NearestEnemyOf(Myself))
    Heard([ANYONE],1896)
    Range(LastHeardBy(Myself),15)
    !Global("help_hostile","LOCALS",1)
    GlobalTimerExpired("helpduration","LOCALS")
    !HasItem("dw#nohlp",Myself)
    OR(2)
        Allegiance(Myself,NEUTRAL)
        Allegiance(Myself,ENEMY)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653477))  // Running block 41 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653477))  // Running block 41 of GENSHT01.BCS
        Enemy()
        SetGlobal("help_hostile","LOCALS",1)
        SetGlobal("helptarget","LOCALS",6)
        SetGlobalTimer("helpduration","LOCALS",TWO_ROUNDS)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player6)
    Global("helptarget","LOCALS",6)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    OR(2)
        StateCheck(Player6,STATE_INVISIBLE)
        CheckStatGT(Player6,0,SANCTUARY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653478))  // Running block 42 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653478))  // Running block 42 of GENSHT01.BCS
        ClearActions(Myself)
        SetGlobal("helptarget","LOCALS",0)
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player6)
    !StateCheck(Player6,STATE_INVISIBLE)
    !CheckStatGT(Player6,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",6)
    OR(2)
        Class(Myself,THIEF_ALL)
        Kit(Myself,STALKER)
    !Kit(Myself,SWASHBUCKLER)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653479))  // Running block 43 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653479))  // Running block 43 of GENSHT01.BCS
        MoveToObject(Player6)
        ApplySpellRES("dw#silin",Myself)  // Invisibility
END

IF
    !See(NearestEnemyOf(Myself))
    !Detect(Player6)
    !StateCheck(Player6,STATE_INVISIBLE)
    !CheckStatGT(Player6,0,SANCTUARY)
    ActionListEmpty()
    Global("helptarget","LOCALS",6)
    !Class(Myself,INNOCENT)
    !HasItem("dw#nohlp",Myself)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653480))  // Running block 44 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653480))  // Running block 44 of GENSHT01.BCS
        MoveToObject(Player6)
END

IF
    OR(2)
        Allegiance(Myself,ENEMY)
        Allegiance(Myself,NEUTRAL)
    !See(NearestEnemyOf(Myself))
    !HasItem("dw#nohlp",Myself)
    Heard([ANYONE],89)
    OR(2)
        !Class(Myself,INNOCENT)
        CheckStatGT(Myself,1,LEVEL)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,653481))  // Running block 45 of GENSHT01.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,653481))  // Running block 45 of GENSHT01.BCS
        MoveToObject(LastHeardBy(Myself))
END

As for GENSHT01.BCS

Link to comment

 

 

As for Anomen and Sir Beverus turned hostile, anything else to check?

 

Spoiler

Screenshot 2021-11-22 155547.jpg

Spoiler

IF
    Global("AnomenRomanceActive","GLOBAL",1)
    Global("AnomenRomanceOut","GLOBAL",0)
    !InPartyAllowDead("Anomen")  // Anomen
    !Dead("Anomen")  // Anomen
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,204081))  // Running block 362 of BALDUR.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,204081))  // Running block 362 of BALDUR.BCS
        SetGlobal("AnomenRomanceOut","GLOBAL",1)
        SetGlobalTimer("AnomenOutOfParty","GLOBAL",THREE_DAYS)
END

Spoiler

IF
    !Detect([PC])
    See([ENEMY])
    Gender(Myself,MALE)
    General(Myself,HUMANOID)
    !Allegiance(Myself,ENEMY)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,683255))  // Running block 7 of RUNENEMY.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,683255))  // Running block 7 of RUNENEMY.BCS
        RunAwayFrom(LastSeenBy(Myself),30)
END

Spoiler

 

IF
    Allegiance(Myself,ENEMY)
    !IfValidForPartyDialog(Myself)
    Global("NPCFight","LOCALS",0)
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,198728))  // Running block 52 of ANOMEN.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,198728))  // Running block 52 of ANOMEN.BCS
        SetGlobal("NPCFight","LOCALS",1)
        ChangeAIScript("",DEFAULT)
        ChangeAIScript("useitem",GENERAL)
        ChangeAIScript("anomx",SPECIFICS)
        SetDialog("")
        Continue()
END

 

Spoiler

IF
    Global("A7_AutoHasteActive","GLOBAL",1)
    CheckSpellState(Player3,A7_AUTO_SPEED)
    OR(2)
        TriggerOverride(Player3,Detect([ENEMY]))
        ActuallyInCombat()
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,203743))  // Running block 24 of BALDUR.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,203743))  // Running block 24 of BALDUR.BCS
        ApplySpellRES("a7_wlk2",Player3)  // No such index
        Continue()
END

IF
    Global("A7_AutoHasteActive","GLOBAL",1)
    CheckSpellState(Player4,A7_AUTO_SPEED)
    OR(2)
        TriggerOverride(Player4,Detect([ENEMY]))
        ActuallyInCombat()
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,203744))  // Running block 25 of BALDUR.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,203744))  // Running block 25 of BALDUR.BCS
        ApplySpellRES("a7_wlk2",Player4)  // No such index
        Continue()
END

IF
    Global("A7_AutoHasteActive","GLOBAL",1)
    CheckSpellState(Player5,A7_AUTO_SPEED)
    OR(2)
        TriggerOverride(Player5,Detect([ENEMY]))
        ActuallyInCombat()
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,203745))  // Running block 26 of BALDUR.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,203745))  // Running block 26 of BALDUR.BCS
        ApplySpellRES("a7_wlk2",Player5)  // No such index
        Continue()
END

IF
    Global("A7_AutoHasteActive","GLOBAL",1)
    CheckSpellState(Player6,A7_AUTO_SPEED)
    OR(2)
        TriggerOverride(Player6,Detect([ENEMY]))
        ActuallyInCombat()
THEN
    RESPONSE #100
        ActionOverride(Player1,DisplayString(Myself,203746))  // Running block 27 of BALDUR.BCS
        ActionOverride(Player1,DisplayStringHead(Myself,203746))  // Running block 27 of BALDUR.BCS
        ApplySpellRES("a7_wlk2",Player6)  // No such index
        Continue()
END

 

Edited by marcnivar
Link to comment

Initially I do not plan to play SOD in this playthrough, and now I regret it. If I want to play SOD, I will definitely want to play Endless BG1. Unfortunately,  I didn't install it.

So this is what I plan to do:

1) continue current game but stop just before the final battle in the temple.

2) back up my installation, then install Endless BG1 and the tweaks to reduce exp gain (for my sod later).

3) Kill sarevok and continue with the contents from endless bg1, then proceed to sod.

Is this something can be done? Or Endless BG1 is definitely cannot be installed midgame ? (so I do not need to waste my time for trying this)

Anyhow, if I encounter weird bug, I may still use the backup installation to finish bg1 and import to bg2, just forget about SOD this time.

 

Edited by marcnivar
Link to comment

@marcnivar EndlessBG1 makes most sense if you are planning on doing something after Sarevok's death, like TotSC quests. Of course, I also enjoy EndlessBG1 to smooth the transition to SoD as it fills the gap between Sarevok's death and being in Korlasz' Crypt.

Installing mods late leads to problems if the mod makes changes to files that are already in your savegame/cache because you already visited the area, like adding travel triggers or containers to areas, add items to stores of shop keepers in the area, patching characters with scripts or scriptnames. For EndlessBG1 current v8, the most obvious that will not work properly if installed after you already visited the Undercity is the component "Skip Thieves' Maze Once After Sarevok's Death", as it adds a travel trigger to that area. This will not lead to a crash but it will deprive the Undercity area from the exit to leave it after Sarevok is dead. Also, EndlessBG1 patches some characters with scripts and/or scriptnames so they can be removed after Sarevok is dead, those could be still around and talk as if he's not. That should be all that could happen. I am preparing a v9 that will move Korlasz' Crypt into BG1 as a quest after Sarevok's death, making it possible to roam BG1 "world" completely free of any Sarevok related duties, this version will lose more functionality if installed late, although I think I can make it so that it at least does not crash. (V9 has no ETA yet, I'm still debugging.)

Also, thank you for the sceen shots with regard to Ajantis BGII and other mods. I'm still at analysing what might go on there.

Link to comment

The main purpose of considering to add endless bg1 mid game this time is to experience the small quests / dialogues that add some flavour before going to sod. I will still finish everything from vanilla and the other mods before fighting sarevok so that I can go back to the backup if any problem occurs when I’m playing with the endless bg1 installed afterward.

it sounds like I can try to do this if I do not install the skip maze component and ignore some npc that do not disappear as intended…

Thanks for explaining, at least I have some idea what could happen. In the worst case, just go back to the backup plan.

The idea of moving the crypt part to bg1 is great, looking forward to it when I replay someday😀 

Link to comment
14 minutes ago, marcnivar said:

The idea of moving the crypt part to bg1 is great

Transitions mod offers this already. For the BG1 -> SoD transitions, both mods offer almost the same functionality but in different flavors. I prefer EndlessBG1's modularity because you really only get what is in the components' descriptions. (I prefer EndlessBG1 anyway but that's because I'm biased. :D )

Link to comment

From the description Endless BG1 has more components that I like, but to be honest both are quite interesting, I may consider mixing both in future playthrough as I remember I read somewhere they are actually compatible.

After starting this playthrough I only found out that there are actually still many mods that I would like to try, and I kinda miss some of the MOD npcs that I used in previous game (Aura...Drake...Sirene...Isra...)...I didn't consider to install NPC that I won't bring for most of the time initially because I want to reduce the chance of getting MOD conflicts / bugs...

Finally I know why some will try to make an epic Modlist with a lot of NPC mods...I would probably want to make a version of "Living BG" with lot of quality quests and NPC mods to make game more lively (similar to the concept of Living Skyrim Wabbajack Modlist for Skyrim), and slowly enjoy for half a year...someday😞

Some NPC mods are actually "a good quest mod", like Xan BG2, Aura, Drake, Isra BG2, Adrian, Glam's NPC...I should really consider this when I'm looking for "quest mod".

Link to comment
4 hours ago, marcnivar said:

I may consider mixing both in future playthrough as I remember I read somewhere they are actually compatible.

They are technically compatible, Transitions removes and overwrites most content of EndlessBG1 unless the component gives an install choice to consider EndlessBG1's content. Or to put it like this: you install both mods and all of Transitions, there will be nothing of EndlessBG1 left to experience ingame.

Link to comment
7 hours ago, jastey said:

They are technically compatible, Transitions removes and overwrites most content of EndlessBG1 unless the component gives an install choice to consider EndlessBG1's content. Or to put it like this: you install both mods and all of Transitions, there will be nothing of EndlessBG1 left to experience ingame.

It sound like I rather choose one😅

 

Link to comment
8 hours ago, marcnivar said:

It sound like I rather choose one

The mods were more compatible in earlier versions. Transitions lost crossmod (and intensified overwriting) with every update and I'm afraid, so will EndlessBG1 be less compatible (not even technically) regarding the component for moving Korlasz' Tomb into BG1 in the upcoming v9 update. EDIT: I guess going for one or the other will make sense, especially if you want to install all of Transitions components it doesn't really make sense to have EndlessBG1 any more (using EBG1's version of Sarevok's sword is basically the only thing it considers upon install, and also EndlessBG1's Elminster component will not be overwritten although Transition pretends to install an own component, as far as I can see.)

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...