diff --git a/Aarkenell/12 classes in one b/Aarkenell/12 classes in one
index 0583c00..88a606a 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,124 @@ 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(50))
+ --.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(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_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 +155,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 +176,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 +195,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 +207,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 +222,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 +252,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 +310,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 +323,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,6 +346,220 @@ end
-- Custom Class Selection cards
+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_lich",
+ name="Choose the Lich",
+ types={noStealType, itemType},
+ cardTypeLabel = "Item",
+ playLocation = castPloc,
+ acquireCost=0,
+ abilities = {
+ createAbility({
+ id="choose_lich",
+ trigger= onPlayTrigger,
+ playAllType = noPlayPlayType,
+ effect = sacrificeTarget().apply(selectLoc(loc(currentPid, skillsPloc)))
+ .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(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(
+ {
+ 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 lich?",
+ lowerTitle = ""
+ }))
+ })
+ },
+ layout = createLayout({
+ name = "Lich",
+ art = "art/t_charing_guardian",
+ frame = "frames/coop_campaign_cardframe",
+ xmlText=[[
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ]]
+ }),
+ })
+end
+
function choose_demonologist_carddef()
return createDef({
id="choose_demonologist",
@@ -335,7 +605,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 +626,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=[[
@@ -379,8 +649,8 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "Demonologist",
- art = "art/T_Tyrannor_The_Devourer",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/epicart/dirge_of_scara",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -393,7 +663,7 @@ Demonologist" fontsize="26"/>
-
+
@@ -450,7 +720,7 @@ function choose_apothecary_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=[[
@@ -471,7 +741,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=[[
@@ -494,8 +764,8 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "Apothecary",
- art = "art/treasures/T_Green_Potions_Medium",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/treasures/t_green_potions_medium",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -530,15 +800,15 @@ function choose_cryomancer_carddef()
.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(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_burst_carddef(), loc(currentPid, asidePloc)))
- .seq(createCardEffect(cryomancer_ice_shield_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))))
@@ -558,7 +828,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 +849,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=[[
@@ -602,15 +872,21 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "Cryomancer",
- art = "art/T_Heavy_Gust",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "art/t_heavy_gust",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
-
+
-
+
+
+
+
+
]]
@@ -637,8 +913,11 @@ function choose_pyromancer_carddef()
.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(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)))
@@ -666,7 +945,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 +966,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 +983,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=[[
-
+
-
+
-
+
]]
@@ -749,7 +1029,7 @@ function choose_terramancer_carddef()
.seq(setPlayerAvatarEffect("broelyn", currentPid))
.seq(gainMaxHealthEffect(currentPid, const(53).add(getPlayerMaxHealth(currentPid).negate())))
.seq(gainHealthEffect(53))
- .seq(createCardEffect(terramancer_move_earth_carddef(), currentSkillsLoc))
+ .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 +1040,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 +1058,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 +1079,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 +1096,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 +1114,9 @@ Terramancer" fontsize="26"/>
+
-
+
@@ -895,7 +1174,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 +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=[[
@@ -939,15 +1218,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=[[
-
+
-
+
+
+
+
+
]]
@@ -1003,7 +1288,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 +1309,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 +1332,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=[[
@@ -1111,7 +1396,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 +1417,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 +1441,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=[[
@@ -1219,7 +1504,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 +1525,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 +1549,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=[[
@@ -1328,7 +1613,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 +1634,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 +1657,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,7 +1690,7 @@ 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(createCardEffect(brewmaster_a_round_on_the_house_def(), currentSkillsLoc))
@@ -1437,7 +1722,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 +1743,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=[[
@@ -1481,8 +1766,8 @@ Start playing." fontsize="30" flexiblewidth="1" />
},
layout = createLayout({
name = "Brewmaster",
- art = "art/treasures/T_Fighter_Elixir_Red",
- frame = "frames/Coop_Campaign_CardFrame",
+ art = "avatars/journeys/broken_tables_and_chairs",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1549,7 +1834,7 @@ function choose_S_and_R_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=[[
@@ -1570,7 +1855,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=[[
@@ -1594,7 +1879,7 @@ Start playing." fontsize="30" flexiblewidth="1" />
layout = createLayout({
name = "S&R Enjoyer",
art = "avatars/ambushers",
- frame = "frames/Coop_Campaign_CardFrame",
+ frame = "frames/coop_campaign_cardframe",
xmlText=[[
@@ -1616,41 +1901,1242 @@ Sparks and Recreations Enjoyer" fontsize="24"/>
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 =
+ [[
+
+
+
+
+
+
+
+
+ ]]
+ })
--- Demonologist cards
-function demonologist_shadow_gem_carddef()
- return createDef(
- {
- id = "demonologist_shadow_gem",
- name = "Shadow Gem",
- types = {gemType, noStealType, itemType},
- acquireCost = 0,
- cardTypeLabel = "Item",
- playLocation = castPloc,
- abilities = {
- createAbility(
- {
- id = "demonologist_shadow_gem_sac",
- PlayAllType = noPlayPlayType,
- cost = noCost,
- trigger = autoTrigger,
- activations = singleActivations,
- effect = pushChoiceEffect(
- {
- choices = {
- {
- effect = gainGoldEffect(2),
- layout = layoutCard(
- {
- title = "Shadow Gem",
- art = "art/treasures/T_Brillant_Ruby",
- 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
+
+
+
+-- Demonologist cards
+function demonologist_shadow_gem_carddef()
+ return createDef(
+ {
+ id = "demonologist_shadow_gem",
+ name = "Shadow Gem",
+ types = {gemType, noStealType, itemType},
+ acquireCost = 0,
+ cardTypeLabel = "Item",
+ playLocation = castPloc,
+ abilities = {
+ createAbility(
+ {
+ id = "demonologist_shadow_gem_sac",
+ PlayAllType = noPlayPlayType,
+ cost = noCost,
+ trigger = autoTrigger,
+ activations = singleActivations,
+ effect = pushChoiceEffect(
+ {
+ choices = {
+ {
+ effect = gainGoldEffect(2),
+ layout = layoutCard(
+ {
+ title = "Shadow Gem",
+ art = "art/treasures/thief_brillant_ruby",
+ xmlText=[[
+
+
+
+
+
]]
@@ -1670,7 +3156,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 +3180,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 +3211,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 +3267,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 +3312,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 +3336,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 +3362,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 +3387,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 +3426,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 +3456,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 +3490,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 +3564,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 +3632,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 +3695,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 +3725,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 +3749,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 +3764,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 +3794,7 @@ function demonologist_incubus_carddef()
name = "Incubus",
types = {championType, demonType, minionType, nostealType},
acquireCost = 0,
- health = 3,
+ health = 4,
isGuard = false,
abilities = {
createAbility(
@@ -2317,7 +3803,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 +3830,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 +3844,7 @@ function demonologist_incubus_carddef()
]],
- health = 3,
+ health = 4,
isGuard = false
})
}
@@ -2372,7 +3858,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 +3868,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 +3885,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 +3944,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 +3987,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 +4026,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 +4051,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 +4071,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 +4118,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 +4155,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 +4175,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 +4211,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 +4233,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 +4261,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 +4287,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 +4307,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 +4327,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 +4350,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 +4382,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 +4407,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 +4428,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 +4438,7 @@ function cryomancer_ice_burst_carddef()
-
+
]],
@@ -2963,46 +4448,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 +4519,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 +4538,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 +4562,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 +4609,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 +4630,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 +4652,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 +4693,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 +4721,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 +4738,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 +4764,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 +4975,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 +5015,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 +5052,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 +5093,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 +5109,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 +5132,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 +5151,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 +5165,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 +5324,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 +5375,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 +5452,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 +5460,8 @@ function terramancer_earth_gem_carddef()
xmlText=[[
-
+
]]
@@ -3849,7 +5487,8 @@ function terramancer_earth_gem_carddef()
+Your class skill costs
+2{gold} less this turn." fontsize="24" />
]]
@@ -3872,7 +5511,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 +5521,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 +5605,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 +5726,7 @@ function terramancer_clay_golem_carddef()
abilities = {
createAbility(
{
- id = "clay_golem_main",
+ id = "clay_golem2_main",
trigger = autoTrigger,
cost = expendCost,
activations = multipleActivations,
@@ -3989,7 +5737,7 @@ function terramancer_clay_golem_carddef()
),
createAbility(
{
- id = "clay_golem_healthbuff",
+ id = "clay_golem2_healthbuff",
trigger = onPlayTrigger,
cost = noCost,
activations = singleActivations,
@@ -4001,7 +5749,7 @@ function terramancer_clay_golem_carddef()
layout = layoutCard(
{
title = "Clay Golem",
- art = "art/T_stone_golem",
+ art = "art/t_stone_golem",
xmlText=[[
@@ -4018,13 +5766,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 +5801,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 +5823,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 +5866,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 +5888,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 +5923,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 +5966,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 +5988,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 +6013,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 +6037,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 +6076,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 +6102,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 +6147,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 +6170,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 +6195,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 +6221,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 +6240,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 +6276,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 +6294,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 +6327,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 +6368,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 +6385,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 +6413,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 +6442,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 +6453,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 +6481,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 +6492,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 +6520,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 +6531,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 +6550,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 +6564,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 +6592,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 +6622,7 @@ function thandarlorian_whipcord_carddef()
layout = layoutCard(
{
title = "Whipcord",
- art = "art/T_Thief_Enchanted_Garrote",
+ art = "art/treasures/barbarian_whip",
xmlText = [[
@@ -4897,7 +6653,7 @@ function thandarlorian_whipcord_carddef()
layout = layoutCard(
{
title = "Whipcord",
- art = "art/T_Thief_Enchanted_Garrote",
+ art = "art/treasures/barbarian_whip",
xmlText = [[
@@ -4921,8 +6677,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 +6695,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 +6737,7 @@ function paladin_warhammer_carddef()
layout = layoutCard(
{
title = "Warhammer",
- art = "art/T_Flesh_Ripper",
+ art = "art/t_flesh_ripper",
text = "Gain "
}
),
@@ -4992,7 +6748,7 @@ function paladin_warhammer_carddef()
layout = layoutCard(
{
title = "Warhammer",
- art = "art/T_Flesh_Ripper",
+ art = "art/t_flesh_ripper",
text = "Gain "
}
),
@@ -5009,8 +6765,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 +6824,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 +6838,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 +6876,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 +6892,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 +6914,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 +6929,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 +6938,7 @@ function siphon_life_def()
]]
}),
- layoutPath = "art/T_Life_Force"
+ layoutPath = "art/t_life_force"
})
end
@@ -5201,7 +6957,7 @@ function piercing_screech_def()
promptType = showPrompt,
layout = createLayout({
name = "Piercing Screech",
- art = "art/T_Banshee",
+ art = "art/t_banshee",
xmlText = [[
@@ -5217,7 +6973,7 @@ function piercing_screech_def()
},
layout = createLayout({
name = "Piercing Screech",
- art = "art/T_Banshee",
+ art = "art/t_banshee",
xmlText = [[
@@ -5227,7 +6983,7 @@ function piercing_screech_def()
]]
}),
- layoutPath= "art/T_Banshee"
+ layoutPath= "art/t_banshee"
})
end
@@ -5235,7 +6991,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 +7018,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 +7077,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 +7111,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 +7143,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 +7162,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 +7176,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 +7219,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 +7305,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 +7345,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 +7379,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 +7411,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 +7433,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 +7449,7 @@ function greed_is_good_skilldef()
]]
}),
- layoutPath= "art/T_Bribe"
+ layoutPath= "art/t_bribe"
})
end
@@ -5712,8 +7468,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 +7488,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 +7500,7 @@ function golden_touch_abilitydef()
]]
}),
- layoutPath= "art/T_Strength_In_Numbers"
+ layoutPath= "art/t_strength_in_numbers"
})
end
@@ -5775,8 +7531,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 +7571,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 +7587,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 +7615,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 +7675,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 +7747,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 +7755,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 +7797,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 +7847,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 +7899,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 +7935,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 +7958,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 +8000,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 +8025,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 +8042,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 +8051,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 +8073,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 +8090,7 @@ Or draw a card." fontsize="18" />
]]
}),
- layoutPath = "art/T_orc",
+ layoutPath = "art/t_orc",
})
end
@@ -6343,7 +8099,7 @@ end
function bird_dog_def()
local layout = createLayout({
name = "BirdWalking",
- art = "art/T_Spark",
+ art = "art/t_spark",
xmlText = [[
@@ -6371,19 +8127,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 +8161,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 +8197,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 +8224,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