z Baldur's Gate 3

Upload your cheat tables here (No requests)
User avatar
AkimboDK
Expert Cheater
Expert Cheater
Posts: 167
Joined: Tue Jan 23, 2018 7:57 pm
Reputation: 23

Re: z Baldur's Gate 3

Post by AkimboDK »

knightjedi wrote:
Mon Sep 11, 2023 10:26 am
Babbymode wrote:
Sun Sep 10, 2023 6:04 pm
PrinceRevivalDK wrote:
Sun Sep 10, 2023 12:13 pm


OMG DUUUDE!! This one is so much better than Twinned Spell HOLY shit, I can cast 3 disintegrates niiice!
although I added the line Removeboostfromplayer because if you disabled it and enabled it it will multiply and they are permanent, which can mess up the save.
Thank Zanzer for the original code he dropped a couple times in this post now, but I went through pretty much everything that that command has and am still currently trying to expand it to do things, like changing concentration or other flags
is this still work when i save and load the game?or it is permanent?
Not permanent. At least when I saved and loaded game again it was not on my character anymore.
But make a test save to be sure, then re load the save with the option ticket off and see if you can cast infinite spells or the other features it gives boosts from.

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

xRigellx
Noobzor
Noobzor
Posts: 8
Joined: Thu Aug 31, 2023 12:52 am
Reputation: 1

Re: z Baldur's Gate 3

Post by xRigellx »

Deviljho wrote:
Mon Sep 11, 2023 8:36 am
xRigellx wrote:
Mon Sep 11, 2023 3:39 am
Deviljho wrote:
Sun Sep 10, 2023 7:28 pm
So, is there still no way to add spells to a class spellbook instead of the common one? Legal spells for that class too.
Crazy how no one was able to crack this one yet.
I know. It's legit annoying. The add all adds too many spells. Many of which don't fit in the class, and it also lags the game. I would just like to know how to add all cantrips to the wizard spellbook for example. There are no scrolls for every cantrip either. Just the basic elemental ones like Shocking Grasp.
Cantrips are easy, you just need to edit the "all spells" command, use the Spell ID on the OP of this topic for reference.

NethanielShade
What is cheating?
What is cheating?
Posts: 2
Joined: Mon Sep 11, 2023 7:10 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by NethanielShade »

Anyone know how to permanently change ability scores? I tried this:

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("Ability(Strength,31,15)")
[DISABLE]

but the boost gets removed after a save and load. I also tried putting this in the script extender console:

local host = Osi.GetHostCharacter(); Osi.AddBoosts(host, "Ability(Strength,1,31)", "", host)

but same issue, removed after a save and load. Any help would be appreciated.

User avatar
OtakuGamer
Cheater
Cheater
Posts: 48
Joined: Tue Jul 11, 2017 5:44 pm
Reputation: 11

Re: z Baldur's Gate 3

Post by OtakuGamer »

NethanielShade wrote:
Mon Sep 11, 2023 7:12 pm
Anyone know how to permanently change ability scores? I tried this:

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("Ability(Strength,31,15)")
[DISABLE]

but the boost gets removed after a save and load. I also tried putting this in the script extender console:

local host = Osi.GetHostCharacter(); Osi.AddBoosts(host, "Ability(Strength,1,31)", "", host)

but same issue, removed after a save and load. Any help would be appreciated.
Both scripts have special code for this that involved saving the game, editing the bonuses, then saving the game again. It's not part of the console commands IIRC. Look through the various options and you'll find it.

NethanielShade
What is cheating?
What is cheating?
Posts: 2
Joined: Mon Sep 11, 2023 7:10 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by NethanielShade »

OtakuGamer wrote:
Mon Sep 11, 2023 7:25 pm
NethanielShade wrote:
Mon Sep 11, 2023 7:12 pm
Anyone know how to permanently change ability scores? I tried this:

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("Ability(Strength,31,15)")
[DISABLE]

but the boost gets removed after a save and load. I also tried putting this in the script extender console:

local host = Osi.GetHostCharacter(); Osi.AddBoosts(host, "Ability(Strength,1,31)", "", host)

but same issue, removed after a save and load. Any help would be appreciated.
Both scripts have special code for this that involved saving the game, editing the bonuses, then saving the game again. It's not part of the console commands IIRC. Look through the various options and you'll find it.
Thanks, I was trying to do stuff with the "register commands" area lower down in the table. Somehow I missed the "Ability Stat Points" part near the top. It was kinda confusing getting it to work, but after some searching, I found this comment on page 314:
0xa08ab242 wrote:
Sun Sep 03, 2023 4:56 pm
fythis wrote:
Sun Sep 03, 2023 1:41 am
Anyone else having an issue with Ability Stat Points? I can save the game and see the stat values show up, just with an invalid name. When I load that save, it comes back with wild values in those fields.
It sounds like you need to save one more time.

In other words,using shorthand version of the process is:
load save to edit
fire up cheat engine, load the CT, attach cheat engine to the game process
save the game - you should now see the table populate correctly
use cheat engine to make your changes
save the game again - after making your changes
load the save file you just created
save one more time to see the table populate correctly and resuming cheat table tasks <--- I think this is the step you were missing

A longer way of saying the above and including limits, caveats, etc. is this old post (viewtopic.php?f=4&t=13996&p=307926#p307926).
I was able to successfully edit my abilities (I just wanted a higher strength on my necromancer so I could carry human corpses lmfao) and it seems to be permanent. Thanks again!

myrddin
Novice Cheater
Novice Cheater
Posts: 22
Joined: Sat Mar 04, 2017 6:15 pm
Reputation: 1

Re: z Baldur's Gate 3

Post by myrddin »

I want to add passives to all my characters. But some of the characters already have some of the passives that I want to add, so the game crashes.

Code: Select all

{$lua}
if syntaxcheck then return end
passive = {
"Proficiency_Battleaxes",
"Proficiency_Warpicks"
}
[ENABLE]
AddPassiveToPlayer(passive)
[DISABLE]
RemovePassiveFromPlayer(passive)
How can I add a check, that checks before adding the passive if the passive is not already on the character?
Same with removal, I would love to check if the the character has the selected passive before removing it.

myrddin
Novice Cheater
Novice Cheater
Posts: 22
Joined: Sat Mar 04, 2017 6:15 pm
Reputation: 1

Re: z Baldur's Gate 3

Post by myrddin »

ChatGPT suggests the following, but it does not work:

Code: Select all

{$lua}
if syntaxcheck then return end
passive = {
"WeaponMaster",
"GreatWeaponMaster_BonusAttack",
"GreatWeaponMaster_BonusDamage",
"SavageAttacker",
"SavageAttacks"
}

function AddPassiveToPlayerIfNotExists(passiveName)
    if not HasPassive(passiveName) then
        AddPassiveToPlayer(passiveName)
    end
end

function RemovePassiveFromPlayerIfExists(passiveName)
    if HasPassive(passiveName) then
        RemovePassiveFromPlayer(passiveName)
    end
end

[ENABLE]
for i = 1, #passive do
    AddPassiveToPlayerIfNotExists(passive[i])
end

[DISABLE]
for i = 1, #passive do
    RemovePassiveFromPlayerIfExists(passive[i])
end

fetus69
What is cheating?
What is cheating?
Posts: 3
Joined: Tue Sep 12, 2023 3:04 am
Reputation: 0

Re: z Baldur's Gate 3

Post by fetus69 »

I need to know which flag to use, or any other suggestions y'all might have.

I just finished the game for the first time and i got a bug where the credits began immediately. no concluding cutscene.

Which flag is the closest to "you just enslaved the elder brain?" or is there anything else I can do with cheat engine to force the concluding cutscenes to play?

Mordecai7
What is cheating?
What is cheating?
Posts: 2
Joined: Tue Sep 12, 2023 4:09 am
Reputation: 0

Re: z Baldur's Gate 3

Post by Mordecai7 »

Is it possible at all to make a script that can increase the difficulty of the game (Our party finds tactician a joke so far) either by decreasing experience gain or increasing enemy hp by a multiplier? I know that mods exist, but I'm the host of a multiplayer game with a party of people on potato hardware who can't afford to upgrade (very low income country) and are using GeForce now to play, so we won't be able to use mods until steam workshop support exists. If anyone can point me in the direction on how to make this possible in the mean time, I'd appreciate it, minimal coding experience but I'd give it a shot.

EvenLess
Expert Cheater
Expert Cheater
Posts: 181
Joined: Fri Aug 04, 2023 10:59 pm
Reputation: 207

Re: z Baldur's Gate 3

Post by EvenLess »

fetus69 wrote:
Tue Sep 12, 2023 3:09 am
I need to know which flag to use, or any other suggestions y'all might have.

I just finished the game for the first time and i got a bug where the credits began immediately. no concluding cutscene.

Which flag is the closest to "you just enslaved the elder brain?" or is there anything else I can do with cheat engine to force the concluding cutscenes to play?
Take a look/search through my list of all available flags. It's the FileUUID that you need to use for the script.
[Link]

Babbymode
Expert Cheater
Expert Cheater
Posts: 64
Joined: Sat May 20, 2017 8:45 pm
Reputation: 30

Re: z Baldur's Gate 3

Post by Babbymode »

knightjedi wrote:
Mon Sep 11, 2023 10:26 am
Babbymode wrote:
Sun Sep 10, 2023 6:04 pm
PrinceRevivalDK wrote:
Sun Sep 10, 2023 12:13 pm


OMG DUUUDE!! This one is so much better than Twinned Spell HOLY shit, I can cast 3 disintegrates niiice!
although I added the line Removeboostfromplayer because if you disabled it and enabled it it will multiply and they are permanent, which can mess up the save.
Thank Zanzer for the original code he dropped a couple times in this post now, but I went through pretty much everything that that command has and am still currently trying to expand it to do things, like changing concentration or other flags
is this still work when i save and load the game?or it is permanent?
I don't know how it could be permanent, I have never had a boost apply permanently between reloading, it needs a passive effect to stay working, otherwise the game discards it.

For those of you who just want to click 1 button and apply every bonus you could need, this is the script for you:

Code: Select all

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("ActionResourceConsumeMultiplier(ActionPoint,0,0);ActionResourceConsumeMultiplier(BonusActionPoint,0,0);ActionResourceConsumeMultiplier(ReactionActionPoint,0,0);ActionResourceConsumeMultiplier(Movement,0,0);IF(IsWeaponAttack() or IsSpell()):DamageBonus(1d12+(Level/2));CriticalHitExtraDice(2);ReduceCriticalAttackThreshold(20);RollBonus(SkillCheck,20);RollBonus(RawAbility,20);RollBonus(SavingThrow,20);RollBonus(Attack,20);Initiative(20);SpellSaveDC(20);AC(20);CarryCapacityMultiplier(100);Ability(Strength,31);Ability(Dexterity,31);Ability(Constitution,31);Ability(Intelligence,31);Ability(Wisdom,31);Ability(Charisma,31);IncreaseMaxHP(200%);IncreaseMaxHP(50);UnlockSpellVariant(IsSpell(),ModifySpellRoll('not SavingThrow','SpellAutoResolveOnAlly'),ModifyStatusDuration(Override,-1),ModifySummonDuration(Override,-1),ModifySurfaceDuration(Override,-1),ModifyTargetRadius(AdditiveBase,10),ModifyAreaRadius(AdditiveBase,3),ModifyNumberOfTargets(AdditiveBase,2),ModifyMaximumTargets(AdditiveBase,2),ModifySpellFlags(Verbal,0),ModifySpellFlags(Stealth,1),ModifySpellFlags(Melee,0),ModifySavingThrowDisadvantage(),ModifyUseCosts(Override,ActionPoint,0,0),ModifyUseCosts(Override,BonusActionPoint,0,0),ModifyUseCosts(Override,ReactionActionPoint,0,0),ModifyTooltipDescription())")
[DISABLE]
Last edited by Babbymode on Tue Sep 12, 2023 3:09 pm, edited 1 time in total.

Nickkita09
What is cheating?
What is cheating?
Posts: 2
Joined: Fri Sep 01, 2023 3:28 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by Nickkita09 »

ptyler wrote:
Sun Sep 10, 2023 10:15 pm
EvenLess wrote:
Sun Sep 10, 2023 8:40 pm
Ashmodel wrote:
Sun Sep 10, 2023 7:22 pm


I've downloaded the commander script and the bg3data sqlite3 from the google driver and placed them together in a folder. They attach to the game fine and once the console commands and registered commands are both green I click to show the commander form. It does open another window but that window simply says placeholder and has no functionality. Not sure what I'm doing wrong.
Ah, then it loads. I have experienced the same. Unsure why it does that. I might be missing something on how to really initialize the form window.

When this happens to me, I usually just close the window and do a Restore/show again.
can confirm that doing this does finally make it work. I downloaded the whole folder repo you linked to further up the page and once loaded into the game i closed the console window that says the script is executed and then did the 'Restore and Show' option to finally make the window appear. thank you!
is it possible for you to do a step by step guide? Thank you in advance

EvenLess
Expert Cheater
Expert Cheater
Posts: 181
Joined: Fri Aug 04, 2023 10:59 pm
Reputation: 207

Re: z Baldur's Gate 3

Post by EvenLess »

Babbymode wrote:
Tue Sep 12, 2023 1:56 pm
knightjedi wrote:
Mon Sep 11, 2023 10:26 am
Babbymode wrote:
Sun Sep 10, 2023 6:04 pm


Thank Zanzer for the original code he dropped a couple times in this post now, but I went through pretty much everything that that command has and am still currently trying to expand it to do things, like changing concentration or other flags
is this still work when i save and load the game?or it is permanent?
I don't know how it could be permanent, I have never had a boost apply permanently between reloading, it needs a passive effect to stay working, otherwise the game discards it.

For those of you who just want to click 1 button and apply every bonus you could need, this is the script for you:

Code: Select all

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("ActionResourceConsumeMultiplier(TidesOfChaos,0,0);ActionResourceConsumeMultiplier(SneakAttack_Charge,0,0);ActionResourceConsumeMultiplier(DeflectMissiles_Charge,0,0);ActionResourceConsumeMultiplier(KiPoint,0,0);ActionResourceConsumeMultiplier(WarPriestActionPoint,0,0);ActionResourceConsumeMultiplier(ChannelDivinity,0,0);ActionResourceConsumeMultiplier(ChannelOath,0,0);ActionResourceConsumeMultiplier(LayOnHandsCharge,0,0);ActionResourceConsumeMultiplier(FungalInfestationCharge,0,0);ActionResourceConsumeMultiplier(NaturalRecoveryPoint,0,0);ActionResourceConsumeMultiplier(WildShape,0,0);ActionResourceConsumeMultiplier(SuperiorityDie,0,0);ActionResourceConsumeMultiplier(Rage,0,0);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,1);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,2);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,3);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,4);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,5);ActionResourceConsumeMultiplier(ArcaneRecoveryPoint,0,0);ActionResourceConsumeMultiplier(SorceryPoint,0,0);ActionResourceConsumeMultiplier(SpellSlot,0,1);ActionResourceConsumeMultiplier(SpellSlot,0,2);ActionResourceConsumeMultiplier(SpellSlot,0,3);ActionResourceConsumeMultiplier(SpellSlot,0,4);ActionResourceConsumeMultiplier(SpellSlot,0,5);ActionResourceConsumeMultiplier(SpellSlot,0,6);ActionResourceConsumeMultiplier(ActionPoint,0,0);ActionResourceConsumeMultiplier(BonusActionPoint,0,0);ActionResourceConsumeMultiplier(ReactionActionPoint,0,0);ActionResourceConsumeMultiplier(Movement,0,0);IF(IsWeaponAttack() or IsSpell()):DamageBonus(1d12+(Level/2));CriticalHitExtraDice(2);ReduceCriticalAttackThreshold(20);RollBonus(SkillCheck,20);RollBonus(RawAbility,20);RollBonus(SavingThrow,20);RollBonus(Attack,20);Initiative(20);SpellSaveDC(20);AC(20);CarryCapacityMultiplier(100);Ability(Strength,31);Ability(Dexterity,31);Ability(Constitution,31);Ability(Intelligence,31);Ability(Wisdom,31);Ability(Charisma,31);IncreaseMaxHP(200%);IncreaseMaxHP(50);UnlockSpellVariant(IsSpell(),ModifySpellRoll('not SavingThrow','SpellAutoResolveOnAlly'),ModifyStatusDuration(Override,-1),ModifySummonDuration(Override,-1),ModifySurfaceDuration(Override,-1),ModifyTargetRadius(AdditiveBase,10),ModifyAreaRadius(AdditiveBase,3),ModifyNumberOfTargets(AdditiveBase,2),ModifyMaximumTargets(AdditiveBase,2),ModifySpellFlags(Verbal,0),ModifySpellFlags(Stealth,1),ModifySpellFlags(Melee,0),ModifySavingThrowDisadvantage(),ModifyUseCosts(Override,ActionPoint,0,0),ModifyUseCosts(Override,BonusActionPoint,0,0),ModifyUseCosts(Override,ReactionActionPoint,0,0),ModifyTooltipDescription())")
[DISABLE]
The only "boost" that I've found to persist across a save/load, are the "Add Resources" boosts, such as AddBoostsToPlayer("ActionResource(ActionPoint,1,0)"). Statuses also seem to persist across save/load, at least something like ApplyStatusToPlayer("DEBUG_MAX_STRENGTH", -1) and ApplyStatusToPlayer("DETECT_THOUGHTS", -1) have persisted across my saves/loads.

Regarding your 1-click-boost, don't you experience crash more often, when using that, than when using several "smaller" ones? I have a "Booster Shot" I used to do, that more or less did everything I wanted. Not as extreme as yours, but the more I added, the more the game tended to crash when I applied the boosts. Main difference to yours and mine (besides yours including many more than mine do), is that I create tables for the repeating boosts, so I can easily add/remove/change all in one line.

Code: Select all

{$lua}
if syntaxcheck then return end
--[[
Booster Shot.
Gives you all those vital vitamins and minerals that boost your defences and abilities.
Disappears on Load.

Vitamins to look at:
ProficiencyBonusOverride(4)
]]
local abilityPoints     = 30         -- 30 is maximum.
local movementMeters    = 1000       -- The amount of movement.
local rollBonus         = 50         -- Bonus added to all dice rolls.
local resistanceLevel   = "Immune"   -- Resistant or Immune.
local damageRoll        = "12d12+20" -- 1d4, 1d4+3, etc.
local weaponEnchantment = "20"       -- Dagger +20.
local sightSpellRange   = 32
local damageTypeWeapon  = {
  "Bludgeoning",
  "Piercing",
  "Slashing",
  "Cold",
  "Necrotic",
  "Psychic",
  "Radiant",
}
local damageType = {
  "Bludgeoning",
  "Piercing",
  "Slashing",
  "Acid",
  "Cold",
  "Fire",
  "Force",
  "Lightning",
  "Necrotic",
  "Poison",
  "Psychic",
  "Radiant",
  "Thunder",
}
local ability = {
  "Strength",
  "Dexterity",
  "Constitution",
  "Intelligence",
  "Wisdom",
  "Charisma",
}
local skill = {
  "Acrobatics",
  "AirSpecialist",
  "AnimalHandling",
  "Arcana",
  "Athletics",
  "Brewmaster",
  "Crafting",
  "Deception",
  "DualWielding",
  "FireSpecialist",
  "History",
  "Insight",
  "Intimidation",
  "Investigation",
  "Leadership",
  "Luck",
  "MagicArmorMastery",
  "Medicine",
  "Perception",
  "Perseverance",
  "PhysicalArmorMastery",
  "Polymorph",
  "Ranged",
  "RangerLore",
  "Reason",
  "Religion",
  "Repair",
  "RogueLore",
  "Runecrafting",
  "Shield",
  "SingleHanded",
  "SleightOfHand",
  "Stealth",
  "Sulfurology",
  "Survival",
  "Thievery",
  "TwoHanded",
  "Performance",
  "Persuasion",
  "Wand",
  "WarriorLore",
  "WaterSpecialist"
}
rollType = {
  'MeleeWeaponAttack',
  'MeleeOffHandWeaponAttack',
  'RangedWeaponAttack',
  'RangedOffHandWeaponAttack',
  'MeleeSpellAttack',
  'RangedSpellAttack',
  'Attack',
  'SkillCheck',
  'RawAbility',
  'DeathSavingThrow',
  'SavingThrow',
}

boost = {
  "ActionResourcePreventReduction(Movement);",
  "Advantage(AllSavingThrows);",
  "Advantage(AllAbilities);",
  "Advantage(AttackRoll);",
  "WeaponProperty(Magical);",
  string.format("DarkvisionRangeMin(%s);", sightSpellRange),
  string.format("SightRangeMinimum(%s);", sightSpellRange),
  string.format("UnlockSpellVariant(DistantSpellCheck(),ModifyTargetRadius(Override,%s),);", sightSpellRange),
  string.format("UnlockSpellVariant(DistantTouchSpellCheck(),ModifyTargetRadius(Override,%s),ModifySpellFlags(Melee,0),);", sightSpellRange),
  string.format("ActionResourceOverride(Movement,%s,0);", movementMeters),
  string.format("WeaponEnchantment(%s);", weaponEnchantment),
}
for i = 1, #rollType do
  table.insert(boost, string.format("RollBonus(%s,%s);", rollType[i], rollBonus))
  table.insert(boost, string.format("MinimumRollResult(%s,%s);", rollType[i], 20))
end
for i = 1, #damageTypeWeapon do
  table.insert(boost, string.format("CharacterUnarmedDamage(%s, %s);", damageRoll, damageTypeWeapon[i]))
  table.insert(boost, string.format("CharacterWeaponDamage(%s, %s);", damageRoll, damageTypeWeapon[i]))
end
for i = 1, #damageType do
  table.insert(boost, string.format("Resistance(%s, %s);", damageType[i], resistanceLevel))
end
for i = 1, #ability do
  table.insert(boost, string.format("AbilityOverrideMinimum(%s, %s);", ability[i], abilityPoints))
  table.insert(boost, string.format("ProficiencyBonus(SavingThrow, %s);", ability[i]))
end
--[[ For some reason, the following breaks the rest.
for i = 1, #skill do
  table.insert(boost, string.format("ProficiencyBonus(Skill, %s);", skill[i]))
  table.insert(boost, string.format("ExpertiseBonus(%s);", skill[i]))
  table.insert(boost, string.format("Advantage(Skill,%s)", skill[i]))
end
]]
{$asm}
[ENABLE]
{$lua}
AddBoostsToPlayer(boost)
{$asm}
[DISABLE]
{$lua}
RemoveBoostsFromPlayer(boost)
{$asm}
I have had the suspicion that the game would crash if the execution takes too long. Maybe the loops cause enough extra overhead that it will crash, as opposed to just have everything static.

EvenLess
Expert Cheater
Expert Cheater
Posts: 181
Joined: Fri Aug 04, 2023 10:59 pm
Reputation: 207

Re: z Baldur's Gate 3

Post by EvenLess »

Nickkita09 wrote:
Tue Sep 12, 2023 2:18 pm
ptyler wrote:
Sun Sep 10, 2023 10:15 pm
EvenLess wrote:
Sun Sep 10, 2023 8:40 pm

Ah, then it loads. I have experienced the same. Unsure why it does that. I might be missing something on how to really initialize the form window.

When this happens to me, I usually just close the window and do a Restore/show again.
can confirm that doing this does finally make it work. I downloaded the whole folder repo you linked to further up the page and once loaded into the game i closed the console window that says the script is executed and then did the 'Restore and Show' option to finally make the window appear. thank you!
is it possible for you to do a step by step guide? Thank you in advance
There's a link to a [Link] in my original post.
Just add the step of closing the window and doing the restore/open one more time.

Babbymode
Expert Cheater
Expert Cheater
Posts: 64
Joined: Sat May 20, 2017 8:45 pm
Reputation: 30

Re: z Baldur's Gate 3

Post by Babbymode »

EvenLess wrote:
Tue Sep 12, 2023 2:44 pm
Babbymode wrote:
Tue Sep 12, 2023 1:56 pm
knightjedi wrote:
Mon Sep 11, 2023 10:26 am


is this still work when i save and load the game?or it is permanent?
I don't know how it could be permanent, I have never had a boost apply permanently between reloading, it needs a passive effect to stay working, otherwise the game discards it.

For those of you who just want to click 1 button and apply every bonus you could need, this is the script for you:

Code: Select all

{$lua}
if syntaxcheck then return end
[ENABLE]
AddBoostsToPlayer("ActionResourceConsumeMultiplier(TidesOfChaos,0,0);ActionResourceConsumeMultiplier(SneakAttack_Charge,0,0);ActionResourceConsumeMultiplier(DeflectMissiles_Charge,0,0);ActionResourceConsumeMultiplier(KiPoint,0,0);ActionResourceConsumeMultiplier(WarPriestActionPoint,0,0);ActionResourceConsumeMultiplier(ChannelDivinity,0,0);ActionResourceConsumeMultiplier(ChannelOath,0,0);ActionResourceConsumeMultiplier(LayOnHandsCharge,0,0);ActionResourceConsumeMultiplier(FungalInfestationCharge,0,0);ActionResourceConsumeMultiplier(NaturalRecoveryPoint,0,0);ActionResourceConsumeMultiplier(WildShape,0,0);ActionResourceConsumeMultiplier(SuperiorityDie,0,0);ActionResourceConsumeMultiplier(Rage,0,0);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,1);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,2);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,3);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,4);ActionResourceConsumeMultiplier(WarlockSpellSlot,0,5);ActionResourceConsumeMultiplier(ArcaneRecoveryPoint,0,0);ActionResourceConsumeMultiplier(SorceryPoint,0,0);ActionResourceConsumeMultiplier(SpellSlot,0,1);ActionResourceConsumeMultiplier(SpellSlot,0,2);ActionResourceConsumeMultiplier(SpellSlot,0,3);ActionResourceConsumeMultiplier(SpellSlot,0,4);ActionResourceConsumeMultiplier(SpellSlot,0,5);ActionResourceConsumeMultiplier(SpellSlot,0,6);ActionResourceConsumeMultiplier(ActionPoint,0,0);ActionResourceConsumeMultiplier(BonusActionPoint,0,0);ActionResourceConsumeMultiplier(ReactionActionPoint,0,0);ActionResourceConsumeMultiplier(Movement,0,0);IF(IsWeaponAttack() or IsSpell()):DamageBonus(1d12+(Level/2));CriticalHitExtraDice(2);ReduceCriticalAttackThreshold(20);RollBonus(SkillCheck,20);RollBonus(RawAbility,20);RollBonus(SavingThrow,20);RollBonus(Attack,20);Initiative(20);SpellSaveDC(20);AC(20);CarryCapacityMultiplier(100);Ability(Strength,31);Ability(Dexterity,31);Ability(Constitution,31);Ability(Intelligence,31);Ability(Wisdom,31);Ability(Charisma,31);IncreaseMaxHP(200%);IncreaseMaxHP(50);UnlockSpellVariant(IsSpell(),ModifySpellRoll('not SavingThrow','SpellAutoResolveOnAlly'),ModifyStatusDuration(Override,-1),ModifySummonDuration(Override,-1),ModifySurfaceDuration(Override,-1),ModifyTargetRadius(AdditiveBase,10),ModifyAreaRadius(AdditiveBase,3),ModifyNumberOfTargets(AdditiveBase,2),ModifyMaximumTargets(AdditiveBase,2),ModifySpellFlags(Verbal,0),ModifySpellFlags(Stealth,1),ModifySpellFlags(Melee,0),ModifySavingThrowDisadvantage(),ModifyUseCosts(Override,ActionPoint,0,0),ModifyUseCosts(Override,BonusActionPoint,0,0),ModifyUseCosts(Override,ReactionActionPoint,0,0),ModifyTooltipDescription())")
[DISABLE]
The only "boost" that I've found to persist across a save/load, are the "Add Resources" boosts, such as AddBoostsToPlayer("ActionResource(ActionPoint,1,0)"). Statuses also seem to persist across save/load, at least something like ApplyStatusToPlayer("DEBUG_MAX_STRENGTH", -1) and ApplyStatusToPlayer("DETECT_THOUGHTS", -1) have persisted across my saves/loads.

Regarding your 1-click-boost, don't you experience crash more often, when using that, than when using several "smaller" ones? I have a "Booster Shot" I used to do, that more or less did everything I wanted. Not as extreme as yours, but the more I added, the more the game tended to crash when I applied the boosts. Main difference to yours and mine (besides yours including many more than mine do), is that I create tables for the repeating boosts, so I can easily add/remove/change all in one line.

Code: Select all

{$lua}
if syntaxcheck then return end
--[[
Booster Shot.
Gives you all those vital vitamins and minerals that boost your defences and abilities.
Disappears on Load.

Vitamins to look at:
ProficiencyBonusOverride(4)
]]
local abilityPoints     = 30         -- 30 is maximum.
local movementMeters    = 1000       -- The amount of movement.
local rollBonus         = 50         -- Bonus added to all dice rolls.
local resistanceLevel   = "Immune"   -- Resistant or Immune.
local damageRoll        = "12d12+20" -- 1d4, 1d4+3, etc.
local weaponEnchantment = "20"       -- Dagger +20.
local sightSpellRange   = 32
local damageTypeWeapon  = {
  "Bludgeoning",
  "Piercing",
  "Slashing",
  "Cold",
  "Necrotic",
  "Psychic",
  "Radiant",
}
local damageType = {
  "Bludgeoning",
  "Piercing",
  "Slashing",
  "Acid",
  "Cold",
  "Fire",
  "Force",
  "Lightning",
  "Necrotic",
  "Poison",
  "Psychic",
  "Radiant",
  "Thunder",
}
local ability = {
  "Strength",
  "Dexterity",
  "Constitution",
  "Intelligence",
  "Wisdom",
  "Charisma",
}
local skill = {
  "Acrobatics",
  "AirSpecialist",
  "AnimalHandling",
  "Arcana",
  "Athletics",
  "Brewmaster",
  "Crafting",
  "Deception",
  "DualWielding",
  "FireSpecialist",
  "History",
  "Insight",
  "Intimidation",
  "Investigation",
  "Leadership",
  "Luck",
  "MagicArmorMastery",
  "Medicine",
  "Perception",
  "Perseverance",
  "PhysicalArmorMastery",
  "Polymorph",
  "Ranged",
  "RangerLore",
  "Reason",
  "Religion",
  "Repair",
  "RogueLore",
  "Runecrafting",
  "Shield",
  "SingleHanded",
  "SleightOfHand",
  "Stealth",
  "Sulfurology",
  "Survival",
  "Thievery",
  "TwoHanded",
  "Performance",
  "Persuasion",
  "Wand",
  "WarriorLore",
  "WaterSpecialist"
}
rollType = {
  'MeleeWeaponAttack',
  'MeleeOffHandWeaponAttack',
  'RangedWeaponAttack',
  'RangedOffHandWeaponAttack',
  'MeleeSpellAttack',
  'RangedSpellAttack',
  'Attack',
  'SkillCheck',
  'RawAbility',
  'DeathSavingThrow',
  'SavingThrow',
}

boost = {
  "ActionResourcePreventReduction(Movement);",
  "Advantage(AllSavingThrows);",
  "Advantage(AllAbilities);",
  "Advantage(AttackRoll);",
  "WeaponProperty(Magical);",
  string.format("DarkvisionRangeMin(%s);", sightSpellRange),
  string.format("SightRangeMinimum(%s);", sightSpellRange),
  string.format("UnlockSpellVariant(DistantSpellCheck(),ModifyTargetRadius(Override,%s),);", sightSpellRange),
  string.format("UnlockSpellVariant(DistantTouchSpellCheck(),ModifyTargetRadius(Override,%s),ModifySpellFlags(Melee,0),);", sightSpellRange),
  string.format("ActionResourceOverride(Movement,%s,0);", movementMeters),
  string.format("WeaponEnchantment(%s);", weaponEnchantment),
}
for i = 1, #rollType do
  table.insert(boost, string.format("RollBonus(%s,%s);", rollType[i], rollBonus))
  table.insert(boost, string.format("MinimumRollResult(%s,%s);", rollType[i], 20))
end
for i = 1, #damageTypeWeapon do
  table.insert(boost, string.format("CharacterUnarmedDamage(%s, %s);", damageRoll, damageTypeWeapon[i]))
  table.insert(boost, string.format("CharacterWeaponDamage(%s, %s);", damageRoll, damageTypeWeapon[i]))
end
for i = 1, #damageType do
  table.insert(boost, string.format("Resistance(%s, %s);", damageType[i], resistanceLevel))
end
for i = 1, #ability do
  table.insert(boost, string.format("AbilityOverrideMinimum(%s, %s);", ability[i], abilityPoints))
  table.insert(boost, string.format("ProficiencyBonus(SavingThrow, %s);", ability[i]))
end
--[[ For some reason, the following breaks the rest.
for i = 1, #skill do
  table.insert(boost, string.format("ProficiencyBonus(Skill, %s);", skill[i]))
  table.insert(boost, string.format("ExpertiseBonus(%s);", skill[i]))
  table.insert(boost, string.format("Advantage(Skill,%s)", skill[i]))
end
]]
{$asm}
[ENABLE]
{$lua}
AddBoostsToPlayer(boost)
{$asm}
[DISABLE]
{$lua}
RemoveBoostsFromPlayer(boost)
{$asm}
I have had the suspicion that the game would crash if the execution takes too long. Maybe the loops cause enough extra overhead that it will crash, as opposed to just have everything static.
It's funny you mention that because I went a bit without crashing, but eventually did. I have narrowed it down to either what you have stated, that it takes too long to execute commands, or because of applying invalid boosts to character resources that they don't have. To add to that, you can't even add Bardic Inspirations to the code because it will render the entire command invalid if you do not have them. It seems there are some checks in the boost codes that trigger problems in memory when transitioning scenes or dialogues, which is a similar thing happening to dice rolls affected by MinimumRollResult()

I have also edited the above post and removed the unique resources from the code above, and I have had 0 crashes so far with that.

Post Reply

Who is online

Users browsing this forum: AmazonBot, Basch, Bing [Bot], gatagahshgatwe, Google [Bot], Google Adsense [Bot], jck1337, Jetadawoot, JKTrigger, KS212, NotAnyoneThatUKnow, yourlover, zeng954