St_Vitruvius Posted May 25, 2007 Share Posted May 25, 2007 Now that I think I've got the hang of changing exisiting dialogue I'm off to the next thing: Scripts! After having killed Irenicus you're supposed to be able to walk around in Suldanessellar. At the moment People can walk around in AR2812, The Temple of Rillifane, and do what ever they like.. But if they LEAVE the temple they cannot return from AR2800 to AR2812, but will end up in AR2803, e.g. they cannot complete the game.. And they risk stumpling into a monster not yet killed in Suldanessellar.. So does anyone know if it's possible to edit the area scripts and the cut-scene scripts in a non-destructive manner? Link to comment
St_Vitruvius Posted May 27, 2007 Author Share Posted May 27, 2007 If no-one know if I it's possible to edit scripts in a non-destructive manner, then I'll assume it's not possible.. Therefore I ask if anyone knows of any mods changeing the following list of scripts: AR2800.BCS AR2801.BCS AR2802.BCS AR2803.BCS AR2804.BCS AR2805.BCS AR2806.BCS AR2807.BCS AR2808.BCS AR2809.BCS AR2812.BCS CUT59A.BCS and any changes to ANYTHING in area 2812.. Link to comment
Rabain Posted May 28, 2007 Share Posted May 28, 2007 Yes you can change scripts in a non-destructive manner. It's more or less the same as changing a dialogue. You need to find out where the code is that makes the changes in the current game and stop it from happening by inserting a global check (in the same way you entered the False() into the dialogue to stop the reply from firing. You change your global when you are ready to go. In this case you may need to do more checking because I think the Temple room in which Ellesime does her final speech is not linked to from the main city area. They didn't need to do this because it is the last area you visit in SoA. You will need more changes than mere scripting. You will need to add a new door trigger in AR2800 that goes to AR2812 and that only becomes active after your new dialogue with Ellesime. You will also need to deactivate the door that goes to AR2803. Link to comment
St_Vitruvius Posted May 28, 2007 Author Share Posted May 28, 2007 I was thinking of changing the destination from Hell, vi cut59a, to ar2803 and adding a lot of conditions. But if I'm able to change the the conditions for the door triggers, then I'll do that.. But how do I do it? I've looked through the WeiDU documentation and found APPLY_BCS_PATCH_OR_COPY, APPEND_FILE, INSERT_FILE.. But I'm not sure which to use.. Is there a mod doing this that can give me a hint? Link to comment
Kulyok Posted May 28, 2007 Share Posted May 28, 2007 If you want to cut into the ending of the game just to end a guy who would train elven characters and give them new bonuses, maybe you could do it before? For example, Elhan could be waiting for PC at the temple entrance, after the avatar has been summoned, thank him for preventing the city's destruction, and introduce him to an elven weapon master. Link to comment
Miloch Posted May 28, 2007 Share Posted May 28, 2007 I've looked through the WeiDU documentation and found APPLY_BCS_PATCH_OR_COPY, APPEND_FILE, INSERT_FILE.. But I'm not sure which to use.. Is there a mod doing this that can give me a hint?You probably just want to DECOMPILE_BCS_TO_BAF and REPLACE_TEXTUALLY what you want to replace or append. It's probably the least "non-destructive" way anyhow. We do a lot of that in the BG1 Fixpack. Depending on what you want to do, EXTEND_BOTTOM might be more appropriate. If you post a script and a description of what you want to do to it, it might be easier to give examples. Link to comment
Rabain Posted May 28, 2007 Share Posted May 28, 2007 If, as Kulyok said, you are only adding one extra character to the city I would suggest you do it before going to Hell. It would save you a lot of work. Also if you can explore the city after returning from Hell it might seem a little odd if none of the residents have anything to say about it and behave as though the city is still under threat. Link to comment
cmorgan Posted May 28, 2007 Share Posted May 28, 2007 One mod springs to mind for changes like these, but it is changing the end of BG1 content to BG2 content - BGT. Other mods which alter the way the map works include Sirine's Call (adds new areas and maps their related entrance/exit triggers), several of the Big Mods (NeJ, etc., etc.) and a new mod out called Tower of Deception (Kulyok did some work assisting on this one, so you could ask her if it is on-topic enough for you - I have not had a chance to review it and study it yet). For less intrusive "steal the party temporarily and do some stuff before allowing the regular end of the game to occur", the cutscenes in The BG1 NPC Project dealing with the end of Dynaheir's Romance" come to mind. I agree with both Kulyok and Miloch. The least destructive way is simply to add the materials to existing NPCs already present, or bring in a temporary NPC, do a cutscene in place, and then you don't have to worry about massive work and editing. And as far as REPLACE_BCS_BLOCK et al, there are many, many old threads at PPG in various forums that warn of the fragility of R_B_B - you will only have success if the blocks exactly match, so if a mod changes something, your changes will not get made. Decompiling and using R_T is great, as is simply extending the script (which is much more easily approached if you follow Kulyok's advice...) Link to comment
St_Vitruvius Posted May 28, 2007 Author Share Posted May 28, 2007 Ahh.. But my intension IS to add new creatures, new quests, new items ect. and to allow players the possibility to finish other quests in the rest of the game before going to ToB.. First of: Is it easier to make the door to the temple go to ar2803 before killing Jon, and ar2812 after OR to move all the actors from ar2812 to ar2803 and have cut59a send the players there? I've had a look through the script for area 2800: IF OnCreation() Global("TurnOffTrigger","AR2800",0) THEN RESPONSE #100 FadeToColor([1.0],0) StartMovie("FLYTHR03") SmallWait(1) IncrementChapter("") TextScreen("SCRTXT08") SmallWait(1) FadeFromColor([20.0],0) StartCutSceneMode() SetGlobal("TurnOffTrigger","AR2800",1) TriggerActivation("Tran2805",FALSE) Explore() AddJournalEntry(23513,INFO) Wait(1) ActionOverride("suelhan",StartDialogueNoSet(Player1)) END IF GlobalGT("ElvenSpirits","GLOBAL",0) Global("ChangeAmbientSound","AR2800",0) THEN RESPONSE #100 SetGlobal("ChangeAmbientSound","AR2800",1) SoundActivate("Mainambiencedaynofight",TRUE) SoundActivate("Mainambiencenightnofight",TRUE) SoundActivate("Mainambiencedayfight",FALSE) SoundActivate("Mainambiencenightfight",FALSE) END IF Global("StopWaterfall","GLOBAL",3) THEN RESPONSE #100 SetGlobal("StopWaterfall","GLOBAL",4) TriggerActivation("Tran2804",FALSE) TriggerActivation("Tran2805",TRUE) END IF Global("ElvenSpirits","GLOBAL",3) Global("DeactivateScenes","AR2800",0) THEN RESPONSE #100 SetInterrupt(FALSE) SetGlobal("DeactivateScenes","AR2800",1) TriggerActivation("Scene1a",FALSE) TriggerActivation("Scene1b",FALSE) TriggerActivation("Scene1c",FALSE) TriggerActivation("Scene2a",FALSE) TriggerActivation("Scene2b",FALSE) TriggerActivation("Scene2c",FALSE) TriggerActivation("Scene3a",FALSE) TriggerActivation("Scene3b",FALSE) TriggerActivation("Scene3c",FALSE) TriggerActivation("Scene3d",FALSE) TriggerActivation("Scene4a",FALSE) TriggerActivation("Scene4b",FALSE) CreateCreature("M05SPIR1",[2139.1768],6) // Elven Spirit CreateCreature("M05SPIR1",[2878.2797],6) // Elven Spirit CreateCreature("GOLSAN01",[2227.1526],0) // Sand Golem CreateCreature("ELAIRL01",[2747.2691],0) // Lesser Air Elemental SetInterrupt(TRUE) END IF Global("ElvenAvatar","GLOBAL",1) Global("DeactivateRest","AR2800",0) THEN RESPONSE #100 SetGlobal("DeactivateRest","AR2800",1) SetRestEncounterProbabilityDay(0) SetRestEncounterProbabilityNight(0) END IF Global("ElvenAvatar","GLOBAL",1) !Dead("suelf10") // Reirra Global("SpawnSuelf10","AR2800",0) THEN RESPONSE #100 SetGlobal("SpawnSuelf10","AR2800",1) ActionOverride("suelf10",DestroySelf()) Wait(2) CreateCreatureDoor("suelf10",[4071.2061],8) // Reirra END If I wanted to add a global variable, making sure the huge block with ElvenSpirits and TriggerActivation, is not run after killing Irenicus, how would I do that? It's not all the monsters that's created using the script as I can see. And as I'm not sure how to make changes in an are-file, I don't know how to make sure they're gone when Irenicus is killed.. Link to comment
Nythrun Posted May 28, 2007 Share Posted May 28, 2007 That block will run before making it to hell; it doesn't need to be disabled. Pick a variable that you're going to use to check whether the PC has killed Irenicus yet (probably just looking at helljon would suffice) and EXTEND_BOTTOM the area script with ActionOverride(*,DestroySelf()) for all the actors you want to sweep away. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.