RageLeague

Trying to replicate Sequencer in negotiation doesn't work well

Recommended Posts

RageLeague    1491

I am trying to add a sequencer equivalent (restore all charges to an item anywhere in your deck) in negotiation. For some reason, it will either show a card on the screen that can never go away or be played (if you choose a card from hand, unlike in battle), or it just hard crash the game (when trying to do something like card:TransferCard(minigame.trash_deck) on the chosen card). There seem to be some issues.

Share this post


Link to post
Share on other sites
rooks    263

Do you think you could post or DM me the script for the card?  I can try reproducing the issue and possibly resolve what's happening.

  • Thanks 1

Share this post


Link to post
Share on other sites
RageLeague    1491

Okay, here is the replicated card

    sequencer_negotiation =
    {
        name = "Sequencer",
        flavour = "'Universal energy my friend, that's what the blue is all about.'",
        desc = "Restore all uses to an item card in your hand.",
        icon = "battle/sequencer.tex",

        item_tags = ITEM_TAGS.UTILITY,
        rarity = CARD_RARITY.UNCOMMON,

        cost = 1,
        max_charges = 3,

        battle_counterpart = "sequencer",

        flags = CARD_FLAGS.REPLENISH | CARD_FLAGS.EXPEND,

        GetCardsOwnedBySelf = function(self)
            if self.negotiator:IsPlayer() and self.engine then
                return table.merge( self.engine.hand_deck.cards, self.engine.discard_deck.cards, self.engine.draw_deck.cards )
            end
            -- return self.engine:GetHandDeck()
        end,

        CanPlayCard = function( self, card, engine, target )
            if not self:GetCardsOwnedBySelf() then
                return false, CARD_PLAY_REASONS.NO_VALID_TARGETS
            end
            for i, card in ipairs(self:GetCardsOwnedBySelf()) do
                if card:IsPartiallySpent() then
                    return true
                end
            end
            return false, CARD_PLAY_REASONS.NO_VALID_TARGETS
        end,

        OnPostResolve = function( self, minigame, targets )
            local card = minigame:ChooseCardsFromTable( self:GetCardsOwnedBySelf(), 1, 1, Negotiation.Card.IsPartiallySpent, LOC "CARD_ENGINE.CHOOSE_SPENT_CARD", self )[1]
            if card then
                local original_deck = card.deck
                original_deck:RemoveCard(card)
                -- card:TransferCard(minigame.trash_deck)
                -- minigame:GetTrashDeck():InsertCard( card )
                card:RestoreCharges()
                -- card.show_dealt = false
                -- minigame:DealCard( card, original_deck )
                card:TransferCard(original_deck)
                -- card:NotifyChanged()
            end
        end,
    },

 

Share this post


Link to post
Share on other sites
rooks    263

I managed to reproduce both those issues (card remaining on screen, and hard crash) and will be pushing through the fixes, first on experimental, in the coming days.  Thanks!

 

  • Thanks 1
  • Potato Cup 1

Share this post


Link to post
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