diff --git a/Aarkenell/12 classes in one b/Aarkenell/12 classes in one
index 0583c00..f0e4b5e 100644
--- a/Aarkenell/12 classes in one
+++ b/Aarkenell/12 classes in one
@@ -6,7 +6,14 @@ require "hardai"
require "mediumai"
require "easyai"
---[[ Updated 12.04.2024 by Aarkenell
+--[[ Updated 28/2/2025 by Aarkenell
+Terramancer & Pyromancer now have unique cards generated for eacFh player, for cards that have custom counters. This enables mirror matches with these classes.
+Dynamic text added to Pyro & Terra cards with counters.
+]]
+
+--[[
+Updates
+19.04.2025 - art and cardframe decapitalisation post WWG patch
]]
-- Game start --
@@ -18,51 +25,126 @@ local function chooseStart()
upperTitle = "Welcome! How would you like to proceed?",
lowerTitle = "",
--- 1.1 choice
- effectFirst= pushChoiceEffectWithTitle(
- {
-
- choices = {
- -- 1.1a choice - choose custom
- {
- effect = moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, deckPloc)).union(selectLoc(loc(currentPid, skillsPloc)).union(selectLoc(loc(currentPid, reservePloc))
+-- 1.1 choose class
+ effectFirst = pushChoiceEffect(
+{
+choices = {
+-- Choice 1: Classes by Aarkenell
+ {
+ effect = moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, deckPloc)).union(selectLoc(loc(currentPid, skillsPloc)).union(selectLoc(loc(currentPid, reservePloc))
+ .union(selectLoc(loc(currentPid, buffsPloc)).where(isCardType(ogreType).Or(isCardType(orcType)).Or(isCardType(elfType).Or(isCardType(dwarfType).Or(isCardType(smallfolkType)).Or(isCardType(halfDemonType)).Or(isCardType(magicArmorType)).Or(isCardName("smallfolk_hide_buff"))))))))))
+ .seq(gainCombatEffect(-1))
+ .seq(setPlayerNameEffect("Unknown", currentPid))
+ .seq(setPlayerAvatarEffect("assassin", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ --.seq(createCardEffect(choose_lich_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_brewmaster_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_thandarlorian_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_terramancer_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_pyromancer_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_cryomancer_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_apothecary_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_demonologist_carddef(), loc(currentPid, asidePloc)))
+
+ .seq(moveTarget(handPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(waitForClickEffect("Please play the card corresponding to the class you wish to play.", "")),
+
+ layout = createLayout({
+ name = "Classes by Aarkenell",
+ art = "art/epicart/the_people_s_champion",
+ xmlText=[[
+
+
+
+
+ ]]
+ }),
+
+ tags = {}
+ },
+
+-- Choice 2: Class by other Designers
+{
+ effect = moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, deckPloc)).union(selectLoc(loc(currentPid, skillsPloc)).union(selectLoc(loc(currentPid, reservePloc))
.union(selectLoc(loc(currentPid, buffsPloc)).where(isCardType(ogreType).Or(isCardType(orcType)).Or(isCardType(elfType).Or(isCardType(dwarfType).Or(isCardType(smallfolkType)).Or(isCardType(halfDemonType)).Or(isCardType(magicArmorType)).Or(isCardName("smallfolk_hide_buff"))))))))))
.seq(gainCombatEffect(-1))
.seq(setPlayerNameEffect("Unknown", currentPid))
.seq(setPlayerAvatarEffect("assassin", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(50))
- .seq(createCardEffect(choose_S_and_R_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_paladin_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_witch_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_shaman_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_king_midas_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_brewmaster_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_thandarlorian_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_terramancer_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_pyromancer_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_cryomancer_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_apothecary_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(choose_demonologist_carddef(), loc(currentPid, asidePloc)))
- .seq(moveTarget(handPloc).apply(selectLoc(loc(currentPid, asidePloc))))
- .seq(waitForClickEffect("Please play the card corresponding to the class you wish to play.", ""))
- .seq(waitForClickEffect("Note: Game does not currently work properly if both players choose Pyromancer or both choose Terramancer.")),
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(choose_trickster_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_S_and_R_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_paladin_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_witch_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_shaman_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(choose_king_midas_carddef(), loc(currentPid, asidePloc)))
+
+ .seq(moveTarget(handPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(waitForClickEffect("Please play the card corresponding to the class you wish to play.", "")),
+
+ layout = createLayout({
+ name = "Classes by Other Designers",
+ art = "art/epicart/insurgency",
+ xmlText=[[
+
+
+
+
+ ]]
+ }) ,
+
+ tags = {}
+ },
+
+-- Choice 3: Random
+{
+ effect = moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, deckPloc)).union(selectLoc(loc(currentPid, skillsPloc)).union(selectLoc(loc(currentPid, reservePloc))
+ .union(selectLoc(loc(currentPid, buffsPloc)).where(isCardType(ogreType).Or(isCardType(orcType)).Or(isCardType(elfType).Or(isCardType(dwarfType).Or(isCardType(smallfolkType)).Or(isCardType(halfDemonType)).Or(isCardType(magicArmorType)).Or(isCardName("smallfolk_hide_buff"))))))))))
+ .seq(sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc))))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
+ .seq(randomEffect({
+ valueItem(1, createCardEffect(choose_demonologist_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_apothecary_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_cryomancer_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_pyromancer_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_terramancer_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_thandarlorian_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_brewmaster_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_paladin_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_shaman_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_king_midas_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_witch_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_S_and_R_carddef(), currentHandLoc)),
+ valueItem(1, createCardEffect(choose_trickster_carddef(), currentHandLoc)),
+ --valueItem(1, createCardEffect(choose_lich_carddef(), currentHandLoc))
+ }))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(noUndoEffect()),
layout = createLayout({
- name = "Pick a custom class",
- art = "art/T_Storm_Siregar",
- xmlText=[[
-
-
-
+ name = "Random Class",
+ art = "art/t_confused_apparition",
+ xmlText=[[
+
+
+
+
+
+
+
+
-
]]
}),
tags = {}
- },
- -- 1.1b choice - choose standard
+ },
+
+-- Choice 4- choose standard
{
effect = pushChoiceEffectWithTitle(
{
@@ -75,7 +157,7 @@ level 3 Custom Characters to play." fontsize="26"/>
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -96,7 +178,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -115,9 +197,10 @@ Start playing." fontsize="30" flexiblewidth="1" />
upperTitle = "Confirm your choice. Do you want to use your standard Hero?",
lowerTitle = ""
}),
+ condition = getHeroLevel(currentPid).lte(4),
layout = createLayout({
name = "Selected class",
- art = "art/T_All_Heroes",
+ art = "art/t_storm_siregar",
xmlText=[[
@@ -126,14 +209,11 @@ Start playing." fontsize="30" flexiblewidth="1" />
]] }),
tags = {}
- }
- },
-
- upperTitle = "Make your choice.",
- lowerTitle = "Do you want to play as a custom class, or use the character you picked when starting the game?",
-
- }),
--- 1.2 choice
+ }
+}
+}
+),
+-- 1.2 choice - learn about the mod
effectSecond = pushChoiceEffectWithTitle(
{
@@ -144,18 +224,28 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout({
name = "Updates to this mod",
- art = "art/T_fighter_sharpening_stone",
- xmlText=[[
+ art = "art/t_fighter_sharpening_stone",
+ xmlText=[[
+
-
+
- ]]
+ ]]
+
}),
tags = {}
},
@@ -164,79 +254,47 @@ Demon Hunter custom card added to market deck
effect = nullEffect(),
layout = createLayout({
name = "Other mods to try",
- art = "art/treasures/T_spyglass",
+ art = "art/treasures/t_spyglass",
xmlText=[[
-
+
+<size=90%>Look out for these games in the custom lobby, or join the RealmsRising Discord to request custom challenges." fontsize="14"/>
]] }),
tags = {}
},
-
- -- 1.2c choice - Resolving game crashes
- {
- effect = storyTellEffectWithPortrait("origins_flawless_track", "Hi Folks – Aarkenell here – thanks for playing this mod. I hope you’re enjoying it.")
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "If you play HR on a mobile device and you’ve been playing custom games for a while"))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "you may notice that your games take longer to load or that the app crashes if you try to play more than one custom game in your queue."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "A few community members and I have flagged this issue with the WWG team."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "We know many people play exclusively on mobile, and this issue really detracts from your play experience."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "We don’t know if/when they will be able to resolve this. So in the meantime, here’s a temporary fix:"))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "If you encounter game crashes whilst playing custom games, uninstalling and reinstalling the HR app will fix this issue. "))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "At least until you play a bunch more custom games."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "(I play a lot of custom games and have only had to reinstall the game 2-3 times in about 18 months.)"))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "This will, of course, mean the app needs to download all of the file packages again, "))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "so you may want to do this whilst you’ve got access to a decent wifi connection. "))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "But at least you’ll be able to get back to your regular playing experience."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "If/when WWG inform us of a more permanent fix, I’ll let you know."))
- .seq(storyTellEffectWithPortrait("origins_flawless_track", "Until then, happy gaming!"))
- .seq(leftStoryTellEffectWithPortrait("origins_flawless_track", "Now, please hit 'Undo' to return to the menu."))
- ,
-
- layout = createLayout({
- name = "Resolving game crashes",
- art = "art/T_word_of_power",
- xmlText=[[
-
-
-
-
-
- ]]
- }),
- tags = {}
- },
- -- 1.2d choice - Community news
+
+ -- 1.2c choice - Community news
{
- effect = storyTellEffectWithPortrait("ogre", "Hi! I’m Rob d’Ogrety, CEO of ‘Why’s Wizard Games?’")
- .seq(leftStoryTellEffectWithPortrait("inquisition", "And I’m Dwarfin Kastle – creator of the award-winning deckbuilding game about growing trees in space – Star Elms."))
- .seq(storyTellEffectWithPortrait("ogre", "We just wanted to take a moment to say how much we love the community that has sprung up around Hero Realms…"))
- .seq(leftStoryTellEffectWithPortrait("inquisition", "We love you!"))
- .seq(storyTellEffectWithPortrait("ogre", " …and how much we love the experiments and new ideas being offered through custom lua scripting."))
- .seq(leftStoryTellEffectWithPortrait("inquisition", "Yeah! We love lua!"))
- .seq(leftStoryTellEffectWithPortrait("inquisition", "Lua, Lua! Oh baby! Me gotta go! Aye-yi-yi-yi!"))
- .seq(storyTellEffectWithPortrait("ogre", " Thanks DK."))
- .seq(storyTellEffectWithPortrait("ogre", "Be sure to join the Realms Rising server on Discord to share your feedback on this mod and to discover new custom games to play."))
- .seq(storyTellEffectWithPortrait("ogre", "And listen to the Sparks and Recreation podcast for information on Community events, meta-analysis, and everything Hero Realms."))
- .seq(storyTellEffectWithPortrait("ogre", "Or jump over to RealmsRising.com for in-depth articles on strategy and gameplay."))
+ effect = storyTellEffectWithPortrait("ogre_fighter_male_02", "Hi! I’m Rob d’Ogrety, CEO of ‘Why’s Wizard Games?’")
+ .seq(leftStoryTellEffectWithPortrait("dwarf_fighter_male_02", "And I’m Dwarfin Kastle – creator of the award-winning deckbuilding game about growing trees in space – Star Elms."))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", "We just wanted to take a moment to say how much we love the community that has sprung up around Hero Realms…"))
+ .seq(leftStoryTellEffectWithPortrait("dwarf_fighter_male_02", "We love you!"))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", " …and how much we love the experiments and new ideas being offered through custom lua scripting."))
+ .seq(leftStoryTellEffectWithPortrait("dwarf_fighter_male_02", "Yeah! We love lua!"))
+ .seq(leftStoryTellEffectWithPortrait("dwarf_fighter_male_02", "Lua, Lua! Oh baby! We gotta code! Aye-yi-yi-yi!"))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", " Thanks DK."))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", "Be sure to join the Realms Rising server on Discord to share your feedback on this mod and to discover new custom games to play."))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_0", "And listen to the Sparks and Recreation podcast for information on Community events, meta-analysis, and everything Hero Realms."))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", "Or jump over to RealmsRising.com for in-depth articles on strategy and gameplay."))
.seq(storyTellEffectWithPortrait("origins_flawless_track", "And if you have ideas for new custom classes or scenarios you’d like to see, drop me, Aarkenell, a message in the Realms Rising Discord."))
- .seq(storyTellEffectWithPortrait("ogre", "Whether you join the Realms Rising community or not, we hope you keep enjoying the game and all the custom content from our great community. "))
- .seq(storyTellEffectWithPortrait("ogre", "Bye for now."))
- .seq(leftStoryTellEffectWithPortrait("inquisition", "Lua, Lua! Oh baby! We gotta go. Bye-yi-yi-yi!"))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", "Whether you join the Realms Rising community or not, we hope you keep enjoying the game and all the custom content from our great community."))
+ .seq(storyTellEffectWithPortrait("ogre_fighter_male_02", "Bye for now."))
+ .seq(leftStoryTellEffectWithPortrait("dwarf_fighter_male_02", "Lua, Lua! Oh baby! We gotta go. Bye-yi-yi-yi!"))
.seq(storyTellEffectWithPortrait("origins_flawless_track", "Please hit 'Undo' to return to the menu."))
,
layout = createLayout({
name = "Community News",
- art = "art/T_borg_ogre_mercenary",
+ art = "art/t_borg_ogre_mercenary",
xmlText=[[
@@ -254,10 +312,10 @@ Here's how to fix it." fontsize="26"/>
}),
--- 1.1 layout
+-- 1.1 layout - choose class
layoutFirst = createLayout({
name = "To Battle!",
- art = "art/T_Unify_Apsara",
+ art = "art/t_unify_apsara",
xmlText=[[
@@ -267,17 +325,17 @@ Here's how to fix it." fontsize="26"/>
]]
}),
--- 1.2 layout
+-- 1.2 layout - learn about the mod
layoutSecond = createLayout({
name = "Updates & Info",
- art = "art/treasures/T_Magic_Scroll_Souveraine",
+ art = "art/treasures/t_magic_scroll_souveraine",
xmlText=[[
@@ -290,38 +348,140 @@ end
-- Custom Class Selection cards
-function choose_demonologist_carddef()
+function choose_lich_carddef()
+
+ local ef_Corruption = createCardEffect(lich_corruption_carddef(), loc(currentPid, skillsPloc))
+ .seq(sacrificeSelf())
+
+ local corruption20buff = createGlobalBuff({
+ id="corruption20buff",
+ name = "Corruption",
+ abilities = {
+ createAbility({
+ id= "corruption20buff",
+ trigger = deckShuffledTrigger,
+ effect = ifElseEffect(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, inPlayPloc))).union(selectLoc(loc(currentPid, deckPloc))).where(isCardType(minionType).invert()).count().gte(20), ef_Corruption, nullEffect()),
+ }),
+ },
+ buffDetails = createBuffDetails({
+ name = "Corruption",
+ art = "art/t_charing_guardian",
+ text = "When you shuffle your deck, if you have 20 or more cards in your deck, hand and in play (not including minions), gain the Corruption skill."
+ })
+ })
+
+
+ local Grimoirebuff = createGlobalBuff({
+ id="Grimoirebuff",
+ name = "Grimoire",
+ abilities = {
+ createAbility({
+ id= "Grimoirebuff",
+ trigger = startOfTurnTrigger,
+ effect = nullEffect(),
+ }),
+ },
+ buffDetails = createBuffDetails({
+ name = "Grimoire",
+ art = "art/t_rayla_endweaver",
+ text = "You start with 10 cards (8 unique minions) in your Grimoire. Whenever you perform a Summoning, randomly take one card from your Grimoire and put it into play. When a minion is stunned it returns to your Grimoire."
+ })
+ })
+
+ local souljarbuff = createGlobalBuff({
+ id="souljarbuff",
+ name = "Soul Jar",
+ abilities = {
+ createAbility({
+ id= "souljarbuff",
+ trigger = startOfTurnTrigger,
+ effect = nullEffect(),
+ }),
+ },
+ buffDetails = createBuffDetails({
+ name = "Soul Jar",
+ art = "art/treasures/t_wizard_elixir_blue",
+ text = "Each game 1 of 6 Soul Jars are randomly chosen to determine the Lich's Health and Skill."
+ })
+ })
+
+
+ --[[local ef_Control = transformTarget("control_skill").apply(selectLoc(loc(currentPid, skillsPloc)).where(isCardName("corruption_skill")).take(1))
+ .seq(sacrificeSelf())
+
+ local control30buff = createGlobalBuff({
+ id="control30buff",
+ name = "Control",
+ abilities = {
+ createAbility({
+ id= "control30buff",
+ trigger = deckShuffledTrigger,
+ effect = ifElseEffect(selectLoc(loc(currentPid, handPloc)).union(selectLoc(loc(currentPid, inPlayPloc))).union(selectLoc(loc(currentPid, deckPloc))).where(isCardType(minionType).invert()).count().gte(30), ef_Control, nullEffect()),
+ }),
+ },
+ buffDetails = createBuffDetails({
+ name = "Control",
+ art = "art/t_charing_guardian",
+ text = "When you shuffle your deck, if you have 30 or more cards in your deck, hand and in play (not including minions), replace Corruption skill with the Control skill."
+ })
+ })
+]]
return createDef({
- id="choose_demonologist",
- name="Choose the Demonologist",
+ id="choose_lich",
+ name="Choose the Lich",
types={noStealType, itemType},
cardTypeLabel = "Item",
playLocation = castPloc,
acquireCost=0,
abilities = {
createAbility({
- id="choose_demonologist",
+ id="choose_lich",
trigger= onPlayTrigger,
playAllType = noPlayPlayType,
effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
- .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)))) --here--
- .seq(setPlayerNameEffect("Demonologist", currentPid))
- .seq(setPlayerAvatarEffect("ruinos_zealot", currentPid))
- .seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(50))
- .seq(createCardEffect(demonologist_summon_demon_carddef(), currentSkillsLoc))
- .seq(createCardEffect(demonologist_summon_demon_master_carddef(), currentSkillsLoc))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc))) --here--
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
+ .seq(setPlayerNameEffect("Lich", currentPid))
+ .seq(setPlayerAvatarEffect("WarInTheWild/krythos_master_vampire", currentPid))
+ --buffs
+ .seq(createCardEffect(corruption20buff, loc(currentPid, buffsPloc)))
+ .seq(createCardEffect(Grimoirebuff, loc(currentPid, buffsPloc)))
+ .seq(createCardEffect(souljarbuff, loc(currentPid, buffsPloc)))
+ --.seq(createCardEffect(control30buff, loc(currentPid, buffsPloc)))
+
+ --soul jar skill
+ .seq(randomEffect({
+ valueItem(1, createCardEffect(lich_SJ_DI_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(35).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(35))),
+ valueItem(1, createCardEffect(lich_SJ_HoE_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(30).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(30))),
+ valueItem(1, createCardEffect(lich_SJ_UR_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(55).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(55))),
+ valueItem(1, createCardEffect(lich_SJ_M_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(45).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(45))),
+ valueItem(1, createCardEffect(lich_SJ_V_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(50))),
+ valueItem(1, createCardEffect(lich_SJ_IW_carddef(), loc(currentPid, skillsPloc)).seq(gainMaxHealthEffect(currentPid, const(40).add(getPlayerMaxHealth(currentPid).negate()))).seq(gainHealthEffect(40))),
+ }))
+
+ --deck
+ .seq(createCardEffect(lich_soul_diamond_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(lich_soul_diamond_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(demonologist_shadow_feeder_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(demonologist_void_guard_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(demonologist_lesser_devourer_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(demonologist_shadow_gem_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(ruby_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(ruby_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(lich_frozen_touch_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(lich_soul_crush_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(lich_minor_summoning_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(lich_major_summoning_carddef(), loc(currentPid, asidePloc)))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ --grimoire minions
+ .seq(createCardEffect(lich_abomination_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_banshee_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_ghoul_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_revenant_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_skeleton_horde_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_skeleton_horde_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_skeleton_horde_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_wall_of_bones_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_wall_of_fire_minion_carddef(), loc(nil, nullPloc)))
+ .seq(createCardEffect(lich_zombie_minion_carddef(), loc(nil, nullPloc)))
+ --setup
.seq(shuffleEffect(currentDeckLoc))
.seq(sacrificeTarget().apply(selectSource()))
.seq(pushChoiceEffectWithTitle(
@@ -335,7 +495,7 @@ function choose_demonologist_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -356,7 +516,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -372,70 +532,70 @@ Start playing." fontsize="30" flexiblewidth="1" />
tags = {}
}
},
- upperTitle = "Confirm your choice. Do you want to use the Demonologist?",
+ upperTitle = "Confirm your choice. Do you want to use the lich?",
lowerTitle = ""
}))
})
},
layout = createLayout({
- name = "Demonologist",
- art = "art/T_Tyrannor_The_Devourer",
- frame = "frames/Coop_Campaign_CardFrame",
+ name = "Lich",
+ art = "art/t_charing_guardian",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
]]
}),
})
- end
+end
-function choose_apothecary_carddef()
+function choose_trickster_carddef()
return createDef({
- id="choose_apothecary",
- name="Choose the Apothecary",
+ id="choose_trickster",
+ name="Choose Trickster",
types={noStealType, itemType},
cardTypeLabel = "Item",
playLocation = castPloc,
acquireCost=0,
abilities = {
createAbility({
- id="choose_apothecary",
+ id="choose_trickster",
trigger= onPlayTrigger,
playAllType = noPlayPlayType,
effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
.seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
- .seq(setPlayerNameEffect("Apothecary", currentPid))
- .seq(setPlayerAvatarEffect("alchemist_01", currentPid))
- .seq(gainMaxHealthEffect(currentPid, const(52).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(52))
- .seq(createCardEffect(apothecary_restorative_draught_carddef(), currentSkillsLoc))
- .seq(createCardEffect(apothecary_custom_brew_carddef(), currentSkillsLoc))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(apothecary_mezzaluna_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(apothecary_apprentice_potion_maker_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(apothecary_yellow_potion_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(apothecary_red_potion_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(apothecary_green_potion_carddef(), loc(currentPid, asidePloc)))
+ .seq(setPlayerNameEffect("Trickster", currentPid))
+ .seq(setPlayerAvatarEffect("smugglers", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(56).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(trickster_reshuffle_hand_skill(), currentSkillsLoc))
+ .seq(createCardEffect(trickster_stack_the_deck_ability_def(), currentSkillsLoc))
+ .seq(createCardEffect(trickster_hidden_power_card_def(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_double_or_nothing_card_def(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_pet_monkey_card_def(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_blackmarket_the_docks_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_blackmarket_the_shambles_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_blackmarket_the_sewers_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_blackmarket_the_back_room_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(trickster_blackmarket_the_catacombs_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(ruby_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(fighter_longsword_carddef(), loc(currentPid, asidePloc)))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
.seq(shuffleEffect(currentDeckLoc))
- .seq(sacrificeTarget().apply(selectSource()))
+ .seq(sacrificeTarget().apply(selectSource()))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
.seq(shuffleEffect(currentDeckLoc))
.seq(sacrificeTarget().apply(selectSource()))
@@ -487,63 +647,66 @@ Start playing." fontsize="30" flexiblewidth="1" />
tags = {}
}
},
- upperTitle = "Confirm your choice. Do you want to use the Apothecary?",
+ upperTitle = "Confirm your choice. Do you want to use the Trickster?",
lowerTitle = ""
}))
})
},
layout = createLayout({
- name = "Apothecary",
- art = "art/treasures/T_Green_Potions_Medium",
+ name = "Trickster",
+ art = "avatars/smugglers",
frame = "frames/Coop_Campaign_CardFrame",
xmlText=[[
-
+
-
+
-
+
+
+
+
+
]]
}),
})
- end
+end
-function choose_cryomancer_carddef()
+function choose_demonologist_carddef()
return createDef({
- id="choose_cryomancer",
- name="Choose the Cryomancer",
+ id="choose_demonologist",
+ name="Choose the Demonologist",
types={noStealType, itemType},
cardTypeLabel = "Item",
playLocation = castPloc,
acquireCost=0,
abilities = {
createAbility({
- id="choose_cryomancer",
+ id="choose_demonologist",
trigger= onPlayTrigger,
playAllType = noPlayPlayType,
effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
- .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
- .seq(setPlayerNameEffect("Cryomancer", currentPid))
- .seq(setPlayerAvatarEffect("rayla__endweaver_flipped", currentPid))
- .seq(gainMaxHealthEffect(currentPid, const(52).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(52))
- .seq(createCardEffect(cryomancer_frostbiteskill_carddef(), currentSkillsLoc))
- .seq(createCardEffect(cryomancer_blizzard_carddef(), currentSkillsLoc))
- .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc)))) --here--
+ .seq(setPlayerNameEffect("Demonologist", currentPid))
+ .seq(setPlayerAvatarEffect("ruinos_zealot", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(demonologist_summon_demon_carddef(), currentSkillsLoc))
+ .seq(createCardEffect(demonologist_summon_demon_master_carddef(), currentSkillsLoc))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc))) --here--
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(cryomancer_ice_burst_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(cryomancer_ice_shield_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(cryomancer_ice_gem_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(cryomancer_freeze_carddef(), loc(currentPid, asidePloc)))
- .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
- .seq(shuffleEffect(currentDeckLoc))
- .seq(sacrificeTarget().apply(selectSource()))
+ .seq(createCardEffect(demonologist_shadow_feeder_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(demonologist_void_guard_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(demonologist_lesser_devourer_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(demonologist_shadow_gem_carddef(), loc(currentPid, asidePloc)))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
.seq(shuffleEffect(currentDeckLoc))
.seq(sacrificeTarget().apply(selectSource()))
@@ -558,7 +721,7 @@ function choose_cryomancer_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -579,7 +742,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -595,59 +758,291 @@ Start playing." fontsize="30" flexiblewidth="1" />
tags = {}
}
},
- upperTitle = "Confirm your choice. Do you want to use the Cryomancer?",
+ upperTitle = "Confirm your choice. Do you want to use the Demonologist?",
lowerTitle = ""
}))
})
},
layout = createLayout({
- name = "Cryomancer",
- art = "art/T_Heavy_Gust",
- frame = "frames/Coop_Campaign_CardFrame",
+ name = "Demonologist",
+ art = "art/epicart/dirge_of_scara",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
-
+
-
+
-
+
+
+
+
+
+
]]
}),
})
end
-function choose_pyromancer_carddef()
+function choose_apothecary_carddef()
return createDef({
- id="choose_pyromancer",
- name="Choose the Pryomancer",
+ id="choose_apothecary",
+ name="Choose the Apothecary",
types={noStealType, itemType},
cardTypeLabel = "Item",
playLocation = castPloc,
acquireCost=0,
abilities = {
createAbility({
- id="choose_pyromancer",
+ id="choose_apothecary",
trigger= onPlayTrigger,
playAllType = noPlayPlayType,
effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
.seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
- .seq(setPlayerNameEffect("Pyromancer", currentPid))
- .seq(setPlayerAvatarEffect("summoner", currentPid))
- .seq(gainMaxHealthEffect(currentPid, const(48).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(48))
- .seq(createCardEffect(pyromancer_fuel_1carddef(), currentSkillsLoc))
- .seq(createCardEffect(pyromancer_conflagration_1p_carddef(), currentSkillsLoc))
+ .seq(setPlayerNameEffect("Apothecary", currentPid))
+ .seq(setPlayerAvatarEffect("alchemist_01", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(52).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(apothecary_restorative_draught_carddef(), currentSkillsLoc))
+ .seq(createCardEffect(apothecary_custom_brew_carddef(), currentSkillsLoc))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(ruby_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(pyromancer_sear_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(pyromancer_scorch_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(pyromancer_fire_shard_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(apothecary_mezzaluna_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(apothecary_apprentice_potion_maker_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(apothecary_yellow_potion_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(apothecary_red_potion_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(apothecary_green_potion_carddef(), loc(currentPid, asidePloc)))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(pushChoiceEffectWithTitle(
+ {
+ choices = {
+ {
+ effect = moveTarget(tradeDeckLoc).apply(selectLoc(centerRowLoc))
+ .seq(shuffleTradeDeckEffect())
+ .seq(refillMarketEffect(const(0)).seq(refillMarketEffect(const(1))).seq(refillMarketEffect(const(2))).seq(refillMarketEffect(const(3))).seq(refillMarketEffect(const(4))))
+ .seq(addEffect(endTurnEffect())),
+ layout = createLayout(
+ {
+ name = "Yes",
+ art = "art/treasures/t_cleric_elixir_green",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ },
+
+ {
+ effect = nullEffect(),
+ layout = createLayout(
+ {
+ name = "No",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ }
+ },
+ upperTitle = "Confirm your choice. Do you want to use the Apothecary?",
+ lowerTitle = ""
+ }))
+ })
+ },
+ layout = createLayout({
+ name = "Apothecary",
+ art = "art/treasures/t_green_potions_medium",
+ frame = "frames/coop_campaign_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ })
+ end
+
+function choose_cryomancer_carddef()
+ return createDef({
+ id="choose_cryomancer",
+ name="Choose the Cryomancer",
+ types={noStealType, itemType},
+ cardTypeLabel = "Item",
+ playLocation = castPloc,
+ acquireCost=0,
+ abilities = {
+ createAbility({
+ id="choose_cryomancer",
+ trigger= onPlayTrigger,
+ playAllType = noPlayPlayType,
+ effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
+ .seq(setPlayerNameEffect("Cryomancer", currentPid))
+ .seq(setPlayerAvatarEffect("rayla__endweaver_flipped", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(52).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(cryomancer_frostbiteskill_carddef(), currentSkillsLoc))
+ .seq(createCardEffect(cryomancer_freezing_fog_carddef(), currentSkillsLoc))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(cryomancer_ice_sickle_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(cryomancer_frostwulf_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(cryomancer_ice_gem_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(cryomancer_freeze_carddef(), loc(currentPid, asidePloc)))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(pushChoiceEffectWithTitle(
+ {
+ choices = {
+ {
+ effect = moveTarget(tradeDeckLoc).apply(selectLoc(centerRowLoc))
+ .seq(shuffleTradeDeckEffect())
+ .seq(refillMarketEffect(const(0)).seq(refillMarketEffect(const(1))).seq(refillMarketEffect(const(2))).seq(refillMarketEffect(const(3))).seq(refillMarketEffect(const(4))))
+ .seq(addEffect(endTurnEffect())),
+ layout = createLayout(
+ {
+ name = "Yes",
+ art = "art/treasures/t_cleric_elixir_green",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ },
+
+ {
+ effect = nullEffect(),
+ layout = createLayout(
+ {
+ name = "No",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ }
+ },
+ upperTitle = "Confirm your choice. Do you want to use the Cryomancer?",
+ lowerTitle = ""
+ }))
+ })
+ },
+ layout = createLayout({
+ name = "Cryomancer",
+ art = "art/t_heavy_gust",
+ frame = "frames/coop_campaign_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ })
+ end
+
+function choose_pyromancer_carddef()
+ return createDef({
+ id="choose_pyromancer",
+ name="Choose the Pryomancer",
+ types={noStealType, itemType},
+ cardTypeLabel = "Item",
+ playLocation = castPloc,
+ acquireCost=0,
+ abilities = {
+ createAbility({
+ id="choose_pyromancer",
+ trigger= onPlayTrigger,
+ playAllType = noPlayPlayType,
+ effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
+ .seq(setPlayerNameEffect("Pyromancer", currentPid))
+ .seq(setPlayerAvatarEffect("summoner", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(48).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), createCardEffect(pyromancer_1p_fuel_1carddef(), currentSkillsLoc), createCardEffect(pyromancer_2p_fuel_1carddef(), currentSkillsLoc)))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), createCardEffect(pyromancer_conflagration_1p_carddef(), currentSkillsLoc), createCardEffect(pyromancer_conflagration_2p_carddef(), currentSkillsLoc)))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), incrementCounterEffect("fuel_1p", 1), incrementCounterEffect("fuel_2p", 1)))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), incrementCounterEffect("conflagration_1p", 5), incrementCounterEffect("conflagration_2p", 5)))
+ --.seq(addSlotToPlayerEffect(currentPlayer(), createPlayerSlot({ key = "pyroSkill", expiry = { neverExpiry } })))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(ruby_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(pyromancer_sear_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(pyromancer_scorch_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(pyromancer_fire_shard_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(pyromancer_combust_carddef(), loc(currentPid, asidePloc)))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
.seq(shuffleEffect(currentDeckLoc))
@@ -666,7 +1061,7 @@ function choose_pyromancer_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -687,7 +1082,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -704,25 +1099,26 @@ Start playing." fontsize="30" flexiblewidth="1" />
}
},
upperTitle = "Confirm your choice. Do you want to use the Pyromancer?",
- lowerTitle = "Note: Skills and Abilities will not work properly if both players have chosen Pyromancer."
}))
})
},
layout = createLayout({
name = "Pyromancer",
- art = "art/T_Blistering_Blaze",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_blistering_blaze",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
-
+
-
+
-
+
]]
@@ -748,8 +1144,8 @@ function choose_terramancer_carddef()
.seq(setPlayerNameEffect("Terramancer", currentPid))
.seq(setPlayerAvatarEffect("broelyn", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(53).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(53))
- .seq(createCardEffect(terramancer_move_earth_carddef(), currentSkillsLoc))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), createCardEffect(terramancer_move_earth1_carddef(), currentSkillsLoc), createCardEffect(terramancer_move_earth2_carddef(), currentSkillsLoc)))
.seq(createCardEffect(terramancer_swallowed_by_the_earth_def(), currentSkillsLoc))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
@@ -760,7 +1156,7 @@ function choose_terramancer_carddef()
.seq(createCardEffect(terramancer_earth_gem_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(terramancer_hurl_boulder_carddef(), loc(currentPid, asidePloc)))
.seq(createCardEffect(terramancer_tremor_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(terramancer_clay_golem_carddef(), loc(currentPid, asidePloc)))
+ .seq(ifElseEffect(getTurnsPlayed(oppPid).eq(1), createCardEffect(terramancer_clay_golem1_carddef(), loc(currentPid, asidePloc)), createCardEffect(terramancer_clay_golem2_carddef(), loc(currentPid, asidePloc))))
.seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
.seq(shuffleEffect(currentDeckLoc))
.seq(sacrificeTarget().apply(selectSource()))
@@ -778,7 +1174,7 @@ function choose_terramancer_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -799,7 +1195,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -816,14 +1212,14 @@ Start playing." fontsize="30" flexiblewidth="1" />
}
},
upperTitle = "Confirm your choice. Do you want to use the Terramancer?",
- lowerTitle = "Note: Skills and Abilities will not work properly if both players have chosen Terramancer."
+
}))
})
},
layout = createLayout({
name = "Terramancer",
- art = "art/T_Broelyn_Loreweaver_Old",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_broelyn_loreweaver_old",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -834,10 +1230,9 @@ Terramancer" fontsize="26"/>
+
-
+
@@ -864,7 +1259,7 @@ function choose_thandarlorian_carddef()
.seq(setPlayerNameEffect("Thandarlorian", currentPid))
.seq(setPlayerAvatarEffect("cristov__the_just", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(36).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(const(36).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(thandarlorian_dragon_shard_armour_carddef(), currentSkillsLoc))
.seq(createCardEffect(thandarlorian_bracer_blades_carddef(), currentSkillsLoc))
.seq(createCardEffect(thandarlorian_whipcord_carddef(), currentSkillsLoc))
@@ -895,7 +1290,7 @@ function choose_thandarlorian_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -916,7 +1311,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -939,15 +1334,21 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "The Thandarlorian",
- art = "art/T_Domination",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_domination",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
-
+
-
+
+
+
+
+
]]
@@ -973,7 +1374,7 @@ function choose_paladin_carddef()
.seq(setPlayerNameEffect("Paladin", currentPid))
.seq(setPlayerAvatarEffect("cristov__the_just", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(58).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(58))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(paladin_prayer_carddef(), currentSkillsLoc))
.seq(createCardEffect(paladin_sacred_oath_carddef(), currentSkillsLoc))
.seq(createCardEffect(gold_carddef(),loc(currentPid, asidePloc)))
@@ -1003,7 +1404,7 @@ function choose_paladin_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1024,7 +1425,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1047,8 +1448,8 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "Paladin",
- art = "art/T_Cristov_The_Just",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_cristov_the_just",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1081,7 +1482,7 @@ function choose_witch_carddef()
.seq(setPlayerNameEffect("Witch", currentPid))
.seq(setPlayerAvatarEffect("chanting_cultist", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(51).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(51))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(siphon_life_def(), currentSkillsLoc))
.seq(createCardEffect(piercing_screech_def(), currentSkillsLoc))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
@@ -1111,7 +1512,7 @@ function choose_witch_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1132,7 +1533,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1156,7 +1557,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout({
name = "Witch",
art = "avatars/chanting_cultist",
- frame = "frames/Coop_Campaign_CardFrame",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1189,7 +1590,7 @@ function choose_shaman_carddef()
.seq(setPlayerNameEffect("Shaman", currentPid))
.seq(setPlayerAvatarEffect("wolf_shaman", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(50).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(const(50).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(gift_of_the_elements_carddef(), currentSkillsLoc))
.seq(createCardEffect(elemental_surge_def(), currentSkillsLoc))
.seq(createCardEffect(gold_carddef(), loc(currentPid, asidePloc)))
@@ -1219,7 +1620,7 @@ function choose_shaman_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1240,7 +1641,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1264,7 +1665,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout({
name = "Shaman",
art = "avatars/wolf_shaman",
- frame = "frames/Coop_Campaign_CardFrame",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1298,7 +1699,7 @@ function choose_king_midas_carddef()
.seq(setPlayerNameEffect("King Midas", currentPid))
.seq(setPlayerAvatarEffect("profit", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(42).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(42))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(greed_is_good_skilldef(), currentSkillsLoc))
.seq(createCardEffect(golden_touch_abilitydef(), currentSkillsLoc))
.seq(createCardEffect(midas_kings_adviser_carddef(), loc(currentPid, asidePloc)))
@@ -1328,7 +1729,7 @@ function choose_king_midas_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1349,7 +1750,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1372,8 +1773,8 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "King Midas",
- art = "art/T_Bribe",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_bribe",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1405,9 +1806,9 @@ function choose_brewmaster_carddef()
effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
.seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
.seq(setPlayerNameEffect("Brewmaster", currentPid))
- .seq(setPlayerAvatarEffect("lord_callum", currentPid))
+ .seq(setPlayerAvatarEffect("journeys/broken_tables_and_chairs", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(55).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(55))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
.seq(createCardEffect(brewmaster_a_round_on_the_house_def(), currentSkillsLoc))
.seq(createCardEffect(brewmaster_get_out_of_my_bar_carddef(), currentSkillsLoc))
.seq(createCardEffect(brewmaster_mead_carddef(), loc(currentPid, asidePloc)))
@@ -1437,7 +1838,7 @@ function choose_brewmaster_carddef()
layout = createLayout(
{
name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
+ art = "art/treasures/t_cleric_elixir_green",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1458,7 +1859,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout(
{
name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1469,154 +1870,1821 @@ Start playing." fontsize="30" flexiblewidth="1" />
]],
- }
- ),
- tags = {}
- }
- },
- upperTitle = "Confirm your choice. Do you want to use the Brewmaster?",
- lowerTitle = ""
- }))
+ }
+ ),
+ tags = {}
+ }
+ },
+ upperTitle = "Confirm your choice. Do you want to use the Brewmaster?",
+ lowerTitle = ""
+ }))
+ })
+ },
+ layout = createLayout({
+ name = "Brewmaster",
+ art = "avatars/journeys/broken_tables_and_chairs",
+ frame = "frames/coop_campaign_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ })
+ end
+
+function choose_S_and_R_carddef()
+ return createDef({
+ id="choose_S&R",
+ name="Choose Sparks & Rec Enjoyer",
+ types={noStealType, itemType},
+ cardTypeLabel = "Item",
+ playLocation = castPloc,
+ acquireCost=0,
+ abilities = {
+ createAbility({
+ id="choose_S&R",
+ trigger= onPlayTrigger,
+ playAllType = noPlayPlayType,
+ effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
+ .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
+ .seq(setPlayerNameEffect("Sparks & Rec Enjoyer", currentPid))
+ .seq(setPlayerAvatarEffect("ambushers", currentPid))
+ .seq(gainMaxHealthEffect(currentPid, const(54).add(getPlayerMaxHealth(currentPid).negate())))
+ .seq(gainHealthEffect(getPlayerMaxHealth(currentPid).add(getPlayerHealth(currentPid).negate())))
+ .seq(createCardEffect(bird_dog_def(), currentSkillsLoc))
+ .seq(createCardEffect(patron_shoutout_def(), currentSkillsLoc))
+ .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(hero_dash_helper_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(wwyd_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(nostra_dbl_damus_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(blank_to_my_blank_carddef(), loc(currentPid, asidePloc)))
+ .seq(createCardEffect(congrats_youre_a_nerd_carddef(), loc(currentPid, asidePloc)))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
+ .seq(shuffleEffect(currentDeckLoc))
+ .seq(sacrificeTarget().apply(selectSource()))
+ .seq(pushChoiceEffectWithTitle(
+ {
+ choices = {
+ {
+ effect = moveTarget(tradeDeckLoc).apply(selectLoc(centerRowLoc))
+ .seq(shuffleTradeDeckEffect())
+ .seq(refillMarketEffect(const(0)).seq(refillMarketEffect(const(1))).seq(refillMarketEffect(const(2))).seq(refillMarketEffect(const(3))).seq(refillMarketEffect(const(4))))
+ .seq(addEffect(endTurnEffect())),
+ layout = createLayout(
+ {
+ name = "Yes",
+ art = "art/treasures/t_cleric_elixir_green",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ },
+
+ {
+ effect = nullEffect(),
+ layout = createLayout(
+ {
+ name = "No",
+ art = "art/treasures/t_cleric_elixir_blue_purple",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+ ]],
+
+ }
+ ),
+ tags = {}
+ }
+ },
+ upperTitle = "Confirm your choice. Do you want to use the Sparks & Recreations Enjoyer?",
+ lowerTitle = ""
+ }))
+ })
+ },
+ layout = createLayout({
+ name = "S&R Enjoyer",
+ art = "avatars/ambushers",
+ frame = "frames/coop_campaign_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ })
+ end
+
+
+--Lich cards
+function lich_corruption_carddef()
+ local cardLayout = createLayout({
+ name = "Corruption",
+ art = "art/epicart/necromancer_apprentice",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "corruption_skill",
+ name = "Corruption",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/epicart/necromancer_apprentice",
+ abilities = {
+ createAbility({
+ id="corruption20buff_combat",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = gainCombatEffect(1)
+ .seq(randomTarget(const(1), moveTarget(inPlayPloc)).apply(selectLoc(loc(nil, nullPloc))))
+ .seq(noUndoEffect()),
+ check = selectLoc(loc(nil, nullPloc)).count().gte(1),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_control_carddef()
+ local cardLayout = createLayout({
+ name = "Control",
+ art = "art/epicart/necromancer_lord",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "control_skill",
+ name = "Coontrol",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/epicart/necromancer_lord",
+ abilities = {
+ createAbility({
+ id="control30buff_combat",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = gainCombatEffect(2)
+ .seq(randomTarget(const(2), moveTarget(inPlayPloc)).apply(selectLoc(loc(nil, nullPloc))))
+ .seq(noUndoEffect()),
+ check = selectLoc(loc(nil, nullPloc)).count().gte(2),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+
+function lich_soul_diamond_carddef()
+ return createItemDef({
+ id = "lich_soul_diamond",
+ name = "Lich Soul Diamond",
+ playLocation = castPloc,
+ acquireCost = 0,
+ isGuard = false,
+ types = { itemType, currencyType, gemType, nostealType },
+ layout = createLayout({
+ name = "Soul Diamond",
+ art = "art/classes/necromancer/soul_cage",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_soul_diamond_item_main",
+ trigger = autoTrigger,
+ cost = noCost,
+ effect = ifElseEffect(isPlayerAi(oppPid),gainGoldEffect(3),gainGoldEffect(1)),
+ }),
+
+ createAbility({
+ id = "lich_soul_diamond_item_stun",
+ trigger = uiTrigger,
+
+ activations = singleActivation,
+ effect = pushChoiceEffectWithTitle(
+ {
+
+ choices =
+ {
+ {
+ effect = stunTarget().apply(selectLoc(loc(oppPid, inPlayPloc))),
+ check = selectLoc(loc(oppPid, inPlayPloc)).where(isCardStunnable()),
+ layout = createLayout({
+ name = "Soul Diamond",
+ art = "art/treasures/necromancer/soul_cage",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ }),
+ },
+
+ },
+
+ }
+ ),
+ cost = sacrificeSelfCost,
+
+ }),
+ },
+
+ layout = createLayout(
+ {
+ name = "Soul Diamond",
+ art = "art/treasures/necromancer/soul_cage",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ layoutPath = "art/t_gold",
+ })
+end
+
+function lich_frozen_touch_carddef()
+ return createActionDef({
+ id = "lich_frozen_touch",
+ name = "Frozen Touch",
+ types = {actionType, nostealType},
+ cardTypeLabel = "Action",
+ playLocation = castPloc,
+ acquireCost = 0,
+ abilities = {
+ createAbility(
+ {
+ id = "frozen_touch_main",
+ trigger = autoTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = gainCombatEffect(1),
+ }
+ )
+ },
+ layout = createLayout(
+ {
+ name = "Frozen Touch",
+ art = "art/epicart/zannos__corpse_lord",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=[[
+
+
+
+
+
+
+
+ ]],
+
+ }
+ )
+ }
+ )
+end
+
+
+function lich_soul_crush_carddef()
+ return createActionDef({
+ id = "lich_soul_crush_curse",
+ name = "Lich Soul Crush Curse",
+ acquireCost = 0,
+
+ types = { actionType, curseType, nostealType },
+ layout = createLayout({
+ name = "Soul Crush",
+ art = "art/epicart/consume",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_soul_crush_curse_main",
+ trigger = autoTrigger,
+ cost = noCost,
+ effect = pushChoiceEffect
+ (
+ {
+ choices =
+ {
+
+ -- Gain 3 combat
+ {
+ effect = gainCombatEffect(3),
+ layout = layoutCard(
+ {
+ title = "Soul Crush",
+ art = "art/epicart/scara_s_will",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+ -- Stun an opposing champion
+ {
+ effect = pushTargetedEffect({
+ desc = "Stun target champion.",
+ validTargets = oppStunnableSelector(),
+ min = 0,
+ max = 1,
+ targetEffect = stunTarget(),
+ }),
+ condition = selectLoc(loc(oppPid, inPlayPloc)).where(isCardChampion()).count().gte(1),
+ layout = layoutCard(
+ {
+ title = "Soul Crush",
+ art = "art/epicart/scara_s_will",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+
+ }
+ }
+ )
+ })
+
+ },
+ })
+end
+
+function lich_minor_summoning_carddef()
+ return createActionDef({
+ id = "lich_minor_summoning_curse",
+ name = "Minor Summoning",
+ playLocation = castPloc,
+ acquireCost = 0,
+ types = { actionType, curseType, nostealType },
+ layout = createLayout({
+ name = "Minor Summoning",
+ art = "art/epicart_necrovirus",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_minor_summoning",
+ trigger = autoTrigger,
+ cost = expendCost,
+ effect = createCardEffect(necromancer_skeleton_warrior_carddef(), currentInPlayLoc),
+ }),
+ },
+ })
+end
+
+function lich_major_summoning_carddef()
+ return createActionDef({
+ id = "lich_major_summoning",
+ name = "Major Summoning",
+ playLocation = castPloc,
+ acquireCost = 0,
+ types = { actionType, curseType, nostealType },
+ layout = createLayout({
+ name = "Major Summoning",
+ art = "art/epicart_abyss_summoner",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_major_summoning",
+ trigger = autoTrigger,
+ cost = expendCost,
+ effect = randomTarget(const(1), moveTarget(inPlayPloc)).apply(selectLoc(loc(nil, nullPloc))).seq(noUndoEffect()),
+ check = selectLoc(loc(nil, nullPloc)).count().gte(1),
+ }),
+ },
+ })
+end
+
+--Lich minions
+function lich_abomination_minion_carddef()
+ return createChampionDef({
+ id = "lich_abomination_minion",
+ name = "Lich Abomination Minion",
+ acquireCost = 0,
+ health = 6,
+ isGuard = true,
+ types = { minionType, undeadType, constructType },
+ layout = createLayout({
+ name = "Abomination",
+ art = "art/epicart/scrap_golem_token",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 6,
+ isGuard = true,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_abomination_minion_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(4),
+ }),
+
+ createAbility({
+ id = "lich_abomination_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_banshee_minion_carddef()
+ return createChampionDef({
+ id = "lich_banshee_minion",
+ name = "Lich Banshee Minion",
+ acquireCost = 0,
+ health = 3,
+ isGuard = false,
+ types = { minionType, undeadType },
+ layout = createLayout({
+ name = "Banshee",
+ art = "art/t_banshee",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 3,
+ isGuard = false,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_banshee_minion_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = hitOpponentEffect(2).seq(damageTarget(2).apply(selectLoc(loc(oppPid, inPlayPloc))))
+ }),
+
+ createAbility({
+ id = "lich_banshee_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_ghoul_minion_carddef()
+ return createChampionDef({
+ id = "lich_ghoul_minion",
+ name = "Lich Ghoul Minion",
+ acquireCost = 0,
+ health = 5,
+ isGuard = true,
+ types = { minionType, undeadType },
+ layout = createLayout({
+ name = "Ghoul",
+ art = "art/epicart/carrion_demon",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 5,
+ isGuard = true,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_ghoul_minion_main",
+ trigger = uiTrigger,
+ promptType = showPrompt,
+ layout = layoutCard(
+ {
+ name = "Ghoul",
+ art = "art/epicart/carrion_demon",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(3).seq(gainCombatEffect(selectLoc(currentDiscardLoc).where(isCardChampion()).count())),
+ --ifElseEffect(selectLoc(currentInPlayLoc).where(isCardType(demonType)).count().gte(1),gainCombatEffect(3),gainCombatEffect(1))
+ }),
+
+ createAbility({
+ id = "lich_ghoul_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_revenant_minion_carddef()
+ return createChampionDef({
+ id = "lich_revenant_minion",
+ name = "Lich Revenant Minion",
+ acquireCost = 0,
+ health = 5,
+ isGuard = false,
+ types = { minionType, undeadType },
+ layout = createLayout({
+ name = "Revenant",
+ art = "art/epicart/scara_s_will",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 5,
+ isGuard = false,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_revenant_minion_main",
+ trigger = uiTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = pushChoiceEffect
+ (
+ {
+ choices =
+ {
+
+ -- Gain 5 health
+ {
+ effect = gainHealthEffect(5),
+ layout = layoutCard(
+ {
+ title = "Revenant",
+ art = "art/epicart/scara_s_will",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+ -- Stun an opposing champion
+ {
+ effect = pushTargetedEffect({
+ desc = "Stun an opposing champion.",
+ validTargets = oppStunnableSelector(),
+ min = 0,
+ max = 1,
+ targetEffect = stunTarget(),
+ }),
+ condition = selectLoc(loc(oppPid, inPlayPloc)).where(isCardChampion()).count().gte(1),
+ layout = layoutCard(
+ {
+ title = "Revenant",
+ art = "art/epicart/scara_s_will",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+
+ }
+ }
+ )
+ }),
+
+ createAbility({
+ id = "lich_revenant_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_skeleton_horde_minion_carddef()
+ return createChampionDef({
+ id = "lich_skeleton_horde_minion",
+ name = "Lich Skeleton Horde Minion",
+ acquireCost = 0,
+ health = 4,
+ isGuard = false,
+ types = { minionType, undeadType },
+ layout = createLayout({
+ name = "Skeleton Horde",
+ art = "art/t_angry_skeleton",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 4,
+ isGuard = false,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_skeleton_horde_minion_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(3),
+ }),
+
+ createAbility({
+ id = "lich_skeleton_horde_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_wall_of_bones_minion_carddef()
+ return createChampionDef({
+ id = "lich_wall_of_bones_minion",
+ name = "Lich Wall of Bones Minion",
+ acquireCost = 0,
+ health = 8,
+ isGuard = true,
+ types = { minionType, undeadType, constructType },
+ layout = createLayout({
+ name = "Wall of Bones",
+ art = "art/t_skeleton",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 8,
+ isGuard = true,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_wall_of_bones_minion_main",
+ trigger = autoTrigger,
+ --cost = expendCost,
+ effect = nullEffect()
+ }),
+
+ createAbility({
+ id = "lich_wall_of_bones_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_wall_of_fire_minion_carddef()
+ return createChampionDef({
+ id = "lich_wall_of_fire_minion",
+ name = "Lich Wall of Fire Minion",
+ acquireCost = 0,
+ health = 7,
+ isGuard = false,
+ types = { minionType, magicType, constructType },
+ layout = createLayout({
+ name = "Wall of Fire",
+ art = "art/t_charing_guardian",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 7,
+ isGuard = false,
+ xmlText=
+ [[
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_wall_of_fire_minion_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = hitOpponentEffect(2),
+ }),
+
+ createAbility({
+ id = "lich_wall_of_bones_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+ },
+ })
+end
+
+function lich_zombie_minion_carddef()
+ return createChampionDef({
+ id = "lich_zombie_minion",
+ name = "Lich Zombie Minion",
+ acquireCost = 0,
+ health = 1,
+ isGuard = false,
+ cardTypeLabel = "undeadType",
+ types = { minionType, undeadType },
+ layout = createLayout({
+ name = "Zombie",
+ art = "art/sets/promos1art/zombie",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ cost = 0,
+ health = 1,
+ isGuard = false,
+ xmlText=
+ [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ abilities = {
+ createAbility({
+ id = "lich_zombie_minion_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(2)
+ }),
+
+ createAbility({
+ id = "lich_zombie_minion_sac",
+ trigger = onLeavePlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = moveTarget(nullPloc).apply(selectSource())
+ })
+
+ },
+ })
+end
+
+--Lich Soul jars (Skills)
+
+function lich_SJ_HoE_carddef()
+ local cardLayout = createLayout({
+ name = "Heart of Evil",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+ >
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Heart of Evil",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/t_elixir_of_concentration",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_HoE_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = randomTarget(const(1), moveTarget(inPlayPloc)).apply(selectLoc(loc(nil, nullPloc))).seq(noUndoEffect()),
+ check = selectLoc(loc(nil, nullPloc)).count().gte(1),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_SJ_DI_carddef()
+ local cardLayout = createLayout({
+ name = "Deep Insight",
+ art = "art/t_elixir_of_wisdom",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+>
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Deep Insight",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/t_elixir_of_wisdom",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_DI_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = drawCardsEffect(1).seq(forceDiscard(1)),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_SJ_IW_carddef()
+ local cardLayout = createLayout({
+ name = "Infernal Wealth",
+ art = "art/t_elixir_of_endurance",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Infernal Wealth",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/t_elixir_of_endurance",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_IW_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = pushChoiceEffect
+ (
+ {
+ choices =
+ {
+
+ {
+ effect = gainGoldEffect(2),
+ layout = layoutCard(
+ {
+ title = "Infernal Wealth",
+ art = "art/t_elixir_of_endurance",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+
+ {
+ effect = pushTargetedEffect({
+ desc = "Stun target champion.",
+ validTargets = oppStunnableSelector(),
+ min = 0,
+ max = 1,
+ targetEffect = stunTarget(),
+ }),
+ condition = selectLoc(loc(oppPid, inPlayPloc)).where(isCardChampion()).count().gte(1),
+ layout = layoutCard(
+ {
+ title = "Infernal Wealth",
+ art = "art/t_elixir_of_endurance",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ }
+ ),
+ },
+
+ }
+ }
+ ),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_SJ_UR_carddef()
+ local cardLayout = createLayout({
+ name = "Unending Rage",
+ art = "art/treasures/t_wizard_elixir_orange",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+>
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Unending Rage",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/treasures/t_wizard_elixir_orange",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_UR_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = gainCombatEffect(7),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_SJ_V_carddef()
+ local cardLayout = createLayout({
+ name = "Void",
+ art = "art/treasures/t_wizard_elixir_silver",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+>
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Void",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/treasures/t_wizard_elixir_silver",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_V_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = hitOpponentEffect(3),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+function lich_SJ_M_carddef()
+ local cardLayout = createLayout({
+ name = "Manipulation",
+ art = "art/treasures/t_wizard_elixir_orange",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText =
+ [[
+
+
+>
+
+
+
+ ]]
+ })
+
+ return createSkillDef({
+ id = "cryptskill_skill",
+ name = "Manipulation",
+ types = { skillType },
+ layout = cardLayout,
+ layoutPath = "art/treasures/t_wizard_elixir_orange",
+ abilities = {
+ createAbility({
+ id = "lich_SJ_M_ab",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = pushTargetedEffect({
+ desc = "Acquire a card of cost four or less for free.",
+ validTargets = selectLoc(centerRowLoc).union(selectLoc(fireGemsLoc)).where(isCardAcquirable().And(getCardCost().lte(4))),
+ min = 0,
+ max = 1,
+ targetEffect = moveTarget(loc(currentPid, discardPloc)),
+ }),
+ cost = expendCost,
+ }),
+
+ }
+
+ })
+end
+
+-- Trickster cards
+trickster_double_or_nothing_layout = [[
+
+
+
+
+
+]]
+
+trickster_pet_monkey_layout = [[
+
+
+
+
+]]
+
+trickster_blackmarket_layout_template = [[
+
+
+
+
+
+
+]]
+
+trickster_hidden_power_layout = [[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]
+
+trickster_replace_ability_layout = [[
+
+
+
+
+
+
+
+
+
+
+]]
+
+function trickster_show_choices_effect()
+ return pushChoiceEffect({
+ choices = {
+ {
+ effect = gainGoldEffect(s.Minus(s.Const(1), s.getCounter("trickster_reshuffle_card_count")))
+ .seq(gainHealthEffect(s.Minus(s.getCounter("trickster_reshuffle_card_count"), s.Const(1))))
+ .seq(animateShuffleDeckEffect(currentPid))
+ -- Shuffle a few times to diminish the impact of the WWG
+ -- shuffle implementation being bugged
+ .seq(shuffleEffect(loc(currentPid, deckPloc)))
+ .seq(shuffleEffect(loc(currentPid, deckPloc)))
+ .seq(shuffleEffect(loc(currentPid, deckPloc)))
+ .seq(moveTarget(loc(currentPid, asidePloc)).apply(selectLoc(currentDeckLoc)))
+ .seq(randomEffect({
+ valueItem(1, moveTarget(currentDeckLoc).apply(selectLoc(loc(currentPid, asidePloc)).reverse())),
+ valueItem(1, moveTarget(currentDeckLoc).apply(selectLoc(loc(currentPid, asidePloc)))),
+ }))
+ .seq(drawCardsEffect(s.getCounter("trickster_reshuffle_card_count"))),
+ layout = createLayout({
+ name = "Continue",
+ art = "art/epicart/erratic_research",
+ text = format("{0}: Gain {0} and shuffle your deck then draw {1} card(s)",
+ {s.Minus(s.getCounter("trickster_reshuffle_card_count"), s.Const(1)),
+ getCounter("trickster_reshuffle_card_count")})
+ }),
+ },
+ }
+ })
+end
+
+function trickster_reshuffle_effect()
+ return pushTargetedEffect({
+ desc =
+ "Pay X to gain X, put X+1 cards back in your deck, shuffle, and then draw X+1 cards.",
+ min=1,
+ max=ifInt(
+ selectLoc(loc(currentPid, handPloc)).count()
+ .gte(getPlayerGold(currentPid).add(const(1))),
+ getPlayerGold(currentPid).add(const(1)),
+ selectLoc(loc(currentPid, handPloc)).count()),
+ validTargets = selectLoc(loc(currentPid, handPloc)),
+ targetEffect = moveTarget(loc(currentPid, deckPloc))
+ .seq(resetCounterEffect("trickster_reshuffle_card_count"))
+ .seq(incrementCounterEffect("trickster_reshuffle_card_count", selectTargets().count()))
+ .seq(trickster_show_choices_effect())
+ })
+end
+
+function trickster_reshuffle_hand_skill()
+ local cardLayout = createLayout({
+ name = "Mulligan",
+ art = "art/epicart/erratic_research",
+ frame = "frames/alchemist_frames/alchemist_item_cardframe",
+ text = ": Put X cards back in your deck, shuffle, then draw that many cards. Pay X-1 to do this, Gain X-1."
+ })
+ card = createSkillDef({
+ id = "trickster_reshuffle_skill_jseph",
+ name = "Reshuffle",
+ abilities = {
+ createAbility({
+ id = "trickster_reshuffle_ability_id_jseph",
+ trigger = uiTrigger,
+ promptType = showPrompt,
+ layout = cardLayout,
+ effect = trickster_reshuffle_effect(),
+ cost = expendCost,
+ check = selectLoc(loc(currentPid, handPloc)).count()
+ .gte(const(1)),
+ activations = multipleActivations,
+ })
+ },
+ layout = cardLayout,
+ layoutPath = "art/epicart/erratic_research",
+ })
+ return card
+end
+
+function sacrifice_from_discard_effect()
+ return pushTargetedEffect({
+ desc = "Sacrifice from discard.",
+ min=0,
+ max=1,
+ validTargets = sacrificeSelector(selectLoc(currentDiscardLoc)),
+ targetEffect = sacrificeTarget()
+ })
+end
+
+function trickster_switch_impl(val, cases)
+ local len = #cases
+ local effect = nullEffect()
+ for i = len, 1, -1 do
+ local c = cases[i][1]
+ local e = cases[i][2]
+ effect = ifElseEffect(val.where(c).count().gte(1),e,effect)
+ end
+ return effect
+end
+
+function trickster_hidden_power_card_def()
+ local cardLayout = createLayout({
+ name = "Hidden Power",
+ art = "art/epicart/reusable_knowledge",
+ frame = "frames/alchemist_frames/alchemist_item_cardframe",
+ xmlText = trickster_hidden_power_layout,
+ })
+ local kTopCardText = "Top card of the market deck."
+ local add_faction = function(faction)
+ return addSlotToTarget(createFactionsSlot({faction},{leavesPlayExpiry, endOfTurnExpiry}))
+ .apply(selectSource())
+ end
+ local kBonusEffects = {
+ {isCardFaction(wildFaction), gainCombatEffect(3).seq(add_faction(wildFaction))},
+ {isCardFaction(guildFaction), gainGoldEffect(1).seq(add_faction(guildFaction))},
+ {isCardFaction(necrosFaction), sacrifice_from_discard_effect().seq(add_faction(necrosFaction))},
+ {isCardFaction(imperialFaction), gainHealthEffect(5).seq(add_faction(imperialFaction))},
+ }
+ return createActionDef({
+ id = "trickster_hidden_power_jseph",
+ name = "Hidden Power",
+ tags = {},
+ types = {},
+ factions = {},
+ acquireCost = 0,
+ abilities = {
+ createAbility({
+ id = "trickster_hidden_power_ability_jseph",
+ effect = noUndoEffect()
+ .seq(moveTarget(revealLoc).apply(selectLoc(tradeDeckLoc).take(1)))
+ .seq(waitForClickEffect(kTopCardText, kTopCardText))
+ .seq(trickster_switch_impl(selectLoc(revealLoc), kBonusEffects))
+ .seq(moveTarget(tradeDeckLoc).apply(selectLoc(revealLoc))),
+ cost = noCost,
+ trigger = onPlayTrigger,
+ tags = {gainCombatTag},
+ aiPriority = toIntExpression(5),
})
},
- layout = createLayout({
- name = "Brewmaster",
- art = "art/treasures/T_Fighter_Elixir_Red",
- frame = "frames/Coop_Campaign_CardFrame",
- xmlText=[[
-
-
-
-
-
-
-
+ layout=cardLayout,
+ })
+end
-
-
-
-
- ]]
- }),
+function trickster_double_or_nothing_effect()
+ local slot = createSlot({
+ id = "trickster_double_or_nothing_discount",
+ expiresArray = { endOfTurnExpiry } })
+ return pushChoiceEffect({
+ choices = {
+ {
+ effect = gainGoldEffect(1),
+ layout = createLayout({
+ name = "Gold",
+ art = "art/treasures/t_trick_dice",
+ text = format("{{{0} gold}}",{1})
+ }),
+ },
+ {
+ effect = randomTarget(const(2), addSlotToTarget(slot)
+ .seq(noUndoEffect()))
+ .apply(selectLoc(centerRowLoc))
+ .seq(createCardEffect(getCostDiscountBuff("Double or Nothing", 2, selectLoc(centerRowLoc).where(isCardWithSlotString("trickster_double_or_nothing_discount"))), currentBuffsLoc)),
+
+ layout = createLayout({
+ name = "Discount",
+ art = "art/treasures/t_trick_dice",
+ text = "Discount two random cards in the market by until you acquire your next card."
+ }),
+ }
+ }
+ })
+end
+
+function trickster_double_or_nothing_card_def()
+ local cardLayout = createLayout({
+ name = "Double or Nothing",
+ art = "art/treasures/t_trick_dice",
+ frame = "frames/alchemist_frames/alchemist_item_cardframe",
+ xmlText = trickster_double_or_nothing_layout
})
- end
+ return createActionDef({
+ id = "trickster_double_or_nothing_jseph",
+ name = "Double or Nothing",
+ tags = {},
+ types = {},
+ factions = {},
+ acquireCost = 0,
+ abilities = {
+ createAbility({
+ id = "trickster_double_or_nothing_ability_jseph",
+ effect = trickster_double_or_nothing_effect(),
+ cost = noCost,
+ trigger = onPlayTrigger,
+ tags = {gainCombatTag},
+ aiPriority = toIntExpression(5),
+ })
+ },
+ layout=cardLayout,
+ })
+end
-function choose_S_and_R_carddef()
- return createDef({
- id="choose_S&R",
- name="Choose Sparks & Rec Enjoyer",
- types={noStealType, itemType},
- cardTypeLabel = "Item",
- playLocation = castPloc,
- acquireCost=0,
+function trickster_pet_monkey_effect()
+ return moveTarget(currentRevealLoc).apply(selectLoc(tradeDeckLoc).take(3))
+ .seq(noUndoEffect())
+ .seq(promptSplit({
+ selector = selectLoc(currentRevealLoc),
+ take = const(0), -- number of cards to take for split
+ sort = const(0), -- number of cards to be sorted for ef2
+ minTake = const(3), -- Number of cards for ef1
+ ef1 = moveTarget(tradeDeckLoc), -- effect to be applied to cards left
+ ef2 = ignoreTarget(nullEffect()), -- effect to be applied to sorted cards
+ header = "Pet Monkey", -- prompt header
+ description = "Rearrange the top 3 cards of the market deck.",
+ rightPileDesc = "Rightmost on top.",
+ pile1Name = "Top 3 cards.",
+ pile2Name = "Unused.",
+ eff1Tags = { },
+ eff2Tags = { }}))
+end
+
+function trickster_pet_monkey_card_def()
+ local cardLayout = createLayout({
+ name = "Pet Monkey",
+ art = "art/epicart/kong",
+ frame = "frames/alchemist_frames/alchemist_item_cardframe",
+ xmlText = trickster_pet_monkey_layout,
+ health = 2,
+ isGuard = false
+ })
+ return createChampionDef({
+ id = "trickster_pet_monkey_jseph",
+ name = "Pet Monkey",
+ types = {minionType, championType},
+ acquireCost = 0,
+ health = 2,
+ isGuard = false,
abilities = {
createAbility({
- id="choose_S&R",
- trigger= onPlayTrigger,
- playAllType = noPlayPlayType,
- effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
- .seq(moveTarget(sacrificePloc).apply(selectLoc(loc(currentPid, handPloc))))
- .seq(setPlayerNameEffect("Sparks & Rec Enjoyer", currentPid))
- .seq(setPlayerAvatarEffect("ambushers", currentPid))
- .seq(gainMaxHealthEffect(currentPid, const(54).add(getPlayerMaxHealth(currentPid).negate())))
- .seq(gainHealthEffect(54))
- .seq(createCardEffect(bird_dog_def(), currentSkillsLoc))
- .seq(createCardEffect(patron_shoutout_def(), currentSkillsLoc))
- .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(situational_card_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(hero_dash_helper_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(wwyd_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(nostra_dbl_damus_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(blank_to_my_blank_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(congrats_youre_a_nerd_carddef(), loc(currentPid, asidePloc)))
- .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
- .seq(shuffleEffect(currentDeckLoc))
- .seq(sacrificeTarget().apply(selectSource()))
- .seq(moveTarget(deckPloc).apply(selectLoc(loc(currentPid, asidePloc))))
- .seq(shuffleEffect(currentDeckLoc))
- .seq(sacrificeTarget().apply(selectSource()))
- .seq(pushChoiceEffectWithTitle(
- {
- choices = {
- {
- effect = moveTarget(tradeDeckLoc).apply(selectLoc(centerRowLoc))
- .seq(shuffleTradeDeckEffect())
- .seq(refillMarketEffect(const(0)).seq(refillMarketEffect(const(1))).seq(refillMarketEffect(const(2))).seq(refillMarketEffect(const(3))).seq(refillMarketEffect(const(4))))
- .seq(addEffect(endTurnEffect())),
- layout = createLayout(
- {
- name = "Yes",
- art = "art/treasures/T_cleric_elixir_green",
- frame = "frames/necromancer_frames/necromancer_item_cardframe",
- xmlText=[[
-
-
-
-
-
- ]],
+ id = "trickster_pet_monkey_ability_jseph",
+ trigger = uiTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = trickster_pet_monkey_effect()})
+ },
+ layout = cardLayout,
+ })
+end
- }
- ),
- tags = {}
- },
-
- {
- effect = nullEffect(),
- layout = createLayout(
- {
- name = "No",
- art = "art/treasures/T_cleric_elixir_blue_purple",
- frame = "frames/necromancer_frames/necromancer_item_cardframe",
- xmlText=[[
-
-
-
-
-
- ]],
+function trickster_blackmarket_effect(index)
+ local kMoveText = "Moving to top of market deck."
+ return pushTargetedEffect({
+ desc = "Select a card to swap with the top card of the market deck.",
+ min=0,
+ max=1,
+ validTargets = selectLoc(centerRowLoc).take(index).reverse().take(1),
+ targetEffect = moveTarget(revealLoc).seq(
+ -- Only show text and prevent undo if a card was selected
+ ifEffect(selectLoc(revealLoc).count().gte(1),
+ waitForClickEffect(kMoveText, kMoveText)
+ .seq(moveTarget(tradeDeckLoc).apply(selectLoc(revealLoc)))
+ .seq(noUndoEffect())))
+ })
+end
- }
- ),
- tags = {}
- }
- },
- upperTitle = "Confirm your choice. Do you want to use the Sparks & Recreations Enjoyer?",
- lowerTitle = ""
- }))
+function trickster_generate_blackmarket_card(index, title, flavor_text, art)
+ local cardLayout = createLayout({
+ name = title,
+ art = art,
+ frame = "frames/alchemist_frames/alchemist_item_cardframe",
+ xmlText = trickster_blackmarket_layout_template:format(index, flavor_text),
+ })
+ return createItemDef({
+ id = "trickster_blackmarket_jseph" .. index,
+ name = title,
+ types = {itemType},
+ acquireCost = 0,
+ abilities = {
+ createAbility({
+ id = "trickster_blackmarket_ability_jseph" .. index,
+ trigger = uiTrigger,
+ cost = noCost,
+ activations = singleActivation,
+ effect = trickster_blackmarket_effect(index)}),
+ createAbility({
+ id = "trickster_blackmarket_gain_gold_jseph" .. index,
+ trigger = onPlayTrigger,
+ cost = noCost,
+ activations = singleActivation,
+ effect = gainGoldEffect(const(1))
})
},
- layout = createLayout({
- name = "S&R Enjoyer",
- art = "avatars/ambushers",
- frame = "frames/Coop_Campaign_CardFrame",
- xmlText=[[
-
-
-
-
-
-
-
+ layout = cardLayout,
+ })
+end
-
-
-
-
- ]]
- }),
- })
- end
+-- also good art: art/epicart/the_gudgeon
+--[[
+Blackmarket ideas:
+the docks: art/t_maurader
+the catacombs: art/t_broelyn_loreweaver_old
+the back room: art/t_bribe
+the sewers: art/treasures/thief_hideaway_cloak
+the shambles: art/t_violent_gale
+]]
+
+function trickster_blackmarket_the_back_room_carddef()
+ return trickster_generate_blackmarket_card(1, "The Back Room",
+ "There is no honor among thieves, but there is a great deal of profit",
+ "art/t_bribe")
+end
+
+function trickster_blackmarket_the_catacombs_carddef()
+ return trickster_generate_blackmarket_card(2, "The Catacombs",
+ "Gold speaks a language that even the dead can understand",
+ "art/t_broelyn_loreweaver_old")
+end
+
+function trickster_blackmarket_the_docks_carddef()
+ return trickster_generate_blackmarket_card(3, "The Docks",
+ "It was a city of a thousand surprises, most of them unpleasant",
+ "art/t_maurader")
+end
+
+function trickster_blackmarket_the_sewers_carddef()
+ return trickster_generate_blackmarket_card(4, "The Sewers",
+ "Doors are for people who don't have enough imagination",
+ "art/treasures/thief_hideaway_cloak")
+end
+
+function trickster_blackmarket_the_shambles_carddef()
+ return trickster_generate_blackmarket_card(5, "The Shambles",
+ "A short knife is better than a long argument",
+ "art/t_violent_gale")
+end
+
+function trickster_card_in_current_discard()
+ return selectTargets().exclude(selectLoc(currentDiscardLoc)).count().eq(0)
+end
+function trickster_sacrifice_target_and_replace(location)
+ local equalValue = getCardPrintedCost().eq(selectTargets().sum(getCardPrintedCost()))
+ return sacrificeTarget().apply(selectTargets())
+ .seq(moveTarget(location).apply(
+ selectLoc(tradeDeckLoc).take(1).where(equalValue).union(selectLoc(tradeDeckLoc).where(equalValue)).take(1)))
+ .seq(noUndoEffect())
+end
+
+function trickster_stack_the_deck_effect_2(location)
+ return pushTargetedEffect({
+ desc = "Select the second card to sacrifice and replace.",
+ min=0,
+ max=1,
+ validTargets = sacrificeSelector(selectLoc(location).where(getCardPrintedCost().gte(1))),
+ targetEffect = ignoreTarget(trickster_sacrifice_target_and_replace(location))
+ })
+end
+function trickster_stack_the_deck_effect()
+ return pushTargetedEffect({
+ desc = "Select the first card to sacrifice and replace.",
+ min=0,
+ max=1,
+ validTargets = sacrificeSelector(
+ selectLoc(loc(oppPid, discardPloc)).union(selectLoc(currentDiscardLoc))).where(getCardPrintedCost().gte(1)),
+ targetEffect = ignoreTarget(
+ ifElseEffect(
+ trickster_card_in_current_discard(),
+ trickster_sacrifice_target_and_replace(currentDiscardLoc)
+ .seq(trickster_stack_the_deck_effect_2(loc(oppPid, discardPloc))),
+ trickster_sacrifice_target_and_replace(loc(oppPid, discardPloc))
+ .seq(trickster_stack_the_deck_effect_2(currentDiscardLoc))))
+ })
+end
+
+function trickster_stack_the_deck_ability_def()
+ local cardLayout = createLayout({
+ name = "Stack The Deck",
+ art = "art/epicart/street_swindler",
+ frame = "frames/necromancer_frames/necromancer_item_cardframe",
+ xmlText=trickster_replace_ability_layout
+ })
+ return createSkillDef({
+ id = "trickster_replace_ability_jseph",
+ name = "Stack The Deck",
+ types = { abilityType },
+ layout = cardLayout,
+ layoutPath = "art/epicart/street_swindler",
+ abilities = {
+ createAbility({
+ id = "trickster_replace_ability_ability_jseph",
+ trigger = uiTrigger,
+ activations = singleActivation,
+ layout = cardLayout,
+ promptType = showPrompt,
+ effect = trickster_stack_the_deck_effect(),
+ cost = sacrificeSelfCost,
+ }),
+ },
+ })
+end
-- Demonologist cards
function demonologist_shadow_gem_carddef()
@@ -1644,7 +3712,7 @@ function demonologist_shadow_gem_carddef()
layout = layoutCard(
{
title = "Shadow Gem",
- art = "art/treasures/T_Brillant_Ruby",
+ art = "art/treasures/thief_brillant_ruby",
xmlText=[[
@@ -1670,7 +3738,7 @@ function demonologist_shadow_gem_carddef()
layout = layoutCard(
{
title = "Shadow Gem",
- art = "art/treasures/T_Brillant_Ruby",
+ art = "art/treasures/thief_brillant_ruby",
xmlText=[[
@@ -1694,7 +3762,7 @@ function demonologist_shadow_gem_carddef()
layout = createLayout(
{
name = "Shadow Gem",
- art = "art/treasures/T_Brillant_Ruby",
+ art = "art/treasures/thief_brillant_ruby",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1725,18 +3793,18 @@ function demonologist_shadow_feeder_carddef()
abilities = {
createAbility(
{
- id = "Shadow_feeder_main",
+ id = "shadow_feeder_main",
trigger = uiTrigger,
cost = expendCost,
activations = multipleActivations,
- effect = ifElseEffect(selectLoc(currentInPlayLoc).where(isCardType(demonType)).count().gte(1),gainCombatEffect(3),gainCombatEffect(1))
+ effect = ifElseEffect(selectLoc(currentInPlayLoc).where(isCardType(demonType)).count().gte(2),gainCombatEffect(3),gainCombatEffect(1))
}
)
},
layout = createLayout(
{
name = "Shadow Feeder",
- art = "art/T_Devil",
+ art = "art/epicart/deathbringer",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1781,7 +3849,7 @@ function demonologist_void_guard_carddef()
layout = createLayout(
{
name = "Void guard",
- art = "art/T_Midnight_Knight",
+ art = "art/t_midnight_knight",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1826,7 +3894,7 @@ function demonologist_lesser_devourer_carddef()
layout = createLayout(
{
name = "Lesser Devourer",
- art = "art/T_Demon",
+ art = "art/t_demon",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
@@ -1850,7 +3918,7 @@ end
function demonologist_summon_demon_carddef()
local cardLayout = createLayout({
name = "Summon",
- art = "icons/The_Summoning",
+ art = "icons/the_summoning",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1876,11 +3944,11 @@ function demonologist_summon_demon_carddef()
})
return createSkillDef({
- id = "demonologist_summon_skill",
+ id = "demonologist_summon_demon_skill",
name = "Summon Demon",
types = { skillType },
layout = cardLayout,
- layoutPath = "icons/The_Summoning",
+ layoutPath = "icons/the_summoning",
abilities = {
createAbility({
id = "demonologist_summon_demon_ab",
@@ -1901,7 +3969,7 @@ function demonologist_summon_demon_carddef()
layout = createLayout(
{
name = "Demonic leech",
- art = "art/T_wurm",
+ art = "art/t_wurm",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
@@ -1940,7 +4008,7 @@ Demonic Leech gains 1{shield} until it leaves play. " fontsize="18"/>
layout = createLayout(
{
name = "Fel hound",
- art = "art/T_Strength_of_the_wolf",
+ art = "art/epicart/demon_token",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -1970,7 +4038,7 @@ Demonic Leech gains 1{shield} until it leaves play. " fontsize="18"/>
layout = createLayout(
{
name = "Succubus",
- art = "art/T_Banshee",
+ art = "art/epicart/succubus",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2004,7 +4072,7 @@ Demonic Leech gains 1{shield} until it leaves play. " fontsize="18"/>
layout = createLayout(
{
name = "Summon Demon",
- art = "icons/The_Summoning",
+ art = "icons/the_summoning",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2078,7 +4146,7 @@ function demonologist_demonic_leech_carddef()
layout = createLayout(
{
name = "Demonic leech",
- art = "art/T_wurm",
+ art = "art/t_wurm",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
@@ -2146,7 +4214,7 @@ function demonologist_fel_hound_carddef()
layout = createLayout(
{
name = "Fel hound",
- art = "art/T_Strength_of_the_wolf",
+ art = "art/epicart/demon_token",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2209,7 +4277,7 @@ function demonologist_succubus_carddef()
layout = createLayout(
{
name = "Succubus",
- art = "art/T_Banshee",
+ art = "art/epicart/succubus",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2239,7 +4307,7 @@ end
function demonologist_summon_demon_master_carddef()
local cardLayout = createLayout({
name = "Summon Demon Master",
- art = "art/T_Angry_Skeleton",
+ art = "art/t_angry_skeleton",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2263,7 +4331,7 @@ Master into play.
name = "Summon Demon Master",
types = { skillType },
layout = cardLayout,
- layoutPath = "art/T_Angry_Skeleton",
+ layoutPath = "art/t_angry_skeleton",
abilities = {
createAbility({
id = "demonologist_summon_demon_master_ab",
@@ -2278,7 +4346,7 @@ Master into play.
layout = createLayout(
{
name = "Summon Demon Master",
- art = "art/T_Angry_Skeleton",
+ art = "art/t_angry_skeleton",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText=[[
@@ -2308,7 +4376,7 @@ function demonologist_incubus_carddef()
name = "Incubus",
types = {championType, demonType, minionType, nostealType},
acquireCost = 0,
- health = 3,
+ health = 4,
isGuard = false,
abilities = {
createAbility(
@@ -2317,7 +4385,7 @@ function demonologist_incubus_carddef()
trigger = uiTrigger,
cost = expendCost,
activations = multipleActivations,
- effect = gainCombatEffect(2).seq(gainCombatEffect(getCounter("incubus")))
+ effect = gainCombatEffect(3).seq(gainCombatEffect(getCounter("incubus")))
}
),
@@ -2344,13 +4412,13 @@ function demonologist_incubus_carddef()
},
layout = createLayout({
name = "Incubus",
- art = "art/T_Lesser_Vampire",
+ art = "art/epicart/guilt_demon",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
-
+
@@ -2358,7 +4426,7 @@ function demonologist_incubus_carddef()
]],
- health = 3,
+ health = 4,
isGuard = false
})
}
@@ -2372,7 +4440,7 @@ function demonologist_keeper_of_the_void_carddef()
name = "Keeper of the Void",
types = {championType, demonType, minionType, nostealType},
acquireCost = 0,
- health = 3,
+ health = 4,
isGuard = true,
abilities = {
createAbility(
@@ -2382,7 +4450,7 @@ function demonologist_keeper_of_the_void_carddef()
cost = expendCost,
activations = multipleActivations,
effect = gainCombatEffect(2)
- .seq(grantHealthTarget(selectLoc(loc(currentPid, inPlayPloc)).where(isCardType("minion").And(isCardName("demonologist_keeper_of_the_void").invert())).count(), { SlotExpireEnum.startOfOwnerTurn }, nullEffect(), "Void Keeper").apply(selectSource())),
+ .seq(grantHealthTarget(divide(getCounter(selectLoc(loc(currentPid, inPlayPloc)).where(isCardType("minion").And(isCardName("demonologist_keeper_of_the_void").invert())).count()), 2), { SlotExpireEnum.startOfOwnerTurn }, nullEffect(), "Void Keeper").apply(selectSource())),
}
),
@@ -2399,21 +4467,20 @@ function demonologist_keeper_of_the_void_carddef()
},
layout = createLayout({
name = "Keeper of the Void",
- art = "art/T_Giant_Knight",
+ art = "art/epicart/spawning_demon",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
-
-
+
+
-
-
-
+
+
]],
- health = 3,
+ health = 4,
isGuard = true
})
}
@@ -2459,7 +4526,7 @@ function demonologist_demon_master_carddef()
},
layout = createLayout({
name = "Demon Master",
- art = "art/T_Angry_Skeleton",
+ art = "art/t_angry_skeleton",
frame = "frames/necromancer_frames/necromancer_item_cardframe",
xmlText = [[
@@ -2502,8 +4569,8 @@ function apothecary_mezzaluna_carddef()
layout = createLayout(
{
name = "Mezzaluna",
- art = "art/T_Spell_Components",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_spell_components",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2541,7 +4608,7 @@ function apothecary_apprentice_potion_maker_carddef()
layout = layoutCard(
{
title = "Apprentice Potion Maker",
- art = "art/T_Thief_Shadow_Mask",
+ art = "art/t_thief_shadow_mask",
xmlText=[[
@@ -2566,7 +4633,7 @@ function apothecary_apprentice_potion_maker_carddef()
layout = layoutCard(
{
title = "Apprentice Potion Maker",
- art = "art/T_Thief_Shadow_Mask",
+ art = "art/t_thief_shadow_mask",
xmlText=[[
@@ -2586,8 +4653,8 @@ function apothecary_apprentice_potion_maker_carddef()
layout = createLayout(
{
name = "Apprentice Potion Maker",
- art = "art/T_Thief_Shadow_Mask",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_thief_shadow_mask",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2633,8 +4700,8 @@ function apothecary_red_potion_carddef()
},
layout = createLayout({
name = "Red potion",
- art = "art/T_Elixir_of_strength",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_strength",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2670,8 +4737,8 @@ function apothecary_green_potion_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Green Potion",
- art = "art/treasures/T_Green_Potions_Medium",
- frame = "frames/Wizard_CardFrame",
+ art = "art/treasures/t_green_potions_medium",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2690,8 +4757,8 @@ function apothecary_green_potion_carddef()
},
layout = createLayout({
name = "Green Potion",
- art = "art/treasures/T_Green_Potions_Medium",
- frame = "frames/Wizard_CardFrame",
+ art = "art/treasures/t_green_potions_medium",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2726,8 +4793,8 @@ function apothecary_yellow_potion_carddef()
prompt = showPrompt,
layout = layoutCard({
name = "yellow Potion",
- art = "art/T_Elixir_of_fortune",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_fortune",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2748,8 +4815,8 @@ function apothecary_yellow_potion_carddef()
},
layout = createLayout({
name = "yellow Potion",
- art = "art/T_Elixir_of_fortune",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_fortune",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2776,8 +4843,8 @@ function apothecary_custom_brew_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Custom Brew",
- art = "art/T_Elixir_of_concentration",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -2802,8 +4869,8 @@ Draw 1 and opponent discards 1." fontsize="40" />
layout = layoutCard(
{
title = "Custom Brew",
- art = "art/T_Elixir_of_concentration",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -2822,8 +4889,8 @@ Draw 1 and opponent discards 1." fontsize="40" />
layout = layoutCard(
{
title = "Custom Brew",
- art = "art/T_Elixir_of_concentration",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -2842,8 +4909,8 @@ Draw 1 and opponent discards 1." fontsize="40" />
layout = layoutCard(
{
title = "Custom Brew",
- art = "art/T_Elixir_of_concentration",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -2865,19 +4932,19 @@ Opponent discards 1." fontsize="28" />
},
layout = createLayout({
name = "Custom Brew",
- art = "art/T_Elixir_of_concentration",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_elixir_of_concentration",
+ frame = "frames/wizard_cardframe",
text = " or or Draw 1 and opponent discards 1."
}),
- layoutPath = "art/T_Elixir_of_concentration",
+ layoutPath = "art/t_elixir_of_concentration",
})
end
function apothecary_restorative_draught_carddef()
local cardLayout = createLayout({
name = "Restorative Draught",
- art = "art/treasures/T_ranger_elixir_yellow",
- frame = "frames/Wizard_CardFrame",
+ art = "art/treasures/t_ranger_elixir_yellow",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -2897,7 +4964,7 @@ function apothecary_restorative_draught_carddef()
name = "Restorative Draught",
types = { skillType },
layout = cardLayout,
- layoutPath = "art/treasures/T_ranger_elixir_yellow",
+ layoutPath = "art/treasures/t_ranger_elixir_yellow",
abilities = {
createAbility({
id = "apothecary_restorative_draught_ab",
@@ -2922,18 +4989,18 @@ end
-- Cryomancer cards
-function cryomancer_ice_burst_carddef()
+function cryomancer_ice_sickle_carddef()
return createDef(
{
- id = "cryomancer_ice_burst",
- name = "Ice Burst",
+ id = "cryomancer_ice_sickle",
+ name = "Ice Sickle",
types = {noStealType, actionType},
acquireCost = 0,
cardTypeLabel = "Action",
playLocation = castPloc,
abilities = {
createAbility({
- id = "cryomancer_ice_burst",
+ id = "cryomancer_ice_sickle",
layout = cardLayout,
effect = gainCombatEffect(2),
trigger = autoTrigger,
@@ -2943,9 +5010,9 @@ function cryomancer_ice_burst_carddef()
},
layout = createLayout(
{
- name = "Ice Burst",
- art = "art/T_Flame_Burst",
- frame = "frames/Wizard_CardFrame",
+ name = "Ice Sickle",
+ art = "art/t_longsword",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -2953,7 +5020,7 @@ function cryomancer_ice_burst_carddef()
-
+
]],
@@ -2963,46 +5030,54 @@ function cryomancer_ice_burst_carddef()
)
end
-function cryomancer_ice_shield_carddef()
- return createDef(
+function cryomancer_frostwulf_carddef()
+--This is a token champion, that self-sacrifices when it leaves play
+ return createChampionDef(
{
- id = "cryomancer_ice_shield",
- name = "Ice Shield",
- types = {noStealType, actionType},
+ id = "cryomancer_frostwulf",
+ name = "Frostwulf",
+ types = {championType, nostealType },
acquireCost = 0,
- cardTypeLabel = "Action",
- playLocation = castPloc,
+ health = 1,
+ isGuard = false,
abilities = {
- createAbility({
- id = "cryomancer_ice_shield",
- layout = cardLayout,
- effect = ifElseEffect(selectLoc(loc(currentPid, castPloc)).where(isCardAction()).count().gte(3), gainToughnessEffect(2).seq(gainCombatEffect(2)), gainToughnessEffect(2)),
+ --base ability
+ createAbility(
+ {
+ id = "frostwulf_main",
trigger = autoTrigger,
- tags = {}
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(2)
+
}
- ),
-
- },
+ )},
layout = createLayout(
{
- name = "Ice Shield",
- art = "art/T_Glittering_Spray",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
+ name = "Frostwulf",
+ art = "art/epicart/den_mother",
+ frame = "frames/wizard_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
-]],
+
+ ]],
+ health = 1,
+ isGuard = false
}
)
}
)
end
+
function cryomancer_ice_gem_carddef()
return createDef(
{
@@ -3026,7 +5101,7 @@ function cryomancer_ice_gem_carddef()
layout = layoutCard(
{
title = "Ice Gem",
- art = "art/T_Wizard_Alchemist_S_Stone",
+ art = "art/t_wizard_alchemist_s_stone",
xmlText=[[
@@ -3045,7 +5120,7 @@ function cryomancer_ice_gem_carddef()
layout = layoutCard(
{
title = "Ice Gem",
- art = "art/T_Wizard_Alchemist_S_Stone",
+ art = "art/t_wizard_alchemist_s_stone",
xmlText=[[
@@ -3069,8 +5144,8 @@ function cryomancer_ice_gem_carddef()
layout = createLayout(
{
name = "Ice Gem",
- art = "art/T_Wizard_Alchemist_S_Stone",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_wizard_alchemist_s_stone",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3116,8 +5191,8 @@ function cryomancer_freeze_carddef()
layout = createLayout(
{
name = "Freeze",
- art = "art/T_Wind_Tunnel",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/polar_shock",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3137,8 +5212,8 @@ end
function cryomancer_frostbiteskill_carddef()
local cardLayout = createLayout({
name = "Frostbite",
- art = "icons/wind_storm",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/frost_giant",
+ frame = "frames/wizard_cardframe",
xmlText =
[[
@@ -3159,7 +5234,7 @@ function cryomancer_frostbiteskill_carddef()
name = "Frostbite",
types = { skillType },
layout = cardLayout,
- layoutPath = "icons/wind_storm",
+ layoutPath = "art/epicart/frost_giant",
abilities = {
createAbility({
id = "cryomancer_frostbiteskill_ab",
@@ -3200,8 +5275,8 @@ function cryomancer_frostbite_carddef()
layout = createLayout(
{
name = "Frostbite",
- art = "icons/wind_storm",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/frost_giant",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -3228,8 +5303,8 @@ function cryomancer_blizzard_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Blizzard",
- art = "art/T_heavy_gust",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_heavy_gust",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -3245,13 +5320,13 @@ Deal 3 damage to ALL champions, including your own.
]]
}),
- effect = drawCardsEffect(2).seq(damageTarget(3).apply(selectLoc(loc(currentPid, inPlayPloc)).union(selectLoc(loc(oppPid, inPlayPloc))).where(isCardChampion()))),
+ effect = drawCardsEffect(2).seq(damageTarget(3).apply(selectLoc(loc(currentPid, inPlayPloc)).union(selectLoc(loc(oppPid, inPlayPloc))).where(isCardType(tokenType).And(isCardType(demonType))))),
cost = sacrificeSelfCost
})
},
layout = createLayout({
name = "Blizzard",
- art = "art/T_heavy_gust",
+ art = "art/t_heavy_gust",
xmlText = [[
@@ -3271,6 +5346,188 @@ Deal 3 damage to ALL champions, including your own.
})
end
+function cryomancer_permafrost_carddef()
+ return createDef(
+ {
+ id = "permafrost",
+ name = "Permafrost",
+ types = {itemType},
+ cardTypeLabel = "item",
+ playLocation = castPloc,
+ acquireCost = 0,
+ abilities = {
+ createAbility(
+ {
+ id = "permafrost_main",
+ trigger = autoTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = nullEffect()
+
+ }
+ )
+ },
+ layout = createLayout(
+ {
+ name = "Permafrost",
+ art = "art/t_heavy_gust",
+ frame = "frames/wizard_cardframe",
+ cost = 0,
+ xmlText=[[
+
+
+
+
+
+
+
+ ]],
+
+ }
+ )
+ }
+ )
+end
+
+ local CryoFrFogBuff = createGlobalBuff({
+ id="cryomancer_freezing_fog_ability",
+ name = "Freezing Fog",
+ abilities = {
+ createAbility({
+ id="cryomancer_freezing_fog_ability",
+ trigger = deckShuffledTrigger,
+ effect = moveToBottomDeckTarget(false, 0).apply(selectSavedTargets("Freezing Fog")).seq(sacrificeSelf())
+ })
+ },
+ buffDetails = createBuffDetails({
+ name = "Freezing Fog",
+ art = "art/t_chaotic_gust",
+ text = "One of your cards has been set aside. It will be placed on the bottom of your deck when you next shuffle."
+ })
+ })
+
+function cryomancer_freezing_fog_carddef()
+ return createHeroAbilityDef({
+ id = "Freezing_fog_buff",
+ name = "Freezing Fog",
+ types = { heroAbilityType },
+ abilities = {
+ createAbility({
+ id = "Freezing_fog_Activate",
+ trigger = uiTrigger,
+ promptType = showPrompt,
+ layout = createLayout({
+ name = "Freezing Fog",
+ art = "art/t_chaotic_gust",
+ frame = "frames/generic_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ effect = pushTargetedEffect({
+ desc = "Set aside a champion of cost 5 or less from opponent's discard pile.",
+ min=0,
+ max=1,
+ validTargets = selectLoc(loc(oppPid, discardPloc)).where(getCardCost().lte(5)),
+ targetEffect = saveTarget("Freezing Fog").seq(moveTarget(sacrificePloc))
+ .seq(createCardEffect(CryoFrFogBuff, loc(oppPid, buffsPloc)))
+ }),
+ cost = sacrificeSelfCost
+ })
+ },
+ layout = createLayout({
+ name = "Freezing Fog",
+ art = "art/t_chaotic_gust",
+ frame = "frames/wizard_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ layoutPath = "art/t_chaotic_gust",
+ })
+end
+
+
+function Cryomancer_Permafrost_Ab_carddef()
+local cardLayout = createLayout({
+ name = "Permafrost",
+ art = "art/t_heavy_gust",
+ frame = "frames/wizard_cardframe",
+ xmlText = [[
+
+
+
+
+
+
+
+
+
+ ]]
+--Add later: That opponent reveals their hand and discards all champions and actions of cost 2{gold} or less.
+ })
+
+local permafrostBuff = createGlobalBuff({
+ id="permafrost_buff",
+ name = "Permafrost",
+ abilities = {
+ createAbility({
+ id="permafrost_effect",
+ trigger = startOfTurnTrigger,
+ effect = moveToTopDeckTarget(true).apply(selectLoc(loc(currentPid, deckPloc)).where(isCardName("permafrost"))).seq(sacrificeSelf())
+
+ })
+ },
+ buffDetails = createBuffDetails({
+ name = "Permafrost",
+ art = "art/t_heavy_gust",
+ text = "Winter is... here. (Puts Permafrost on top of your deck.)"
+ })
+ })
+
+ return createHeroAbilityDef({
+
+ id = "Permafrost_Ab",
+ name = "Permafrost",
+ types = {skillType},
+ layout = cardLayout,
+ layoutPath = "art/t_heavy_gust",
+ abilities = {
+ createAbility(
+ {
+ id = "Permafrost_Ab_main",
+ trigger = uiTrigger,
+ promptType = showPrompt,
+ layout = cardLayout,
+ effect = createCardEffect(cryomancer_permafrost_carddef(), loc(oppPid, deckPloc)).seq(createCardEffect(permafrostBuff, loc(oppPid, buffsPloc)))
+ --[[.seq(moveTarget(loc(oppPid, discardPloc)).apply(selectLoc(loc(oppPid, handPloc)).where(isCardChampion().And(getCardCost().lte(2)))))]],
+ cost = sacrificeSelfCost
+ }
+ )
+ },
+
+ }
+ )
+end
-- Pyromancer cards
function pyromancer_combust_carddef()
@@ -3300,8 +5557,8 @@ function pyromancer_combust_carddef()
layout = createLayout(
{
name = "Combust",
- art = "art/T_Spark",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/zaltessa_s_fire",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3340,8 +5597,8 @@ function pyromancer_sear_carddef()
layout = createLayout(
{
name = "Sear",
- art = "art/T_Fire_Blast",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/flame_spike",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3377,8 +5634,8 @@ function pyromancer_scorch_carddef()
layout = createLayout(
{
name = "Scorch",
- art = "art/T_Pillar_Of_Fire",
- frame = "frames/Wizard_CardFrame",
+ art = "art/epicart/flame_strike",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3418,7 +5675,7 @@ function pyromancer_fire_shard_carddef()
layout = layoutCard(
{
title = "Fire Shard",
- art = "art/treasures/T_Sharpened_ruby",
+ art = "art/treasures/thief_sharpened_ruby",
xmlText=[[
@@ -3434,8 +5691,8 @@ function pyromancer_fire_shard_carddef()
effect = createCardEffect(fire_gem_carddef(), currentDiscardLoc),
layout = layoutCard(
{
- title = "Shadow Gem",
- art = "art/treasures/T_Sharpened_ruby",
+ title = "Fire Shard",
+ art = "art/treasures/thief_sharpened_ruby",
xmlText=[[
@@ -3457,8 +5714,8 @@ function pyromancer_fire_shard_carddef()
layout = createLayout(
{
name = "Fire Shard",
- art = "art/treasures/T_Sharpened_ruby",
- frame = "frames/Wizard_CardFrame",
+ art = "art/treasures/thief_sharpened_ruby",
+ frame = "frames/wizard_cardframe",
xmlText=[[
@@ -3476,10 +5733,13 @@ Acquire a Fire Gem for free." fontsize="26" />
)
end
+
+
+
function pyromancer_conflagration_1p_carddef()
return createHeroAbilityDef({
id = "conflagration_1p",
- name = "Conflagration",
+ name = "Phoenix Fire",
types = { heroAbilityType },
abilities = {
createAbility({
@@ -3487,202 +5747,155 @@ function pyromancer_conflagration_1p_carddef()
trigger = uiTrigger,
promptType = showPrompt,
layout = createLayout({
- name = "Conflagration",
- art = "icons/growing_flame",
- xmlText = [[
-
-
-
-
-
-
-
-
- ]]
- }),
- effect = gainCombatEffect(5).seq(gainCombatEffect(getCounter("conflagration_1p")))
- .seq(sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)).where(isCardName("pyromancer_fuel_1_skill").Or(isCardName("pyromancer_fuel_2_skill")).Or(isCardName("pyromancer_fuel_3_skill")).Or(isCardName("pyromancer_fuel_4_skill")).Or(isCardName("pyromancer_fuel_5_skill")))))
+ name = "Phoenix Fire",
+ art = "art/epicart/fiery_demise",
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("conflagration_1p") })
+ }),
+ effect = gainCombatEffect(getCounter("conflagration_1p"))
+ .seq(sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)).where(isCardName("pyromancer_1p_fuel_1_skill"))))
.seq(createCardEffect(pyromancer_after_burn_carddef(), currentSkillsLoc)),
cost = sacrificeSelfCost
}),
},
layout = createLayout({
- name = "Conflagration",
- art = "icons/growing_flame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
+ name = "Phoenix Fire",
+ art = "art/epicart/fiery_demise",
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("conflagration_1p") })
}),
- layoutPath = "icons/fire_bomb",
+ layoutPath = "art/epicart/fiery_demise",
})
end
-
-
-function pyromancer_fuel_1carddef()
- local cardLayout = createLayout({
- name = "Fuel",
- art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
- })
- return createSkillDef({
- id = "pyromancer_fuel_1_skill",
- name = "Fuel",
- types = { skillType },
- layout = cardLayout,
- layoutPath = "icons/growing_flame",
+
+function pyromancer_conflagration_2p_carddef()
+ return createHeroAbilityDef({
+ id = "conflagration_2p",
+ name = "Phoenix Fire",
+ types = { heroAbilityType },
abilities = {
- createAbility({
- id = "pyromancer_fuel_1_ab",
- trigger = uiTrigger,
+ createAbility({
+ id = "conflagration_2pActivate",
+ trigger = uiTrigger,
promptType = showPrompt,
- activations = singleActivation,
- layout = cardLayout,
- effect = incrementCounterEffect("conflagration_1p", 1).seq(waitForClickEffect("Conflagration Total = 6"))
- .seq(transformTarget("pyromancer_fuel_2_skill").apply(selectSource())),
- cost = combineCosts({
- expendCost,
- goldCost(2)
- }),
- }),
- }
-
- })
-end
-
-function pyromancer_fuel_2carddef()
- local cardLayout = createLayout({
- name = "Fuel",
- art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
- })
+ layout = createLayout({
+ name = "Phoenix Fire",
+ art = "art/epicart/fiery_demise",
+ xmlText = format([[
+
+
+
+
+
+
+
- return createSkillDef({
- id = "pyromancer_fuel_2_skill",
- name = "Fuel",
- types = { skillType },
- layout = cardLayout,
- layoutPath = "icons/growing_flame",
- abilities = {
- createAbility({
- id = "pyromancer_fuel_2_ab",
- trigger = uiTrigger,
- promptType = showPrompt,
- activations = singleActivation,
- layout = cardLayout,
- effect = incrementCounterEffect("conflagration_1p", 2).seq(waitForClickEffect("Conflagration Total = 8"))
- .seq(transformTarget("pyromancer_fuel_3_skill").apply(selectSource())),
- cost = combineCosts({
- expendCost,
- goldCost(2)
- }),
- }),
- }
-
- })
-end
+
+
+ ]],
+ { getCounter("conflagration_2p") })
+ }),
+ effect = gainCombatEffect(getCounter("conflagration_2p"))
+ .seq(sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)).where(isCardName("pyromancer_2p_fuel_1_skill"))))
+ .seq(createCardEffect(pyromancer_after_burn_carddef(), currentSkillsLoc)),
+ cost = sacrificeSelfCost
+ }),
+ },
+ layout = createLayout({
+ name = "Phoenix Fire",
+ art = "art/epicart/fiery_demise",
+ xmlText = format([[
+
+
+
+
+
+
+
-function pyromancer_fuel_3carddef()
- local cardLayout = createLayout({
- name = "Fuel",
- art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
- })
+
+
+ ]],
+ { getCounter("conflagration_2p") })
+ }),
+ layoutPath = "art/epicart/fiery_demise",
+ })
+end
- return createSkillDef({
- id = "pyromancer_fuel_3_skill",
- name = "Fuel",
- types = { skillType },
- layout = cardLayout,
- layoutPath = "icons/growing_flame",
- abilities = {
- createAbility({
- id = "pyromancer_fuel_3_ab",
- trigger = uiTrigger,
- promptType = showPrompt,
- activations = singleActivation,
- layout = cardLayout,
- effect = incrementCounterEffect("conflagration_1p", 3).seq(waitForClickEffect("Conflagration Total = 11"))
- .seq(transformTarget("pyromancer_fuel_4_skill").apply(selectSource())),
- cost = combineCosts({
- expendCost,
- goldCost(2)
- }),
- }),
- }
-
- })
-end
+pyroSkill = "pyroSkill"
+pyroSkillValue = sumIntSlots(currentPlayer(), pyroSkill)
-function pyromancer_fuel_4carddef()
+function pyromancer_1p_fuel_1carddef()
local cardLayout = createLayout({
- name = "Fuel",
- art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
+ name = "Research Phoenix Fire",
+ art = "art/epicart/arcane_research",
+ frame = "frames/wizard_cardframe",
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("fuel_1p") })
})
return createSkillDef({
- id = "pyromancer_fuel_4_skill",
- name = "Fuel",
+ id = "pyromancer_1p_fuel_1_skill",
+ name = "Research Phoenix Fire",
types = { skillType },
layout = cardLayout,
- layoutPath = "icons/growing_flame",
+ layoutPath = "art/epicart/arcane_research",
abilities = {
createAbility({
- id = "pyromancer_fuel_4_ab",
+ id = "pyromancer_1p_fuel_1_ab",
trigger = uiTrigger,
promptType = showPrompt,
activations = singleActivation,
layout = cardLayout,
- effect = incrementCounterEffect("conflagration_1p", 4).seq(waitForClickEffect("Conflagration Total = 15"))
- .seq(transformTarget("pyromancer_fuel_5_skill").apply(selectSource())),
+ effect = incrementCounterEffect("conflagration_1p", (getCounter("fuel_1p")))
+ .seq(ifElseEffect((getCounter("fuel_1p").lte(4)),incrementCounterEffect("fuel_1p", 1),nullEffect())),
cost = combineCosts({
expendCost,
goldCost(2)
@@ -3693,37 +5906,43 @@ function pyromancer_fuel_4carddef()
})
end
-function pyromancer_fuel_5carddef()
+
+function pyromancer_2p_fuel_1carddef()
local cardLayout = createLayout({
- name = "Fuel",
- art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
+ name = "Research Phoenix Fire",
+ art = "art/epicart/arcane_research",
+ frame = "frames/wizard_cardframe",
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("fuel_2p") })
})
return createSkillDef({
- id = "pyromancer_fuel_5_skill",
- name = "Fuel",
+ id = "pyromancer_2p_fuel_1_skill",
+ name = "Research Phoenix Fire",
types = { skillType },
layout = cardLayout,
- layoutPath = "icons/growing_flame",
+ layoutPath = "art/epicart/arcane_research",
abilities = {
createAbility({
- id = "pyromancer_fuel_5_ab",
+ id = "pyromancer_2p_fuel_1_ab",
trigger = uiTrigger,
promptType = showPrompt,
activations = singleActivation,
layout = cardLayout,
- effect = incrementCounterEffect("conflagration_1p", 5).seq(waitForClickEffect("+5 to Conflagration")),
+ effect = incrementCounterEffect("conflagration_2p", (getCounter("fuel_2p")))
+ .seq(ifElseEffect((getCounter("fuel_2p").lte(4)),incrementCounterEffect("fuel_2p", 1),nullEffect())),
cost = combineCosts({
expendCost,
goldCost(2)
@@ -3738,7 +5957,7 @@ function pyromancer_after_burn_carddef()
local cardLayout = createLayout({
name = "After Burn",
art = "icons/growing_flame",
- frame = "frames/Wizard_CardFrame",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -3815,7 +6034,7 @@ function terramancer_earth_gem_carddef()
tags = {gainCombatTag}
},
{
- effect = transformTarget("terramancer_move_earth_skill_free").apply(selectLoc(currentSkillsLoc).where(isCardName("terramancer_move_earth_skill"))),
+ effect = addSlotToPlayerEffect(controllerPid, createPlayerIntExpressionSlot(skillCostModKey, toIntExpression(-2), { endOfTurnExpiry })),
layout = layoutCard(
{
title = "Earth Gem",
@@ -3823,7 +6042,8 @@ function terramancer_earth_gem_carddef()
xmlText=[[
-
+
]]
@@ -3849,7 +6069,8 @@ function terramancer_earth_gem_carddef()
+Your class skill costs
+2{gold} less this turn." fontsize="24" />
]]
@@ -3872,7 +6093,7 @@ function terramancer_hurl_boulder_carddef()
createAbility({
id = "terramancer_hurl_boulder",
layout = cardLayout,
- effect = ifElseEffect(selectLoc(currentSkillsLoc).where(isCardName("terramancer_move_earth_skill").Or(isCardName("terramancer_move_earth_skill_free")).And(isCardExpended())).count().gte(1),gainCombatEffect(4),gainCombatEffect(2)),
+ effect = ifElseEffect(selectLoc(currentSkillsLoc).where(isCardName("terramancer_move_earth1_skill").Or(isCardName("terramancer_move_earth2_skill")).And(isCardExpended())).count().gte(1),gainCombatEffect(4),gainCombatEffect(2)),
trigger = autoTrigger,
tags = {}
}
@@ -3882,7 +6103,7 @@ function terramancer_hurl_boulder_carddef()
layout = createLayout(
{
name = "Hurl Boulder",
- art = "icons/wizard_calm_channel",
+ art = "art/epicart/apocalypse",
frame = "frames/druid_frames/druid_action_cardframe",
xmlText=[[
@@ -3966,10 +6187,119 @@ function terramancer_tremor_carddef()
)
end
-function terramancer_clay_golem_carddef()
+function terramancer_clay_golem1_carddef()
+ return createChampionDef(
+ {
+ id = "terramancer_clay_golem1",
+ name = "Clay Golem",
+ types = {championType, nostealType},
+ acquireCost = 0,
+ health = 1,
+ isGuard = false,
+ abilities = {
+ createAbility(
+ {
+ id = "clay_golem1_main",
+ trigger = autoTrigger,
+ cost = expendCost,
+ activations = multipleActivations,
+ effect = gainCombatEffect(1)
+
+ }
+
+ ),
+ createAbility(
+ {
+ id = "clay_golem1_healthbuff",
+ trigger = onPlayTrigger,
+ cost = noCost,
+ activations = singleActivations,
+ effect = pushChoiceEffect(
+ {
+ choices = {
+ {
+ effect = nullEffect(),
+ layout = layoutCard(
+ {
+ title = "Clay Golem",
+ art = "art/t_stone_golem",
+ xmlText=[[
+
+
+
+
+
+
+]],
+ health = 1,
+ isGuard = false
+ }
+ ),
+ tags = {}
+ },
+ {
+ effect = grantHealthTarget(2, { SlotExpireEnum.LeavesPlay }, nullEffect(), "Golem. Golem.").apply(selectSource())
+ .seq(incrementCounterEffect("wallofEarth1Counter", -2)),
+ condition = getCounter("wallofEarth1Counter").gte(2),
+ layout = layoutCard(
+ {
+ title = "Clay Golem",
+ art = "art/t_stone_golem",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ health = 3,
+ isGuard = false
+ }
+ ),
+ }
+ }
+ }
+ )
+
+ }
+
+ )
+ },
+ layout = createLayout(
+ {
+ name = "Clay Golem",
+ art = "art/t_stone_golem",
+ frame = "frames/druid_frames/druid_action_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+ ]],
+ health = 1,
+ isGuard = false
+ }
+ )
+ }
+ )
+end
+
+function terramancer_clay_golem2_carddef()
return createChampionDef(
{
- id = "terramancer_clay_golem",
+ id = "terramancer_clay_golem2",
name = "Clay Golem",
types = {championType, nostealType},
acquireCost = 0,
@@ -3978,7 +6308,7 @@ function terramancer_clay_golem_carddef()
abilities = {
createAbility(
{
- id = "clay_golem_main",
+ id = "clay_golem2_main",
trigger = autoTrigger,
cost = expendCost,
activations = multipleActivations,
@@ -3989,7 +6319,7 @@ function terramancer_clay_golem_carddef()
),
createAbility(
{
- id = "clay_golem_healthbuff",
+ id = "clay_golem2_healthbuff",
trigger = onPlayTrigger,
cost = noCost,
activations = singleActivations,
@@ -4001,7 +6331,7 @@ function terramancer_clay_golem_carddef()
layout = layoutCard(
{
title = "Clay Golem",
- art = "art/T_stone_golem",
+ art = "art/t_stone_golem",
xmlText=[[
@@ -4018,13 +6348,12 @@ function terramancer_clay_golem_carddef()
},
{
effect = grantHealthTarget(2, { SlotExpireEnum.LeavesPlay }, nullEffect(), "Golem. Golem.").apply(selectSource())
- .seq(incrementCounterEffect("wallofEarthCounter", -2))
- .seq(simpleMessageExpressionEffect(format("Wall of Earth has {0} counters.", {getCounter("wallofEarthCounter")}))),
- condition = getCounter("wallofEarthCounter").gte(2),
+ .seq(incrementCounterEffect("wallofEarth2Counter", -2)),
+ condition = getCounter("wallofEarth2Counter").gte(2),
layout = layoutCard(
{
title = "Clay Golem",
- art = "art/T_stone_golem",
+ art = "art/t_stone_golem",
xmlText=[[
@@ -4054,7 +6383,7 @@ from your class skill." fontsize="20" flexiblewidth="10" />
layout = createLayout(
{
name = "Clay Golem",
- art = "art/T_stone_golem",
+ art = "art/t_stone_golem",
frame = "frames/druid_frames/druid_action_cardframe",
xmlText=[[
@@ -4076,33 +6405,41 @@ from your class skill." fontsize="20" flexiblewidth="10" />
)
end
-function terramancer_move_earth_carddef()
+function terramancer_move_earth1_carddef()
local cardLayout = createLayout({
name = "Move Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
frame = "frames/druid_frames/druid_item_cardframe",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("wallofEarth1Counter"), getCounter("wallofEarth1Counter"), divide(getCounter("wallofEarth1Counter"), 2) }
+ )
})
return createSkillDef({
- id = "terramancer_move_earth_skill",
+ id = "terramancer_move_earth1_skill",
name = "move_earth",
types = { skillType },
layout = cardLayout,
layoutPath = "icons/wizard_serene_channel",
abilities = {
createAbility({
- id = "move_earth_ab",
+ id = "move_earth1_ab",
trigger = uiTrigger,
promptType = showPrompt,
activations = singleActivation,
@@ -4111,12 +6448,11 @@ Remove all counters. Put a Wall token into play with {guard} equal to the number
{
choices = {
{
- effect = incrementCounterEffect("wallofEarthCounter", 2)
- .seq(simpleMessageExpressionEffect(format("Wall of Earth has {0} counters.", {getCounter("wallofEarthCounter")}))),
+ effect = incrementCounterEffect("wallofEarth1Counter", 2),
layout = layoutCard(
{
title = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
xmlText=[[
@@ -4134,14 +6470,14 @@ to this card." fontsize="30"/>
{
--here --
effect = createCardEffect(terramancer_wall_of_earth_carddef(), currentInPlayLoc)
- .seq(grantHealthTarget((getCounter("wallofEarthCounter")), { SlotExpireEnum.LeavesPlay }, nullEffect(), "Wall of earth").apply(selectLoc(loc(currentPid, inPlayPloc)).where(isCardChampion().And(isCardName("terramancer_wall_of_earth")))))
- .seq(gainHealthEffect(divide(getCounter("wallofEarthCounter"), 2)))
- .seq(resetCounterEffect("wallofEarthCounter")),
- condition = getCounter("wallofEarthCounter").gte(2),
+ .seq(grantHealthTarget((getCounter("wallofEarth1Counter")), { SlotExpireEnum.LeavesPlay }, nullEffect(), "Wall of earth").apply(selectLoc(loc(currentPid, inPlayPloc)).where(isCardChampion().And(isCardName("terramancer_wall_of_earth")))))
+ .seq(gainHealthEffect(divide(getCounter("wallofEarth1Counter"), 2)))
+ .seq(resetCounterEffect("wallofEarth1Counter")),
+ condition = getCounter("wallofEarth1Counter").gte(2),
layout = layoutCard(
{
title = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
xmlText=[[
@@ -4169,33 +6505,41 @@ Gain {health} equal to half that number." fontsize="20" />
})
end
-function terramancer_move_earth_free_carddef()
+function terramancer_move_earth2_carddef()
local cardLayout = createLayout({
name = "Move Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
frame = "frames/druid_frames/druid_item_cardframe",
- xmlText = [[
-
-
-
-
-
-
-
-
-]]
+ xmlText = format([[
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]],
+ { getCounter("wallofEarth2Counter"), getCounter("wallofEarth2Counter"), divide(getCounter("wallofEarth2Counter"), 2) }
+ )
})
return createSkillDef({
- id = "terramancer_move_earth_skill_free",
+ id = "terramancer_move_earth2_skill",
name = "move_earth",
types = { skillType },
layout = cardLayout,
layoutPath = "icons/wizard_serene_channel",
abilities = {
createAbility({
- id = "move_earth_ab",
+ id = "move_earth2_ab",
trigger = uiTrigger,
promptType = showPrompt,
activations = singleActivation,
@@ -4204,12 +6548,11 @@ function terramancer_move_earth_free_carddef()
{
choices = {
{
- effect = incrementCounterEffect("wallofEarthCounter", 2)
- .seq(simpleMessageExpressionEffect(format("Wall of Earth has {0} counters.", {getCounter("wallofEarthCounter")}))),
+ effect = incrementCounterEffect("wallofEarth2Counter", 2),
layout = layoutCard(
{
title = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
xmlText=[[
@@ -4227,14 +6570,14 @@ to this card." fontsize="30"/>
{
--here --
effect = createCardEffect(terramancer_wall_of_earth_carddef(), currentInPlayLoc)
- .seq(grantHealthTarget((getCounter("wallofEarthCounter")), { SlotExpireEnum.LeavesPlay }, nullEffect(), "Wall of earth").apply(selectLoc(loc(currentPid, inPlayPloc)).where(isCardChampion().And(isCardName("terramancer_wall_of_earth")))))
- .seq(gainHealthEffect(divide(getCounter("wallofEarthCounter"), 2)))
- .seq(resetCounterEffect("wallofEarthCounter")),
- condition = getCounter("wallofEarthCounter").gte(2),
+ .seq(grantHealthTarget((getCounter("wallofEarth2Counter")), { SlotExpireEnum.LeavesPlay }, nullEffect(), "Wall of earth").apply(selectLoc(loc(currentPid, inPlayPloc)).where(isCardChampion().And(isCardName("terramancer_wall_of_earth")))))
+ .seq(gainHealthEffect(divide(getCounter("wallofEarth2Counter"), 2)))
+ .seq(resetCounterEffect("wallofEarth2Counter")),
+ condition = getCounter("wallofEarth2Counter").gte(2),
layout = layoutCard(
{
title = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
xmlText=[[
@@ -4252,16 +6595,11 @@ Gain {health} equal to half that number." fontsize="20" />
}
}
),
- cost = expendCost
+ cost = combineCosts({
+ expendCost,
+ goldCost(2)
+ })
}),
- createAbility({
- id = "terramancer_extract_earth_free_sac",
- trigger = endOfTurnTrigger,
- activations = singleActivation,
- layout = cardLayout,
- effect =transformTarget("terramancer_move_earth_skill").apply(selectSource()),
- cost = noCost,
- }),
}
})
@@ -4281,7 +6619,7 @@ function terramancer_wall_of_earth_carddef()
},
buffDetails = createBuffDetails({
name = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
text = "Champions cannot be targeted while Wall of Earth is in play."
})
})
@@ -4320,7 +6658,7 @@ function terramancer_wall_of_earth_carddef()
layout = createLayout(
{
name = "Wall of Earth",
- art = "art/T_Fissure",
+ art = "art/t_fissure",
frame = "frames/druid_frames/druid_action_cardframe",
xmlText=[[
@@ -4346,7 +6684,7 @@ function terramancer_swallowed_by_the_earth_def()
local abilityLayout = createLayout({
name = "Swallowed by the Earth",
- art = "art/sets/Dungeons/dragged_below",
+ art = "art/sets/dungeons/dragged_below",
frame = "frames/druid_frames/druid_item_cardframe",
xmlText=[[
@@ -4391,7 +6729,7 @@ function terramancer_swallowed_by_the_earth_def()
layout = layoutCard(
{
title = "Swallowed by the Earth",
- art = "art/sets/Dungeons/dragged_below",
+ art = "art/sets/dungeons/dragged_below",
xmlText=[[
@@ -4414,7 +6752,7 @@ function terramancer_swallowed_by_the_earth_def()
layout = layoutCard(
{
title = "Swallowed by the Earth",
- art = "art/sets/Dungeons/dragged_below",
+ art = "art/sets/dungeons/dragged_below",
xmlText=[[
@@ -4439,7 +6777,7 @@ function terramancer_swallowed_by_the_earth_def()
})
},
layout = abilityLayout,
- layoutPath= "art/sets/Dungeons/dragged_below"
+ layoutPath= "art/sets/dungeons/dragged_below"
})
end
@@ -4465,8 +6803,8 @@ function thandarlorian_combat_shield_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Combat Shield",
- art = "art/T_Cleric_Brightstar_Shield",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/angeline_s_favor",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4484,8 +6822,8 @@ function thandarlorian_combat_shield_carddef()
},
layout = createLayout({
name = "Combat Shield",
- art = "art/T_Cleric_Brightstar_Shield",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/angeline_s_favor",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4520,8 +6858,8 @@ function thandarlorian_coordinated_attack_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Coordinated Attack",
- art = "art/T_Rally_The_Troops",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/insurgency",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4538,8 +6876,8 @@ function thandarlorian_coordinated_attack_carddef()
},
layout = createLayout({
name = "Coordinated Attack",
- art = "art/T_Rally_The_Troops",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/insurgency",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4571,8 +6909,8 @@ function thandarlorian_hand_ballista_carddef()
},
layout = createLayout({
name = "Hand Ballista",
- art = "art/T_Light_Crossbow",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_light_crossbow",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4612,8 +6950,8 @@ function thandarlorian_bounty_hunters_stone_of_seeking_carddef()
effect = gainGoldEffect(1),
layout = createLayout({
name = "Bounty Hunter's Stone of Seeking",
- art = "art/T_Wizard_Alchemist_S_Stone",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_wizard_alchemist_s_stone",
+ frame = "frames/coop_campaign_cardframe",
Text = [[
@@ -4629,8 +6967,8 @@ function thandarlorian_bounty_hunters_stone_of_seeking_carddef()
},
layout = createLayout({
name = "Bounty Hunter's Stone of Seeking",
- art = "art/T_Wizard_Alchemist_S_Stone",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_wizard_alchemist_s_stone",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4657,7 +6995,7 @@ function thandarlorian_bracer_blades_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
xmlText = [[
@@ -4686,7 +7024,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
text = "Deal 3 damage to target champion."
}
),
@@ -4697,7 +7035,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
xmlText=[[
@@ -4725,7 +7063,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
text = "Deal 3 damage to target champion."
}
),
@@ -4736,7 +7074,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
xmlText=[[
@@ -4764,7 +7102,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
text = "Deal 3 damage to target champion."
}
),
@@ -4775,7 +7113,7 @@ Make this choice 3 times." fontsize="24"/>
layout = layoutCard(
{
title = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
xmlText=[[
@@ -4794,7 +7132,7 @@ Make this choice 3 times." fontsize="24"/>
},
layout = createLayout({
name = "Bracer Blades",
- art = "art/treasures/T_Bracers_Of_Brawn",
+ art = "art/treasures/t_bracers_of_brawn",
xmlText = [[
@@ -4808,15 +7146,15 @@ Make this choice 3 times." fontsize="24"/>
]]
}),
- layoutPath = "art/treasures/T_Bracers_Of_Brawn",
+ layoutPath = "art/treasures/t_bracers_of_brawn",
})
end
function thandarlorian_whipcord_carddef()
local cardLayout = createLayout({
name = "Whipcord",
- art = "art/T_Thief_Enchanted_Garrote",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/treasures/barbarian_whip",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4836,7 +7174,7 @@ function thandarlorian_whipcord_carddef()
name = "Whipcord",
types = { skillType },
layout = cardLayout,
- layoutPath = "art/T_Thief_Enchanted_Garrote",
+ layoutPath = "art/treasures/barbarian_whip",
abilities = {
createAbility({
id = "thandarlorian_whipcord_ab",
@@ -4866,7 +7204,7 @@ function thandarlorian_whipcord_carddef()
layout = layoutCard(
{
title = "Whipcord",
- art = "art/T_Thief_Enchanted_Garrote",
+ art = "art/treasures/barbarian_whip",
xmlText = [[
@@ -4897,7 +7235,7 @@ function thandarlorian_whipcord_carddef()
layout = layoutCard(
{
title = "Whipcord",
- art = "art/T_Thief_Enchanted_Garrote",
+ art = "art/treasures/barbarian_whip",
xmlText = [[
@@ -4921,8 +7259,8 @@ end
function thandarlorian_dragon_shard_armour_carddef()
local cardLayout = createLayout({
name = "Dragon Shard Armour",
- art = "art/T_Fighter_Helm_Of_Fury_2",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/lesser_angel",
+ frame = "frames/coop_campaign_cardframe",
xmlText = [[
@@ -4939,7 +7277,7 @@ function thandarlorian_dragon_shard_armour_carddef()
name = "Dragon Shard Armour",
types = { skillType },
layout = cardLayout,
- layoutPath = "art/T_Fighter_Helm_Of_Fury_2",
+ layoutPath = "art/epicart/lesser_angel",
abilities = {
createAbility({
id = "thandarlorian_dragon_shard_armour_ab",
@@ -4981,7 +7319,7 @@ function paladin_warhammer_carddef()
layout = layoutCard(
{
title = "Warhammer",
- art = "art/T_Flesh_Ripper",
+ art = "art/t_flesh_ripper",
text = "Gain "
}
),
@@ -4992,7 +7330,7 @@ function paladin_warhammer_carddef()
layout = layoutCard(
{
title = "Warhammer",
- art = "art/T_Flesh_Ripper",
+ art = "art/t_flesh_ripper",
text = "Gain "
}
),
@@ -5009,8 +7347,8 @@ function paladin_warhammer_carddef()
layout = createLayout(
{
name = "Warhammer",
- art = "art/T_Flesh_Ripper",
- frame = "frames/Cleric_CardFrame",
+ art = "art/t_flesh_ripper",
+ frame = "frames/cleric_cardframe",
text = "Gain or Gain \n If you have played a weapon this turn, gain both.",
}
)
@@ -5068,7 +7406,7 @@ function paladin_crusader_carddef()
{
name = "Crusader",
art = "avatars/man_at_arms",
- frame = "frames/Cleric_CardFrame",
+ frame = "frames/cleric_cardframe",
text = " or ",
health = 2,
isGuard = true
@@ -5082,7 +7420,7 @@ function paladin_prayer_carddef()
local cardLayout = createLayout({
name = "Prayer",
art = "icons/wind_storm",
- frame = "frames/Cleric_CardFrame",
+ frame = "frames/cleric_cardframe",
text = " \n Gain \n Gain "
})
@@ -5120,8 +7458,8 @@ function paladin_sacred_oath_carddef()
promptType = showPrompt,
layout = createLayout ({
name = "Sacred Oath",
- art = "art/T_Devotion",
- frame = "frames/Cleric_CardFrame",
+ art = "art/t_devotion",
+ frame = "frames/cleric_cardframe",
text = " Prepare up to\n3 champions\nin play."
}),
effect = pushTargetedEffect({
@@ -5136,10 +7474,10 @@ function paladin_sacred_oath_carddef()
},
layout = createLayout({
name = "Sacred Oath",
- art = "art/T_Devotion",
+ art = "art/t_devotion",
text = " Prepare up to\n3 champions\nin play."
}),
- layoutPath = "art/T_Devotion",
+ layoutPath = "art/t_devotion",
})
end
@@ -5158,8 +7496,8 @@ function siphon_life_def()
promptType = showPrompt,
layout = createLayout({
name = "Siphon Life",
- art = "art/T_Life_Force",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_life_force",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -5173,8 +7511,8 @@ function siphon_life_def()
},
layout = createLayout({
name = "Siphon Life",
- art = "art/T_Life_Force",
- frame = "frames/Wizard_CardFrame",
+ art = "art/t_life_force",
+ frame = "frames/wizard_cardframe",
xmlText = [[
@@ -5182,7 +7520,7 @@ function siphon_life_def()
]]
}),
- layoutPath = "art/T_Life_Force"
+ layoutPath = "art/t_life_force"
})
end
@@ -5201,7 +7539,7 @@ function piercing_screech_def()
promptType = showPrompt,
layout = createLayout({
name = "Piercing Screech",
- art = "art/T_Banshee",
+ art = "art/t_banshee",
xmlText = [[
@@ -5217,7 +7555,7 @@ function piercing_screech_def()
},
layout = createLayout({
name = "Piercing Screech",
- art = "art/T_Banshee",
+ art = "art/t_banshee",
xmlText = [[
@@ -5227,7 +7565,7 @@ function piercing_screech_def()
]]
}),
- layoutPath= "art/T_Banshee"
+ layoutPath= "art/t_banshee"
})
end
@@ -5235,7 +7573,7 @@ function witch_flash_freeze_carddef()
local cardLayout = createLayout({
name = "Flash Freeze",
art = "icons/ranger_fast_track",
- frame = "frames/Wizard_CardFrame",
+ frame = "frames/wizard_cardframe",
text = "
Expend target champion."
})
@@ -5262,8 +7600,8 @@ end
function witch_cauldron_carddef()
local cardLayout = createLayout({
name = "Witch's Cauldron",
- art = "art/T_Confused_Apparition",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_confused_apparition",
+ frame = "frames/coop_campaign_cardframe",
cardTypeLabel = "Item",
xmlText = [[
@@ -5321,8 +7659,8 @@ function flame_burst_carddef()
},
layout = createLayout({
name = "Flame Burst",
- art = "art/T_Spreading_Sparks",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_spreading_sparks",
+ frame = "frames/generic_cardframe",
xmlText = [[
@@ -5355,7 +7693,7 @@ function call_lightning_carddef()
layout = createLayout({
name = "Call Lightning",
art = "icons/wizard_soul_channel",
- frame = "frames/Generic_CardFrame",
+ frame = "frames/generic_cardframe",
xmlText = [[
@@ -5387,8 +7725,8 @@ function natures_blessing_carddef()
},
layout = createLayout({
name = "Natures Blessing",
- art = "art/T_Nature_S_Bounty",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_nature_s_bounty",
+ frame = "frames/generic_cardframe",
xmlText = [[
@@ -5406,7 +7744,7 @@ function gift_of_the_elements_carddef()
local protectionLayout = layoutCard({
name = "Protection",
- art = "art/T_Splashing_Wave",
+ art = "art/t_splashing_wave",
xmlText = [[
@@ -5420,7 +7758,7 @@ function gift_of_the_elements_carddef()
local destructionLayout = layoutCard({
name = "Destruction",
- art = "art/T_Spreading_Blaze",
+ art = "art/t_spreading_blaze",
xmlText = [[
@@ -5463,7 +7801,7 @@ function gift_of_the_elements_carddef()
layout = createLayout({
name = "Gift of the Elements",
art = "icons/wind_storm",
- frame = "frames/Generic_CardFrame",
+ frame = "frames/generic_cardframe",
xmlText = [[
@@ -5549,8 +7887,8 @@ function midas_kings_adviser_carddef()
},
layout = createLayout({
name = "Kings adviser",
- art = "art/T_Tithe_Priest",
- frame = "frames/Treasure_CardFrame",
+ art = "art/t_tithe_priest",
+ frame = "frames/treasure_cardframe",
text = "Lean into the power of “No” to fend off the distractions of shiny new objects.",
xmlText = [[
@@ -5589,7 +7927,7 @@ function midas_gold_carddef()
layout = createLayout({
name = "Gold",
art = "art/gold_male_pale",
- frame = "frames/Treasure_CardFrame",
+ frame = "frames/treasure_cardframe",
xmlText = [[
@@ -5623,8 +7961,8 @@ function midas_liquid_gold_carddef()
},
layout = createLayout({
name = "Liquid gold",
- art = "art/treasures/T_Cleric_Elixir_Golden",
- frame = "frames/Treasure_CardFrame",
+ art = "art/treasures/t_cleric_elixir_golden",
+ frame = "frames/treasure_cardframe",
xmlText = [[
@@ -5655,8 +7993,8 @@ function greed_is_good_skilldef()
promptType = showPrompt,
layout = createLayout({
name = "Greed is good",
- art = "art/T_Bribe",
- frame = "frames/Treasure_CardFrame",
+ art = "art/t_bribe",
+ frame = "frames/treasure_cardframe",
text = "",
xmlText = [[
@@ -5677,8 +8015,8 @@ function greed_is_good_skilldef()
},
layout = createLayout({
name = "Greed is good",
- art = "art/T_Bribe",
- frame = "frames/Treasure_CardFrame",
+ art = "art/t_bribe",
+ frame = "frames/treasure_cardframe",
text = "",
xmlText = [[
@@ -5693,7 +8031,7 @@ function greed_is_good_skilldef()
]]
}),
- layoutPath= "art/T_Bribe"
+ layoutPath= "art/t_bribe"
})
end
@@ -5712,8 +8050,8 @@ function golden_touch_abilitydef()
promptType = showPrompt,
layout = createLayout({
name = "Golden touch",
- art = "art/T_Strength_In_Numbers",
- frame = "frames/Treasure_CardFrame",
+ art = "art/t_strength_in_numbers",
+ frame = "frames/treasure_cardframe",
text = "",
xmlText = [[
@@ -5732,8 +8070,8 @@ function golden_touch_abilitydef()
},
layout = createLayout({
name = "Golden touch",
- art = "art/T_Strength_In_Numbers",
- frame = "frames/Treasure_CardFrame",
+ art = "art/t_strength_in_numbers",
+ frame = "frames/treasure_cardframe",
text = "",
xmlText = [[
@@ -5744,7 +8082,7 @@ function golden_touch_abilitydef()
]]
}),
- layoutPath= "art/T_Strength_In_Numbers"
+ layoutPath= "art/t_strength_in_numbers"
})
end
@@ -5775,8 +8113,8 @@ function brewmaster_mead_carddef()
layout = createLayout(
{
name = "Mead",
- art = "art/treasures/T_Fighter_Elixir_Red",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_fighter_elixir_red",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -5815,8 +8153,8 @@ function brewmaster_spilled_drink_carddef()
layout = layoutCard(
{
name = "Spilled Drink",
- art = "art/treasures/T_Ranger_Elixir_Yellow",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_ranger_elixir_yellow",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -5831,11 +8169,11 @@ function brewmaster_spilled_drink_carddef()
tags = {gainCombatTag}
},
{
- effect = forceDiscard(1).seq(drawCardsEffect(1)),
+ effect = forceDiscard(1).seq(drawCardsEffect(1)),
layout = createLayout({
name = "Spilled Drink",
- art = "art/treasures/T_Ranger_Elixir_Yellow",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_ranger_elixir_yellow",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -5859,8 +8197,8 @@ then draw a card." fontsize="24" />
layout = createLayout(
{
name = "Spilled Drink",
- art = "art/treasures/T_Ranger_Elixir_Yellow",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_ranger_elixir_yellow",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -5919,8 +8257,8 @@ function brewmaster_tap_a_keg_carddef()
layout = createLayout(
{
name = "Tap a Keg",
- art = "art/treasures/T_Ranger_Elixir_Orange",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_ranger_elixir_orange",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -5991,7 +8329,7 @@ function brewmaster_serve_the_strong_stuff_carddef()
},
createBuffDetails({
- art = "art/treasures/T_Bottle_Of_Rum",
+ art = "art/treasures/t_bottle_of_rum",
name = "Serve the strong stuff",
text = "Your first purchase this turn costs +1 gold."
}),
@@ -5999,8 +8337,8 @@ function brewmaster_serve_the_strong_stuff_carddef()
layout = createLayout(
{
name = "Serve the strong stuff",
- art = "art/treasures/T_Bottle_Of_Rum",
- frame = "frames/Generic_CardFrame",
+ art = "art/treasures/t_bottle_of_rum",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6041,7 +8379,7 @@ function brewmaster_regular_regulars_carddef()
{
name = "Regular Regulars",
art = "avatars/cristov_s_recruits",
- frame = "frames/Generic_CardFrame",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6091,8 +8429,8 @@ function brewmaster_irregular_regulars_carddef()
layout = createLayout(
{
name = "Iregular Regulars",
- art = "art/T_Orc_Riot",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_orc_riot",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6143,8 +8481,8 @@ function brewmaster_zaboozer_carddef()
layout = createLayout(
{
name = "Zaboozer, Heroic Regular",
- art = "art/T_Maurader",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_maurader",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6179,8 +8517,8 @@ function brewmaster_a_round_on_the_house_def()
local cardLayout = createLayout({
name = "A round on the House",
- art = "art/T_Unify_Apsara",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_unify_apsara",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6202,7 +8540,7 @@ Then, ALL champions (yours and opponent's) get -1{shield} until they leave play.
name = "A round on the House",
types = { skillType },
layout = cardLayout,
- layoutPath = "art/T_Unify_Apsara",
+ layoutPath = "art/t_unify_apsara",
abilities = {
createAbility({
id = "a_round_on_the_house_ab",
@@ -6244,8 +8582,8 @@ function brewmaster_get_out_of_my_bar_carddef()
promptType = showPrompt,
layout = createLayout({
name = "Get out of my bar",
- art = "art/T_orc",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_orc",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6269,8 +8607,8 @@ Or draw a card." fontsize="18" />
layout = layoutCard(
{
name = "Get out of my bar",
- art = "art/T_orc",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_orc",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6286,7 +8624,7 @@ Or draw a card." fontsize="18" />
},
{
effect = pushTargetedEffect({
- desc = "Sacrifice a champion from opponent's discard pile. Only useable on champions stunned this turn.",
+ desc = "Set aside a champion you stunned this turn. The next time your opponent shuffles their deck, put that champion on the bottom of their deck.",
min=0,
max=1,
validTargets = selectLoc(loc(oppPid, discardPloc)).where(isCardChampion()).where(isCardStunned()),
@@ -6295,8 +8633,8 @@ Or draw a card." fontsize="18" />
}),
layout = createLayout({
name = "Get out of my bar",
- art = "art/T_orc",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_orc",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6317,8 +8655,8 @@ Or draw a card." fontsize="18" />
},
layout = createLayout({
name = "Get out of my bar",
- art = "art/T_orc",
- frame = "frames/Generic_CardFrame",
+ art = "art/t_orc",
+ frame = "frames/generic_cardframe",
xmlText=[[
@@ -6334,7 +8672,7 @@ Or draw a card." fontsize="18" />
]]
}),
- layoutPath = "art/T_orc",
+ layoutPath = "art/t_orc",
})
end
@@ -6343,7 +8681,7 @@ end
function bird_dog_def()
local layout = createLayout({
name = "BirdWalking",
- art = "art/T_Spark",
+ art = "art/t_spark",
xmlText = [[
@@ -6371,19 +8709,19 @@ function bird_dog_def()
})
},
layout = layout,
- layoutPath= "art/T_Spark"
+ layoutPath= "art/t_spark"
})
end
function patron_shoutout_def()
local layout = createLayout({
name = "Shoutout to the Patrons",
- art = "art/T_Command",
+ art = "art/t_command",
xmlText = [[{gold_3}]]
})
local promptLayout = createLayout({
name = "Shoutout to the Patrons",
- art = "art/T_Command",
+ art = "art/t_command",
text = format("Gain {0} gold.", { 3 }),
})
@@ -6405,15 +8743,15 @@ function patron_shoutout_def()
})
},
layout = layout,
- layoutPath= "art/T_Command"
+ layoutPath= "art/t_command"
})
end
function hero_dash_helper_carddef()
local cardLayout = createLayout({
name = "Hero-Helper Plug",
- art = "art/T_Stone_Guardian",
- frame = "frames/Warrior_CardFrame",
+ art = "art/t_stone_guardian",
+ frame = "frames/warrior_cardframe",
cardTypeLabel = "Champion",
types = { championType, noStealType },
text = "
_________________
Visit: Hero-Helper.com"
@@ -6441,8 +8779,8 @@ end
function situational_card_carddef()
local cardLayout = createLayout({
name = "Situational Card",
- art = "art/T_Elixir_Of_Fortune",
- frame = "frames/Cleric_Frames/Cleric_Treasure_CardFrame",
+ art = "art/t_elixir_of_fortune",
+ frame = "frames/cleric_frames/cleric_treasure_cardframe",
cardTypeLabel = "Item",
text = "
_______________
I would buy this over
Tithe Priest."
})
@@ -6468,19 +8806,19 @@ end
function wwyd_carddef()
local cardLayout = createLayout({
name = "WWYD?",
- art = "art/T_Edge_Of_The_Moat",
- frame = "frames/Ranger_CardFrame",
+ art = "art/t_edge_of_the_moat",
+ frame = "frames/ranger_cardframe",
cardTypeLabel = "Action",
text = " or
If you have Street Thug in play, do both."
})
local faceLayout = layoutCard({
title = "WWYD?",
- art = "art/T_Blazing_Fire",
+ art = "art/t_blazing_fire",
text = "