Wisp Posted September 15, 2008 Share Posted September 15, 2008 Ok, first time I reported this, it was a dud, but this time I can account for the whole process. FW0507, FW0508, FW0509 and FW0510 are the ice, fire, air and slime chambers that you need to clear out in order to be transported onto the chessboard. Prior to installation of the BG1 NPC mod, all 4 areas have the _AR0507.bcs script assigned to them. This is the script that checks if all 4 chambers have been cleared out and transports the party if it's so. The tutu_area_script_assign macro assigns the scripts _AR0508 to FW0508, _AR0509 to FW0509 and _AR0510 to FW0510. The script _AR0510.bcs is copied over by the BG1 NPC mod, but lacks the block from _AR0507.bcs, so the player is never transported by that script. FW0508 and FW0509 are left with non-existent scripts assigned to them. The net result is that only FW0507 works as "it should" with regards to transporting the party to the next part of Durlag's tower. Link to comment
jastey Posted September 15, 2008 Share Posted September 15, 2008 Sounds like BG1NPC patches the areas with area scripts that are equal to the number without checking for a different name. I don't understand the tp2 enough to know were this would be, though. If it is the case, then plainab already provided a better way of patching the area script name (and I should update my own mod quickly). Link to comment
cmorgan Posted September 15, 2008 Share Posted September 15, 2008 Yep - we had better check with macready on that for Easytutu, too - the four areas that should not have the regular script assigned (or rather, should have the first area script assigned to all four areas) are FW0507, FW0508, FW0509 and FW0510 and all should keep _AR0507.bcs, so the code block /* ToSC only: */ ACTION_IF FILE_EXISTS_IN_GAME ~FW1500.are~ THEN BEGIN // if TotSC is installed COPY_EXISTING ~FW0500.ARE~ ~override~ // TotSC: Durlag's Tower ~FW0501.ARE~ ~override~ // TotSC: Durlag's Tower: Cellar ~FW0502.ARE~ ~override~ // TotSC: Durlag's Tower: L1 ~FW0503.ARE~ ~override~ // TotSC: Durlag's Tower: L2 ~FW0504.ARE~ ~override~ // TotSC: Durlag's Tower: L3 ~FW0505.ARE~ ~override~ // TotSC: Durlag's Tower: L4 ~FW0506.ARE~ ~override~ // TotSC: Durlag's Tower: Chessboard ~FW0507.ARE~ ~override~ // TotSC: Durlag's Tower: Ice Chamber ~FW0508.ARE~ ~override~ // TotSC: Durlag's Tower: Fire Chamber ~FW0509.ARE~ ~override~ // TotSC: Durlag's Tower: Air Chamber ~FW0510.ARE~ ~override~ // TotSC: Durlag's Tower: Earth Chamber ~FW0511.ARE~ ~override~ // TotSC: Durlag's Tower: D1 ~FW0512.ARE~ ~override~ // TotSC: Durlag's Tower: D2 ~FW0513.ARE~ ~override~ // TotSC: Durlag's Tower: D3 ~FW0514.ARE~ ~override~ // TotSC: Durlag's Tower: D4 ~FW0515.ARE~ ~override~ // TotSC: Durlag's Tower: Compass Room ~FW0516.ARE~ ~override~ // TotSC: Durlag's Tower: Demonknight's Chamber ~FW1000.ARE~ ~override~ // TotSC: Ulgoth's Beard ~FW1001.ARE~ ~override~ // TotSC: Ulgoth's Beard: Inn ~FW1002.ARE~ ~override~ // TotSC: Ulgoth's Beard: Demon's Chamber ~FW1003.ARE~ ~override~ // TotSC: Ulgoth's Beard: Storehouse ~FW1004.ARE~ ~override~ // TotSC: Ulgoth's Beard: Mendas' House ~FW1005.ARE~ ~override~ // TotSC: Ulgoth's Beard: Therella's House ~FW1006.ARE~ ~override~ // TotSC: Ulgoth's Beard: House2 ~FW1007.ARE~ ~override~ // TotSC: Ulgoth's Beard: House1 ~FW1008.ARE~ ~override~ // TotSC: Ice Island ~FW1009.ARE~ ~override~ // TotSC: Ice Island: Maze L1 ~FW1500.ARE~ ~override~ // TotSC: Isle of Balduran (North) ~FW1501.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D1 ~FW1502.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D2 ~FW1503.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D3 ~FW1504.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D4 ~FW1505.ARE~ ~override~ // TotSC: Isle of Balduran (North): Dradeel's House ~FW2000.ARE~ ~override~ // TotSC: Isle of Balduran (South) ~FW2001.ARE~ ~override~ // TotSC: Isle of Balduran (South): Great Hut ~FW2002.ARE~ ~override~ // TotSC: Isle of Balduran (South): Kaishas' Hut ~FW2003.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 3 ~FW2004.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 2 ~FW2005.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 4 ~FW2006.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 1 ~FW2007.ARE~ ~override~ // TotSC: Isle of Balduran (South): Harbor Hut ~FW2008.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 2 ~FW2009.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 1 ~FW2010.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 4 ~FW2011.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 3 ~FW2012.ARE~ ~override~ // TotSC: Werewolf Caverns WRITE_EVALUATED_ASCII 0x95 ~%SOURCE_RES%~ #7 // area script WRITE_ASCII 0x94 ~_AR~ #3 // area script BUT_ONLY_IF_IT_CHANGES END now reads /* ToSC only: */ ACTION_IF FILE_EXISTS_IN_GAME ~FW1500.are~ THEN BEGIN // if TotSC is installed COPY_EXISTING ~FW0507.ARE~ ~override~ // TotSC: Durlag's Tower: Ice Chamber ~FW0508.ARE~ ~override~ // TotSC: Durlag's Tower: Fire Chamber ~FW0509.ARE~ ~override~ // TotSC: Durlag's Tower: Air Chamber ~FW0510.ARE~ ~override~ // TotSC: Durlag's Tower: Earth Chamber WRITE_ASCII 0x94 ~_AR0507~ #8 // area script BUT_ONLY_IF_IT_CHANGES END ACTION_IF FILE_EXISTS_IN_GAME ~FW1500.are~ THEN BEGIN // if TotSC is installed COPY_EXISTING ~FW0500.ARE~ ~override~ // TotSC: Durlag's Tower ~FW0501.ARE~ ~override~ // TotSC: Durlag's Tower: Cellar ~FW0502.ARE~ ~override~ // TotSC: Durlag's Tower: L1 ~FW0503.ARE~ ~override~ // TotSC: Durlag's Tower: L2 ~FW0504.ARE~ ~override~ // TotSC: Durlag's Tower: L3 ~FW0505.ARE~ ~override~ // TotSC: Durlag's Tower: L4 ~FW0506.ARE~ ~override~ // TotSC: Durlag's Tower: Chessboard ~FW0511.ARE~ ~override~ // TotSC: Durlag's Tower: D1 ~FW0512.ARE~ ~override~ // TotSC: Durlag's Tower: D2 ~FW0513.ARE~ ~override~ // TotSC: Durlag's Tower: D3 ~FW0514.ARE~ ~override~ // TotSC: Durlag's Tower: D4 ~FW0515.ARE~ ~override~ // TotSC: Durlag's Tower: Compass Room ~FW0516.ARE~ ~override~ // TotSC: Durlag's Tower: Demonknight's Chamber ~FW1000.ARE~ ~override~ // TotSC: Ulgoth's Beard ~FW1001.ARE~ ~override~ // TotSC: Ulgoth's Beard: Inn ~FW1002.ARE~ ~override~ // TotSC: Ulgoth's Beard: Demon's Chamber ~FW1003.ARE~ ~override~ // TotSC: Ulgoth's Beard: Storehouse ~FW1004.ARE~ ~override~ // TotSC: Ulgoth's Beard: Mendas' House ~FW1005.ARE~ ~override~ // TotSC: Ulgoth's Beard: Therella's House ~FW1006.ARE~ ~override~ // TotSC: Ulgoth's Beard: House2 ~FW1007.ARE~ ~override~ // TotSC: Ulgoth's Beard: House1 ~FW1008.ARE~ ~override~ // TotSC: Ice Island ~FW1009.ARE~ ~override~ // TotSC: Ice Island: Maze L1 ~FW1500.ARE~ ~override~ // TotSC: Isle of Balduran (North) ~FW1501.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D1 ~FW1502.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D2 ~FW1503.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D3 ~FW1504.ARE~ ~override~ // TotSC: Isle of Balduran (North): Ship D4 ~FW1505.ARE~ ~override~ // TotSC: Isle of Balduran (North): Dradeel's House ~FW2000.ARE~ ~override~ // TotSC: Isle of Balduran (South) ~FW2001.ARE~ ~override~ // TotSC: Isle of Balduran (South): Great Hut ~FW2002.ARE~ ~override~ // TotSC: Isle of Balduran (South): Kaishas' Hut ~FW2003.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 3 ~FW2004.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 2 ~FW2005.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 4 ~FW2006.ARE~ ~override~ // TotSC: Isle of Balduran (South): Large Hut 1 ~FW2007.ARE~ ~override~ // TotSC: Isle of Balduran (South): Harbor Hut ~FW2008.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 2 ~FW2009.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 1 ~FW2010.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 4 ~FW2011.ARE~ ~override~ // TotSC: Isle of Balduran (South): Store Hut 3 ~FW2012.ARE~ ~override~ // TotSC: Werewolf Caverns WRITE_EVALUATED_ASCII 0x95 ~%SOURCE_RES%~ #7 // area script WRITE_ASCII 0x94 ~_AR~ #3 // area script BUT_ONLY_IF_IT_CHANGES END This only runs on Tutu/Easytutu installs. Thank you for the detailed report! Link to comment
jastey Posted September 15, 2008 Share Posted September 15, 2008 Yes, very good catch, Wisp! Link to comment
Wisp Posted September 16, 2008 Author Share Posted September 16, 2008 cmorgan, I noticed a conflict (call me curious) within the BG1 NPC mod if you fix it like that (assuming you haven't already spotted it as well). (from g3_tutu_cpmvars) /* AREA_SCRIPTS (BG1 NPC Only) */ OUTER_SPRINT "EarthChamber_BCS" "_AR0510" (from the tp2) EXTEND_BOTTOM ~%EarthChamber_BCS%.bcs~ ~BG1NPC/Phase2/baf/P#FW0510.BAF~ //yes, it is correct EVALUATE_BUFFER Link to comment
cmorgan Posted September 16, 2008 Share Posted September 16, 2008 I will check it out... Link to comment
Dakk Posted September 16, 2008 Share Posted September 16, 2008 So uh.. what does this means for the average Joe (me!)? I run BGT with BG1NPC installed, do I need to tinker? Link to comment
Icendoan Posted September 16, 2008 Share Posted September 16, 2008 It means in Durlag's tower you have to do the rooms in a certain order to get teleported onto the Chessboard. Icen Link to comment
Dakk Posted September 16, 2008 Share Posted September 16, 2008 Perfectly concise and proper answer. Mind telling me in which order..? Link to comment
Wisp Posted September 16, 2008 Author Share Posted September 16, 2008 Actually, merely entering the ice room is enough, provided the other rooms have been cleared out (e.g. you could do them in the order ice, fire, air, earth but then you'd have to go back to the ice room to get transported). Link to comment
cmorgan Posted September 17, 2008 Share Posted September 17, 2008 OK, we will have to adjust this to get it more specific, as this would now be appended to all four areas: - contents of that .baf are IF AreaCheck("%DurlagsTower_EarthChamber%") Global("X#MinscDTSlimes","GLOBAL",0) InParty("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("X#MinscDTSlimes","GLOBAL",1) END IF AreaCheck("%DurlagsTower_EarthChamber%") Global("X#MinscDTSlimes","GLOBAL",1) InParty("minsc") !StateCheck("minsc",CD_STATE_NOTVALID) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 ActionOverride("minsc",Dialog(Player1)) END We will need to look for an easy way of making sure the slimetalk happens with the slimes, and not in the other chambers. Link to comment
jastey Posted September 17, 2008 Share Posted September 17, 2008 Why would the AreaCheck() not suffice? Link to comment
cmorgan Posted September 17, 2008 Share Posted September 17, 2008 Well that's a good question - I was under the impression that AreaCheck() looks at the area script currently running. Which would mean that now 4 areas share the same script, and that dialog would fire in the first area visited. But I think I have that wrong - an area check looks for FW#### or AR#### and the scripts are not labled the same. So perhaps this is not a conflict at all. Adding a script block to an area with an area check for another area would be fine... checking the IESDP... Link to comment
cmorgan Posted November 23, 2008 Share Posted November 23, 2008 Confirmed the repairs to tutu_area_script_assign.tph as per above post, and tested. Reminder: this has NO EFFECT on BGT games, and you can do the rooms in any order on BGT - this change is for Tutu only and will mean that on Tutu games the original scripts will work correctly. After these changes, on both BGT and Tutu, finishing the last room will teleport you to the next stage. For Minsc's comment, the following change (no need to involve an area script at all): removed the script extension from the .tp2 and added it to Minsc's script. CHANGED: in E:\BG1NPC_Workspace\bg1npc-v17\bg1npc\lib\g3_tutu_cpmvars.tpa OUTER_SPRINT "EarthChamber_BCS" "_AR0507" DELETED: in bg1npc.tp2 EXTEND_BOTTOM ~%EarthChamber_BCS%.bcs~ ~BG1NPC/Phase2/baf/P#FW0510.BAF~ //yes, it is correct EVALUATE_BUFFER and the related file P#FW0510.BAF Added to the bottom of E:\BG1NPC_Workspace\bg1npc-v17\bg1npc\phase2\baf\x#miint2.baf /* Minsc and the Slimes */ IF %BGT_VAR% Global("X#MinscDTSlimes","GLOBAL",0) AreaCheck("%DurlagsTower_EarthChamber%") InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InMyArea(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 SetGlobal("X#MinscDTSlimes","GLOBAL",1) END IF Global("X#MinscDTSlimes","GLOBAL",1) AreaCheck("%DurlagsTower_EarthChamber%") InParty(Myself) !StateCheck(Myself,CD_STATE_NOTVALID) InMyArea(Player1) !StateCheck(Player1,CD_STATE_NOTVALID) THEN RESPONSE #100 PlaySong(0) PlaySound("minsc99") StartDialogNoSet(Player1) END repaired 11/23/2008 prerelease v17 Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.