Lightbringer Posted February 2, 2020 Share Posted February 2, 2020 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" ... ) Quote Link to comment
Angel Posted February 3, 2020 Share Posted February 3, 2020 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. ^^ Quote Link to comment
Lightbringer Posted February 4, 2020 Share Posted February 4, 2020 (edited) 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 February 4, 2020 by Lightbringer Quote Link to comment
subtledoctor Posted February 4, 2020 Share Posted February 4, 2020 (edited) 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 February 4, 2020 by subtledoctor Quote Link to comment
subtledoctor Posted February 4, 2020 Share Posted February 4, 2020 Nope. It’s probably worth testing in the old engine, though. Should be quick enough to set it up for, say, Color Spray, and see if there are two saves in the combat log. (Of course the 2nd one won’t happen if you fail the first...) Quote Link to comment
jastey Posted February 4, 2020 Author Share Posted February 4, 2020 @Arthas If someone wants to contribute, I wouldn't mind, but I will not make them separate installs. Quote Link to comment
Lightbringer Posted February 4, 2020 Share Posted February 4, 2020 (edited) 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 February 4, 2020 by Lightbringer Quote Link to comment
subtledoctor Posted February 4, 2020 Share Posted February 4, 2020 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.) Quote Link to comment
Fishmalk Posted June 21, 2022 Share Posted June 21, 2022 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. Quote Link to comment
jastey Posted June 21, 2022 Author Share Posted June 21, 2022 @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. Quote Link to comment
jastey Posted June 21, 2022 Author Share Posted June 21, 2022 @Fishmalk I have a suspicion. Was the variable Global("NTTalkedToReedig","GLOBAL",3) already at "3" in your case? EDIT: Hmm, or maybe not. This quest line will be revised to be more stable in the next mod version. Quote Link to comment
Fishmalk Posted June 22, 2022 Share Posted June 22, 2022 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. Quote Link to comment
jastey Posted June 22, 2022 Author Share Posted June 22, 2022 @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. Quote Link to comment
Fishmalk Posted June 22, 2022 Share Posted June 22, 2022 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 Quote Link to comment
jastey Posted June 22, 2022 Author Share Posted June 22, 2022 @Fishmalk thanks! Did Yness and the Fisherman for Brandock's Octopus ink spawn for you, and or was the area explored (i.e. were the last script blocks executed)? Quote Link to comment
Recommended Posts
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.