How to make an item give a perk?

Discussion in 'Fallout Tactics Modding' started by +Zeke+, Dec 18, 2018.

  1. +Zeke+

    +Zeke+ First time out of the vault

    61
    Sep 21, 2010
    I've tried both making a book or drug give a perk with no success. I know you can just add it to the recruit through the editor, but that's no value to your own character. I've made drugs that add to attributes and other things, like resistance values, yet getting it to add a permanent perk has failed in my attempts.

    Any advice?
     
  2. +Zeke+

    +Zeke+ First time out of the vault

    61
    Sep 21, 2010
    Found an old thread that says it can't be done through items. Only on prefab characters. But where can I find the prefab characters in the entity editor?
     
  3. +Zeke+

    +Zeke+ First time out of the vault

    61
    Sep 21, 2010
    And I just found the prefab characters at the bottom of the special category. So I guess I sorted myself out. Too bad you can get a perk from an item though. Seems like the makers tried though by posting that mouse story book that you can't either find or read. I guess it was an additional storyline that got cut. This game was ripe for an official expansion pack, but I guess the sales just weren't there.
     
  4. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Hi!

    Unfortunately, the editor can be quite limited sometimes and there are a lot of areas where items just do nothing, consumable or otherwise. Only armors, lockpicks and consumable in my opinion can grant the character modifications to their stats, skills or resistances. Besides that, not much can be changed, and there is no way to give or substract a perk, not even with triggers.

    Fortunately, Melindil played a bit with perks a while ago and, using his editor, there might be a way soon to grant perks using triggers, and who knows, maybe even using items. Here is the tread talking about this process :

    http://www.nma-fallout.com/threads/experiments-on-custom-perks.215713/#post-4282135
     
  5. Melindil

    Melindil First time out of the vault

    67
    Apr 15, 2018
    With the current version of FTSE, it's possible to add perks on a trigger. As an example, replacing the contents of ftse.lua with the following will grant the Awareness and Toughness perks to the main character upon talking to the village elder in Brahmin Wood:

    Code:
    ACTOR_TABLE_PERM = 0
    ACTOR_TABLE_DERIVED = 1
    ACTOR_TABLE_TEMPORARY = 2
    ACTOR_TABLE_CURRENT = 3
    
    COMBATLOG_SYSTEM = 0
    COMBATLOG_FEW = 1
    COMBATLOG_DEFAULT = 2
    COMBATLOG_ALL = 3
    
    function OnVariableChanged(key,value,iscampaign)
      if key=="M01_Elder_Encountered" and value == "T" then
        p = world:GetPlayer()
        p:SetAttribute("awareness", ACTOR_TABLE_PERM, 1)
        p:SetAttribute("toughness", ACTOR_TABLE_PERM, 1)
        bonuses = { normalResist=10 }
        p:ApplyBonus(bonuses, true)
        world:CombatLog(COMBATLOG_FEW, p["name"] .. " has learned something new.")
      end
    end
    There is one quirk - perks which give flat bonuses to attributes, skills, resistances, or other stats won't apply just by setting the perk flag. In the above, the Toughness perk flag is set, but the script must also explicitly add the bonus to the normalResist stat, otherwise the bonus won't actually be in place.

    To apply other perks, substitute in the perk name from the FT Tools editor in the above, duplicating the line if adding more than two perks. Note that upper/lowercase must match exactly. If adding perks that grant values to stats, then those stats can be added to the bonuses line (multiple items are comma-separated inside the curly braces, and again must match exactly the name of the stat in FT Tools).

    Regarding perks from items: this is definitely on the list for me to add, but I need to do a bit more research first. As to why this doesn't work in the default tools, it's because the game routine that applies bonuses from items completely skips the Traits and Perks sections of the bonuses set for the item. Part of my feature will be to enable bonuses for these sections.
     
    • [Rad] [Rad] x 1
  6. +Zeke+

    +Zeke+ First time out of the vault

    61
    Sep 21, 2010
    Well, that's good to hear for future mods, but is likely beyond my skill set. A passed Fortran with a B- in 1988 and haven't coded a thing since.
     
  7. DDTerr

    DDTerr First time out of the vault

    17
    Feb 2, 2014
    Will it apply to the main character only or to all the actors in the first player index? I would like to differentiate members of my team according to tagnames...
     
  8. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    This is great! I will make it a priority in my next modding sessions. I don’t want to focus on items as rewards for my quests, so perks will be just perfect.

    Say, what happen if the character already has that specific perk?

    Also, can you add skill points too?

    Finally, can you remove a perk too based on a variable? Let’s say I give the character the perk « ranger » and he openly attack the rangers, then I should remove the perk.

    And, finally, is there a way with the actual version to change some perks requirements to remove them entirely from the perks screen, lets say a requirement of level 99, and only keep them as quest-related perks? Thanks!
     
  9. Melindil

    Melindil First time out of the vault

    67
    Apr 15, 2018
    As written in the example, the bonus will be applied to the main character. To apply to other squadmates, "world:GetPlayer" can be replaced with "world:GetSquad", and then iterate through the returned Lua table to find the correct entity to apply to. I don't have interface to tag names yet, but I'll be adding that soon.

    As written above, things will break slightly - the perk will show as applied only once, but the bonus will be duplicated. This can be fixed, though:

    Code:
    function OnVariableChanged(key,value,iscampaign)
      if key=="M01_Elder_Encountered" and value == "T" then
        p = world:GetPlayer()
        if p:GetAttribute("awareness", ACTOR_TABLE_CURRENT) == 0 then
          p:SetAttribute("awareness", ACTOR_TABLE_PERM, 1)
        end
    
    ...
    Yes. The ApplyBonus call in the example above can be called even without adding a perk first, and it can add to any attribute or skill (the only things that can't be set with ApplyBonus are tags on skills, traits, and perks - these require using SetAttribute). The "true" flag indicates the skill gain is "permanent", which you'd probably want to use for a quest-granted bonus; otherwise, the values for those stats will permanently show the blue "enhanced" color in the character screen). For generic (unassigned) skill points or perks, use "skillPoints" or "perksToTake".

    Yes - just need to flip the 0 and 1 flags in the GetAttribute/SetAttribute, and (if necessary) use RemoveBonus instead of ApplyBonus. An example might be:

    Code:
    function OnVariableChanged(key,value,iscampaign)
      if key == "rangersAttacked" and value == "T" then
        p = world:GetPlayer()
        if p:GetAttribute("ranger", ACTOR_TABLE_CURRENT) == 1 then
          p:SetAttribute("ranger", ACTOR_TABLE_PERM, 0)
          bonuses = { outdoorsman=15 }
          p:RemoveBonus(bonuses, true)
        end
      end
    end
    
    Yes. The script can include an OnStart method, with a call to hookexecutor:ReplacePerk. You'll need to know the index of the perk, determined by counting how far down the list that perk is in the editor (with first entry starting from 0). Example:

    Code:
    function OnStart()
    
      -- Setting maxperktaken to 0 prevents the perk from
      -- appearing in the list of perks at level up.
      newperk = { name = "ranger", maxperktaken = 0 }
    
      -- Replace "37" below with the correct index
      hookexecutor:ReplacePerk(newperk, 37)
    end
    Other tweaks can be made to the perk table - changing level and attribute/skill requirements, the number of times the perk can be selected, and changing racial restrictions.
     
    Last edited: Jan 4, 2019
  10. DDTerr

    DDTerr First time out of the vault

    17
    Feb 2, 2014
    Great. Is there any chance you would update your wiki with Available LUA functions? 8-)
     
  11. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Thanks. Your help is a true blessing for my project! I feel I have all I need to have a very productive work session with perks and quests...
     
  12. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    One last thing for me concerning this time log messages. As my mod if belingual, and sinced I use an alternative french-written "generic_mission.txt", for example, to add a translation to my mod, I can't write directly to the log using code, I must pinpoint the log to a text label in "generic_mission.txt" for it to show a sentence in the proper language. How should I adapt this line of code to do that? :

    "world:CombatLog(COMBATLOG_FEW, p["name"] .. " has learned something new.")"

    Thanks in advance!
     
  13. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Hi!

    I did that trying to remove 27 perks from my mod, having in mind to assign them later using code. It does not work, however. I did something wrong?

    Code:
    function OnStart()
      --ENLEVER PERKS - REMOVE PERKS
      --Setting maxperktaken to 0 (now only available through quests)
      --last number is the index
     
      newperk = { name = "twitchGamer", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 98)
      newperk = { name = "fortuneFinder", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 18)
      newperk = { name = "breakTheRules", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 77)
      newperk = { name = "salesman", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 64)
      newperk = { name = "dieHard", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 84)
      newperk = { name = "radResistance", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 9)
      newperk = { name = "quickPockets", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 39)
      newperk = { name = "masterTrader", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 15)
      newperk = { name = "adrenalineRush", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 43)
      newperk = { name = "roadWarrior", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 70)
      newperk = { name = "leadFoot", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 72)
      newperk = { name = "harmless", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 55)
      newperk = { name = "mysteriousStranger", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 37)
      newperk = { name = "stat", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 86)
      newperk = { name = "medic", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 28)
      newperk = { name = "bonusRangedDamage", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 4)
      newperk = { name = "flexible", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 75)
      newperk = { name = "crazyBomber", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 69)
      newperk = { name = "mrFixit", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 27)
      newperk = { name = "negotiator", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 60)
      newperk = { name = "leader", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 80)
      newperk = { name = "stuntMan", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 68)
      newperk = { name = "wayOfTheFruit", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 97)
      newperk = { name = "bendTheRules", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 76)
      newperk = { name = "bluffMaster", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 99)
      newperk = { name = "moreCriticals", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 7)
      newperk = { name = "gunner", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 71)
     
    end
    I also tried that with no more success :


    Code:
    function OnStart()
      --ENLEVER PERKS - REMOVE PERKS
      --Setting maxperktaken to 0 (now only available through quests)
      --last number is the index
     
      twitchGamer = { name = "twitchGamer", maxperktaken = 0 }
      hookexecutor:ReplacePerk(twitchGamer, 98)
      fortuneFinder = { name = "fortuneFinder", maxperktaken = 0 }
      hookexecutor:ReplacePerk(fortuneFinder, 18)
      breakTheRules = { name = "breakTheRules", maxperktaken = 0 }
      hookexecutor:ReplacePerk(breakTheRules, 77)
      salesman = { name = "salesman", maxperktaken = 0 }
      hookexecutor:ReplacePerk(salesman, 64)
      dieHard = { name = "dieHard", maxperktaken = 0 }
      hookexecutor:ReplacePerk(dieHard, 84)
      radResistance = { name = "radResistance", maxperktaken = 0 }
      hookexecutor:ReplacePerk(radResistance, 9)
      newperk = { name = "quickPockets", maxperktaken = 0 }
      hookexecutor:ReplacePerk(newperk, 39)
      masterTrader = { name = "masterTrader", maxperktaken = 0 }
      hookexecutor:ReplacePerk(masterTrader, 15)
      adrenalineRush = { name = "adrenalineRush", maxperktaken = 0 }
      hookexecutor:ReplacePerk(adrenalineRush, 43)
      roadWarrior = { name = "roadWarrior", maxperktaken = 0 }
      hookexecutor:ReplacePerk(roadWarrior, 70)
      leadFoot = { name = "leadFoot", maxperktaken = 0 }
      hookexecutor:ReplacePerk(leadFoot, 72)
      harmless = { name = "harmless", maxperktaken = 0 }
      hookexecutor:ReplacePerk(harmless, 55)
      mysteriousStranger = { name = "mysteriousStranger", maxperktaken = 0 }
      hookexecutor:ReplacePerk(mysteriousStranger, 37)
      stat = { name = "stat", maxperktaken = 0 }
      hookexecutor:ReplacePerk(stat, 86)
      medic = { name = "medic", maxperktaken = 0 }
      hookexecutor:ReplacePerk(medic, 28)
      bonusRangedDamage = { name = "bonusRangedDamage", maxperktaken = 0 }
      hookexecutor:ReplacePerk(bonusRangedDamage, 4)
      flexible = { name = "flexible", maxperktaken = 0 }
      hookexecutor:ReplacePerk(flexible, 75)
      crazyBomber = { name = "crazyBomber", maxperktaken = 0 }
      hookexecutor:ReplacePerk(crazyBomber, 69)
      mrFixit = { name = "mrFixit", maxperktaken = 0 }
      hookexecutor:ReplacePerk(mrFixit, 27)
      negotiator = { name = "negotiator", maxperktaken = 0 }
      hookexecutor:ReplacePerk(negotiator, 60)
      leader = { name = "leader", maxperktaken = 0 }
      hookexecutor:ReplacePerk(leader, 80)
      stuntMan = { name = "stuntMan", maxperktaken = 0 }
      hookexecutor:ReplacePerk(stuntMan, 68)
      wayOfTheFruit = { name = "wayOfTheFruit", maxperktaken = 0 }
      hookexecutor:ReplacePerk(wayOfTheFruit, 97)
      bendTheRules = { name = "bendTheRules", maxperktaken = 0 }
      hookexecutor:ReplacePerk(bendTheRules, 76)
      bluffMaster = { name = "bluffMaster", maxperktaken = 0 }
      hookexecutor:ReplacePerk(bluffMaster, 99)
      moreCriticals = { name = "moreCriticals", maxperktaken = 0 }
      hookexecutor:ReplacePerk(moreCriticals, 7)
      gunner = { name = "gunner", maxperktaken = 0 }
      hookexecutor:ReplacePerk(gunner, 71)
    end
     
  14. Melindil

    Melindil First time out of the vault

    67
    Apr 15, 2018
    At first glance, that looks like it should work. Can you send to me the FTSE.log file produced when the game is run with the above script?
     
  15. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Here it is...

    Code:
    2019/02/12 15:34:37.636 FTSE version 0.30a started.
    2019/02/12 15:34:37.636 Detected parameter: exeName
    2019/02/12 15:34:37.636 Detected parameter: -path
    2019/02/12 15:34:37.636 Detected parameter: NousAurons
    2019/02/12 15:34:37.636 Detected parameter: -w
    2019/02/12 15:34:37.638 Applying patch Quartermaster is free
    2019/02/12 15:34:37.638 Applying patch Sniper fix
    2019/02/12 15:34:37.638 Applying patch Burst bug fix
    2019/02/12 15:34:37.638 Applying patch Music blocked fix
    2019/02/12 15:34:37.638 Applying patch Tag name fix
    2019/02/12 15:34:37.638 Applying patch doNightPerson fix
    2019/02/12 15:34:37.638 Applying patch Team Player/Loner fix
    2019/02/12 15:34:37.638 Applying patch Color character portraits
    2019/02/12 15:34:37.638 Applying patch High res patch
    2019/02/12 15:34:37.638 Applying patch Encounter color fix
    2019/02/12 15:34:37.638 Applying patch No starting inventory mod
    2019/02/12 15:34:37.639 Successfully started LUA engine.
    2019/02/12 15:34:37.639 Installing a hook at address 0x57b4ed
    2019/02/12 15:34:37.639 Installing a hook at address 0x57cbb0
    2019/02/12 15:34:37.639 Installing a hook at address 0x731ba2
    2019/02/12 15:34:37.639 Installing a hook at address 0x67ee30
    2019/02/12 15:34:37.639 Installing a hook at address 0x6ad6a0
    2019/02/12 15:34:37.639 Installing a hook at address 0x6ada90
    2019/02/12 15:34:37.639 Installing a hook at address 0x64eec1
    2019/02/12 15:34:37.639 Installing a hook at address 0x614c3c
    2019/02/12 15:34:37.639 Lua called ReplacePerk
    2019/02/12 15:34:37.639 Entry 98
    2019/02/12 15:34:37.639 Perk min level: 0
    2019/02/12 15:34:37.639 Perk num levels: 0
    2019/02/12 15:34:37.639 BonusStat:
    2019/02/12 15:34:37.639 BonusAmt: 0
    2019/02/12 15:34:37.639 Perk required stat 1:
    2019/02/12 15:34:37.639 Perk required amt 1: 0
    2019/02/12 15:34:37.639 Perk And/Or: 0
    2019/02/12 15:34:37.639 Perk required stat 2:
    2019/02/12 15:34:37.639 Perk required amt 2: 0
    2019/02/12 15:34:37.639 Perk required ST: 0
    2019/02/12 15:34:37.639 Perk required PE: 0
    2019/02/12 15:34:37.639 Perk required EN: 0
    2019/02/12 15:34:37.639 Perk required CH: 0
    2019/02/12 15:34:37.639 Perk required IN: 0
    2019/02/12 15:34:37.639 Perk required AG: 0
    2019/02/12 15:34:37.639 Perk required LK: 0
    2019/02/12 15:34:37.639 Perk prohibited race:
    2019/02/12 15:34:37.639 Perk required race:
    2019/02/12 15:34:37.639 Adding perk twitchGamer
    2019/02/12 15:34:37.639 Lua called ReplacePerk
    2019/02/12 15:34:37.639 Entry 18
    2019/02/12 15:34:37.639 Perk min level: 0
    2019/02/12 15:34:37.639 Perk num levels: 0
    2019/02/12 15:34:37.639 BonusStat:
    2019/02/12 15:34:37.639 BonusAmt: 0
    2019/02/12 15:34:37.639 Perk required stat 1:
    2019/02/12 15:34:37.639 Perk required amt 1: 0
    2019/02/12 15:34:37.639 Perk And/Or: 0
    2019/02/12 15:34:37.639 Perk required stat 2:
    2019/02/12 15:34:37.639 Perk required amt 2: 0
    2019/02/12 15:34:37.639 Perk required ST: 0
    2019/02/12 15:34:37.639 Perk required PE: 0
    2019/02/12 15:34:37.639 Perk required EN: 0
    2019/02/12 15:34:37.639 Perk required CH: 0
    2019/02/12 15:34:37.639 Perk required IN: 0
    2019/02/12 15:34:37.639 Perk required AG: 0
    2019/02/12 15:34:37.639 Perk required LK: 0
    2019/02/12 15:34:37.639 Perk prohibited race:
    2019/02/12 15:34:37.639 Perk required race:
    2019/02/12 15:34:37.639 Adding perk fortuneFinder
    2019/02/12 15:34:37.639 Lua called ReplacePerk
    2019/02/12 15:34:37.639 Entry 77
    2019/02/12 15:34:37.639 Perk min level: 0
    2019/02/12 15:34:37.639 Perk num levels: 0
    2019/02/12 15:34:37.639 BonusStat:
    2019/02/12 15:34:37.639 BonusAmt: 0
    2019/02/12 15:34:37.639 Perk required stat 1:
    2019/02/12 15:34:37.639 Perk required amt 1: 0
    2019/02/12 15:34:37.639 Perk And/Or: 0
    2019/02/12 15:34:37.639 Perk required stat 2:
    2019/02/12 15:34:37.639 Perk required amt 2: 0
    2019/02/12 15:34:37.639 Perk required ST: 0
    2019/02/12 15:34:37.639 Perk required PE: 0
    2019/02/12 15:34:37.639 Perk required EN: 0
    2019/02/12 15:34:37.639 Perk required CH: 0
    2019/02/12 15:34:37.639 Perk required IN: 0
    2019/02/12 15:34:37.640 Perk required AG: 0
    2019/02/12 15:34:37.640 Perk required LK: 0
    2019/02/12 15:34:37.640 Perk prohibited race:
    2019/02/12 15:34:37.640 Perk required race:
    2019/02/12 15:34:37.640 Adding perk breakTheRules
    2019/02/12 15:34:37.640 Lua called ReplacePerk
    2019/02/12 15:34:37.640 Entry 64
    2019/02/12 15:34:37.640 Perk min level: 0
    2019/02/12 15:34:37.640 Perk num levels: 0
    2019/02/12 15:34:37.640 BonusStat:
    2019/02/12 15:34:37.640 BonusAmt: 0
    2019/02/12 15:34:37.640 Perk required stat 1:
    2019/02/12 15:34:37.640 Perk required amt 1: 0
    2019/02/12 15:34:37.640 Perk And/Or: 0
    2019/02/12 15:34:37.640 Perk required stat 2:
    2019/02/12 15:34:37.640 Perk required amt 2: 0
    2019/02/12 15:34:37.640 Perk required ST: 0
    2019/02/12 15:34:37.640 Perk required PE: 0
    2019/02/12 15:34:37.640 Perk required EN: 0
    2019/02/12 15:34:37.640 Perk required CH: 0
    2019/02/12 15:34:37.640 Perk required IN: 0
    2019/02/12 15:34:37.640 Perk required AG: 0
    2019/02/12 15:34:37.640 Perk required LK: 0
    2019/02/12 15:34:37.640 Perk prohibited race:
    2019/02/12 15:34:37.640 Perk required race:
    2019/02/12 15:34:37.640 Adding perk salesman
    2019/02/12 15:34:37.640 Lua called ReplacePerk
    2019/02/12 15:34:37.640 Entry 84
    2019/02/12 15:34:37.640 Perk min level: 0
    2019/02/12 15:34:37.640 Perk num levels: 0
    2019/02/12 15:34:37.640 BonusStat:
    2019/02/12 15:34:37.640 BonusAmt: 0
    2019/02/12 15:34:37.640 Perk required stat 1:
    2019/02/12 15:34:37.640 Perk required amt 1: 0
    2019/02/12 15:34:37.640 Perk And/Or: 0
    2019/02/12 15:34:37.640 Perk required stat 2:
    2019/02/12 15:34:37.640 Perk required amt 2: 0
    2019/02/12 15:34:37.640 Perk required ST: 0
    2019/02/12 15:34:37.640 Perk required PE: 0
    2019/02/12 15:34:37.640 Perk required EN: 0
    2019/02/12 15:34:37.640 Perk required CH: 0
    2019/02/12 15:34:37.640 Perk required IN: 0
    2019/02/12 15:34:37.640 Perk required AG: 0
    2019/02/12 15:34:37.640 Perk required LK: 0
    2019/02/12 15:34:37.640 Perk prohibited race:
    2019/02/12 15:34:37.640 Perk required race:
    2019/02/12 15:34:37.640 Adding perk dieHard
    2019/02/12 15:34:37.640 Lua called ReplacePerk
    2019/02/12 15:34:37.640 Entry 9
    2019/02/12 15:34:37.640 Perk min level: 0
    2019/02/12 15:34:37.640 Perk num levels: 0
    2019/02/12 15:34:37.640 BonusStat:
    2019/02/12 15:34:37.640 BonusAmt: 0
    2019/02/12 15:34:37.640 Perk required stat 1:
    2019/02/12 15:34:37.640 Perk required amt 1: 0
    2019/02/12 15:34:37.640 Perk And/Or: 0
    2019/02/12 15:34:37.640 Perk required stat 2:
    2019/02/12 15:34:37.640 Perk required amt 2: 0
    2019/02/12 15:34:37.640 Perk required ST: 0
    2019/02/12 15:34:37.640 Perk required PE: 0
    2019/02/12 15:34:37.640 Perk required EN: 0
    2019/02/12 15:34:37.640 Perk required CH: 0
    2019/02/12 15:34:37.640 Perk required IN: 0
    2019/02/12 15:34:37.640 Perk required AG: 0
    2019/02/12 15:34:37.640 Perk required LK: 0
    2019/02/12 15:34:37.640 Perk prohibited race:
    2019/02/12 15:34:37.640 Perk required race:
    2019/02/12 15:34:37.640 Adding perk radResistance
    2019/02/12 15:34:37.640 Lua called ReplacePerk
    2019/02/12 15:34:37.640 Entry 39
    2019/02/12 15:34:37.640 Perk min level: 0
    2019/02/12 15:34:37.640 Perk num levels: 0
    2019/02/12 15:34:37.640 BonusStat:
    2019/02/12 15:34:37.640 BonusAmt: 0
    2019/02/12 15:34:37.640 Perk required stat 1:
    2019/02/12 15:34:37.640 Perk required amt 1: 0
    2019/02/12 15:34:37.640 Perk And/Or: 0
    2019/02/12 15:34:37.640 Perk required stat 2:
    2019/02/12 15:34:37.640 Perk required amt 2: 0
    2019/02/12 15:34:37.640 Perk required ST: 0
    2019/02/12 15:34:37.640 Perk required PE: 0
    2019/02/12 15:34:37.640 Perk required EN: 0
    2019/02/12 15:34:37.640 Perk required CH: 0
    2019/02/12 15:34:37.641 Perk required IN: 0
    2019/02/12 15:34:37.641 Perk required AG: 0
    2019/02/12 15:34:37.641 Perk required LK: 0
    2019/02/12 15:34:37.641 Perk prohibited race:
    2019/02/12 15:34:37.641 Perk required race:
    2019/02/12 15:34:37.641 Adding perk quickPockets
    2019/02/12 15:34:37.641 Lua called ReplacePerk
    2019/02/12 15:34:37.641 Entry 15
    2019/02/12 15:34:37.641 Perk min level: 0
    2019/02/12 15:34:37.641 Perk num levels: 0
    2019/02/12 15:34:37.641 BonusStat:
    2019/02/12 15:34:37.641 BonusAmt: 0
    2019/02/12 15:34:37.641 Perk required stat 1:
    2019/02/12 15:34:37.641 Perk required amt 1: 0
    2019/02/12 15:34:37.641 Perk And/Or: 0
    2019/02/12 15:34:37.641 Perk required stat 2:
    2019/02/12 15:34:37.641 Perk required amt 2: 0
    2019/02/12 15:34:37.641 Perk required ST: 0
    2019/02/12 15:34:37.641 Perk required PE: 0
    2019/02/12 15:34:37.641 Perk required EN: 0
    2019/02/12 15:34:37.641 Perk required CH: 0
    2019/02/12 15:34:37.641 Perk required IN: 0
    2019/02/12 15:34:37.641 Perk required AG: 0
    2019/02/12 15:34:37.641 Perk required LK: 0
    2019/02/12 15:34:37.641 Perk prohibited race:
    2019/02/12 15:34:37.641 Perk required race:
    2019/02/12 15:34:37.641 Adding perk masterTrader
    2019/02/12 15:34:37.641 Lua called ReplacePerk
    2019/02/12 15:34:37.641 Entry 43
    2019/02/12 15:34:37.641 Perk min level: 0
    2019/02/12 15:34:37.641 Perk num levels: 0
    2019/02/12 15:34:37.641 BonusStat:
    2019/02/12 15:34:37.641 BonusAmt: 0
    2019/02/12 15:34:37.641 Perk required stat 1:
    2019/02/12 15:34:37.641 Perk required amt 1: 0
    2019/02/12 15:34:37.641 Perk And/Or: 0
    2019/02/12 15:34:37.641 Perk required stat 2:
    2019/02/12 15:34:37.641 Perk required amt 2: 0
    2019/02/12 15:34:37.641 Perk required ST: 0
    2019/02/12 15:34:37.641 Perk required PE: 0
    2019/02/12 15:34:37.641 Perk required EN: 0
    2019/02/12 15:34:37.641 Perk required CH: 0
    2019/02/12 15:34:37.641 Perk required IN: 0
    2019/02/12 15:34:37.641 Perk required AG: 0
    2019/02/12 15:34:37.641 Perk required LK: 0
    2019/02/12 15:34:37.641 Perk prohibited race:
    2019/02/12 15:34:37.641 Perk required race:
    2019/02/12 15:34:37.641 Adding perk adrenalineRush
    2019/02/12 15:34:37.641 Lua called ReplacePerk
    2019/02/12 15:34:37.641 Entry 70
    2019/02/12 15:34:37.641 Perk min level: 0
    2019/02/12 15:34:37.641 Perk num levels: 0
    2019/02/12 15:34:37.641 BonusStat:
    2019/02/12 15:34:37.641 BonusAmt: 0
    2019/02/12 15:34:37.641 Perk required stat 1:
    2019/02/12 15:34:37.641 Perk required amt 1: 0
    2019/02/12 15:34:37.641 Perk And/Or: 0
    2019/02/12 15:34:37.641 Perk required stat 2:
    2019/02/12 15:34:37.641 Perk required amt 2: 0
    2019/02/12 15:34:37.641 Perk required ST: 0
    2019/02/12 15:34:37.641 Perk required PE: 0
    2019/02/12 15:34:37.641 Perk required EN: 0
    2019/02/12 15:34:37.641 Perk required CH: 0
    2019/02/12 15:34:37.641 Perk required IN: 0
    2019/02/12 15:34:37.641 Perk required AG: 0
    2019/02/12 15:34:37.641 Perk required LK: 0
    2019/02/12 15:34:37.641 Perk prohibited race:
    2019/02/12 15:34:37.641 Perk required race:
    2019/02/12 15:34:37.641 Adding perk roadWarrior
    2019/02/12 15:34:37.641 Lua called ReplacePerk
    2019/02/12 15:34:37.641 Entry 72
    2019/02/12 15:34:37.641 Perk min level: 0
    2019/02/12 15:34:37.641 Perk num levels: 0
    2019/02/12 15:34:37.641 BonusStat:
    2019/02/12 15:34:37.641 BonusAmt: 0
    2019/02/12 15:34:37.641 Perk required stat 1:
    2019/02/12 15:34:37.641 Perk required amt 1: 0
    2019/02/12 15:34:37.641 Perk And/Or: 0
    2019/02/12 15:34:37.641 Perk required stat 2:
    2019/02/12 15:34:37.641 Perk required amt 2: 0
    2019/02/12 15:34:37.641 Perk required ST: 0
    2019/02/12 15:34:37.641 Perk required PE: 0
    2019/02/12 15:34:37.641 Perk required EN: 0
    2019/02/12 15:34:37.641 Perk required CH: 0
    2019/02/12 15:34:37.642 Perk required IN: 0
    2019/02/12 15:34:37.642 Perk required AG: 0
    2019/02/12 15:34:37.642 Perk required LK: 0
    2019/02/12 15:34:37.642 Perk prohibited race:
    2019/02/12 15:34:37.642 Perk required race:
    2019/02/12 15:34:37.642 Adding perk leadFoot
    2019/02/12 15:34:37.642 Lua called ReplacePerk
    2019/02/12 15:34:37.642 Entry 55
    2019/02/12 15:34:37.642 Perk min level: 0
    2019/02/12 15:34:37.642 Perk num levels: 0
    2019/02/12 15:34:37.642 BonusStat:
    2019/02/12 15:34:37.642 BonusAmt: 0
    2019/02/12 15:34:37.642 Perk required stat 1:
    2019/02/12 15:34:37.642 Perk required amt 1: 0
    2019/02/12 15:34:37.642 Perk And/Or: 0
    2019/02/12 15:34:37.642 Perk required stat 2:
    2019/02/12 15:34:37.642 Perk required amt 2: 0
    2019/02/12 15:34:37.642 Perk required ST: 0
    2019/02/12 15:34:37.642 Perk required PE: 0
    2019/02/12 15:34:37.642 Perk required EN: 0
    2019/02/12 15:34:37.642 Perk required CH: 0
    2019/02/12 15:34:37.642 Perk required IN: 0
    2019/02/12 15:34:37.642 Perk required AG: 0
    2019/02/12 15:34:37.642 Perk required LK: 0
    2019/02/12 15:34:37.642 Perk prohibited race:
    2019/02/12 15:34:37.642 Perk required race:
    2019/02/12 15:34:37.642 Adding perk harmless
    2019/02/12 15:34:37.642 Lua called ReplacePerk
    2019/02/12 15:34:37.642 Entry 37
    2019/02/12 15:34:37.642 Perk min level: 0
    2019/02/12 15:34:37.642 Perk num levels: 0
    2019/02/12 15:34:37.642 BonusStat:
    2019/02/12 15:34:37.642 BonusAmt: 0
    2019/02/12 15:34:37.642 Perk required stat 1:
    2019/02/12 15:34:37.642 Perk required amt 1: 0
    2019/02/12 15:34:37.642 Perk And/Or: 0
    2019/02/12 15:34:37.642 Perk required stat 2:
    2019/02/12 15:34:37.642 Perk required amt 2: 0
    2019/02/12 15:34:37.642 Perk required ST: 0
    2019/02/12 15:34:37.642 Perk required PE: 0
    2019/02/12 15:34:37.642 Perk required EN: 0
    2019/02/12 15:34:37.642 Perk required CH: 0
    2019/02/12 15:34:37.642 Perk required IN: 0
    2019/02/12 15:34:37.642 Perk required AG: 0
    2019/02/12 15:34:37.642 Perk required LK: 0
    2019/02/12 15:34:37.642 Perk prohibited race:
    2019/02/12 15:34:37.642 Perk required race:
    2019/02/12 15:34:37.642 Adding perk mysteriousStranger
    2019/02/12 15:34:37.642 Lua called ReplacePerk
    2019/02/12 15:34:37.642 Entry 86
    2019/02/12 15:34:37.642 Perk min level: 0
    2019/02/12 15:34:37.642 Perk num levels: 0
    2019/02/12 15:34:37.642 BonusStat:
    2019/02/12 15:34:37.642 BonusAmt: 0
    2019/02/12 15:34:37.642 Perk required stat 1:
    2019/02/12 15:34:37.642 Perk required amt 1: 0
    2019/02/12 15:34:37.642 Perk And/Or: 0
    2019/02/12 15:34:37.642 Perk required stat 2:
    2019/02/12 15:34:37.642 Perk required amt 2: 0
    2019/02/12 15:34:37.642 Perk required ST: 0
    2019/02/12 15:34:37.642 Perk required PE: 0
    2019/02/12 15:34:37.642 Perk required EN: 0
    2019/02/12 15:34:37.642 Perk required CH: 0
    2019/02/12 15:34:37.642 Perk required IN: 0
    2019/02/12 15:34:37.642 Perk required AG: 0
    2019/02/12 15:34:37.642 Perk required LK: 0
    2019/02/12 15:34:37.642 Perk prohibited race:
    2019/02/12 15:34:37.642 Perk required race:
    2019/02/12 15:34:37.642 Adding perk stat
    2019/02/12 15:34:37.642 Lua called ReplacePerk
    2019/02/12 15:34:37.642 Entry 28
    2019/02/12 15:34:37.642 Perk min level: 0
    2019/02/12 15:34:37.642 Perk num levels: 0
    2019/02/12 15:34:37.642 BonusStat:
    2019/02/12 15:34:37.642 BonusAmt: 0
    2019/02/12 15:34:37.642 Perk required stat 1:
    2019/02/12 15:34:37.642 Perk required amt 1: 0
    2019/02/12 15:34:37.642 Perk And/Or: 0
    2019/02/12 15:34:37.642 Perk required stat 2:
    2019/02/12 15:34:37.642 Perk required amt 2: 0
    2019/02/12 15:34:37.642 Perk required ST: 0
    2019/02/12 15:34:37.642 Perk required PE: 0
    2019/02/12 15:34:37.642 Perk required EN: 0
    2019/02/12 15:34:37.642 Perk required CH: 0
    2019/02/12 15:34:37.642 Perk required IN: 0
    2019/02/12 15:34:37.642 Perk required AG: 0
    2019/02/12 15:34:37.642 Perk required LK: 0
    2019/02/12 15:34:37.643 Perk prohibited race:
    2019/02/12 15:34:37.643 Perk required race:
    2019/02/12 15:34:37.643 Adding perk medic
    2019/02/12 15:34:37.643 Lua called ReplacePerk
    2019/02/12 15:34:37.643 Entry 4
    2019/02/12 15:34:37.643 Perk min level: 0
    2019/02/12 15:34:37.643 Perk num levels: 0
    2019/02/12 15:34:37.643 BonusStat:
    2019/02/12 15:34:37.643 BonusAmt: 0
    2019/02/12 15:34:37.643 Perk required stat 1:
    2019/02/12 15:34:37.643 Perk required amt 1: 0
    2019/02/12 15:34:37.643 Perk And/Or: 0
    2019/02/12 15:34:37.643 Perk required stat 2:
    2019/02/12 15:34:37.643 Perk required amt 2: 0
    2019/02/12 15:34:37.643 Perk required ST: 0
    2019/02/12 15:34:37.643 Perk required PE: 0
    2019/02/12 15:34:37.643 Perk required EN: 0
    2019/02/12 15:34:37.643 Perk required CH: 0
    2019/02/12 15:34:37.643 Perk required IN: 0
    2019/02/12 15:34:37.643 Perk required AG: 0
    2019/02/12 15:34:37.643 Perk required LK: 0
    2019/02/12 15:34:37.643 Perk prohibited race:
    2019/02/12 15:34:37.643 Perk required race:
    2019/02/12 15:34:37.643 Adding perk bonusRangedDamage
    2019/02/12 15:34:37.643 Lua called ReplacePerk
    2019/02/12 15:34:37.643 Entry 75
    2019/02/12 15:34:37.643 Perk min level: 0
    2019/02/12 15:34:37.643 Perk num levels: 0
    2019/02/12 15:34:37.643 BonusStat:
    2019/02/12 15:34:37.643 BonusAmt: 0
    2019/02/12 15:34:37.643 Perk required stat 1:
    2019/02/12 15:34:37.643 Perk required amt 1: 0
    2019/02/12 15:34:37.643 Perk And/Or: 0
    2019/02/12 15:34:37.643 Perk required stat 2:
    2019/02/12 15:34:37.643 Perk required amt 2: 0
    2019/02/12 15:34:37.643 Perk required ST: 0
    2019/02/12 15:34:37.643 Perk required PE: 0
    2019/02/12 15:34:37.643 Perk required EN: 0
    2019/02/12 15:34:37.643 Perk required CH: 0
    2019/02/12 15:34:37.643 Perk required IN: 0
    2019/02/12 15:34:37.643 Perk required AG: 0
    2019/02/12 15:34:37.643 Perk required LK: 0
    2019/02/12 15:34:37.643 Perk prohibited race:
    2019/02/12 15:34:37.643 Perk required race:
    2019/02/12 15:34:37.643 Adding perk flexible
    2019/02/12 15:34:37.643 Lua called ReplacePerk
    2019/02/12 15:34:37.643 Entry 69
    2019/02/12 15:34:37.643 Perk min level: 0
    2019/02/12 15:34:37.643 Perk num levels: 0
    2019/02/12 15:34:37.643 BonusStat:
    2019/02/12 15:34:37.643 BonusAmt: 0
    2019/02/12 15:34:37.643 Perk required stat 1:
    2019/02/12 15:34:37.643 Perk required amt 1: 0
    2019/02/12 15:34:37.643 Perk And/Or: 0
    2019/02/12 15:34:37.643 Perk required stat 2:
    2019/02/12 15:34:37.643 Perk required amt 2: 0
    2019/02/12 15:34:37.643 Perk required ST: 0
    2019/02/12 15:34:37.643 Perk required PE: 0
    2019/02/12 15:34:37.643 Perk required EN: 0
    2019/02/12 15:34:37.643 Perk required CH: 0
    2019/02/12 15:34:37.643 Perk required IN: 0
    2019/02/12 15:34:37.643 Perk required AG: 0
    2019/02/12 15:34:37.643 Perk required LK: 0
    2019/02/12 15:34:37.643 Perk prohibited race:
    2019/02/12 15:34:37.643 Perk required race:
    2019/02/12 15:34:37.643 Adding perk crazyBomber
    2019/02/12 15:34:37.643 Lua called ReplacePerk
    2019/02/12 15:34:37.643 Entry 27
    2019/02/12 15:34:37.643 Perk min level: 0
    2019/02/12 15:34:37.643 Perk num levels: 0
    2019/02/12 15:34:37.643 BonusStat:
    2019/02/12 15:34:37.643 BonusAmt: 0
    2019/02/12 15:34:37.644 Perk required stat 1:
    2019/02/12 15:34:37.644 Perk required amt 1: 0
    2019/02/12 15:34:37.644 Perk And/Or: 0
    2019/02/12 15:34:37.644 Perk required stat 2:
    2019/02/12 15:34:37.644 Perk required amt 2: 0
    2019/02/12 15:34:37.644 Perk required ST: 0
    2019/02/12 15:34:37.644 Perk required PE: 0
    2019/02/12 15:34:37.644 Perk required EN: 0
    2019/02/12 15:34:37.644 Perk required CH: 0
    2019/02/12 15:34:37.644 Perk required IN: 0
    2019/02/12 15:34:37.644 Perk required AG: 0
    2019/02/12 15:34:37.644 Perk required LK: 0
    2019/02/12 15:34:37.644 Perk prohibited race:
    2019/02/12 15:34:37.644 Perk required race:
    2019/02/12 15:34:37.644 Adding perk mrFixit
    2019/02/12 15:34:37.644 Lua called ReplacePerk
    2019/02/12 15:34:37.644 Entry 60
    2019/02/12 15:34:37.644 Perk min level: 0
    2019/02/12 15:34:37.644 Perk num levels: 0
    2019/02/12 15:34:37.644 BonusStat:
    2019/02/12 15:34:37.644 BonusAmt: 0
    2019/02/12 15:34:37.644 Perk required stat 1:
    2019/02/12 15:34:37.644 Perk required amt 1: 0
    2019/02/12 15:34:37.644 Perk And/Or: 0
    2019/02/12 15:34:37.644 Perk required stat 2:
    2019/02/12 15:34:37.644 Perk required amt 2: 0
    2019/02/12 15:34:37.644 Perk required ST: 0
    2019/02/12 15:34:37.644 Perk required PE: 0
    2019/02/12 15:34:37.644 Perk required EN: 0
    2019/02/12 15:34:37.644 Perk required CH: 0
    2019/02/12 15:34:37.644 Perk required IN: 0
    2019/02/12 15:34:37.644 Perk required AG: 0
    2019/02/12 15:34:37.644 Perk required LK: 0
    2019/02/12 15:34:37.644 Perk prohibited race:
    2019/02/12 15:34:37.644 Perk required race:
    2019/02/12 15:34:37.644 Adding perk negotiator
    2019/02/12 15:34:37.644 Lua called ReplacePerk
    2019/02/12 15:34:37.644 Entry 80
    2019/02/12 15:34:37.644 Perk min level: 0
    2019/02/12 15:34:37.644 Perk num levels: 0
    2019/02/12 15:34:37.644 BonusStat:
    2019/02/12 15:34:37.644 BonusAmt: 0
    2019/02/12 15:34:37.644 Perk required stat 1:
    2019/02/12 15:34:37.644 Perk required amt 1: 0
    2019/02/12 15:34:37.644 Perk And/Or: 0
    2019/02/12 15:34:37.644 Perk required stat 2:
    2019/02/12 15:34:37.644 Perk required amt 2: 0
    2019/02/12 15:34:37.644 Perk required ST: 0
    2019/02/12 15:34:37.644 Perk required PE: 0
    2019/02/12 15:34:37.644 Perk required EN: 0
    2019/02/12 15:34:37.644 Perk required CH: 0
    2019/02/12 15:34:37.644 Perk required IN: 0
    2019/02/12 15:34:37.644 Perk required AG: 0
    2019/02/12 15:34:37.644 Perk required LK: 0
    2019/02/12 15:34:37.644 Perk prohibited race:
    2019/02/12 15:34:37.644 Perk required race:
    2019/02/12 15:34:37.644 Adding perk leader
    2019/02/12 15:34:37.644 Lua called ReplacePerk
    2019/02/12 15:34:37.644 Entry 68
    2019/02/12 15:34:37.644 Perk min level: 0
    2019/02/12 15:34:37.644 Perk num levels: 0
    2019/02/12 15:34:37.644 BonusStat:
    2019/02/12 15:34:37.644 BonusAmt: 0
    2019/02/12 15:34:37.644 Perk required stat 1:
    2019/02/12 15:34:37.644 Perk required amt 1: 0
    2019/02/12 15:34:37.644 Perk And/Or: 0
    2019/02/12 15:34:37.644 Perk required stat 2:
    2019/02/12 15:34:37.644 Perk required amt 2: 0
    2019/02/12 15:34:37.644 Perk required ST: 0
    2019/02/12 15:34:37.644 Perk required PE: 0
    2019/02/12 15:34:37.644 Perk required EN: 0
    2019/02/12 15:34:37.644 Perk required CH: 0
    2019/02/12 15:34:37.644 Perk required IN: 0
    2019/02/12 15:34:37.644 Perk required AG: 0
    2019/02/12 15:34:37.644 Perk required LK: 0
    2019/02/12 15:34:37.644 Perk prohibited race:
    2019/02/12 15:34:37.644 Perk required race:
    2019/02/12 15:34:37.644 Adding perk stuntMan
    2019/02/12 15:34:37.644 Lua called ReplacePerk
    2019/02/12 15:34:37.644 Entry 97
    2019/02/12 15:34:37.644 Perk min level: 0
    2019/02/12 15:34:37.644 Perk num levels: 0
    2019/02/12 15:34:37.644 BonusStat:
    2019/02/12 15:34:37.645 BonusAmt: 0
    2019/02/12 15:34:37.645 Perk required stat 1:
    2019/02/12 15:34:37.645 Perk required amt 1: 0
    2019/02/12 15:34:37.645 Perk And/Or: 0
    2019/02/12 15:34:37.645 Perk required stat 2:
    2019/02/12 15:34:37.645 Perk required amt 2: 0
    2019/02/12 15:34:37.645 Perk required ST: 0
    2019/02/12 15:34:37.645 Perk required PE: 0
    2019/02/12 15:34:37.645 Perk required EN: 0
    2019/02/12 15:34:37.645 Perk required CH: 0
    2019/02/12 15:34:37.645 Perk required IN: 0
    2019/02/12 15:34:37.645 Perk required AG: 0
    2019/02/12 15:34:37.645 Perk required LK: 0
    2019/02/12 15:34:37.645 Perk prohibited race:
    2019/02/12 15:34:37.645 Perk required race:
    2019/02/12 15:34:37.645 Adding perk wayOfTheFruit
    2019/02/12 15:34:37.645 Lua called ReplacePerk
    2019/02/12 15:34:37.645 Entry 76
    2019/02/12 15:34:37.645 Perk min level: 0
    2019/02/12 15:34:37.645 Perk num levels: 0
    2019/02/12 15:34:37.645 BonusStat:
    2019/02/12 15:34:37.645 BonusAmt: 0
    2019/02/12 15:34:37.645 Perk required stat 1:
    2019/02/12 15:34:37.645 Perk required amt 1: 0
    2019/02/12 15:34:37.645 Perk And/Or: 0
    2019/02/12 15:34:37.645 Perk required stat 2:
    2019/02/12 15:34:37.645 Perk required amt 2: 0
    2019/02/12 15:34:37.645 Perk required ST: 0
    2019/02/12 15:34:37.645 Perk required PE: 0
    2019/02/12 15:34:37.645 Perk required EN: 0
    2019/02/12 15:34:37.645 Perk required CH: 0
    2019/02/12 15:34:37.645 Perk required IN: 0
    2019/02/12 15:34:37.645 Perk required AG: 0
    2019/02/12 15:34:37.645 Perk required LK: 0
    2019/02/12 15:34:37.645 Perk prohibited race:
    2019/02/12 15:34:37.645 Perk required race:
    2019/02/12 15:34:37.645 Adding perk bendTheRules
    2019/02/12 15:34:37.645 Lua called ReplacePerk
    2019/02/12 15:34:37.645 Entry 99
    2019/02/12 15:34:37.645 Perk min level: 0
    2019/02/12 15:34:37.645 Perk num levels: 0
    2019/02/12 15:34:37.645 BonusStat:
    2019/02/12 15:34:37.645 BonusAmt: 0
    2019/02/12 15:34:37.645 Perk required stat 1:
    2019/02/12 15:34:37.645 Perk required amt 1: 0
    2019/02/12 15:34:37.645 Perk And/Or: 0
    2019/02/12 15:34:37.645 Perk required stat 2:
    2019/02/12 15:34:37.645 Perk required amt 2: 0
    2019/02/12 15:34:37.645 Perk required ST: 0
    2019/02/12 15:34:37.645 Perk required PE: 0
    2019/02/12 15:34:37.645 Perk required EN: 0
    2019/02/12 15:34:37.645 Perk required CH: 0
    2019/02/12 15:34:37.645 Perk required IN: 0
    2019/02/12 15:34:37.645 Perk required AG: 0
    2019/02/12 15:34:37.645 Perk required LK: 0
    2019/02/12 15:34:37.645 Perk prohibited race:
    2019/02/12 15:34:37.645 Perk required race:
    2019/02/12 15:34:37.645 Adding perk bluffMaster
    2019/02/12 15:34:37.645 Lua called ReplacePerk
    2019/02/12 15:34:37.645 Entry 7
    2019/02/12 15:34:37.645 Perk min level: 0
    2019/02/12 15:34:37.645 Perk num levels: 0
    2019/02/12 15:34:37.645 BonusStat:
    2019/02/12 15:34:37.645 BonusAmt: 0
    2019/02/12 15:34:37.645 Perk required stat 1:
    2019/02/12 15:34:37.645 Perk required amt 1: 0
    2019/02/12 15:34:37.645 Perk And/Or: 0
    2019/02/12 15:34:37.645 Perk required stat 2:
    2019/02/12 15:34:37.645 Perk required amt 2: 0
    2019/02/12 15:34:37.645 Perk required ST: 0
    2019/02/12 15:34:37.645 Perk required PE: 0
    2019/02/12 15:34:37.645 Perk required EN: 0
    2019/02/12 15:34:37.645 Perk required CH: 0
    2019/02/12 15:34:37.645 Perk required IN: 0
    2019/02/12 15:34:37.645 Perk required AG: 0
    2019/02/12 15:34:37.645 Perk required LK: 0
    2019/02/12 15:34:37.645 Perk prohibited race:
    2019/02/12 15:34:37.645 Perk required race:
    2019/02/12 15:34:37.645 Adding perk moreCriticals
    2019/02/12 15:34:37.645 Lua called ReplacePerk
    2019/02/12 15:34:37.645 Entry 71
    2019/02/12 15:34:37.645 Perk min level: 0
    2019/02/12 15:34:37.645 Perk num levels: 0
    2019/02/12 15:34:37.645 BonusStat:
    2019/02/12 15:34:37.646 BonusAmt: 0
    2019/02/12 15:34:37.646 Perk required stat 1:
    2019/02/12 15:34:37.646 Perk required amt 1: 0
    2019/02/12 15:34:37.646 Perk And/Or: 0
    2019/02/12 15:34:37.646 Perk required stat 2:
    2019/02/12 15:34:37.646 Perk required amt 2: 0
    2019/02/12 15:34:37.646 Perk required ST: 0
    2019/02/12 15:34:37.646 Perk required PE: 0
    2019/02/12 15:34:37.646 Perk required EN: 0
    2019/02/12 15:34:37.646 Perk required CH: 0
    2019/02/12 15:34:37.646 Perk required IN: 0
    2019/02/12 15:34:37.646 Perk required AG: 0
    2019/02/12 15:34:37.646 Perk required LK: 0
    2019/02/12 15:34:37.646 Perk prohibited race:
    2019/02/12 15:34:37.646 Perk required race:
    2019/02/12 15:34:37.646 Adding perk gunner
    
     
  16. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Bluff is clearly one of those perks
     

    Attached Files:

  17. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Also, I think that if "ftse.lua" could be located and launched from inside the CORE folder, maybe that would allow me to duplicate that file for translation purposes of the in-game log. Could it be achieve as simply as that?
     
  18. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Got it! I simply changed "maxperktaken = 0" for "minlevel = 99"...
     
  19. Melindil

    Melindil First time out of the vault

    67
    Apr 15, 2018
    Good to hear that minlevel 99 worked. Odd that maxperktaken 0 did not - though I remember now that the "disabled" perks had a -1 value for that. Maybe the perk window considers 0 a special case?

    One thing I can add (which was planned, but the log file above confirms should work) is to have the locations of the Lua and JSON files be based on the value of the -path parameter. That way, even if multiple core directories (for different mods) are added, each can have its own configuration.
     
  20. nadeauhugo

    nadeauhugo Author of FOT mod THE SUM Modder

    468
    Mar 9, 2014
    Ah superb! Yess does it mean I should make my own setup and tests regarding this -path location? Do I need some extra lines of code?