File information

Last updated

Original upload

Created by

dnbnhlp

Uploaded by

dnbnhlp

Virus scan

Safe to use

Tags for this mod

156 comments

  1. Nanozit
    Nanozit
    • member
    • 0 kudos
    Gig: Spy in the jungle, I have a vanilla nomad backstory, but for some reason I became a corpo in this quest, regardless of the order in which I set the settings, it's still why the corporate 

    when setting the settings to None, nomad is back, but in preset :Nomad - Street kid - Corpo, the main reason why Corpo
  2. BreakUrSelf
    BreakUrSelf
    • premium
    • 0 kudos
    Hi! 
    Just started a new game with this mod, but I cannot find where I can tweak mod settings, been looking through everything for 15 mins now, feeling dumb ;(

    Edit; after launching game for the second time, it finally appeared. Sorry for the previous post. Cannot wait to try this out. Thanks
  3. MATSUMOTORISE
    MATSUMOTORISE
    • member
    • 1 kudos
    Will this trigger the Corpo-only legendary quest? I really don’t wanna miss that legendary pistol.
    1. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      It will.
    2. MATSUMOTORISE
      MATSUMOTORISE
      • member
      • 1 kudos
      Awesome, really appreciate your work!
  4. Si13n7
    Si13n7
    • premium
    • 4 kudos
    Great mod, but there is room for improvement.


    Aside from some unnecessary repetitions, there is also a redundant variable initialization:

    let playerLifePath: gamedataLifePath = playerDevSystem.GetLifePath(playerObject);
    You can remove:

    = playerDevSystem.GetLifePath(playerObject)
    because playerLifePath gets overwritten before it is ever used.


    However, the most critical issue is the following condition:

    return (firstPriorityLifepath == 2.0 && NotEquals(lifePath, gamedataLifePath.Nomad))
    && (firstPriorityLifepath == 3.0 && NotEquals(lifePath, gamedataLifePath.StreetKid))
    && (firstPriorityLifepath == 4.0 && NotEquals(lifePath, gamedataLifePath.Corporate))
    && (secondPriorityLifepath == 2.0 && NotEquals(lifePath, gamedataLifePath.Nomad))
    && (secondPriorityLifepath == 3.0 && NotEquals(lifePath, gamedataLifePath.StreetKid))
    && (secondPriorityLifepath == 4.0 && NotEquals(lifePath, gamedataLifePath.Corporate))
    && (thirdPriorityLifepath == 2.0 && NotEquals(lifePath, gamedataLifePath.Nomad))
    && (thirdPriorityLifepath == 3.0 && NotEquals(lifePath, gamedataLifePath.StreetKid))
    && (thirdPriorityLifepath == 4.0 && NotEquals(lifePath, gamedataLifePath.Corporate));

    This condition is never true. The problem is that it requires a single variable, such as firstPriorityLifepath, to hold multiple different values at the same time. For example, it would need to be both 2.0 and 3.0 simultaneously, which is impossible. The same issue applies to secondPriorityLifepath and thirdPriorityLifepath.

    You either need to rethink the logic—likely replacing some && with ||—or simply replace the entire condition with false, as it will always evaluate to false. There's no need to waste resources on unnecessary checks.
    1. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      I see your point but I can't promise anything CP2077 related ATM.
    2. Si13n7
      Si13n7
      • premium
      • 4 kudos
      No problem! If you ever get around to it, I've completely rewritten the code as follows—hope it helps.

      @replaceMethod(LifePath_ScriptConditionType)

      public const quest func Evaluate(playerObject: ref<GameObject>) -> Bool {
          if !IsDefined(playerObject) {
              return false;
          }

          let pCtrlObj: ref<GameObject> = GameInstance.GetPlayerSystem(playerObject.GetGame()).GetLocalPlayerControlledGameObject();
          if !IsDefined(pCtrlObj) {
              return false;
          }

          let lifePath: gamedataLifePath = TweakDBInterface.GetLifePathRecord(this.m_lifePathId).Type();
          let priority1: Float = TweakDBInterface.GetFloat(t"NewPerks.firstPriorityLifepath.value", 1.0);
          let priority2: Float = TweakDBInterface.GetFloat(t"NewPerks.secondPriorityLifepath.value", 1.0);
          let priority3: Float = TweakDBInterface.GetFloat(t"NewPerks.thirdPriorityLifepath.value", 1.0);

          if priority1 <= 1.0 && priority2 <= 1.0 && priority3 <= 1.0 {
              let objLifePath: gamedataLifePath = this.GetPlayerDevelopmentSystem().GetLifePath(pCtrlObj);
              return GetFinalResult(Equals(lifePath, objLifePath), this.m_inverted);
          }

          return GetFinalResult(
                  MatchesLifePath(priority1, lifePath) ||
                  MatchesLifePath(priority2, lifePath) ||
                  MatchesLifePath(priority3, lifePath), this.m_inverted);
      }

      private func GetFinalResult(result: Bool, inverted: Bool) -> Bool {
          return inverted ? !result : result;
      }

      private func MatchesLifePath(priority: Float, path: gamedataLifePath) -> Bool {
          return  (priority == 2.0 && Equals(path, gamedataLifePath.Nomad)) ||
                  (priority == 3.0 && Equals(path, gamedataLifePath.StreetKid)) ||
                  (priority == 4.0 && Equals(path, gamedataLifePath.Corporate));
      }


      That works very well. However, it still doesn't fully fix the issue where prioritization doesn't apply in certain cases where the lifepath is chosen automatically. Fixing this would likely require deeper modifications, as there doesn’t seem to be a clear definition in the game code distinguishing between an automatically assigned decision and a regular dialog option.
    3. brendan12121
      brendan12121
      • supporter
      • 0 kudos
      can you upload your fix until the creator is able to update his?
  5. Hugbenny
    Hugbenny
    • member
    • 0 kudos
    Hey everyone,

    For those stucked during the quest "The Pick Up" aka q003 when you want to spot the mole but can't do it because of the backround not being nomad, here's the solution : 

    - CET Consol command
    - Set backround to nomad

    local newPath = 'Nomad'; local function changePath(path) local P = Game.GetPlayer(); local QS = Game.GetQuestsSystem(); local DS = PlayerDevelopmentSystem.GetInstance(P):GetDevelopmentData(P); local curLifePath = DS:GetLifePath().value; local lifePaths = {'StreetKid', 'Corporate', 'Nomad'}; local pathFacts = {'q000_street_kid_background', 'q000_corpo_background', 'q000_nomad_background'}; if curLifePath == path then print(' \n\tNo need to set '..path..' Life Path.\n ') return end if path == lifePaths[1] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[1], 1) DS:SetLifePath('LifePaths.'..lifePaths[1]) elseif path == lifePaths[2] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[2], 1) DS:SetLifePath('LifePaths.'..lifePaths[2]) elseif path == lifePaths[3] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[3], 1) DS:SetLifePath('LifePaths.'..lifePaths[3]) end print(' \n\tLife path set to :  '..path..'.\n ') end changePath(newPath) 

    - Ensure both q003_convoy_signatures and q003_militech_nomad_offer are set to 1

    Game.GetQuestsSystem():SetFactStr("q003_convoy_signatures", 1)
    Game.GetQuestsSystem():SetFactStr("q003_militech_nomad_offer", 1)

    - Should be good to go ! Then you can go back to your original background after talking to Meredith

    Corpo

    local newPath = 'Corporate'; local function changePath(path) local P = Game.GetPlayer(); local QS = Game.GetQuestsSystem(); local DS = PlayerDevelopmentSystem.GetInstance(P):GetDevelopmentData(P); local curLifePath = DS:GetLifePath().value; local lifePaths = {'StreetKid', 'Corporate', 'Nomad'}; local pathFacts = {'q000_street_kid_background', 'q000_corpo_background', 'q000_nomad_background'}; if curLifePath == path then print(' \n\tNo need to set '..path..' Life Path.\n ') return end if path == lifePaths[1] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[1], 1) DS:SetLifePath('LifePaths.'..lifePaths[1]) elseif path == lifePaths[2] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[2], 1) DS:SetLifePath('LifePaths.'..lifePaths[2]) elseif path == lifePaths[3] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[3], 1) DS:SetLifePath('LifePaths.'..lifePaths[3]) end print(' \n\tLife path set to :  '..path..'.\n ') end changePath(newPath) 

    Stret Kid

    local newPath = 'StreetKid'; local function changePath(path) local P = Game.GetPlayer(); local QS = Game.GetQuestsSystem(); local DS = PlayerDevelopmentSystem.GetInstance(P):GetDevelopmentData(P); local curLifePath = DS:GetLifePath().value; local lifePaths = {'StreetKid', 'Corporate', 'Nomad'}; local pathFacts = {'q000_street_kid_background', 'q000_corpo_background', 'q000_nomad_background'}; if curLifePath == path then print(' \n\tNo need to set '..path..' Life Path.\n ') return end if path == lifePaths[1] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[1], 1) DS:SetLifePath('LifePaths.'..lifePaths[1]) elseif path == lifePaths[2] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[2], 1) DS:SetLifePath('LifePaths.'..lifePaths[2]) elseif path == lifePaths[3] then for i, p in next, pathFacts do QS:SetFactStr(p, 0) end QS:SetFactStr(pathFacts[3], 1) DS:SetLifePath('LifePaths.'..lifePaths[3]) end print(' \n\tLife path set to :  '..path..'.\n ') end changePath(newPath) 


    Credits to Thortok2000 for Fact Finder (https://www.nexusmods.com/cyberpunk2077/mods/12735?tab=files&file_id=70271&nmm=1) and Silverhandsome for the categorized command list (https://www.nexusmods.com/cyberpunk2077/mods/521).

    Obviously thanx to dnbnhlp for making this mod ;) Don't know if you can make something out of these command with your mod, but anyway good luck !

    Kiss
    1. URM1979
      URM1979
      • member
      • 6 kudos
      Works, but should one necessarily change lifepath for this? Or it will be enough to set 2 facts? Or one, to be exact
    2. LuxDragon
      LuxDragon
      • supporter
      • 13 kudos
      It's the one instance where this mod won't be enough to identify the mole unless you were a genuine nomad lifepath. Even with the mod, if you go there as say, a corpo, V won't comment on Gilcrest or the HOA. It's game thing, not a mod thing.

      Also, thank you OP! Appreciate the info and the code! Now it really does feel like restrictions have been lifted. My OCD also thanks you. XD
    3. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      IMO the best scenario is set Lifepath as Nomad in character creation page and enable all 3 Lifepath with mod.
  6. zdarora
    zdarora
    • member
    • 0 kudos
    此模组在 2.21 版本中还能使用吗?为什么我安装后它似乎不起作用?
    1. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      It work.
  7. TJB247
    TJB247
    • member
    • 0 kudos
    Hi. I am new to this mod. Will selecting all lifepaths trigger all the lifepath related missions and dialogues without issues? 
    1. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      Yes.
  8. Ravenielago
    Ravenielago
    • member
    • 3 kudos
    Hi, I'm still on my first playthrough and wanted to get this mod but was just wondering, am I able to get the different endings with the mod?

    Does if affect any like important decisions or is this just purely dialogue?
    1. Paananen94
      Paananen94
      • member
      • 0 kudos
      It's mainly dialogue, every lifepath have one quest each.
    2. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      Endings don't rely on Lifepath.
    3. Ravenielago
      Ravenielago
      • member
      • 3 kudos
      Alright cool, thanks for the replies
    4. HiddenUpgrades
      HiddenUpgrades
      • member
      • 1 kudos
      Just don't forget to disable the mod before the credits roll. The game doesn't seem to like it very much. It'll freeze up when you are given the option to "just one last gig" and get back to main menu.
  9. URM1979
    URM1979
    • member
    • 6 kudos
    Wait. Did I just started streetkid quest, being nomad? I thought mod only gives you an opportunity to choose answers for each lifepath?
    For example it doesn't allow you to pin the mole in "The Pickup" if you're streetkid or corpo.
    1. Hauntwick
      Hauntwick
      • premium
      • 0 kudos
      What i'm doing is starting my game without the mod then reenabling it after, works just fine.
    2. URM1979
      URM1979
      • member
      • 6 kudos
      No. I mean "Small Man, Big Mouth" has started for me being Nomad. "War Pigs" tho hasn't started
    3. dnbnhlp
      dnbnhlp
      • premium
      • 167 kudos
      On my lastest playthrought, Kirk quest and car quest started as soon as I reach to Panam while War Pigs only start for me when I finish almost everything (quests, gigs, ncpds...) though.
    4. URM1979
      URM1979
      • member
      • 6 kudos
      "War Pigs" should start after "Transmission", as they say. No luck for now.
      "SM, BM" - after "Heroes" (check)
      "TBaMfW" - after meeting Panam. (check)
      Also, while V being Nomad, Johnny sees them as corpo :)
      At Ofrenda V says last words as if they being streetkid :)
      A little cognitive dissonance :)
    5. HiddenUpgrades
      HiddenUpgrades
      • member
      • 1 kudos
      Chalk to it as imaginations your Nomad V had, like a bad peyote lmao. He/she imagined working for a corp or born into NC and meeting that gonk street slug Kirk.
  10. fcknfake
    fcknfake
    • member
    • 0 kudos
    Hello. I started the game with Corpo. Set the settings to 1.Corpo 2.Streetkid 3.NoneIn the quest at Jackie's funeral, I played Streetkid's dialogue. I turned it off, completed the quest, turned it on. After leaving el cojote I had a quest with Kirk. After completing Transmission, I didn't get the quest with Frank (Corpo). Is this how it should be according to your idea? Or here's another... I went to play Streetkid, completed the quest with Kirk, after the Transmission quest a quest with Frank appeared, although I turned on Corpo only in the prologue (pickup), then turned it off. How does this work? please explain