devSin Posted February 16, 2006 Share Posted February 16, 2006 The proficiencies issues made me think of the benefits of how the PCs were done for ToB, and then into how that might be neat for SoA. Not overly difficult, since you can just copy the lowest level creature def over the others and adjust the XP for each one, but I haven't put any amount of thought into what all can get broken by this. Install G3Tweaks and choose your own proficiencies, thank you. Link to comment
Aragorn II Posted February 16, 2006 Share Posted February 16, 2006 That's a really good idea. I've always liked how they did that in ToB. Good thinking, devSin! Link to comment
CamDawg Posted February 16, 2006 Share Posted February 16, 2006 I can't think of anything offhand that could break--it'd be a Tashia-like approach. Sure, we'll toss this in the next release. Link to comment
devSin Posted February 16, 2006 Author Share Posted February 16, 2006 The only thing I think is if a bunch of mods patch the cres for some reason (you could patchically remove all the stuff that changes with higher levels, but what a bore), or people who want their pre-filled spellbooks (somewhat more legitimate, but patching spellbooks is a pain). Link to comment
CamDawg Posted February 18, 2006 Share Posted February 18, 2006 This is coded and will be in the next version. BGT and Tutu are covered as well. Higher level NPCs will retain their spellbooks, memorozed spells, and items. devSin, you want to check this over for obvious fuckups? Portraits, animations, and DVs are carried over mainly for Aerie the Ogre and Imoen. Original aerie12 and aer12 from this patch are identical after level-up. COPY_EXISTING ~aerie6.cre~ ~override/aerie7.cre~ ~aerie6.cre~ ~override/aerie9.cre~ ~aerie6.cre~ ~override/aerie10.cre~ ~aerie6.cre~ ~override/aerie11.cre~ ~aerie6.cre~ ~override/aerie12.cre~ // ToB // snip, snip, you get the idea SET "orig_xp" = 0 INNER_PATCH_FILE ~%DEST_FILE%~ BEGIN // read info from file about to be overwritten READ_LONG 0x2a0 "orig_known_off" READ_LONG 0x2a4 "orig_known_num" READ_LONG 0x2a8 "orig_meminfo_off" READ_LONG 0x2b0 "orig_memspl_off" READ_LONG 0x2b4 "orig_memspl_num" READ_LONG 0x2b8 "orig_slot_off" READ_LONG 0x2bc "orig_item_off" READ_LONG 0x2c0 "orig_item_num" READ_LONG 0x18 "orig_xp" READ_SHORT 0x28 "orig_anim" READ_ASCII 0x280 "orig_dv" (18) READ_ASCII 0x34 "orig_portraits" (16) READ_ASCII 0x248 "orig_scripts" (40) READ_ASCII 0x2cc "orig_dialogue" (8) READ_ASCII "%orig_slot_off%" "orig_slot_info" (78) READ_ASCII "%orig_meminfo_off%" "orig_meminfo_info" (272) READ_ASCII "%orig_item_off%" "orig_item_info" (0x14 * "%orig_item_num%") READ_ASCII "%orig_known_off%" "orig_known_info" (0x0c * "%orig_known_num%") READ_ASCII "%orig_memspl_off%" "orig_memspl_info" (0x0c * "%orig_memspl_num%") END PATCH_IF (("%orig_xp%" != 0) AND (SOURCE_SIZE > 0x2d3)) BEGIN // only true if read from destination file is successful and source exists WRITE_LONG 0x18 "%orig_xp%" WRITE_SHORT 0x28 "%orig_anim%" WRITE_EVALUATED_ASCII 0x34 "%orig_portraits%" #16 WRITE_EVALUATED_ASCII 0x248 "%orig_scripts%" #40 WRITE_EVALUATED_ASCII 0x2cc "%orig_dialogue%" #8 WRITE_EVALUATED_ASCII 0x280 "%orig_dv%" #18 READ_LONG 0x2a0 "known_off" READ_LONG 0x2a4 "known_num" READ_LONG 0x2a8 "meminfo_off" READ_LONG 0x2b0 "memspl_off" READ_LONG 0x2b4 "memspl_num" READ_LONG 0x2b8 "slot_off" READ_LONG 0x2bc "item_off" READ_LONG 0x2c0 "item_num" READ_LONG 0x2c4 "fx_off" WRITE_EVALUATED_ASCII "%slot_off%" "%orig_slot_info%" WRITE_EVALUATED_ASCII "%meminfo_off%" "%orig_meminfo_info%" // transfer memorized spells SET "offset" = (0x0c * ("%orig_memspl_num%" - "%memspl_num%")) PATCH_IF ("%offset%" > 0) BEGIN INSERT_BYTES "%memspl_off%" "%offset%" END ELSE PATCH_IF ("%offset%" < 0) BEGIN DELETE_BYTES "%memspl_off%" (0 - "%offset%") END WRITE_EVALUATED_ASCII "%memspl_off%" "%orig_memspl_info%" WRITE_LONG 0x2b4 "%orig_memspl_num%" PATCH_IF NOT ("%memspl_off%" > "%meminfo_off%") BEGIN SET "meminfo_off" = "%meminfo_off%" + "%offset%" END PATCH_IF NOT ("%memspl_off%" > "%known_off%") BEGIN SET "known_off" = "%known_off%" + "%offset%" END PATCH_IF NOT ("%memspl_off%" > "%slot_off%") BEGIN SET "slot_off" = "%slot_off%" + "%offset%" END PATCH_IF NOT ("%memspl_off%" > "%item_off%") BEGIN SET "item_off" = "%item_off%" + "%offset%" END PATCH_IF NOT ("%memspl_off%" > "%fx_off%") BEGIN SET "fx_off" = "%fx_off%" + "%offset%" END // transfer items SET "offset" = (0x14 * ("%orig_item_num%" - "%item_num%")) PATCH_IF ("%offset%" > 0) BEGIN INSERT_BYTES "%item_off%" "%offset%" END ELSE PATCH_IF ("%offset%" < 0) BEGIN DELETE_BYTES "%item_off%" (0 - "%offset%") END WRITE_EVALUATED_ASCII "%item_off%" "%orig_item_info%" WRITE_LONG 0x2c0 "%orig_item_num%" PATCH_IF NOT ("%item_off%" > "%known_off%") BEGIN SET "known_off" = "%known_off%" + "%offset%" END PATCH_IF NOT ("%item_off%" > "%meminfo_off%") BEGIN SET "meminfo_off" = "%meminfo_off%" + "%offset%" END PATCH_IF NOT ("%item_off%" > "%memspl_off%") BEGIN SET "memspl_off" = "%memspl_off%" + "%offset%" END PATCH_IF NOT ("%item_off%" > "%slot_off%") BEGIN SET "slot_off" = "%slot_off%" + "%offset%" END PATCH_IF NOT ("%item_off%" > "%fx_off%") BEGIN SET "fx_off" = "%fx_off%" + "%offset%" END // transfer known spells SET "offset" = (0x0c * ("%orig_known_num%" - "%known_num%")) PATCH_IF ("%offset%" > 0) BEGIN INSERT_BYTES "%known_off%" "%offset%" END ELSE PATCH_IF ("%offset%" < 0) BEGIN DELETE_BYTES "%known_off%" (0 - "%offset%") END WRITE_EVALUATED_ASCII "%known_off%" "%orig_known_info%" WRITE_LONG 0x2a4 "%orig_known_num%" PATCH_IF NOT ("%known_off%" > "%meminfo_off%") BEGIN SET "meminfo_off" = "%meminfo_off%" + "%offset%" END PATCH_IF NOT ("%known_off%" > "%memspl_off%") BEGIN SET "memspl_off" = "%memspl_off%" + "%offset%" END PATCH_IF NOT ("%known_off%" > "%slot_off%") BEGIN SET "slot_off" = "%slot_off%" + "%offset%" END PATCH_IF NOT ("%known_off%" > "%item_off%") BEGIN SET "item_off" = "%item_off%" + "%offset%" END PATCH_IF NOT ("%known_off%" > "%fx_off%") BEGIN SET "fx_off" = "%fx_off%" + "%offset%" END // commit offset changes WRITE_LONG 0x2a0 "%known_off%" WRITE_LONG 0x2a8 "%meminfo_off%" WRITE_LONG 0x2b0 "%memspl_off%" WRITE_LONG 0x2b8 "%slot_off%" WRITE_LONG 0x2bc "%item_off%" WRITE_LONG 0x2c4 "%fx_off%" END BUT_ONLY_IF_IT_CHANGES Link to comment
devSin Posted February 18, 2006 Author Share Posted February 18, 2006 I got as far as the spell stuff before my brain broke. Looked fine to me. Link to comment
CamDawg Posted February 18, 2006 Share Posted February 18, 2006 And if anyone wants their favorite mod NPC to be included here, I need creature filenames. Tashia doesn't need this since she does this by default. Link to comment
CamDawg Posted March 11, 2006 Share Posted March 11, 2006 This is included in v18. I abused the modlist to track down released NPCs and added as many as I could find. Link to comment
Bursk Posted March 12, 2006 Share Posted March 12, 2006 For those of us not familiar with NPCs on ToB, could someone please give a detailed description on what this component does? Are there any downsides to it? Link to comment
devSin Posted March 12, 2006 Author Share Posted March 12, 2006 When an NPC joins your party, instead of coming leveled up with a BioWare-determined set of proficiencies and thief skill bonuses, the NPC will join the party with the appropriate amount of XP, allowing the player to choose which proficiencies and skills to train in. The NPC will always start with a base skill and proficiency set for the lowest level (~8). But if an NPC joins at level 14, for example, you get to decide the training (if any) for those last 6 levels. The only downside would be that BioWare may have cheated and you could lose a proficiency or extra skill points (in most cases, though, BioWare's NPCs actually have less than they're supposed to), or some rot with Refinements. The only reason this is "ToB-style" is simply due to the fact that BioWare was too lazy to update the CREs for ToB (they just took the best SoA version, added some items, and set the XP to 2.5M). Link to comment
Bursk Posted March 12, 2006 Share Posted March 12, 2006 Thanks for the reply. I don't understand this bit 'or some rot with Refinements.' but the component does sound totally groovy. Provided there aren't any problems with Refinements, I'll definately be using this. Link to comment
devSin Posted March 13, 2006 Author Share Posted March 13, 2006 The "rot with refinements" was just a nod to the swashbuckler Imoen incompatibility that the bigg posted to in the other thread. Link to comment
Bursk Posted March 13, 2006 Share Posted March 13, 2006 I see. Thanks for the clarification. Link to comment
CamDawg Posted March 14, 2006 Share Posted March 14, 2006 bigg posted fixes to the wiki to make Tweaks Refinements compatible; these were incorporated in v18 (G3) and v19 (Tutu). IIRC, he mentioned he needed to make some adjustments to Refinements as well, so there may still be an incompatibility between ToB-Style NPCs and SwashImoen at the moment. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.