CamDawg Posted May 4, 2005 Share Posted May 4, 2005 Who knew Echon actually played BG2? We have run into some bugs in our current BG2 game but Baldurdash is not installed so I am not sure if they are already covered by it. But I suppose it will do no harm to mention them even though you may already be aware of them. Yes, please. When existing the Underdark, some of the elves turn hostile when you help them kill the drow. We made sure we had no hurt them in any way. When the githyanki come to claim the silver blade in Athkatla, we got stuck in the dialogue when we wanted to fight them. Giving them the blade was the only option to continue the game. These are the only two that spring to mind right now. OK, I'll repost in he workroom. I think I remember seing both before, but I'd have to check the bug list, It's looooong. And wow, I can't type. *Very* long? It's very long, but it also ranges from the really easy (flail x has incorrect weight) to the difficult (Jaheira romance = BROEK). Ah. Well, here is another very minor bug. The Spear of Withering +4 which should have a speed factor of 2, and also has a speed factor of 2, states in the description that it is 6. Excellent. Thanks. Link to comment
devSin Posted May 4, 2005 Share Posted May 4, 2005 <Echon> When existing the Underdark, some of the elves turn hostile when you help them kill the drow. We made sure we had no hurt them in any way.This is 100% the fault of the GP* scripts. I think some use GPARCHER, and maybe GPSHOUT. These scripts were modified for ToB; consequently, they shouldn't ever be used for a creature that isn't supposed to just Enemy(). Also note that the elves here set the GoodElfKill-type variable to 1; if I read the scripts right, this means you can kill the surface elves with impunity (since they only ever check the the same variable is 0 before setting it to 2 and summoning the Arkanis Gath elf). <Echon> When the githyanki come to claim the silver blade in Athkatla, we got stuck in the dialogue when we wanted to fight them. Giving them the blade was the only option to continue the game.The dialogue to check here will be KRUIN (or whatever is assigned to KRUIN.CRE). Link to comment
CamDawg Posted May 6, 2005 Author Share Posted May 6, 2005 When existing the Underdark, some of the elves turn hostile when you help them kill the drow. We made sure we had no hurt them in any way.This is 100% the fault of the GP* scripts. I think some use GPARCHER, and maybe GPSHOUT. These scripts were modified for ToB; consequently, they shouldn't ever be used for a creature that isn't supposed to just Enemy(). Also note that the elves here set the GoodElfKill-type variable to 1; if I read the scripts right, this means you can kill the surface elves with impunity (since they only ever check the the same variable is 0 before setting it to 2 and summoning the Arkanis Gath elf). Yeah, they have GPSHOUT assigned to their cre files. This works fine outside where the only shout they hear is from another elf, but inside they're reacting to shouts from the drow. UDELF0[1-5] have GPSHOUT and WTASIGHT scripts assigned in their cre files, and then ar2401.are assigns them WAITPC and UDELF0[1-3] in addition. I propose moving the WAITPC assignment to override the GPSHOUT in the cre file for the ar2401 creatures. And you're correct, UDELF0[1-3] set the variable to 1, preventing the Elven god from appearing. This'll be fixed as well. When the githyanki come to claim the silver blade in Athkatla, we got stuck in the dialogue when we wanted to fight them. Giving them the blade was the only option to continue the game.The dialogue to check here will be KRUIN (or whatever is assigned to KRUIN.CRE). For the life of me, I can't see anything in Kruin that would cause a loop, in either patched SoA or ToB. Link to comment
CamDawg Posted May 6, 2005 Author Share Posted May 6, 2005 Fixed as follows: // Killing war elves while escaping Underdark let's you kill the surface elves COPY_EXISTING ~udelf01.bcs~ ~override~ ~udelf02.bcs~ ~override~ ~udelf03.bcs~ ~override~ DECOMPILE_BCS_TO_BAF REPLACE_TEXTUALLY ~SetGlobal("GoodElfKill","GLOBAL",1)~ ~SetGlobal("GoodElfKill","GLOBAL",2)~ COMPILE_BAF_TO_BCS BUT_ONLY_IF_IT_CHANGES // war elves in ar2401 go hostile with drow shouts COPY_EXISTING ~ar2401.are~ ~override~ READ_LONG 0x54 "actor_off" READ_SHORT 0x58 "actor_num" WHILE ("%actor_num%" > 0) BEGIN SET "actor_num" = ("%actor_num%" - 1) READ_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) "cre_file" (6) PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "udelf0" = 0) BEGIN WRITE_ASCII ("%actor_off%" + 0x58 + ("%actor_num%" * 0x110)) ~waitpc~ #8 END END BUT_ONLY_IF_IT_CHANGES Included in alpha 5. Link to comment
devSin Posted May 11, 2005 Share Posted May 11, 2005 Make sure you also kill the GPARCHER on one of the elves. It will respond to shouts in the same fashion as GPSHOUT, and also has this gem: IF !Allegiance(Myself,255) THEN RESPONSE #100 NoAction() END (i.e., this particular elf won't do anything at all). Link to comment
CamDawg Posted May 12, 2005 Author Share Posted May 12, 2005 UDELF2 has GPARCHER, but the two times it's referenced in the game (both in ar2401) the GPARCHER script is overridden by the area file. Link to comment
devSin Posted January 30, 2008 Share Posted January 30, 2008 // war elves in ar2401 go hostile with drow shouts COPY_EXISTING ~ar2401.are~ ~override~  READ_LONG  0x54 "actor_off"  READ_SHORT 0x58 "actor_num"  WHILE ("%actor_num%" > 0) BEGIN   SET "actor_num" = ("%actor_num%" - 1)   READ_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) "cre_file" (6)   PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "udelf0" = 0) BEGIN    WRITE_ASCII ("%actor_off%" + 0x58 + ("%actor_num%" * 0x110)) ~waitpc~ #8   END  END  BUT_ONLY_IF_IT_CHANGES As discovered last year, the field order is OVERRIDE, GENERAL, CLASS, RACE, DEFAULT, SPECIFIC. Meaning this is setting the general script, *not* overriding gpshout in the elves' class script slot. -> WRITE_ASCIIT ("%actor_off%" + 0x60 + ("%actor_num%" * 0x110)) ~waitpc~ Note that this means also that UDELF02s' GPARCHER *isn't* being overridden by default (we're actually unintentionally overriding it; score one for the good guys!). The patch will need to be changed to read the whole resref; I recommend WRITE_ASCIIT ("%actor_off%" + 0x58 + ("%actor_num%" * 0x110)) ~wtarsgt~. Link to comment
CamDawg Posted January 31, 2008 Author Share Posted January 31, 2008 // war elves in ar2401 go hostile with drow shouts COPY_EXISTING ~ar2401.are~ ~override~ READ_LONG 0x54 "actor_off" READ_SHORT 0x58 "actor_num" WHILE ("%actor_num%" > 0) BEGIN SET "actor_num" = ("%actor_num%" - 1) READ_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) "cre_file" PATCH_IF ("%cre_file%" STRING_COMPARE_REGEXP "udelf0[0-9]" = 0) BEGIN WRITE_ASCII ("%actor_off%" + 0x60 + ("%actor_num%" * 0x110)) ~waitpc~ #8 PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "udelf02" = 0) BEGIN WRITE_ASCII ("%actor_off%" + 0x58 + ("%actor_num%" * 0x110)) ~wtarsgt~ #8 END END END BUT_ONLY_IF_IT_CHANGES n'est pas? Link to comment
devSin Posted January 31, 2008 Share Posted January 31, 2008 Maybe "udelf0[1-5]" joos b'cuz, but otherwise, yeah. Looks right. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.