[Experimental] - 439181


Recommended Posts

  • Developer

Hey Grifters!

It's great to see all of the players enjoying smith in the metrics and feedbacks. Thanks for all of your help shaking out the bugs, and your kind words.

But!

We are not done yet! This is the first experimental update of the next cycle (coming out in December). This update is intended to be a quality-of-life and system tuning one, as we work on some longer-term content for Smith. You'll probably be able to play day 3 in experimental sometime soonish, but it will be very rough around the edges and not ready for wide release until the January update. 

 

GAMEPLAY

  • Fix recruitment of Shel in daily cave.
  • fix issue with goon tracking when losing the negotiation in smith's day 1 boss fight.
  • Set up a GRITTY battle condition
  • Set up a Grit Bounty argument
  • Hooked up the promoted wealthy merchant (won't show up anywhere yet)
  • Added some preliminary grit upgrades
  • Added the grit_handler aspect
  • Added grit tracking in game_profile.lua
  • Added an event to introduce grit 
  • Added a Grit store for Sal
  • Added the Grit Upgrade graft type
  • Added two grit upgrades(grafts)
  • added placeholder smith day 3 + assorted story characters

CARDS

  • Fixed bug where Double Edge didn't work correctly in negotiations with the NO_CORE_RESOLVE flag
  • Fixed hand issue for new builds

MISC

  • Set up wealthy promoted skins and epxorted portraits
  • Daily leaderboards for Steam.  Currently downloads scores around your score, will be changing to friends only.

UI

  • Adding defense-gain animation fx
  • Adding the animated Defense icon to the healthbar
  • Showing a hit animation on the health bars when taking damage

 

FIXES FROM THE RELEASE HOTFIX:

  • fix sequence break in smith_tei_shoot_the_messenger.lua
  • Move a couple plax markers down to avoid conflicting with the top bar
  • fix spelling, typos
  • fixed luminiciate hand issue
  • Fix reference to stacks.
  • Fix the Vroc kickback not being trained.
  • Hide DetailsPanel initially before any run is selected.
  • give quest rewards for side_smith_render_unto_hesh.lua and side_smith_sponsorship_deal.lua
  • fix sandwich quest followup background override
  • fix hidden character in EXT_SMITH_ISOLATED_DESERT
  • make the party store quest resilient in the face of the proprietor dying.
  • fix issue with goon tracking when losing the negotiation in smith's day 1 boss fight.
  • Fixed bug where oppo_fight_club.lua could select cards that were already upgraded
  • fix missing dialog in smith_tei_recruit_filter.lua
  • rename an npc that was using a duplicate name
  • The second Twin Boss is now created as a SkinnedAgent so it has the correct name and, most importantly, hair colour
  • Showing both names on the battle preview for boss pairs
  • Fix crash with Brut's Bat if under a condition that caused you to attack random targets.
  • Fix crash if you have a VIP token but the proprietor at the Oshnudrome is no more.
  • Fix lua crash iterating audio output devices if audio failed to initialize.
  • Render Unto Hesh: Fix potential crash if you kill quest target.
  • Fix map_tags on PEARL_FANCY_EATS.
  • Sponsorship Deal: Fix missing convo-end calls after intimidating a target.
  • Brag cards produced by Braggart now flagged as temporary.
  • Basic cards now also have temporary nameplate fx.
  • make chemist dialog more responsive to your actions

View full update

  • Like 5
  • Thanks 1
  • GL Happy 3
Link to comment
Share on other sites

Apparently, as if perks aren't enough, we now have grits, which, from the looks of it, are persistent upgrades.

You get grit from bonus quest rewards, killing enemy with gritty condition, or destroying a grit bounty.

You spend grit to gain persistent upgrades, like increased max resolve, health, bonus starting xp, bonus shills.

Right now there's like basically nothing there, it's just a framework.

Spoiler

local GRIT_UPGRADES =
{
    grit_health_upgrade = 
    {
        desc = "Increase your maximum health",

        values = { 2, 4, 6, 8, 10 },
        upgrade_costs = { 5, 10, 20, 40, 80 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
            local health_vals = self:GetDef().values
            self.owner:GetAspect("health"):DeltaMax( health_vals[math.min( #health_vals, level )] )
        end,

        DeltaUpgrade = function( self, new_level )
            local health_vals = self:GetDef().values
            local difference = self.values[math.min( #health_vals, new_level )]  - health_vals[math.min( #health_vals, self.userdata.level )]
            self.owner:GetAspect("health"):DeltaMax( difference )
            self.userdata.level = new_level
        end,
    },

    grit_resolve_upgrade = 
    {
        desc = "Increase your maximum Resolve",

        values = { 1, 2, 3, 4, 5, 6 },
        upgrade_costs = { 5, 10, 20, 40, 80 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
            local resolve_vals = self:GetDef().values
            TheGame:GetGameState():GetCaravan():DeltaMaxResolve( resolve_vals[math.min( #resolve_vals, level )] )
        end,

        DeltaUpgrade = function( self, new_level )
            local resolve_vals = self:GetDef().values
            local difference = resolve_vals[math.min( #resolve_vals, new_level )]  - resolve_vals[math.min( #resolve_vals, self.userdata.level )]
            TheGame:GetGameState():GetCaravan():DeltaMaxResolve( difference )
            self.userdata.level = new_level
        end,
    },

    grit_starting_shills = 
    {
        desc = "Start the game with additional Shills.",

        values = { 10, 20, 30, 40 },
        upgrade_costs = { 5, 10, 20, 40, 80 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
            local vals = self:GetDef().values
            TheGame:GetGameState():GetCaravan():AddMoney(vals[math.min( #vals, level )])
        end,

        DeltaUpgrade = function( self, new_level )
            local vals = self:GetDef().values
            local difference = vals[math.min( #vals, new_level )]  - vals[math.min( #vals, self.userdata.level )]
            if difference > 0 then
                TheGame:GetGameState():GetCaravan():AddMoney(difference)
            end
            self.userdata.level = new_level
        end,
    },

    grit_battle_card_xp =
    {
        desc = "Basic battle cards start with bonus XP.",

        values = { 1, 2, 3 },
        upgrade_costs = { 10, 25, 75 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
        end,

        DeltaUpgrade = function( self, new_level )
            local vals = self:GetDef().values
            local difference = vals[math.min( #vals, new_level )]  - vals[math.min( #vals, self.userdata.level )]
            if difference > 0 then
                if self.owner.battler then
                    for i,card in ipairs(self.owner.battler.cards) do
                        local cur, max = card:GetXP()
                        if card.rarity == CARD_RARITY.BASIC and max > 0 and cur < max then
                            card:AddXP(vals[math.min(#vals, level)])
                        end
                    end
                end
            end
            self.userdata.level = new_level
        end,

        event_handlers = 
        {
            [ "card_added" ] = function( self, card )
                if is_instance( card, Battle.Card ) and card.owner == self.owner and card:GetMaxXP() ~= nil and card.rarity == CARD_RARITY.BASIC then
                    local vals = self:GetDef().values
                    card:AddXP(vals[math.min(#vals, self.userdata.level)], true)
                end
            end,
        },
    },

    grit_negotiation_card_xp =
    {
        desc = "Basic negotiation cards start with bonus XP.",

        values = { 1, 2, 3 },
        upgrade_costs = { 10, 25, 75 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
        end,

        DeltaUpgrade = function( self, new_level )
            local vals = self:GetDef().values
            local difference = vals[math.min( #vals, new_level )]  - vals[math.min( #vals, self.userdata.level )]
            if difference > 0 then
                if self.owner.negotiator then
                    for i,card in ipairs(self.owner.negotiator.cards) do
                        local cur, max = card:GetXP()
                        if card.rarity == CARD_RARITY.BASIC and max > 0 and cur < max then
                            card:AddXP(vals[math.min(#vals, level)])
                        end
                    end
                end
            end
            self.userdata.level = new_level
        end,

        event_handlers = 
        {
            [ "card_added" ] = function( self, card )
                if is_instance( card, Battle.Card ) and card.owner == self.owner and card:GetMaxXP() ~= nil and card.rarity == CARD_RARITY.BASIC then
                    local vals = self:GetDef().values
                    card:AddXP(vals[math.min(#vals, self.userdata.level)], true)
                end
            end,
        },
    },

    grit_battle_resolve =
    {
        desc = "Recover resolve after every battle.",

        values = { 2, 3, 4, 5 },
        upgrade_costs = { 15, 30, 60, 120 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
        end,

        DeltaUpgrade = function( self, new_level )
            self.userdata.level = new_level
        end,

        event_handlers =
        {
            [ "award_loot" ] = function( self, loot, data)
                if data.battle then
                    local vals = self:GetDef().values
                    loot.resolve = (loot.resolve or 0) + vals[math.min(#vals, self.userdata.level)]
                end
            end,
        },
    },

    grit_negotiation_health =
    {
        desc = "Recover health after every negotiation.",

        values = { 3, 5, 6, 8 },
        upgrade_costs = { 15, 30, 60, 120 },

        ApplyUpgrade = function( self, level )
            self.userdata.level = level
        end,

        DeltaUpgrade = function( self, new_level )
            self.userdata.level = new_level
        end,

        event_handlers =
        {
            [ "resolve_battle" ] = function( self, battle, primary_enemy, repercussions )
                local vals = self:GetDef().values
                TheGame:GetGameState():GetPlayerAgent():GetAspect("health"):Delta(vals[math.min(#vals, self.userdata.level)])
            end,
        },
    },
}

 

 

  • Like 4
Link to comment
Share on other sites

What do you think "dev branch" means?

You can maybe(?) use mods to set the value of global variable "BRANCH" to "dev". Not sure how well that will work for you.

You also have to edit profile.lua so that it says:

Spoiler

grit_points = {
  SAL = 0,
},

 

In other news, when I'm looking through the game files, I saw that a twitch mode is being worked on.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now