jastey Posted June 7, 2017 Share Posted June 7, 2017 Hi, if I use this to remove a cre from an are file: COPY_EXISTING ~AR8009.ARE~ ~override~PATCH_IF (SOURCE_SIZE > 0x11b) BEGINREAD_SHORT 0x54 "JA#OFF_ACT"WRITE_LONG "JA#OFF_ACT" + (0x110 * 15) + 0x38 0x00000000 //Remove PhandalynENDBUT_ONLY is there the risk that the offsets (or whatever) are wrong if another mod added a custom cre to this area before my mod gets installed? Differently phrased: Is this syntax compatible in all cases or do I risk messing the are in some way / removing the wrong cre etc.? (Code is taken from Jarl's Adventure Pack, I am evaluating compatibility. No intend to put blame or patronize) Link to comment
Roxanne Posted June 7, 2017 Share Posted June 7, 2017 Hi, if I use this to remove a cre from an are file: COPY_EXISTING ~AR8009.ARE~ ~override~ PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN READ_SHORT 0x54 "JA#OFF_ACT" WRITE_LONG "JA#OFF_ACT" + (0x110 * 15) + 0x38 0x00000000 //Remove Phandalyn END BUT_ONLY is there the risk that the offsets (or whatever) are wrong if another mod added a custom cre to this area before my mod gets installed? Differently phrased: Is this syntax compatible in all cases or do I risk messing the are in some way / removing the wrong cre etc.? (Code is taken from Jarl's Adventure Pack, I am evaluating compatibility. No intend to put blame or patronize) My concern is that Phandalyn is that over-vigilant paladin in Baldur's Gate who reacts to evil party members. At least two mods use this character in their plot. Removing such vanilla creatures creates issues. Jarl's removal of creatures already created mod incompatibilities. Otherwise a safe way would be to give him a script name and remove him via area script. Link to comment
Gwendolyne Posted June 7, 2017 Share Posted June 7, 2017 jastey, do you really need to remove the cre from the are, or simply disable it for a while? I used a code to disable the 6 paladins when you enter Winsdpear Hill and re-able them once you have finished a new quest for the fairy Queen Vaelasa. Otherwise the Firkraag quest timer would have not allowed CHARNAME to perform my own quest. If you need it, I can share it with pleasure. Link to comment
jastey Posted June 7, 2017 Author Share Posted June 7, 2017 Gwendolyne: The above syntax is for BG1 part, though, I think (and from Jarl's mod). But I'd be very interested in your code for anything Windspear Hill-related, just to make sure the Ajantis start quest makes sense. I do not change the knights in the Windspear Hills but the Ajantis mod changes the dropped dead bodies (to be able to remove them) and detects the knight's death (to trigger a mod event). I'm very interested in making this compatible in case there is a problem. Roxanne: I do see the problem. Jarl's mod places the PHANDA.CRE into Elfsong tavern but gives him a cutsom script name. Do you have other reports about incompatibilities? I still haven't given up hope to turn Jarl's very nice additions into something compatible. It's not so easy, though, as the mod prefers to edit .are files directly and makes use of ALTER_TRANS a lot. (I'd still be interested in my original question from someone who can read this READ_SHORT WRITE_LONG language.) Link to comment
CamDawg Posted June 7, 2017 Share Posted June 7, 2017 Hi, if I use this to remove a cre from an are file: COPY_EXISTING ~AR8009.ARE~ ~override~ PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN READ_SHORT 0x54 "JA#OFF_ACT" WRITE_LONG "JA#OFF_ACT" + (0x110 * 15) + 0x38 0x00000000 //Remove Phandalyn END BUT_ONLY is there the risk that the offsets (or whatever) are wrong if another mod added a custom cre to this area before my mod gets installed? Differently phrased: Is this syntax compatible in all cases or do I risk messing the are in some way / removing the wrong cre etc.? (Code is taken from Jarl's Adventure Pack, I am evaluating compatibility. No intend to put blame or patronize) While it's unlikely that someone is going to insert an actor into the file and this would work just fine, it's a little safer to loop through the actors: COPY_EXISTING ~ar8009.are~ ~override~ READ_LONG 0x54 actor_off READ_SHORT 0x58 actor_num FOR (index = 0 ; index < actor_num ; ++index) BEGIN READ_ASCII (actor_off + 0x80 + (index * 0x110)) cre_file PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "phanda" = 0) BEGIN // phandalyn's creature file WRITE_LONG (actor_off + 0x38 + (index * 0x110)) 0 END END BUT_ONLY ... but I'll second Roxanne and Gwendolyn--try to only temporarily disable him just long enough for your mod to do what it needs to do. You could respawn him via the area script later, or even skip the area file modifications altogether by having his script activate/deactivate him as needed. Link to comment
Jarno Mikkola Posted June 7, 2017 Share Posted June 7, 2017 ... but I'll second Roxanne and Gwendolyn--try to only temporarily disable him just long enough for your mod to do what it needs to do. You could respawn him via the area script later, or even skip the area file modifications altogether by having his script activate/deactivate him as needed.My suggestion would be to disable the other actors via an area script after something happens, and then after that the area script would re-enable the actors back to the area. I myself might use the move_to_area to do this kinda stuff. Link to comment
Ardanis Posted June 7, 2017 Share Posted June 7, 2017 I'd just use fj_are_structure and not worry about offsets. Link to comment
Roxanne Posted June 7, 2017 Share Posted June 7, 2017 I know for sure that Sirene NPC interacts with Phandalyn and also Jen'lig (from my own EET mod). Furthermore there is another guy in the Inn near the Ducal Palace who makes references to Phandalyn and triggers some party dialogues. Removing Phandalyn makes all of that obsolete (maybe other stuff I do not know as well.) As for Jarl - yes he replaces some vanilla NPCs by mod NPCs with different script names. He also removes somebody from the Friendly Arm and other things I do not remember right away. There was some compatibility analysis done a while back for BGT, I cannot say if this is still valid. There is also a mod in BG2 which removes such a prominent NPC as Pip in a council members house and thus makes other mods fail. I quote this just as an example that removing vanilla NPCs can do more harm than just changing the .are file. But probably you have good reason to do so. Link to comment
Gwendolyne Posted June 7, 2017 Share Posted June 7, 2017 Gwendolyne: The above syntax is for BG1 part, though, I think (and from Jarl's mod). But I'd be very interested in your code for anything Windspear Hill-related, just to make sure the Ajantis start quest makes sense. I do not change the knights in the Windspear Hills but the Ajantis mod changes the dropped dead bodies (to be able to remove them) and detects the knight's death (to trigger a mod event). I'm very interested in making this compatible in case there is a problem. I understood well your coding was for BG1 but I think the principles are the same. First of all, I checked in about 500 mods all the references to PALKNI01_5, AR1200.are and AR1200.bcs to be sure my code would not break anything. Then : LAM ~GW_DEF_AREA_OFFSETS~ // Macro defining the offsets of all area elements. COPY_EXISTING ~AR1200.are~ ~override/GW1200.are~ PATCH_IF (SOURCE_SIZE > GW_area_min_size) THEN BEGIN LPF ~GW_READ_AREA_STRUCTURE~ RET GW_actor_num GW_actor_off END // I read the needed offsets value. FOR (i = 0 ; i < GW_actor_num ; ++i) BEGIN SET exists_cre = 0 SET index_to_delete = 0 READ_ASCII ("%GW_actor_off%" + 0x80 + ("%GW_act_size%" * i)) "GW_Cre_file" PATCH_MATCH "%GW_Cre_file%" WITH PALKNI01 BEGIN index_to_delete = i exists_cre = 1 READ_SHORT ("%GW_actor_off%" + 0x20 + ("%GW_act_size%" * i)) PALKNI01_X READ_SHORT ("%GW_actor_off%" + 0x22 + ("%GW_act_size%" * i)) PALKNI01_Y READ_SHORT ("%GW_actor_off%" + 0x34 + ("%GW_act_size%" * i)) PALKNI01_F END PALKNI02 BEGIN index_to_delete = i exists_cre = 1 READ_SHORT ("%GW_actor_off%" + 0x20 + ("%GW_act_size%" * i)) PALKNI02_X READ_SHORT ("%GW_actor_off%" + 0x22 + ("%GW_act_size%" * i)) PALKNI02_Y READ_SHORT ("%GW_actor_off%" + 0x34 + ("%GW_act_size%" * i)) PALKNI02_F END PALKNI03 BEGIN index_to_delete = i exists_cre = 1 READ_SHORT ("%GW_actor_off%" + 0x20 + ("%GW_act_size%" * i)) PALKNI03_X READ_SHORT ("%GW_actor_off%" + 0x22 + ("%GW_act_size%" * i)) PALKNI03_Y READ_SHORT ("%GW_actor_off%" + 0x34 + ("%GW_act_size%" * i)) PALKNI03_F END PALKNI04 BEGIN index_to_delete = i exists_cre = 1 READ_SHORT ("%GW_actor_off%" + 0x20 + ("%GW_act_size%" * i)) PALKNI04_X READ_SHORT ("%GW_actor_off%" + 0x22 + ("%GW_act_size%" * i)) PALKNI04_Y READ_SHORT ("%GW_actor_off%" + 0x34 + ("%GW_act_size%" * i)) PALKNI04_F END PALKNI05 BEGIN index_to_delete = i exists_cre = 1 READ_SHORT ("%GW_actor_off%" + 0x20 + ("%GW_act_size%" * i)) PALKNI05_X READ_SHORT ("%GW_actor_off%" + 0x22 + ("%GW_act_size%" * i)) PALKNI05_Y READ_SHORT ("%GW_actor_off%" + 0x34 + ("%GW_act_size%" * i)) PALKNI05_F END DEFAULT END PATCH_IF (exists_cre = 1) BEGIN // If the creature exists in are file, I delete it. LPF fj_are_structure INT_VAR fj_delete_mode = index_to_delete STR_VAR fj_structure_type = actor END SET i = 0 - 1 // index reinitialization (we have deleted one actor). READ_SHORT GW_act_nb "GW_actor_num" END END // of looping through actors END // of PATCH_IF (SOURCE_SIZE > GW_area_min_size) BUT_ONLY with those libraries I wrote because I was fed up with finding the right value of each offset in every line of code: /* ================================================================ * * MACRO GW_DEF_AREA_OFFSETS : DEFINE general offsets in ARE. files * * ---------------------------------------------------------------- * * Used by 290_Cartes.tph & by function GW_READ_AREA_STRUCTURE. * * ================================================================ */ DEFINE_ACTION_MACRO ~GW_DEF_AREA_OFFSETS~ BEGIN OUTER_SET GW_area_min_size = 0x11b // Area minimum size OUTER_SET GW_are_flag1_of = 0x14 // Area flag (AREAFLAG.IDS) = bit 0: Save allowed - bit 1: Tutorial area (not BG1) - bit 2: Dead magic zone - bit 3: Dream OUTER_SET GW_are_flag2_of = 0x48 // Area flags (AREATYPE.IDS) = bit 0: Outdoor - bit 1: Day/night - bit 2: Weather - bit 3: City - bit 4: Forest - bit 5: Dungeon - bit 6: Extended night - bit 7: Can rest indoors OUTER_SET GW_act_of = 0x54 // Offset to actors OUTER_SET GW_act_nb = 0x58 // Count of actors OUTER_SET GW_act_size = 0x110 // Size of actors cection OUTER_SET GW_reg_nb = 0x5a // Count of regions OUTER_SET GW_reg_of = 0x5c // Offset to regions OUTER_SET GW_reg_size = 0xc4 // Size of regions section OUTER_SET GW_reg_text_of = 0x64 // Offset to Information text (for info points) OUTER_SET GW_spa_of = 0x60 // Offset to spawn points OUTER_SET GW_spa_nb = 0x64 // Count of spawn points OUTER_SET GW_spa_size = 0xc8 // Size of spawn points section OUTER_SET GW_ent_of = 0x68 // Offset to entrances OUTER_SET GW_ent_nb = 0x6c // Count of entrances OUTER_SET GW_ent_size = 0x68 // Size of entrances section OUTER_SET GW_con_of = 0x70 // Offset to containers OUTER_SET GW_con_nb = 0x74 // Count of containers OUTER_SET GW_con_size = 0xc0 // Size of containers section OUTER_SET GW_con_string_of = 0x84 // Offset to Lockpick string OUTER_SET GW_itm_nb = 0x76 // Count of items OUTER_SET GW_itm_of = 0x78 // Offset to items OUTER_SET GW_itm_size = 0x14 // Size of items section OUTER_SET GW_ver_of = 0x7c // Offset to vertices OUTER_SET GW_ver_nb = 0x80 // Count of vertices OUTER_SET GW_ver_size = 0x4 // Size of vertices section - size of one set of X, Y coordinates OUTER_SET GW_amb_nb = 0x82 // Count of ambients OUTER_SET GW_amb_of = 0x84 // Offset to ambients OUTER_SET GW_amb_size = 0xd4 // Size of ambients section OUTER_SET GW_var_of = 0x88 // Offset to variables - not used in PS:T OUTER_SET GW_var_nb = 0x8c // Count of variables - not used in PS:T OUTER_SET GW_var_size = 0x54 // Size of variables section - not used in PS:T ou 0x50 IESPD /* 0x0090 2 (word) Offset to tiled object flags 0x0092 2 (word) Count of tiled object flags OUTER_SET GW_til_flag_of = 0x90 // Offset to tiled object flags OUTER_SET GW_til_flag_nb = 0x92 // Count of tiled object flags */ OUTER_SET GW_are_sc = 0x94 // Area script /* 0x009c 4 (dword) Size of explored bitmask */ OUTER_SET GW_exp_of = 0xa0 // Offset to explored bitmask - no count, offset only OUTER_SET GW_exp_size = 0x0 // Size of explored bitmask section - not applicable - no count, offset only OUTER_SET GW_dor_nb = 0xa4 // Count of doors OUTER_SET GW_dor_of = 0xa8 // Offset to doors OUTER_SET GW_dor_size = 0xc8 // Size of doors section OUTER_SET GW_dor_string_of = 0x98 // Offset to Lockpick string OUTER_SET GW_ani_nb = 0xac // Count of animations OUTER_SET GW_ani_of = 0xb0 // Offset to animation OUTER_SET GW_ani_size = 0x4c // Size of animations section OUTER_SET GW_til_nb = 0xb4 // Count of tiled objects - not used in PS:T OUTER_SET GW_til_of = 0xb8 // Offset to tiled objects - not used in PS:T OUTER_SET GW_til_size = 0x6c // Size of tiled objects section 0 - not used in PS:T OUTER_SET GW_sng_of = 0xbc // Offset to song entries - no count, offset only OUTER_SET GW_sng_size = 0x90 // Size of songs section - no count, offset only OUTER_SET GW_res_of = 0xc0 // Offset to rest interruptions - no count, offset only OUTER_SET GW_res_size = 0xe4 // Size of rest interruptions - no count, offset only OUTER_SET GW_not_of = 0xc4 // Offset of the automap notes section - not used in PS:T : 0xFFFFFFFF OUTER_SET GW_not_nb = 0xc8 // Count of the automap notes section - not used in PS:T OUTER_SET GW_not_size = 0x34 // Size of Automap notes section - not used in PS:T OUTER_SET GW_PjT_of = 0xcc // Offset to the Projectile Traps section - only used in BG2? OUTER_SET GW_PjT_nb = 0xd0 // Count of the Projectile Traps section - only used in BG2? OUTER_SET GW_PjT_size = 0x1a // Size of Projectile Traps section - only used in BG2? ou 0x1C IESDP OUTER_SET GW_rest_movD_of = 0xd4 // BG2: ToB - Rest movie (day) OUTER_SET GW_rest_movN_of = 0xdc // BG2: ToB - Rest movie (night) END // of DEFINE_ACTION_MACRO /* ========================================================================== * * FONCTION GW_READ_AREA_STRUCTURE : READ the value of the ARE needed offsets * * -------------------------------------------------------------------------- * * Used by 290_Cartes.tph from macro GW_DEF_AREA_OFFSETS. * * ========================================================================== */ DEFINE_PATCH_FUNCTION ~GW_READ_AREA_STRUCTURE~ // STR_VAR GW_area = "" // area file ==> unused RET GW_are_flag1 // Area flag (AREAFLAG.IDS) = bit 0: Save allowed - bit 1: Tutorial area (not BG1) - bit 2: Dead magic zone - bit 3: Dream GW_are_flag2 // Area flags (AREATYPE.IDS) = bit 0: Outdoor - bit 1: Day/night - bit 2: Weather - bit 3: City - bit 4: Forest - bit 5: Dungeon - bit 6: Extended night - bit 7: Can rest indoors GW_actor_num // Count of actors GW_actor_off // Offset to actors GW_region_num // Count of regions GW_region_off // Offset to regions GW_spawn_off // Offset to spawn points GW_spawn_num // Count of spawn points GW_ent_off // Offset to entrances GW_ent_num // Count of entrances GW_cont_off // Offset to containers GW_cont_num // Count of containers GW_item_num // Count of items GW_item_off // Offset to items GW_vert_off // Offset to vertices GW_vert_num // Count of vertices GW_amb_num // Count of ambients GW_amb_off // Offset to ambients GW-var-off // Offset to variables - not used in PS:T GW_var_num // Count of variables - not used in PS:T GW_are_script // Area script // GW_explo_off // Offset to explored bitmask - no count, offset only GW_door_num // Count of doors GW_door_off // Offset to doors GW_anim_num // Count of animations GW_anim_off // Offset to animation GW_tiles_num // Count of tiled objects - not used in PS:T GW_tiles_off // Offset to tiled objects - not used in PS:T GW_song_off // Offset to song entries GW_rest_off // Offset to rest interruptions GW_notes_off // Offset of the automap notes section - not used in PS:T : 0xFFFFFFFF GW_notes_num // Count of the automap notes section - not used in PS:T GW_ProjTp-off // Offset to the Projectile Traps section - only used in BG2? GW_ProjTp-num // Count of the Projectile Traps section - only used in BG2? GW_movieD // BG2: ToB - Rest movie (day) GW_movieN // BG2: ToB - Rest movie (night) BEGIN READ_LONG GW_are_flag1_of "GW_are_flag1" // Area flag (AREAFLAG.IDS) = bit 0: Save allowed - bit 1: Tutorial area (not BG1) - bit 2: Dead magic zone - bit 3: Dream READ_SHORT GW_are_flag2_of "GW_are_flag2" // Area flags (AREATYPE.IDS) = bit 0: Outdoor - bit 1: Day/night - bit 2: Weather - bit 3: City - bit 4: Forest - bit 5: Dungeon - bit 6: Extended night - bit 7: Can rest indoors READ_LONG GW_act_of "GW_actor_off" // Offset to actors READ_SHORT GW_act_nb "GW_actor_num" // Count of actors READ_SHORT GW_reg_nb "GW_region_num" // Count of regions READ_LONG GW_reg_of "GW_region_off" // Offset to regions READ_LONG GW_spa_of "GW_spawn_off" // Offset to spawn points READ_LONG GW_spa_nb "GW_spawn_num" // Count of spawn points READ_LONG GW_ent_of "GW_ent_off" // Offset to entrances READ_LONG GW_ent_nb "GW_ent_num" // Count of entrances READ_LONG GW_con_of "GW_cont_off" // Offset to containers READ_SHORT GW_con_nb "GW_cont_num" // Count of containers READ_SHORT GW_itm_nb "GW_item_num" // Count of items READ_LONG GW_itm_of "GW_item_off" // Offset to items READ_LONG GW_ver_of "GW_vert_off" // Offset to vertices READ_SHORT GW_ver_nb "GW_vert_num" // Count of vertices READ_SHORT GW_amb_nb "GW_amb_num" // Count of ambients READ_LONG GW_amb_of "GW_amb_off" // Offset to ambients READ_LONG GW_var_of "GW-var-off" // Offset to variables - not used in PS:T READ_LONG GW_var_nb "GW_var_num" // Count of variables - not used in PS:T READ_ASCII GW_are_sc "GW_are_script" (8) // Area script // READ_LONG GW_exp_of "GW_explo_off" // Offset to explored bitmask - no count, offset only // SET GW_explo_num = 1 // Only 1 Explored Bitmap section per area - This isn't really needed. READ_LONG GW_dor_nb "GW_door_num" // Count of doors READ_LONG GW_dor_of "GW_door_off" // Offset to doors READ_LONG GW_ani_nb "GW_anim_num" // Count of animations READ_LONG GW_ani_of "GW_anim_off" // Offset to animation READ_LONG GW_til_nb "GW_tiles_num" // Count of tiled objects - not used in PS:T READ_LONG GW_til_of "GW_tiles_off" // Offset to tiled objects - not used in PS:T // SET GW_song_num = 1 // Only 1 song section per area - This isn't really needed. READ_LONG GW_sng_of "GW_song_off" // Offset to song entries // SET GW_rest_num = 1 // Only 1 rest section per area - This isn't really needed. READ_LONG GW_res_of "GW_rest_off" // Offset to rest interruptions READ_LONG GW_not_of "GW_notes_off" // Offset of the automap notes section - not used in PS:T : 0xFFFFFFFF READ_LONG GW_not_nb "GW_notes_num" // Count of the automap notes section - not used in PS:T READ_LONG GW_PjT_of "GW_ProjTp-off" // Offset to the Projectile Traps section - only used in BG2? READ_LONG GW_PjT_nb "GW_ProjTp-num" // Count of the Projectile Traps section - only used in BG2? READ_ASCII GW_rest_movD_of "GW_movieD" (8) // BG2: ToB - Rest movie (day) READ_ASCII GW_rest_movN_of "GW_movieN" (8) // BG2: ToB - Rest movie (night) END // of DEFINE_PATCH_FUNCTION Then, the paladins only appear in AR1200 once you have spoke to Firkraag. <<<<<<<< .../Diamant_Eternel/inlined/GWCL1200.baf IF Global("GWCLTalkedtoFirkraag","GLOBAL",1) // Variable added to FIRKRA01.dlg Global("GWCL1200PaladinsSpawn","AR1200",0) THEN RESPONSE #100 SetGlobal("GWCL200PaladinsSpawn","AR1200",1) CreateCreature("PALKNI01",[%PALKNI01_X%.%PALKNI01_Y%],%PALKNI01_F%) CreateCreature("PALKNI02",[%PALKNI02_X%.%PALKNI02_Y%],%PALKNI02_F%) CreateCreature("PALKNI03",[%PALKNI03_X%.%PALKNI03_Y%],%PALKNI03_F%) CreateCreature("PALKNI04",[%PALKNI04_X%.%PALKNI04_Y%],%PALKNI04_F%) CreateCreature("PALKNI05",[%PALKNI05_X%.%PALKNI05_Y%],%PALKNI05_F%) Continue() END >>>>>>>> ACTION_IF FILE_EXISTS_IN_GAME ~AR1200.bcs~ THEN BEGIN EXTEND_TOP ~AR1200.bcs~ ~.../Diamant_Eternel/inlined/GWCL1200.baf~ EVALUATE_BUFFER END ELSE BEGIN COMPILE EVALUATE_BUFFER ~.../Diamant_Eternel/inlined/GWCL1200.baf~ ~override/AR1200.bcs~ END The result in game: when you quit Irenicus Lair, a textscreen warns CHARNAME that the Dryad quest is the highest priority. If you go there before having spoken to Firkraag, you won't be welcomed by the paladins and can bring the acorn to Vaelasa who will propose you a new quest. One it is done, the paladins will appear where they were supposed to be if you speak to Firkraag. If you don't want to delete the creatures, you can change the lines LPF fj_are_structure INT_VAR fj_delete_mode = index_to_delete STR_VAR fj_structure_type = actor END SET i = 0 - 1 // index reinitialization (we have deleted one actor). READ_SHORT GW_act_nb "GW_actor_num" with the code provided by CamDawg or with this LPF fj_are_structure INT_VAR fj_expiry = 0 STR_VAR fj_structure_type = actor fj_cre_resref = EVAL "%GW_Cre_file%" END Link to comment
jastey Posted June 7, 2017 Author Share Posted June 7, 2017 Thank you for your answers. Yes, I agree that it's bad for compatibility. All I am doing currently is updating Jarl's mod with an English translation and am planning to do bugfixes. I was also planning on scripting it more compatible but this would be a lot of work so I am not sure I'll do that. Jarl's mod also adds actors by patching are files, and also inserts trigger points but not by fj_are_structure but handmade macros. I don't think I have the motivation to update that, especially since I am not sure I understand everything that's done. Gwendolyn: In Ajantis I am doing REPLACE_TEXTUALLY in the AR1200.bcs to replace the general "deadb01" with custom dead bodies that have unique script names. For Ajantis, the PC would kill the knights first, then enter Firkraag's lair, get the portral, and free the knights. With your mod installed, the PC would first get the portal, free the (real) knights, and then have the fight in the Windspear Hills - this doesn't make sense, so we have a compatibility problem. Why do you need the PC to talk to Fierkraag first? Link to comment
Jarno Mikkola Posted June 7, 2017 Share Posted June 7, 2017 Yes, I agree that it's bad for compatibility. All I am doing currently is updating Jarl's mod with an English translation and am planning to do bugfixes.If that's the case... do you have the files in a access-able place, so people can look at them ? Not that I would do it, but someone of the other people in this thread could look at them, thinker along and so forth. Link to comment
jastey Posted June 7, 2017 Author Share Posted June 7, 2017 Jarno: I'd have to ask for Jarl's consent first. And the mod introduces a lot of little encounters (and all actors are patched into the areas). It's not so much difficult, but just a lot of work. Link to comment
Gwendolyne Posted June 7, 2017 Share Posted June 7, 2017 Gwendolyn: In Ajantis I am doing REPLACE_TEXTUALLY in the AR1200.bcs to replace the general "deadb01" with custom dead bodies that have unique script names. For Ajantis, the PC would kill the knights first, then enter Firkraag's lair, get the portral, and free the knights. With your mod installed, the PC would first get the portal, free the (real) knights, and then have the fight in the Windspear Hills - this doesn't make sense, so we have a compatibility problem. Why do you need the PC to talk to Fierkraag first? Argh... The first part (removing the paladins) seems to be compatible. I will have a look at your code and see if it is possible to add in my script one of your variables that would prevent the paladins spawning if your mod is installed. I need to disable them because of the timer before the death of Windspear child that is not compatible with my own timer to rescue a unicorn in Umar Hill. Link to comment
jastey Posted June 7, 2017 Author Share Posted June 7, 2017 (But if your timer starts after talking to Fierkraag, Garren's child is already rescued?... ) Disabling the normal game event just doesn't sound like the simplest option but rather like a can of worms, compatibility-wise, especially since the first meeting dialogue with Fiejraag is about the deceit he played? Does your mod change all that? It is definitely not compatible with the order of occurrances I have in mind for the Ajantis mod. -I'll think about it. I could move the person who hands over the portable portal so he spawns more or less directly after the knight incident. It would leave the question about what will happen to all the "what did you do to my fiancé" reply options I put into the dialogue with Firkraag. What changes does your mod do to Fierkraag's dialogue? What do you mean you want to add one of my variables to prevent the paladins spawning if my mod is installed, or do I get that sentence wrong? Link to comment
Gwendolyne Posted June 7, 2017 Share Posted June 7, 2017 I mean if I let the events as they should occur when you first enter AR1200, without Ajantis installed, you must fight the polymorphed paladins, then meet Garren and see its child kidnapped. Then a time counter starts. My mod introduces another counter once you give back the acorn to the fairy queen. And it is impossible to fulfill the two quests without sacrificing one of them. That's the reason why I disabled the fight against the paladins when you enter AR1200. The only thing I added to Firkra01.dlg is ADD_TRANS_ACTION FIRKRA01 BEGIN 0 END BEGIN END ~SetGlobal("GWCLTalkedtoFirkraag","GLOBAL",1)~ and I wrote in the readme that you must go to Windspear Hill as soon as possible without speaking to Firkraag in the Copper Coronet. I had a quick look at your code and maybe those variables could be used not to spawn again the paladins: SetGlobal("C#AjantisKoerperEingesammelt","GLOBAL",2) SetGlobal("C#AjantisPCInWindspeerHills","GLOBAL",1) But the best is to install your mod and mine and see what happens, then find a way to make them compatible. I will let you know when I find a solution. It would be very shameful if I released something incompatible. And if I can't find one, I will change my dialogs and write something with no immediate urgency. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.