WrenchInthePlan Posted January 7, 2021 Share Posted January 7, 2021 I've been trying to make a card that is similar to Efficient Disposal, except it applies Trauma to enemies. Here's the code for the move so far: Spoiler lyra_rapid_tossing = { name = "Rapid Tossing", rarity = CARD_RARITY.UNCOMMON, anim = "taunt", desc = "Ability: When you {DISCARD} or {EXPEND} a card, apply 1 {TRAUMA} to a random enemy.", icon = "battle/right_in_the_face.tex", flavour = "'When you're done with something, be sure to toss it in your target's face. It's only polite!'", flags = CARD_FLAGS.SKILL | CARD_FLAGS.EXPEND, cost = 2, target_type = TARGET_TYPE.SELF, OnPostResolve = function( self, battle, attack) local con = self.owner:AddCondition( "lyra_rapid_tossing", 1, self ) if con then con.ignore_card = self end end, condition = { desc = "Whenever you discard or expend a card, apply {1} {TRAUMA} to a random enemy.", desc_fn = function( self, fmt_str ) return loc.format(fmt_str, self.trauma_amt * self.stacks) end, trauma_amt = 1, Trigger = function( self, battle ) local target_fighters = {} battle:CollectRandomTargets( target_fighters, self.owner:GetEnemyTeam().fighters, 1 ) for i=1, #target_fighters do hit.target:AddCondition("TRAUMA", self.trauma_amt, self) end end, event_handlers = { [ BATTLE_EVENT.CARD_DISCARDED ] = function( self, card, battle ) self:Trigger( battle ) end, [ BATTLE_EVENT.CARD_EXPENDED ] = function( self, card, battle ) if card ~= self.ignore_card then self:Trigger( battle ) end end, }, }, }, However, when I try to use the card in testing, this appears: Any idea what I'm doing wrong here? Link to comment Share on other sites More sharing options...
RageLeague Posted January 7, 2021 Share Posted January 7, 2021 This is the dumbest thing. CARD_DISCARDED trigger is a function that takes self, card, engine, while CARD_EXPENDED trigger is a function that takes self, engine, card. You passed in the wrong argument. Link to comment Share on other sites More sharing options...
WrenchInthePlan Posted January 7, 2021 Author Share Posted January 7, 2021 The code I copied from the Efficient Disposal cards in sal_actions.lua uses self, card, battle for the function, however. EDIT: Here's the code for Serial Disposal, for reference: Spoiler efficient_disposal_plus = { name = "Serial Disposal", desc = "{ABILITY}: Whenever you <#UPGRADE>discard or {EXPEND}</> a card, deal {1} damage to a random enemy.", desc_fn = function( self, fmt_str ) return loc.format(fmt_str, self.damage_amt) end, damage_amt = 2, condition = { desc = "Whenever you discard or {EXPEND} a card, deal <#HILITE>{1}</> damage to a random enemy.", desc_fn = function( self, fmt_str ) return loc.format(fmt_str, self.stacks) end, Trigger = function( self, battle ) local target_fighters = {} battle:CollectRandomTargets( target_fighters, self.owner:GetEnemyTeam().fighters, 1) self.owner:BroadcastEvent( BATTLE_EVENT.CUSTOM_BEGIN, self ) self.owner:BroadcastEvent( BATTLE_EVENT.PLAY_ANIM, "targetpractice1", true ) for i=1, #target_fighters do target_fighters:ApplyDamage( self.stacks, self.owner, nil, nil, { "discard" } ) end self.owner:BroadcastEvent( BATTLE_EVENT.CUSTOM_END, self ) end, event_handlers = { [ BATTLE_EVENT.CARD_DISCARDED ] = function( self, card, battle ) self:Trigger( battle ) end, [ BATTLE_EVENT.CARD_EXPENDED ] = function( self, battle, card ) if card ~= self.ignore_card then self:Trigger( battle ) end end, }, }, Link to comment Share on other sites More sharing options...
ZeppMan217 Posted January 7, 2021 Share Posted January 7, 2021 2 hours ago, WrenchInthePlan said: [ BATTLE_EVENT.CARD_DISCARDED ] = function( self, card, battle ) self:Trigger( battle ) end, [ BATTLE_EVENT.CARD_EXPENDED ] = function( self, card, battle ) if card ~= self.ignore_card then Your code 1 hour ago, WrenchInthePlan said: [ BATTLE_EVENT.CARD_DISCARDED ] = function( self, card, battle ) self:Trigger( battle ) end, [ BATTLE_EVENT.CARD_EXPENDED ] = function( self, battle, card ) if card ~= self.ignore_card then Serial Disposal code. Link to comment Share on other sites More sharing options...
WrenchInthePlan Posted January 7, 2021 Author Share Posted January 7, 2021 So it turns out that I was just listing things in the wrong order. Huh. After changing it so it matches the order in Serial Disposal (and changing the code so it behaves like Resonator when the effect is triggered, since it's a status effect and not damage) Rapid Tossing is now working properly. Thanks for the help. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.