Vatar93 Posted September 25, 2019 Share Posted September 25, 2019 Hello, I've recently installed the GECK Editor (wonderful tool) for Fallout: New Vegas and I was wondering about doing some modifications to the Trait Perks. As you probably know, almost all Fallout New Vegas trait perks are a kind of "compromises", in the way as while you get bonuses from it, you also get penalties from it (maybe with the exception of the Wild Wasteland perk, which is kind of unique Trait Perk, as it doesn't really modify any Character Variable). It is also known that the trait perks aren't exclusive to the Player Character, meaning that there are a couple of NPCs who owns Trait Perks too. My idea was to : 1) Change the trait perks in order to remove penalty stats for the Player Character, keeping only the bonus stats from the traits. 2) Make the penalty stats apply to Non-Playable Characters who owns the Trait only. For example, for the Built to Destroy perk : * Player Character would only have +3% critical hit chance bonus from the perk without the 15% faster condition decay penalty ; * NPCs would have both the +3% critical hit chance bonus and the 15% faster condition decay penalty. ---------------------------------------------------------------------------------------------------------------------------- Even though it doesn't seem to be a big deal at all, I acknowleged that the modification could be more complex than what it seems to be... What I have learned at this point, thanks to the Bethesda's G.E.C.K. wiki, is that the bonus and penalty stats from Trait Perks (see the Perk page in the G.E.C.K wiki) are managed through Perk Entries, which are kind of objects (is the term correct ?) which define what a Perk is supposed to do. I understood that Perk Entries have different types : they are used to trigger Quest Stages, apply Abilities, or refer to an Entry Point, which are pre-defined code sequences (what I tend to call "objects") that have specific uses (which are referred to 'Condition Filter' in the Perk Entry G.E.C.K. page), and calls specific Condition Functions (Here is a non-exhaustive List of Condition Functions) in order to modify Character variables, such as Action Point, Actor Health, or for our above-mentionned example, Item Damage value. From what I understood, Entry Points Perk Entry type pretty much works like the Ability Perk Entry type, with exception being that Abilities apply directly to an Actor without calling an exterior Condition Function. I also understood that exactly like Perks itselves, Entry Points and Abilities (not the Quest Perk Entry type, though) can have Conditions Items applying to the Perk Owner, Target, Weapon, and they are using the very same Condition Functions that Perks are using. --------- Considering that Entry Points and Ability types of Perk Entries are pre-defined code sequences, I first researched the way to realize my idea with the Small Frame Trait Perk, which, like our former example, would work this way : * Player Character would only have the +1 Agility bonus from the perk without the 25% extra limb damage penalty ; * NPCs would have both the +1 Agility bonus and the 25% extra limb damage penalty. So the Entry Points for the Small Frame Trait Perk are :"SmallFrameAbility" (Ability Perk Entry type) ;"AdjustLimbDamage" (Entry Point Perk Entry type), which calls the Multiply Value Condition Function, and has no present Condition Item.Then, the next step was : 1) Try to find a way to make "SmallFrameAbility" the only Perk Entry effective on the Player Character, and make the "AdjustLimbDamage" Entry Point ineffective when the Small Frame Perk is active on the Player Character. 2) Try to find a way to make "SmallFrameAbility" and "AdjustLimbDamage" both effective when active on NPCs. I thought about adding Condition Items that would have Condition Function that detect if the Trait Perk Owner is the Player Character or a Non-Playable Character, but as for now I haven't read all the Condition Functions (such as GetIsID, IsEssential, SameFaction) of the G.E.C.K. page to make myself sure if it is possible or not. Also, by the way, I originally wanted to do that without creating or duplicating any perk, yet I was then thinking about the fact that this manoeuvre would eventually be necessary... that means I would have to duplicate the Perk, make a Bonus one apply to the Player Character, and then another 'regular' (Bonus + Penalty) one (which would possibly be checked as <Hidden> in the Perk Editor). So I am still thinking about the first way, which is not creating any perk... But aside from the Condition Item, I don't really have another idea at the moment, and that is essentially the reason why I shared my thought with you, because I need some ideas of experimented users (or not, any help is always appreciated) in this area... Thank you for your time,Best regards, Link to comment Share on other sites More sharing options...
WarMachineDD7 Posted September 26, 2019 Share Posted September 26, 2019 (edited) Actor Effects can have conditions for when they apply, I think, so if the only issue is that you can't differentiate the player from another actor, just give the player a new weightless armor with the "playable" parameter deselected (so it doesn't show up in their inventory) and check that the actor has it in their inventory with the GetItemCount condition function. Since this is a new item, no one but the player will have it, and only the player will be spared the perk penalties. Edited September 26, 2019 by WarMachineDD7 Link to comment Share on other sites More sharing options...
Vatar93 Posted September 27, 2019 Author Share Posted September 27, 2019 (edited) Hello, Thank you for your answer, This might be the right thing to do. As far as I know, the GetIsID condition function could possibly be used in the same way as GetItemCount, in order to detect if the Perk Owner's ID is the Player Character's one. I could be wrong though. But I don't know if the Player Character's ID stays the same all the game long, does it ? Thanks again, Edited September 27, 2019 by Vatar93 Link to comment Share on other sites More sharing options...
WarMachineDD7 Posted September 27, 2019 Share Posted September 27, 2019 The player's ID never changes as far as I know considering there's a dedicated variable for it in scripts called "player". And yeah, you can use GetIsID, that's good too since you only care that at least 1 exists in the inventory. Anyway, I was looking at the condition functions again, and I think there might be an easier solution, check out GetIsClass. There's a class in the base game called PlayerClass, it might just do the trick. Link to comment Share on other sites More sharing options...
Vatar93 Posted September 29, 2019 Author Share Posted September 29, 2019 I'll put a look into it, thank you ! Link to comment Share on other sites More sharing options...
Recommended Posts