Jump to content

NTotSC for EET (and BGT and BG:EE) - Download


Recommended Posts

1 hour ago, Angel said:

I'm currently experimenting with that one and another one I whipped up last week, the Robe of Eyes (current stats: immunity to backstab and critical hit, can target improved invisible creatures with spells, +15% find traps and detect illusion, True Sight 1/day).

Wow I like that one. Great for a thief/mage.  Are you going to include the vulnerability to gaze attacks from PnP? (I'm good with "no" ... ;) )

Link to comment
5 hours ago, Lightbringer said:

Wow I like that one. Great for a thief/mage.  Are you going to include the vulnerability to gaze attacks from PnP? (I'm good with "no" ... ;) )

I would if I could think of a good way to do so. ^^

Link to comment

Ha! Well don't think too hard. 😛

Ehh ... I can't stop my DM wheels from turning. The specific vulnerability was an inability to avert your eyes, thus preventing you from taking a blindness penalty to avoid having to make a save every round. That mechanic doesn't exist in BG

Probably the most appropriate thing would be a -4 to saves vs gaze attacks -- assuming there is some kind of internal tag indicating a gaze attack, as they range from vs spells, death, poly, etc. Presumably, various defenses that make you immune to gaze attacks would override the vulnerability.

Edited by Lightbringer
Link to comment

Create two new files (an .EFF and a .SPL) for each Gaze .SPL, then patch the Gaze SPL file like so:

  • At the end of all the gaze effects, add an opcode 206 effect, timing=0/duration=1, with the same saving throw as the rest of the Gaze effects.  The 206 effect will immunize the target against the new .SPL you added.
  • Then add a 177 effect with param1=0/param2=2/timing=0/duration=1, with NO saving throw.  This will apply the new .EFF you added.
  • Then add a 146 effect casting a subspell, with param1=0/param2=1/timing=1, again with no saving throw. 
  • The EFF applied by opcode 177 will use opcode 206 to immunize the target for 1 second against the new .SPL.  Set the value at 0x90 to 1, and the value at 0x94 to the name of the .EFF file itself.  (Might want to limit it to 7 letters, I forget if that matters in this case.)
  • The new .SPL will have all of the Gaze effect of the original Gaze spell, with the same chance to save against it.

Now give your robe an equipping effect that applies opcode 206, granting protection against the name of the new .EFF file.  Result: anyone wearing the robe will be forced to save twice in order to avoid the effects of the Gaze.  If you are familiar with 5E rules, this would basically approximate rolling the saving throw "with disadvantage."

I would extend the scope to make it more interesting: give the same treatment to the Color Spray, Glitterdust, False Dawn, and Sunray spells.

Edited by subtledoctor
Link to comment
17 hours ago, subtledoctor said:

Now give your robe an equipping effect that applies opcode 206, granting protection against the name of the new .EFF file.  Result: anyone wearing the robe will be forced to save twice in order to avoid the effects of the Gaze.  If you are familiar with 5E rules, this would basically approximate rolling the saving throw "with disadvantage."

Nifty solution. I'm not experienced enough with IE modding to analyze the code logic. Would items or abilities that grant immunity or other bonuses against gaze attacks still get to apply?

(Edit)... I think I see something of what you're doing. It looks like any and all standard bonuses/penalties/immunities would still apply -- you're just creating workaround to implement disadvantage using duplication of existing effects. Adding 5e advantage/disadvantage mechanics in situations to IE games could be fascinating.

Edited by Lightbringer
Link to comment

I haven’t tested it but off the top of my head it should be pretty robust  

I’ve got something like Advantage working, by way of replicating the IWD “Evasion” ability. It gives a chance to evade a spell entirely if you make a save. It’s not exactly Advantage, because it only lets you evade the spell - it can’t replicate an extra save for half damage against Fireball, for instance. But it’s still pretty close! Unfortunately it’s more complicated as well, requiring no less than four 318 effects and two 177 effects added to each spell. (And the 318 makes it EE-only.)

Link to comment

Having an issue getting to the temple of the black hand.

Spoiler

I've rescued Reedrig from the fields of the dead. I killed Aec'le'tec and his cultists, on Tracea body I found the letter from D. but no soultaker. I understand that at this point I should be able to find Reedrig in ulgoths beard and he will give me access to the black hand temple, but I cannot find him in ulgoths beard. I tried spawning him with the console (ntreedri) but am unable to talk to him.

 

Link to comment

@Fishmalk after you rescued Reedrig in the cave in the Field of the Dead, the variable "Global("NTTalkedToReedig","GLOBAL",1)" should be at "1".

After the demon is killed in Ulgoth's Beard, Reedrig should spawn and the variable should be at "2". If you spawn him in via cheats, set this variable to 2 to be able to talk to him.

Also, you need to have the map ("NTPBlet4") Tracea should have dropped in the inventory to be able to proceed in the dialogue with Reedrig.

Link to comment
19 hours ago, jastey said:

@Fishmalk after you rescued Reedrig in the cave in the Field of the Dead, the variable "Global("NTTalkedToReedig","GLOBAL",1)" should be at "1".

After the demon is killed in Ulgoth's Beard, Reedrig should spawn and the variable should be at "2". If you spawn him in via cheats, set this variable to 2 to be able to talk to him.

Also, you need to have the map ("NTPBlet4") Tracea should have dropped in the inventory to be able to proceed in the dialogue with Reedrig.

In my save after killing the demon, that variable was 1. Tracea did drop the map. I was able to talk with Reedrig after changing the variable to 2 and everything worked fine. Thanks for your help.

Link to comment

@Fishmalk I'd still be curious why he didn't spawn for you. In case you have Near Infinity and could post the contents of the area script of Ulgoth's Beard (AR1000.bcs in BG:EE, BG1000.bcs in EET) that would be great.

Reedrig not appearing was a constant bug report and I never really figured out why. I now suspect a looping script block in the area script that blocks execution of his spawn script so I'd be happy to see the one from your game.

Link to comment
11 minutes ago, jastey said:

@Fishmalk I'd still be curious why he didn't spawn for you. In case you have Near Infinity and could post the contents of the area script of Ulgoth's Beard (AR1000.bcs in BG:EE, BG1000.bcs in EET) that would be great.

Reedrig not appearing was a constant bug report and I never really figured out why. I now suspect a looping script block in the area script that blocks execution of his spawn script so I'd be happy to see the one from your game.

Spoiler

IF
    Exists(Player1)
    Global("L#WalahnanCreate","AR1000",0)  // Government District
THEN
    RESPONSE #100
        SetGlobal("L#WalahnanCreate","AR1000",1)  // Government District
        CreateCreature("L#WALAH",[2380.1195],S)  // Walahnan
        Continue()
END

IF
    Global("L#ULGDeactivateOld","GLOBAL",0)
THEN
    RESPONSE #100
        TriggerActivation("TowerInfoTrigger",FALSE)
        SetGlobal("L#ULGDeactivateOld","GLOBAL",1)
        Continue()
END

IF
    Exists(Player1)
    Global("L#ULGGirl","AR1000",0)  // Government District
THEN
    RESPONSE #100
        SetGlobal("L#ULGGirl","AR1000",1)  // Government District
        CreateCreature("L#ULGCH",[600.1005],SWW)  // Girl
        Continue()
END

IF
    GlobalTimerExpired("C#q14_CalTravBal","GLOBAL")
    Global("C#q14_CalGetMap","GLOBAL",2)
THEN
    RESPONSE #100
        CreateCreature("CALAHA",[571.1352],S)  // Calahan
        SetGlobal("C#q14_CalGetMap","GLOBAL",3)
END

IF
    OnCreation()
    Global("EnteredTheBeard","GLOBAL",0)
THEN
    RESPONSE #100
        SetGlobal("EnteredTheBeard","GLOBAL",1)
        DisplayString(Myself,24105)  // The village of Ulgoth's Beard lies on the banks of the River Chionthar, just upstream from Baldur's Gate and the open sea beyond. This farm-dotted countryside is usually a peaceful haven from the turmoil of the Sword Coast, although of late the same cannot be said of Ulgoth's Beard itself. The simple fishing village has become the source of many a rumor in recent days. Rumors of an ancient cult risen again, unsubstantiated tales of a murderous creature stalking the night, and talk of strange goings-on in the house of Shandalar, the powerful and eccentric mage who makes his home in the normally sleepy village. You have also heard with certainty that tours of the fabled Durlag's Tower operate from Ulgoth's Beard, and that it is truly a place where adventurers can test their mettle. Perhaps such a test will better prepare you to fight the darkness that threatens to destroy the Sword Coast and you with it.
END

IF
    OR(2)
        Global("MetMendas","GLOBAL",1)
        GlobalGT("TalkedToMendas","GLOBAL",0)
    Global("CalahanSpawn","GLOBAL",0)
    !Dead("Calahan")  // Calahan
    !Exists("Calahan")  // Calahan
THEN
    RESPONSE #100
        CreateCreature("CALAHA",[571.1352],S)  // Calahan
        ActionOverride("Calahan",Face(SW))
        SetGlobal("CalahanSpawn","GLOBAL",1)
END

IF
    Global("ReadyToSail","GLOBAL",1)
    Global("MendasSpawn","GLOBAL",0)
    !Dead("Mendas")  // Mendas
    !Exists("Mendas")  // Mendas
THEN
    RESPONSE #100
        CreateCreature("MENDAS2",[334.1141],S)  // Mendas
        ActionOverride("Mendas",Face(W))
        SetGlobal("MendasSpawn","GLOBAL",1)
END

IF
    PartyHasItem("DAGG10")  // Soultaker Dagger
    Global("Cult3Spawn","GLOBAL",0)
THEN
    RESPONSE #100
        CreateCreature("CULT3",[2800.925],S)  // Cult Enforcer
        ActionOverride("CultWizard2",Face(SE))
        SetGlobal("Cult3Spawn","GLOBAL",1)
END

IF
    Global("Cult1","GLOBAL",1)
    Global("Cult1Spawn","GLOBAL",0)
THEN
    RESPONSE #100
        CreateCreature("CULT1",[1293.668],S)  // Cult Guard
        ActionOverride("CultGuard1",Face(W))
        ApplySpellRES("bdbump1","CultGuard1")  // No such index
        SetGlobal("Cult1Spawn","GLOBAL",1)
END

IF
    Global("Infected","GLOBAL",1)
    Global("BareshSpawn","GLOBAL",0)
THEN
    RESPONSE #100
        CreateCreature("BARESH",[791.1336],S)  // Baresh
        ActionOverride("Baresh",Face(SW))
        SetGlobal("BareshSpawn","GLOBAL",1)
END

IF
    Exists("ike")  // Ike
    Dead("deathk")  // Demon Knight
THEN
    RESPONSE #100
        EraseJournalEntry(27106)  // A Tour of Durlag's Tower Someone named Ike is giving tours of Durlag's Tower. I would assume that they only take people through rooms that have been cleared of traps, but perhaps I should ask someone who has taken the tour. There is a man named Fenrus who has done so. I can find him near the docks.
        EraseJournalEntry(27164)  // A Tour of Durlag's Tower I met a blustering lout offering tours of Durlag's Tower. It seems he aims to make a tourist attraction out of the deathtrap. I decided not to take him up on his offer, but he will be available if I change my mind.
        EraseJournalEntry(27165)  // A Tour of Durlag's Tower I met a huckster by the name of Ike who was offering tours of Durlag's Tower. It seems the venerable deathtrap has become a bit of a tourist attraction. I agreed to the tour, so I should meet Ike by the tower as soon as possible. I'm sure it will be safe... they wouldn't walk people through if there was still a danger.
        ActionOverride("ike",DestroySelf())
END

IF
    Global("NTYnessSpawn","AR1000",0)  // Government District
THEN
    RESPONSE #100
        CreateCreature("NTYness",[2587.746],SE)  // Yness
        SetGlobal("NTYnessSpawn","AR1000",1)  // Government District
END

IF
    Global("NTTalkedToReedig","GLOBAL",1)
    !Exists("NTREEDRI")  // Reedrig
    !Dead("NTREEDRI")  // Reedrig
    Dead("TANAR")  // Aec'Letec
THEN
    RESPONSE #100
        CreateCreature("NTREEDRI",[1267.769],S)  // Reedrig
        SetGlobal("NTTalkedToReedig","GLOBAL",2)
        ActionOverride("NTREEDRI",CreateItem("NTPBLET6",1,0,0))  // Letter
END

IF
    !Dead("NTDRAAGI")  // Brother Draagis
    PartyHasItem("NTPBLET6")  // Letter
    GlobalLT("NTTalkedToReedig","GLOBAL",3)
THEN
    RESPONSE #100
        RevealAreaOnMap("AR60PB")
        SetGlobal("NTTalkedToReedig","GLOBAL",3)
        AddJournalEntry(71590,QUEST)  // The Cult of the Black Hand It seems the Cult of the Black Hand can be found northeast in the Wood of the Sharp Teeth.
END

IF
    Global("C#BrandockSpawnFisherman","MYAREA",0)
THEN
    RESPONSE #100
        SetGlobal("C#BrandockSpawnFisherman","MYAREA",1)
        CreateCreature("c#brfish",[450.930],SEE)  // Fisherman
END

IF
    Global("CDRevealArea","AR1000",0)  // Government District
THEN
    RESPONSE #100
        SetGlobal("CDRevealArea","AR1000",1)  // Government District
        Explore()
        Continue()
END

 

 

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...