It is currently 17 Jun 2025, 18:47
   
Text Size

MTG - BORN OF THE GODS - COMPLETE SET - UPDATE DXT1

Moderator: CCGHQ Admins

Re: BORN OF THE GODS - CARDS SPOILER

Postby NeoAnderson » 15 Jan 2014, 00:31

Ok guys, i have made an alternative solution.
It works for all the official permanents who has Hybrid mana into casting cost.
I have used the site magiccards.info to retrieve all the permanents with hybrid mana into casting cost.
Here you can check the list ( i have excluded not permanent cards)http://magiccards.info/query?q=has%3Asplitmana+is%3Apermanent&v=olist&s=cname
With some macro edits i have turned the card named into format normally used by DOTP cards.
Then i made a function who set the right dual devotion for each card.
Obviously if will come out new cards we need to keep the function updated.

THE CARD MUST HAVE OFFICIAL NAME, SAME WE GET FROM FIREMIND WEBGENERATOR.

The working idea is :

Firs of all we could need to check different devotions for each card so i defined how many dual devotions we can have :

DUAL DEVOTIONS KINDS | Open
    0 WHITE-BLU
    1 WHITE-BLACK
    2 WHITE-RED
    3 WHITE-GREEN
    4 BLUE-BLACK
    5 BLUE-RED
    6 BLUE-GREEN
    7 BLACK-RED
    8 BLACK-GREEN
    9 RED-GREEN

So i have made a function who set the right devotion value into a chest for each card, So for example you want to know the dual devotion Blue-Black for CardA you have just to call my function in this way : NEO_ReturnDualDevotion(CardName, 4).

I have tested and it works.


NEO_ReturnDualDevotion Function | Open
Code: Select all
NEO_ReturnDualDevotion = function(dVal, DevotionType)

  local dChest = EffectDC():Make_Chest(0)
  dChest:Set_Int(0,0)
  dChest:Set_Int(1,0)
  dChest:Set_Int(2,0)
  dChest:Set_Int(3,0)
  dChest:Set_Int(4,0)
  dChest:Set_Int(5,0)
  dChest:Set_Int(6,0)
  dChest:Set_Int(7,0)
  dChest:Set_Int(8,0)
  dChest:Set_Int(9,0)

if (dVal == "BATTLEGATE_MIMIC") or (dVal == "BELLIGERENT_HATCHLING") or (dVal == "BOROS_RECRUIT") or (dVal == "DUERGAR_ASSAILANT") or (dVal == "DUERGAR_HEDGEMAGE") or (dVal == "DUERGAR_MINECAPTAIN") or (dVal == "FIGURE_OF_DESTINY") or (dVal == "HOBGOBLIN_DRAGOON") or (dVal == "SCOURGE_OF_THE_NOBILIS") then
-- DEVOTION : {R/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "SCUZZBACK_SCRAPPER") or (dVal == "TATTERMUNGE_MANIAC") or (dVal == "WILD_CANTOR") or (dVal == "TATTERMUNGE_WITCH") or (dVal == "TATTERMUNGE_DUO") or (dVal == "IMPROMPTU_RAID") or (dVal == "ROSHEEN_MEANDERER") or (dVal == "RUNES_OF_THE_DEUS") or (dVal == "SCUZZBACK_MARAUDERS") or (dVal == "VALLEYMAKER") then
-- DEVOTION : {R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CURSE_OF_CHAINS") or (dVal == "GLAMER_SPINNERS") or (dVal == "JUDGES_FAMILIAR") or (dVal == "ZEALOUS_GUARDIAN") or (dVal == "MISTMEADOW_WITCH") or (dVal == "SOMNOMANCER") or (dVal == "MINISTER_OF_IMPEDIMENTS") or (dVal == "SILKBIND_FAERIE") or (dVal == "STEEL_OF_THE_GODHEAD") or (dVal == "THISTLEDOWN_DUO")  then
-- DEVOTION : {W/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "EDGE_OF_THE_DIVINITY") or (dVal == "NIP_GWYLLION") or (dVal == "MOURNING_THRULL") or (dVal == "NIGHTSKY_MIMIC") or (dVal == "GWYLLION_HEDGEMAGE") or (dVal == "VORACIOUS_HATCHLING") then
-- DEVOTION : {W/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "BLISTERCOIL_WEIRD") or (dVal == "CLOUT_OF_THE_DOMINUS") or (dVal == "NIVMAGUS_ELEMENTAL") or (dVal == "STREAM_HOPPER") or (dVal == "RIVERFALL_MIMIC") or (dVal == "NOGGLE_HEDGEMAGE") or (dVal == "NOGGLE_RANSACKER") or (dVal == "PETRAHYDROX") or (dVal == "SHREWD_HATCHLING") then
-- DEVOTION : {U/R}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "OONAS_GATEWARDEN") or (dVal == "INKFATHOM_WITCH") or (dVal == "LURKING_INFORMANT") or (dVal == "GRAVELGILL_DUO") or (dVal == "TORPOR_DUST") or (dVal == "HELM_OF_THE_GHASTLORD") or (dVal == "MERROW_GRIMEBLOTTER") or (dVal == "GRAVELGILL_AXESHARK") then
-- DEVOTION : {U/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "CULTBRAND_CINDER") or (dVal == "EMBERSTRIKE_DUO") or (dVal == "EVERLASTING_TORMENT") or (dVal == "FISTS_OF_THE_DEMIGOD")  or (dVal == "MANAFORGE_CINDER")  or (dVal == "RAKDOS_CACKLER")  or (dVal == "RIOT_SPIKES")  or (dVal == "SOOTSTOKE_KINDLER")  or (dVal == "SPITEFLAME_WITCH") or (dVal == "GRIEF_TYRANT") then
-- DEVOTION : {B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "DEATHRITE_SHAMAN") or (dVal == "GIFT_OF_THE_DEITY") or (dVal == "ODIOUS_TROW") or (dVal == "SLITHERHEAD") or (dVal == "WOODLURKER_MIMIC") or (dVal == "HAG_HEDGEMAGE") or (dVal == "QUILLSPIKE") or (dVal == "RENDCLAW_TROW") or (dVal == "NOXIOUS_HATCHLING") then
-- DEVOTION : {B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CENTAUR_SAFEGUARD") or (dVal == "DRYAD_MILITANT") or (dVal == "ELVISH_HEXHUNTER") or (dVal == "RHYS_THE_REDEEMED") or (dVal == "SEEDCRADLE_WITCH") or (dVal == "MEDICINE_RUNNER") or (dVal == "SAFEHOLD_ELITE") or (dVal == "ORACLE_OF_NECTARS") or (dVal == "SHIELD_OF_THE_OVERSOUL") or (dVal == "SAFEHOLD_DUO") then
-- DEVOTION : {G/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "FAVOR_OF_THE_OVERBEING") or (dVal == "SLIPPERY_BOGLE") or (dVal == "GROUNDLING_POUNCER") or (dVal == "SHORECRASHER_MIMIC") or (dVal == "SELKIE_HEDGEMAGE") or (dVal == "SHIELDING_PLAX")  or (dVal == "GRAZING_KELPIE")  or (dVal == "STURDY_HATCHLING") then
-- DEVOTION : {G/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "NAYA_HUSHBLADE") or (dVal == "TRACE_OF_ABUNDANCE") or (dVal == "MARISIS_TWINCLAWS") then
-- DEVOTION : {R/W}{G}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "ARSENAL_THRESHER") or (dVal == "ESPER_STORMBLADE") or (dVal == "THOPTER_FOUNDRY") then
-- DEVOTION : {W/B}{U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "GRIXIS_GRIMBLADE") or (dVal == "SEWNEYE_DRAKE") then
-- DEVOTION : {U/R}{B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "BANT_SUREBLADE") or (dVal == "CRYSTALLIZATION") or (dVal == "MESSENGER_FALCONS") then
-- DEVOTION : {G/U}{W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "GIANT_AMBUSH_BEETLE") or (dVal == "JUND_HACKBLADE") or (dVal == "SANGRITE_BACKLASH") then
-- DEVOTION : {B/G}{R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "AUGURY_ADEPT") or (dVal == "AZORS_ELOCUTORS") or (dVal == "AZORIUS_GUILDMAGE") or (dVal == "ENCHANTED_EVENING") or (dVal == "PURESIGHT_MERROW") or (dVal == "VASSAL_SOUL") or (dVal == "SWANS_OF_BRYN_ARGOLL") then
-- DEVOTION : {W/U}{W/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "BLOODIED_GHOST") or (dVal == "EVERSHRIKE") or (dVal == "GIFT_OF_ORZHOVA") or (dVal == "ORZHOV_GUILDMAGE") or (dVal == "STILLMOON_CAVALIER") or (dVal == "HARVEST_GWYLLION") then
-- DEVOTION : {W/B}{W/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CEMETERY_PUCA") or (dVal == "DEATHCULT_ROGUE") or (dVal == "DIMIR_GUILDMAGE") or (dVal == "DIRE_UNDERCURRENTS") or (dVal == "INKFATHOM_INFILTRATOR") or (dVal == "SYGG_RIVER_CUTTHROAT") or (dVal == "WANDERBRINE_ROOTCUTTERS") then
-- DEVOTION : {U/B}{U/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CRACKLEBURR") or (dVal == "DJINN_ILLUMINATUS") or (dVal == "FROSTBURN_WEIRD") or (dVal == "IZZET_GUILDMAGE") or (dVal == "MIRROR_SHEEN") or (dVal == "NOGGLE_BANDIT") or (dVal == "NOGGLE_BRIDGEBREAKER") or (dVal == "NUCKLAVEE") then
-- DEVOTION : {U/R}{U/R}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "CANKER_ABOMINATION") or (dVal == "DESECRATOR_HAG") or (dVal == "GOLGARI_GUILDMAGE") or (dVal == "GOLGARI_LONGLEGS") or (dVal == "SAPLING_OF_COLFENOR") then
-- DEVOTION : {B/G}{B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "CRYPTBORN_HORROR") or (dVal == "FULMINATOR_MAGE") or (dVal == "RAKDOS_GUILDMAGE") or (dVal == "RAKDOS_SHREDFREAK") or (dVal == "MURDEROUS_REDCAP") or (dVal == "SOOTWALKERS") or (dVal == "SPITEFUL_VISIONS") or (dVal == "KULRATH_KNIGHT") then
-- DEVOTION : {B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "BOROS_GUILDMAGE") or (dVal == "RISE_OF_THE_HOBGOBLINS") or (dVal == "SPITEMARE")  then
-- DEVOTION : {R/W}{R/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "BURNINGTREE_EMISSARY") or (dVal == "GIANT_SOLIFUGE") or (dVal == "GRUUL_GUILDMAGE") or (dVal == "VEXING_SHUSHER") or (dVal == "MUDBRAWLER_RAIDERS") or (dVal == "MORSELHOARDER") or (dVal == "WORT_THE_RAIDMOTHER")  then
-- DEVOTION : {R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "COLDEYED_SELKIE") or (dVal == "GILDER_BAIRN") or (dVal == "SIMIC_GUILDMAGE") or (dVal == "MERFOLK_OF_THE_DEPTHS") or (dVal == "TRAPJAW_KELPIE") then
-- DEVOTION : {G/U}{G/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "SELESNYA_GUILDMAGE") or (dVal == "WHEEL_OF_SUN_AND_MOON") or (dVal == "KITCHEN_FINKS") or (dVal == "GROWING_RANKS") or (dVal == "HEARTMENDER") or (dVal == "RAVENS_RUN_DRAGOON") or (dVal == "OLD_GHASTBARK") then
-- DEVOTION : {G/W}G/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "DEATHBRINGER_LIEGE") or (dVal == "DEBTORS_KNELL") or (dVal == "RESTLESS_APPARITION") then
-- DEVOTION : {W/B}{W/B}{W/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "DOVESCAPE") or (dVal == "PLUMEVEIL") or (dVal == "THISTLEDOWN_LIEGE") then
-- DEVOTION : {W/U}{W/U}{W/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "ASHENMOOR_GOUGER") or (dVal == "ASHENMOOR_LIEGE") or (dVal == "AVATAR_OF_DISCORD") or (dVal == "BARRENTON_CRAGTREADS") then
-- DEVOTION : {B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "BALEFIRE_LIEGE") or (dVal == "BOROS_RECKONER") or (dVal == "HEARTHFIRE_HOBGOBLIN") then
-- DEVOTION : {R/W}{R/W}{R/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "BOARTUSK_LIEGE") or (dVal == "BOGGART_RAMGANG") or (dVal == "RUBBLEBELT_RAIDERS") or (dVal == "LOAMDRAGGER_GIANT") then
-- DEVOTION : {R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "CRAG_PUCA") or (dVal == "MINDWRACK_LIEGE") then
-- DEVOTION : {U/R}{U/R}{U/R}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "GLEN_ELENDRA_LIEGE") or (dVal == "NIGHTVEIL_SPECTER") or (dVal == "WASP_LANCER") or (dVal == "OONA_QUEEN_OF_THE_FAE") then
-- DEVOTION : {U/B}{U/B}{U/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "CREAKWOOD_LIEGE") or (dVal == "DOOMGAPE") or (dVal == "GLEANCRAWLER") or (dVal == "STALKER_HAG") then
-- DEVOTION : {B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "FABLE_OF_WOLF_AND_OWL") or (dVal == "WISTFUL_SELKIE") or (dVal == "MURKFIEND_LIEGE") then
-- DEVOTION : {G/U}{G/U}{G/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "WILTLEAF_CAVALIERS") or (dVal == "WILTLEAF_LIEGE") or (dVal == "PRIVILEGED_POSITION")   then
-- DEVOTION : {G/W}{G/W}{G/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "NOBILIS_OF_WAR")  then
-- DEVOTION : {R/W}{R/W}{R/W}{R/W}{R/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "DEITY_OF_SCARS") then
-- DEVOTION : {B/G}{B/G}B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DEMIGOD_OF_REVENGE")  then
-- DEVOTION : {B/R}{B/R}{B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "DEUS_OF_CALAMITY")  then
-- DEVOTION : {R/G}{R/G}{R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DIVINITY_OF_PRIDE")  then
-- DEVOTION : {W/B}{W/B}{W/B}W/B}{W/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "GODHEAD_OF_AWE") then
-- DEVOTION : {W/U}{W/U}{W/U}{W/U}{W/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "DOMINUS_OF_FEALTY") then
-- DEVOTION : {U/R}{U/R}{U/R}{U/R}{U/R}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "GHASTLORD_OF_FUGUE")  then
-- DEVOTION : {U/B}{U/B}{U/B}{U/B}{U/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "REAPER_KING")  then
-- DEVOTION : {X/W}{X/U}{X/B}{X/R}{X/G}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "OVERBEING_OF_MYTH")  then
-- DEVOTION : {G/U}{G/U}{G/U}{G/U}{G/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "OVERSOUL_OF_DUSK")   then
-- DEVOTION : {G/W}{G/W}{G/W}{G/W}{G/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
end

  return dChest:Get_Int(DevotionType)
end
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby sumomole » 15 Jan 2014, 00:38

GrovyleXShinyCelebi wrote:I'm coming up with an idea for this, but I have a question: are there any official MTG cards with more than one type of hybrid mana (i.e. with both {B/R} and {B/G}), and if so, what are they and how many are there?
No, the only exception is Reaper King.
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby GrovyleXShinyCelebi » 15 Jan 2014, 01:06

OK, I came up with something (untested) that MIGHT allow taking into account hybrid mana after a few modifications.

Basically, my code is this:

Code: Select all
    local devotion = 0
    local count = filter:EvaluateObjects()
    for i=0, (count-1) do
   local object = filter:GetNthEvaluatedObject()
   if object ~= nil then
      local cmc = object:GetConvertedManaCost()
      local black = object:ChromaCount(COLOUR_BLACK)
      local red = object:ChromaCount(COLOUR_RED)
      local green = object:ChromaCount(COLOUR_GREEN)
      local blue = object:ChromaCount(COLOUR_BLUE)
      local white = object:ChromaCount(COLOUR_WHITE)
      local none = object:ChromaCount(COLOUR_COLOURLESS)
      local colored = black + red + green + blue + white
      local total = cmc - none
      local rakdos = black + red
      if total < colored then
      --We have hybrid mana
         local hybrid = colored - total
         --Testing for red
         if red > (green + black + blue + white) then
            --Testing for black
            if black > (green + white + blue + red ) then            
               --Rakdos mana found!
               local final = (rakdos - red) + (rakdos - black) + hybrid
               devotion = devotion + final
            else
               devotion = devotion + rakdos
            end
         else
            devotion = devotion + rakdos
         end
      else
         devotion = devotion + rakdos
      end
   end
    end
My idea relies on these concepts I came up with:

-First, we get rid of all the non-colored mana; that won't be taken into account. As such this won't be compatible with cards like Spectral Procession.

-If the sum of the chroma count of all colors is greater than the total amount of colored mana (CMC minus the colorless mana), the difference is the amount of hybrid mana.

-AS LONG AS THERE IS ONLY ONE TYPE OF HYBRID MANA IN A GIVEN CARD, hybrid mana of any two specific colors, given C1 is the first colo, C2 is the second color, and H is the amount of hybrid mana, can be found by this equation:

Total = ((C1+C2) - C1) + ((C1+C2) - C2) + H

The first set of brackets represent the part of mana of only color 1. The second set of brackets represnts the part of mana of only color 2.

-After a quick check, I have confirmed that there are presently no cards with more than one type of hybrid mana. This should work for the time being.

Note that I just came up with this in about an hour, and I'm pretty sure there's a mistake somewhere. I'm hoping someone experienced can fix any mistakes I made here and hopefully come up with a dual devotion function that will serve our purposes for the time being.
User avatar
GrovyleXShinyCelebi
 
Posts: 294
Joined: 12 Jun 2013, 18:23
Has thanked: 14 times
Been thanked: 37 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby RiiakShiNal » 15 Jan 2014, 02:14

GrovyleXShinyCelebi wrote:-AS LONG AS THERE IS ONLY ONE TYPE OF HYBRID MANA IN A GIVEN CARD, hybrid mana of any two specific colors, given C1 is the first colo, C2 is the second color, and H is the amount of hybrid mana, can be found by this equation:

Total = ((C1+C2) - C1) + ((C1+C2) - C2) + H

The first set of brackets represent the part of mana of only color 1. The second set of brackets represnts the part of mana of only color 2.
This will run into problems with cards like Esper Stormblade, Arsenal Thresher, Bant Sureblade, Giant Ambush Beetle, etc.... This is due to having 3 colours in the casting cost and being unable to programmatically tell which colours are the hybrid mana colours. There is only one type of hybrid mana in each of them, but each has 3 colours which screws up the calculations.
RiiakShiNal
Programmer
 
Posts: 2188
Joined: 16 May 2011, 21:37
Has thanked: 75 times
Been thanked: 497 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby sumomole » 15 Jan 2014, 02:50

ok, it's my Ephara, hope she's all right. :roll:
Ephara's abilities updated | Open
Code: Select all
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn’t a creature.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    if GetNumOfDevotion(COLOUR_WHITE, COLOUR_BLUE) &lt; 7 then
       local characteristics = EffectSource():GetCurrentCharacteristics()
       local card_type = characteristics:CardType_GetWritable()
       local sub_type = characteristics:SubType_GetWritable()
        local current_type = {}
      for i = 0,7 do
          current_type[i] = EffectSource():GetCardType():Test(i)
        end
        sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
        card_type:Clear()
      for i = 0,7 do
           if i ~= 1 and current_type[i] then
           card_type:Add(i)
           end
       end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <INTERVENING_IF ignore_resolution_check="1">
    local num_starting_players = MTG():GetNumberOfStartingPlayers()
    for i=0,(num_starting_players-1) do
       local player = MTG():GetNthStartingPlayer(i)
       if (player ~= nil and player == EffectController() and LinkedDC():Get_Int(i) &gt; 0) then
        return true
       end
    end
    return false
    </INTERVENING_IF>
    <RESOLUTION_TIME_ACTION>
    EffectController():DrawCards(1)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_ANY">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP and MTG():GetTurnNumber() == 0
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local delayDC_A = EffectDC():Make_Chest(1)
    local delayDC_B = EffectDC():Make_Chest(2)
    MTG():CreateDelayedTrigger(1, delayDC_A)
    MTG():CreateDelayedTrigger(2, delayDC_B)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY> 
  <TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" resource_id="1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local num_starting_players = MTG():GetNumberOfStartingPlayers()
    for i=0,(num_starting_players-1) do
       local player = MTG():GetNthStartingPlayer(i)
       if player ~= nil then
        local interrogation = MTG():ClearInterrogationQuery()
        interrogation:SetPlayer( player )
        interrogation:SetToZone( ZONE_BATTLEFIELD )
        interrogation:SetType( CARD_TYPE_CREATURE )
        local num_creatures = interrogation:Count( INTERROGATE_CARDS_MOVED_ZONE, INTERROGATE_THIS_TURN, 2 )
        interrogation:SetObject( EffectSource() )
        num_creatures = num_creatures - interrogation:Count( INTERROGATE_CARDS_MOVED_ZONE, INTERROGATE_THIS_TURN, 1 )
         LinkedDC():Set_Int(i, num_creatures)
       end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" resource_id="2" priority="-1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    LinkedDC():Clear()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
devotion functions updated | Open
Code: Select all
GetNumOfColourSymbol = function(object, colour)
  local filter = ClearFilter()
  filter:Add( FE_CARD_INSTANCE, OP_IS, object )
   return filter:ChromaCount(colour)
end

GetNumOfRedundantDevotion = function(object, colour_A, colour_B)
   local cmc = object:GetConvertedManaCost()
   local amount = {}
   local num_color = 0
   local num_colored_mana = 0
   local num_total_colored_mana = 0
   local num_hybrid_symbol = 0
   if cmc > 0 and colour_A ~= colour_B then
      for i=0,5 do
         amount[i] = GetNumOfColourSymbol(object, i)
         if i == 0 then
          num_colored_mana = cmc - amount[i]
        elseif amount[i] > 0 then
           num_total_colored_mana = num_total_colored_mana + amount[i]
           num_color = num_color  + 1
        end
      end
      if num_total_colored_mana > num_colored_mana and amount[colour_A] > 0 and amount[colour_B] > 0 then
        if (num_color == 2 or (num_color == 3 and (colour_A - colour_B == 2 or colour_B - colour_A == 2 or colour_A - colour_B == 3 or colour_B - colour_A == 3))) then
           num_hybrid_symbol = num_total_colored_mana - num_colored_mana
        end
      end
   end
   return num_hybrid_symbol
end

GetNumOfDevotion = function(colour_A, colour_B)
  local devotion = 0
  local filter = ClearFilter()
   local subfilter = filter:AddSubFilter_Or()
     subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
  filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
   if colour_B == nil or colour_A == colour_B then
     devotion = filter:ChromaCount(colour_A)
   else
    devotion = filter:ChromaCount(colour_A)+ filter:ChromaCount(colour_B)
     local creatures = {}
    local numCards = filter:EvaluateObjects()
    for i=0,(numCards-1) do
       local card = filter:GetNthEvaluatedObject(i)
       if card ~= nil then
           creatures[i] = card
       end
    end
    for i=0,(numCards-1) do
      devotion = devotion - GetNumOfRedundantDevotion(creatures[i], colour_A, colour_B)
    end
  end
   return devotion
end
Last edited by sumomole on 16 Jan 2014, 05:52, edited 6 times in total.
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby GrovyleXShinyCelebi » 15 Jan 2014, 03:41

sumomole wrote:ok, it's my Ephara, hope she's all right. :roll:
card abilities | Open
Code: Select all
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
    <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
  </STATIC_ABILITY>
  <STATIC_ABILITY>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn’t a creature.]]></LOCALISED_TEXT>
    <CONTINUOUS_ACTION layer="4">
    if GetNumOfDevotion(COLOUR_WHITE, COLOUR_BLUE) &lt; 7 then
       local characteristics = EffectSource():GetCurrentCharacteristics()
       local card_type = characteristics:CardType_GetWritable()
       local sub_type = characteristics:SubType_GetWritable()
        local current_type = {}
      for i = 0,7 do
          current_type[i] = EffectSource():GetCardType():Test(i)
        end
        sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
        card_type:Clear()
      for i = 0,7 do
           if i ~= 1 and current_type[i] then
           card_type:Add(i)
           end
       end
    end
    </CONTINUOUS_ACTION>
  </STATIC_ABILITY>
  <TRIGGERED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <INTERVENING_IF ignore_resolution_check="1">
    local num_starting_players = MTG():GetNumberOfStartingPlayers()
    for i=0,(num_starting_players-1) do
       local player = MTG():GetNthStartingPlayer(i)
       if (player ~= nil and player == EffectController()) then
        local num_creatures = LinkedDC():Get_Int(i) - LinkedDC():Get_Int(4+i)
         if num_creatures &gt; 0 then
           return true
         end
       end
    end
    return false
    </INTERVENING_IF>
    <RESOLUTION_TIME_ACTION>
    EffectController():DrawCards(1)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1" active_zone="ZONE_ANY">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP and MTG():GetTurnNumber() == 0
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local delayDC_A = EffectDC():Make_Chest(1)
    local delayDC_B = EffectDC():Make_Chest(2)
    MTG():CreateDelayedTrigger(1, delayDC_A)
    MTG():CreateDelayedTrigger(2, delayDC_B)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY> 
  <TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" resource_id="1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_CLEANUP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    local num_starting_players = MTG():GetNumberOfStartingPlayers()
    for i=0,(num_starting_players-1) do
       local player = MTG():GetNthStartingPlayer(i)
       if player ~= nil then
        local interrogation = MTG():ClearInterrogationQuery()
        interrogation:SetPlayer( player )
        interrogation:SetToZone( ZONE_BATTLEFIELD )
        interrogation:SetType( CARD_TYPE_CREATURE )
        local num_creatures = interrogation:Count( INTERROGATE_CARDS_MOVED_ZONE, INTERROGATE_THIS_TURN, 2)
        interrogation:SetObject( EffectSource() )
        if interrogation:Test( INTERROGATE_CARDS_MOVED_ZONE, INTERROGATE_THIS_TURN ) then
           LinkedDC():Set_Int(4+i, 1)
        end
         LinkedDC():Set_Int(i, num_creatures)
       end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY replacement_effect="1" linked_ability_group="1" resource_id="2" priority="-1">
    <TRIGGER value="BEGINNING_OF_STEP">
    return MTG():GetStep() == STEP_UPKEEP
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    LinkedDC():Clear()
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
devotion functions | Open
Code: Select all
GetNumOfColourSymbol = function(object, colour)
  local filter = ClearFilter()
  filter:Add( FE_CARD_INSTANCE, OP_IS, object )
   return filter:ChromaCount(colour)
end

GetNumOfRedundantDevotion = function(object, colour_A, colour_B)
   local cmc = object:GetConvertedManaCost()
   local amount = {}
   local num_color = 0
   local num_colored_mana = 0
   local num_total_colored_mana = 0
   local num_hybrid_symbol = 0
   if cmc > 0 then
      for i=0,5 do
         amount[i] = GetNumOfColourSymbol(object, i)
         if i == 0 then
          num_colored_mana = cmc - amount[i]
        elseif amount[i] > 0 then
           num_total_colored_mana = num_total_colored_mana + amount[i]
           num_color = num_color  + 1
        end
      end
      if num_total_colored_mana > num_colored_mana and amount[colour_A] > 0 and amount[colour_B] > 0 then
        if (num_color == 2 or (num_color == 3 and (colour_A - colour_B == 2 or colour_B - colour_A == 2))) then
           num_hybrid_symbol = num_total_colored_mana - num_colored_mana
        end
      end
   end
   return num_hybrid_symbol
end

GetNumOfDevotion = function(colour_A, colour_B)
  local devotion = 0
  local filter = ClearFilter()
   local subfilter = filter:AddSubFilter_Or()
     subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
  filter:Add( FE_CONTROLLER, OP_IS, EffectController() )
   if colour_B == nil then
     devotion = filter:ChromaCount(colour_A)
   else
    devotion = filter:ChromaCount(colour_A)+ filter:ChromaCount(colour_B)
     local creatures = {}
    local numCards = filter:EvaluateObjects()
    for i=0,(numCards-1) do
       local card = filter:GetNthEvaluatedObject(i)
       if card ~= nil then
           creatures[i] = card
       end
    end
    for i=0,(numCards-1) do
      devotion = devotion - GetNumOfRedundantDevotion(creatures[i], colour_A, colour_B)
    end
  end
   return devotion
end
Looking through your function, I believe yor function only returns the amount of total hybrid mana in a card. I just realized my equation is void because of how chromas are taken. Ugh.. What you could do is subtract the hybrid amount from chroma of the two colors you're testing, though I believe this again only works on cards with one type of hybrid mana (which appears to be every hybrid mana card currently printed, not saying Wizards might not add cards with multiple types of hybrid in the future... and for these purposes I'm not counting {2/} cards as hybrid).
User avatar
GrovyleXShinyCelebi
 
Posts: 294
Joined: 12 Jun 2013, 18:23
Has thanked: 14 times
Been thanked: 37 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby sumomole » 15 Jan 2014, 04:00

GrovyleXShinyCelebi wrote:Looking through your function, I believe yor function only returns the amount of total hybrid mana in a card. I just realized my equation is void because of how chromas are taken. Ugh.. What you could do is subtract the hybrid amount from chroma of the two colors you're testing, though I believe this again only works on cards with one type of hybrid mana (which appears to be every hybrid mana card currently printed, not saying Wizards might not add cards with multiple types of hybrid in the future... and for these purposes I'm not counting {2/} cards as hybrid).
Of course, a card can have only one type of hybrid mana symbol, and THS set has no hybrid mana card, as for the future sets, that is DotP2015 thing. :lol:
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby NeoAnderson » 15 Jan 2014, 06:21

Sumo my friend, honestly i lose my mind trying to read your code, probably i need a guide for dummies :D
Anyway i finished my version of "Ephara, God of the Polis", thanks also to FireMind for his correction about the trigger ability.

I used my own functions, it will works with all the official cards, including Reaper King.

Here you can find my code :

Ephara, God of the Polis | Open
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<CARD_V2 ExportVersion="2">
   <FILENAME text="EPHARA_GOD_OF_THE_POLIS_9988773" />
   <CARDNAME text="EPHARA_GOD_OF_THE_POLIS" />
   <TITLE>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Efara, Dea della Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Ephara, God of the Polis]]></LOCALISED_TEXT>
   </TITLE>
   <MULTIVERSEID value="9988773" />
   <ARTID value="9988773" />
   <ARTIST name="Eric Deschamps" />
   <CASTING_COST cost="{2}{W}{U}" />
   <SUPERTYPE metaname="Legendary" />
   <TYPE metaname="Enchantment" />
   <TYPE metaname="Creature" />
   <SUB_TYPE metaname="God" />
   <EXPANSION value="BOG" />
   <RARITY metaname="M" />
   <POWER value="6" />
   <TOUGHNESS value="5" />
   <STATIC_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Indestructible]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Indestructible]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Indestructible.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Unzerstörbar]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Indistruttibile]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[破壊不能]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[무적]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Неразрушимость]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Indestrutível]]></LOCALISED_TEXT>
      <INTRINSIC characteristic="CHARACTERISTIC_INDESTRUCTIBLE" />
   </STATIC_ABILITY>
   <STATIC_ABILITY>
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Fintanto che la tua devozione al bianco e al blu è inferiore a sette, Efara non è una creatura. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[As long as your devotion to white and blue is less than seven, Ephara isn't a creature. ]]></LOCALISED_TEXT>
      <CONTINUOUS_ACTION layer="4">
    local source = EffectSource()
    if source ~= nil then
        local WBDevotion = Devotion_Player_Col_A_Col_B(COLOUR_WHITE, COLOUR_BLUE, EffectController())
        if WBDevotion &lt; 7 then
           local characteristics = source:GetCurrentCharacteristics()
           local card_type = characteristics:CardType_GetWritable()
           local sub_type = characteristics:SubType_GetWritable()
           sub_type:ClearAllOfType( CARD_TYPE_CREATURE )
           card_type:Clear()
           card_type:Add( CARD_TYPE_ENCHANTMENT )
        end
    end
</CONTINUOUS_ACTION>
</STATIC_ABILITY>

  <TRIGGERED_ABILITY linked_ability_group="1">
      <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[All'inizio di ogni mantenimento, se hai fatto entrare nel campo di battaglia un'altra creatura sotto il tuo controllo nell'ultimo turno, pesca una carta.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
      <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.]]></LOCALISED_TEXT>
    <TRIGGER value="BEGINNING_OF_STEP">
    if MTG():GetStep() == STEP_UPKEEP then
      local index = Object():GetRef()
      return EffectController():PlayerDataChest():Get_Int(index) == MTG():GetTurnNumber()-1
    end
    return false
    </TRIGGER>
    <RESOLUTION_TIME_ACTION>
    EffectController():DrawCards(1)
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>

  <TRIGGERED_ABILITY linked_ability_group="1" replacement_effect="1">
    <TRIGGER value="ZONECHANGE_END" simple_qualifier="another" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY">
    if TriggerObject():GetCardType():Test( CARD_TYPE_CREATURE ) then
      local index = Object():GetRef()
      TriggerObject():GetPlayer():PlayerDataChest():Set_Int( index, MTG():GetTurnNumber() )
    end
    return false
    </TRIGGER>
  </TRIGGERED_ABILITY>

   <HELP title="MORE_INFO_BADGE_TITLE_8" body="MORE_INFO_BADGE_BODY_8" zone="ZONE_ANY" />
   <HELP title="MORE_INFO_TITLE_DEVOTION" body="MORE_INFO_BODY_DEVOTION" zone="ZONE_ANY" />
   <SFX text="COMBAT_CHOP_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
   <SFX text="COMBAT_CHOP_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
</CARD_V2>
Needed Functions | Open
Code: Select all
NEO_ReturnDualDevotion = function(dVal, DevotionType)

  local dChest = EffectDC():Make_Chest(0)
  dChest:Set_Int(0,0)
  dChest:Set_Int(1,0)
  dChest:Set_Int(2,0)
  dChest:Set_Int(3,0)
  dChest:Set_Int(4,0)
  dChest:Set_Int(5,0)
  dChest:Set_Int(6,0)
  dChest:Set_Int(7,0)
  dChest:Set_Int(8,0)
  dChest:Set_Int(9,0)

if (dVal == "BATTLEGATE_MIMIC") or (dVal == "BELLIGERENT_HATCHLING") or (dVal == "BOROS_RECRUIT") or (dVal == "DUERGAR_ASSAILANT") or (dVal == "DUERGAR_HEDGEMAGE") or (dVal == "DUERGAR_MINECAPTAIN") or (dVal == "FIGURE_OF_DESTINY") or (dVal == "HOBGOBLIN_DRAGOON") or (dVal == "SCOURGE_OF_THE_NOBILIS") then
-- DEVOTION : {R/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "SCUZZBACK_SCRAPPER") or (dVal == "TATTERMUNGE_MANIAC") or (dVal == "WILD_CANTOR") or (dVal == "TATTERMUNGE_WITCH") or (dVal == "TATTERMUNGE_DUO") or (dVal == "IMPROMPTU_RAID") or (dVal == "ROSHEEN_MEANDERER") or (dVal == "RUNES_OF_THE_DEUS") or (dVal == "SCUZZBACK_MARAUDERS") or (dVal == "VALLEYMAKER") then
-- DEVOTION : {R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CURSE_OF_CHAINS") or (dVal == "GLAMER_SPINNERS") or (dVal == "JUDGES_FAMILIAR") or (dVal == "ZEALOUS_GUARDIAN") or (dVal == "MISTMEADOW_WITCH") or (dVal == "SOMNOMANCER") or (dVal == "MINISTER_OF_IMPEDIMENTS") or (dVal == "SILKBIND_FAERIE") or (dVal == "STEEL_OF_THE_GODHEAD") or (dVal == "THISTLEDOWN_DUO")  then
-- DEVOTION : {W/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "EDGE_OF_THE_DIVINITY") or (dVal == "NIP_GWYLLION") or (dVal == "MOURNING_THRULL") or (dVal == "NIGHTSKY_MIMIC") or (dVal == "GWYLLION_HEDGEMAGE") or (dVal == "VORACIOUS_HATCHLING") then
-- DEVOTION : {W/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "BLISTERCOIL_WEIRD") or (dVal == "CLOUT_OF_THE_DOMINUS") or (dVal == "NIVMAGUS_ELEMENTAL") or (dVal == "STREAM_HOPPER") or (dVal == "RIVERFALL_MIMIC") or (dVal == "NOGGLE_HEDGEMAGE") or (dVal == "NOGGLE_RANSACKER") or (dVal == "PETRAHYDROX") or (dVal == "SHREWD_HATCHLING") then
-- DEVOTION : {U/R}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,1)
elseif (dVal == "OONAS_GATEWARDEN") or (dVal == "INKFATHOM_WITCH") or (dVal == "LURKING_INFORMANT") or (dVal == "GRAVELGILL_DUO") or (dVal == "TORPOR_DUST") or (dVal == "HELM_OF_THE_GHASTLORD") or (dVal == "MERROW_GRIMEBLOTTER") or (dVal == "GRAVELGILL_AXESHARK") then
-- DEVOTION : {U/B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "CULTBRAND_CINDER") or (dVal == "EMBERSTRIKE_DUO") or (dVal == "EVERLASTING_TORMENT") or (dVal == "FISTS_OF_THE_DEMIGOD")  or (dVal == "MANAFORGE_CINDER")  or (dVal == "RAKDOS_CACKLER")  or (dVal == "RIOT_SPIKES")  or (dVal == "SOOTSTOKE_KINDLER")  or (dVal == "SPITEFLAME_WITCH") or (dVal == "GRIEF_TYRANT") then
-- DEVOTION : {B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "DEATHRITE_SHAMAN") or (dVal == "GIFT_OF_THE_DEITY") or (dVal == "ODIOUS_TROW") or (dVal == "SLITHERHEAD") or (dVal == "WOODLURKER_MIMIC") or (dVal == "HAG_HEDGEMAGE") or (dVal == "QUILLSPIKE") or (dVal == "RENDCLAW_TROW") or (dVal == "NOXIOUS_HATCHLING") then
-- DEVOTION : {B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "CENTAUR_SAFEGUARD") or (dVal == "DRYAD_MILITANT") or (dVal == "ELVISH_HEXHUNTER") or (dVal == "RHYS_THE_REDEEMED") or (dVal == "SEEDCRADLE_WITCH") or (dVal == "MEDICINE_RUNNER") or (dVal == "SAFEHOLD_ELITE") or (dVal == "ORACLE_OF_NECTARS") or (dVal == "SHIELD_OF_THE_OVERSOUL") or (dVal == "SAFEHOLD_DUO") then
-- DEVOTION : {G/W}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "FAVOR_OF_THE_OVERBEING") or (dVal == "SLIPPERY_BOGLE") or (dVal == "GROUNDLING_POUNCER") or (dVal == "SHORECRASHER_MIMIC") or (dVal == "SELKIE_HEDGEMAGE") or (dVal == "SHIELDING_PLAX")  or (dVal == "GRAZING_KELPIE")  or (dVal == "STURDY_HATCHLING") then
-- DEVOTION : {G/U}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "NAYA_HUSHBLADE") or (dVal == "TRACE_OF_ABUNDANCE") or (dVal == "MARISIS_TWINCLAWS") then
-- DEVOTION : {R/W}{G}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "ARSENAL_THRESHER") or (dVal == "ESPER_STORMBLADE") or (dVal == "THOPTER_FOUNDRY") then
-- DEVOTION : {W/B}{U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,1)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,0)
elseif (dVal == "GRIXIS_GRIMBLADE") or (dVal == "SEWNEYE_DRAKE") then
-- DEVOTION : {U/R}{B}
   dChest:Set_Int(0,1)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "BANT_SUREBLADE") or (dVal == "CRYSTALLIZATION") or (dVal == "MESSENGER_FALCONS") then
-- DEVOTION : {G/U}{W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,1)
elseif (dVal == "GIANT_AMBUSH_BEETLE") or (dVal == "JUND_HACKBLADE") or (dVal == "SANGRITE_BACKLASH") then
-- DEVOTION : {B/G}{R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,1)
   dChest:Set_Int(2,1)
   dChest:Set_Int(3,1)
   dChest:Set_Int(4,1)
   dChest:Set_Int(5,1)
   dChest:Set_Int(6,1)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,1)
   dChest:Set_Int(9,2)
elseif (dVal == "AUGURY_ADEPT") or (dVal == "AZORS_ELOCUTORS") or (dVal == "AZORIUS_GUILDMAGE") or (dVal == "ENCHANTED_EVENING") or (dVal == "PURESIGHT_MERROW") or (dVal == "VASSAL_SOUL") or (dVal == "SWANS_OF_BRYN_ARGOLL") then
-- DEVOTION : {W/U}{W/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "BLOODIED_GHOST") or (dVal == "EVERSHRIKE") or (dVal == "GIFT_OF_ORZHOVA") or (dVal == "ORZHOV_GUILDMAGE") or (dVal == "STILLMOON_CAVALIER") or (dVal == "HARVEST_GWYLLION") then
-- DEVOTION : {W/B}{W/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CEMETERY_PUCA") or (dVal == "DEATHCULT_ROGUE") or (dVal == "DIMIR_GUILDMAGE") or (dVal == "DIRE_UNDERCURRENTS") or (dVal == "INKFATHOM_INFILTRATOR") or (dVal == "SYGG_RIVER_CUTTHROAT") or (dVal == "WANDERBRINE_ROOTCUTTERS") then
-- DEVOTION : {U/B}{U/B}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,0)
elseif (dVal == "CRACKLEBURR") or (dVal == "DJINN_ILLUMINATUS") or (dVal == "FROSTBURN_WEIRD") or (dVal == "IZZET_GUILDMAGE") or (dVal == "MIRROR_SHEEN") or (dVal == "NOGGLE_BANDIT") or (dVal == "NOGGLE_BRIDGEBREAKER") or (dVal == "NUCKLAVEE") then
-- DEVOTION : {U/R}{U/R}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "CANKER_ABOMINATION") or (dVal == "DESECRATOR_HAG") or (dVal == "GOLGARI_GUILDMAGE") or (dVal == "GOLGARI_LONGLEGS") or (dVal == "SAPLING_OF_COLFENOR") then
-- DEVOTION : {B/G}{B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "CRYPTBORN_HORROR") or (dVal == "FULMINATOR_MAGE") or (dVal == "RAKDOS_GUILDMAGE") or (dVal == "RAKDOS_SHREDFREAK") or (dVal == "MURDEROUS_REDCAP") or (dVal == "SOOTWALKERS") or (dVal == "SPITEFUL_VISIONS") or (dVal == "KULRATH_KNIGHT") then
-- DEVOTION : {B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "BOROS_GUILDMAGE") or (dVal == "RISE_OF_THE_HOBGOBLINS") or (dVal == "SPITEMARE")  then
-- DEVOTION : {R/W}{R/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,2)
elseif (dVal == "BURNINGTREE_EMISSARY") or (dVal == "GIANT_SOLIFUGE") or (dVal == "GRUUL_GUILDMAGE") or (dVal == "VEXING_SHUSHER") or (dVal == "MUDBRAWLER_RAIDERS") or (dVal == "MORSELHOARDER") or (dVal == "WORT_THE_RAIDMOTHER")  then
-- DEVOTION : {R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "COLDEYED_SELKIE") or (dVal == "GILDER_BAIRN") or (dVal == "SIMIC_GUILDMAGE") or (dVal == "MERFOLK_OF_THE_DEPTHS") or (dVal == "TRAPJAW_KELPIE") then
-- DEVOTION : {G/U}{G/U}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "SELESNYA_GUILDMAGE") or (dVal == "WHEEL_OF_SUN_AND_MOON") or (dVal == "KITCHEN_FINKS") or (dVal == "GROWING_RANKS") or (dVal == "HEARTMENDER") or (dVal == "RAVENS_RUN_DRAGOON") or (dVal == "OLD_GHASTBARK") then
-- DEVOTION : {G/W}G/W}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "DEATHBRINGER_LIEGE") or (dVal == "DEBTORS_KNELL") or (dVal == "RESTLESS_APPARITION") then
-- DEVOTION : {W/B}{W/B}{W/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "DOVESCAPE") or (dVal == "PLUMEVEIL") or (dVal == "THISTLEDOWN_LIEGE") then
-- DEVOTION : {W/U}{W/U}{W/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "ASHENMOOR_GOUGER") or (dVal == "ASHENMOOR_LIEGE") or (dVal == "AVATAR_OF_DISCORD") or (dVal == "BARRENTON_CRAGTREADS") then
-- DEVOTION : {B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "BALEFIRE_LIEGE") or (dVal == "BOROS_RECKONER") or (dVal == "HEARTHFIRE_HOBGOBLIN") then
-- DEVOTION : {R/W}{R/W}{R/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "BOARTUSK_LIEGE") or (dVal == "BOGGART_RAMGANG") or (dVal == "RUBBLEBELT_RAIDERS") or (dVal == "LOAMDRAGGER_GIANT") then
-- DEVOTION : {R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "CRAG_PUCA") or (dVal == "MINDWRACK_LIEGE") then
-- DEVOTION : {U/R}{U/R}{U/R}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,3)
elseif (dVal == "GLEN_ELENDRA_LIEGE") or (dVal == "NIGHTVEIL_SPECTER") or (dVal == "WASP_LANCER") or (dVal == "OONA_QUEEN_OF_THE_FAE") then
-- DEVOTION : {U/B}{U/B}{U/B}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,0)
elseif (dVal == "CREAKWOOD_LIEGE") or (dVal == "DOOMGAPE") or (dVal == "GLEANCRAWLER") or (dVal == "STALKER_HAG") then
-- DEVOTION : {B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,3)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "FABLE_OF_WOLF_AND_OWL") or (dVal == "WISTFUL_SELKIE") or (dVal == "MURKFIEND_LIEGE") then
-- DEVOTION : {G/U}{G/U}{G/U}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,3)
   dChest:Set_Int(5,3)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "WILTLEAF_CAVALIERS") or (dVal == "WILTLEAF_LIEGE") or (dVal == "PRIVILEGED_POSITION")   then
-- DEVOTION : {G/W}{G/W}{G/W}
   dChest:Set_Int(0,3)
   dChest:Set_Int(1,3)
   dChest:Set_Int(2,3)
   dChest:Set_Int(3,3)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,3)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,3)
   dChest:Set_Int(9,3)
elseif (dVal == "NOBILIS_OF_WAR")  then
-- DEVOTION : {R/W}{R/W}{R/W}{R/W}{R/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "DEITY_OF_SCARS") then
-- DEVOTION : {B/G}{B/G}B/G}{B/G}B/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DEMIGOD_OF_REVENGE")  then
-- DEVOTION : {B/R}{B/R}{B/R}{B/R}{B/R}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "DEUS_OF_CALAMITY")  then
-- DEVOTION : {R/G}{R/G}{R/G}{R/G}{R/G}
   dChest:Set_Int(0,0)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "DIVINITY_OF_PRIDE")  then
-- DEVOTION : {W/B}{W/B}{W/B}W/B}{W/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,0)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "GODHEAD_OF_AWE") then
-- DEVOTION : {W/U}{W/U}{W/U}{W/U}{W/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,0)
elseif (dVal == "DOMINUS_OF_FEALTY") then
-- DEVOTION : {U/R}{U/R}{U/R}{U/R}{U/R}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,0)
   dChest:Set_Int(9,5)
elseif (dVal == "GHASTLORD_OF_FUGUE")  then
-- DEVOTION : {U/B}{U/B}{U/B}{U/B}{U/B}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,0)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,5)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,0)
elseif (dVal == "REAPER_KING")  then
-- DEVOTION : {X/W}{X/U}{X/B}{X/R}{X/G}
   dChest:Set_Int(0,2)
   dChest:Set_Int(1,2)
   dChest:Set_Int(2,2)
   dChest:Set_Int(3,2)
   dChest:Set_Int(4,2)
   dChest:Set_Int(5,2)
   dChest:Set_Int(6,2)
   dChest:Set_Int(7,2)
   dChest:Set_Int(8,2)
   dChest:Set_Int(9,2)
elseif (dVal == "OVERBEING_OF_MYTH")  then
-- DEVOTION : {G/U}{G/U}{G/U}{G/U}{G/U}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,0)
   dChest:Set_Int(2,0)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,5)
   dChest:Set_Int(5,5)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
elseif (dVal == "OVERSOUL_OF_DUSK")   then
-- DEVOTION : {G/W}{G/W}{G/W}{G/W}{G/W}
   dChest:Set_Int(0,5)
   dChest:Set_Int(1,5)
   dChest:Set_Int(2,5)
   dChest:Set_Int(3,5)
   dChest:Set_Int(4,0)
   dChest:Set_Int(5,0)
   dChest:Set_Int(6,5)
   dChest:Set_Int(7,0)
   dChest:Set_Int(8,5)
   dChest:Set_Int(9,5)
end

  return dChest:Get_Int(DevotionType)
end


Return_Dual_DeVotion_Index = function(nColourA, nColourB)
local val = 10
if nColourA == COLOUR_WHITE and nColourB == COLOUR_BLUE then
   val = 0
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_WHITE then
   val = 0
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_BLACK then
   val = 1
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_WHITE then
   val = 1
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_RED then
   val = 2
elseif nColourA == COLOUR_RED and nColourB == COLOUR_WHITE then
   val = 2
elseif nColourA == COLOUR_WHITE and nColourB == COLOUR_GREEN then
   val = 3
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_WHITE then
   val = 3
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_BLACK then
   val = 4
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_BLUE then
   val = 4
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_RED then
   val = 5
elseif nColourA == COLOUR_RED and nColourB == COLOUR_BLUE then
   val = 5
elseif nColourA == COLOUR_BLUE and nColourB == COLOUR_GREEN then
   val = 6
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_BLUE then
   val = 6
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_RED then
   val = 7
elseif nColourA == COLOUR_RED and nColourB == COLOUR_BLACK then
   val = 7
elseif nColourA == COLOUR_BLACK and nColourB == COLOUR_GREEN then
   val = 8
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_BLACK then
   val = 8
elseif nColourA == COLOUR_RED and nColourB == COLOUR_GREEN then
   val = 9
elseif nColourA == COLOUR_GREEN and nColourB == COLOUR_RED then
   val = 9
 end
  return val
end


Devotion_Player_Col_A_Col_B = function(nColourA, nColourB, nPlayer)
  local PDevotion = 0
  local filter = ClearFilter()
   local subfilter = filter:AddSubFilter_Or()
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ARTIFACT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_CREATURE )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_ENCHANTMENT )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_LAND )
      subfilter:Add( FE_TYPE, OP_IS, CARD_TYPE_PLANESWALKER )
   filter:Add( FE_CONTROLLER, OP_IS, nPlayer )
   filter:SetZone( ZONE_BATTLEFIELD )
   local filter_count = filter:EvaluateObjects()
   local devchest = EffectDC():Make_Chest(0)
   local Tempchest = EffectDC():Make_Chest(1)
   local index = Return_Dual_DeVotion_Index(nColourA, nColourB)
   for i=0, (filter_count-1) do
       local permanent = filter:GetNthEvaluatedObject(i)
       if permanent ~= nil then
          devchest:Set_CardPtr(i, permanent)
       end
   end     
   for i=0, (filter_count-1) do
       local permanent = devchest:Get_CardPtr(i)
       if permanent ~= nil then
          cmc = permanent:GetConvertedManaCost()
          local DevA = ColourManaCountIntoCardIntoZone(nColourA, permanent, nPlayer, ZONE_BATTLEFIELD)
          local DevB = ColourManaCountIntoCardIntoZone(nColourB, permanent, nPlayer, ZONE_BATTLEFIELD)
          local ClessDev = ColourManaCountIntoCardIntoZone(COLOUR_COLOURLESS, permanent, nPlayer, ZONE_BATTLEFIELD)
          local devotion = DevA + DevB
          local Difference = cmc - ClessDev
          if Difference == devotion then
             Tempchest:Set_Int(i, devotion)
          else
         local Pname = permanent:GetCardName()
         local OBDevotion = NEO_ReturnDualDevotion(Pname, index)
         Tempchest:Set_Int(i, OBDevotion)
         end
       end
   end
   for i=0, (filter_count-1) do
   PDevotion = PDevotion + Tempchest:Get_Int(i)
   end
   return PDevotion
end
Attachments
EPHARA_GOD_OF_THE_POLIS.zip
WAD FILE INCLUDING NEEDED FUNCTIONS
(513.08 KiB) Downloaded 458 times
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: BORN OF THE GODS - CARDS SPOILER - 5 CARDS CODED

Postby drleg3nd » 15 Jan 2014, 14:12

Great job getting these cards out early guys..we can actually have a leg up on everyone one else, ironically on a game that gets little support from developers lol..i'll let the pros deal with the hard cards, I'll take care of clean up easy cards lol...can't wait to try inspired mechanic with prophet of kruphix. .I was attempting Kiora but I gave up on it (her name doesn't show up next to creature type, second ability can still be done even if first ability was used, does not go to graveyard when depleted of counters, last ability won't work, my LOL file possibly messed up other planeswalkers like xenagos was able to activate abilities multiple times) i'll let you guys handle it lol
drleg3nd
 
Posts: 528
Joined: 14 May 2012, 20:05
Has thanked: 5 times
Been thanked: 30 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby GrovyleXShinyCelebi » 16 Jan 2014, 00:57

sumomole wrote:
GrovyleXShinyCelebi wrote:Looking through your function, I believe yor function only returns the amount of total hybrid mana in a card. I just realized my equation is void because of how chromas are taken. Ugh.. What you could do is subtract the hybrid amount from chroma of the two colors you're testing, though I believe this again only works on cards with one type of hybrid mana (which appears to be every hybrid mana card currently printed, not saying Wizards might not add cards with multiple types of hybrid in the future... and for these purposes I'm not counting {2/} cards as hybrid).
Of course, a card can have only one type of hybrid mana symbol, and THS set has no hybrid mana card, as for the future sets, that is DotP2015 thing. :lol:
Do'h, I just learned through testing that the idea of taking the chroma and subtracting the hybrid from it is still wrong in cases like Bant Sureblade where it will only count towards, say, 1 in devotion to white and green. Also,

Code: Select all
(num_color == 3 and (colour_A - colour_B == 2 or colour_B - colour_A == 2))
I believe that line would make it only works for three-colored permanents if the two colors in the hybrid mana for that permanent is two colors away from each other (so, like COLOUR_BLACK and COLOUR_WHITE, the former having a value of 3 and the latter having a value of 1), so with things like Bant Sureblade (after checking, difference between values of COLOUR_GREEN and COLOUR_BLUE is 3), it still won't work, I believe.

Frankly, looking back at the trail of false leads I've been chasing and several hours testing and trying to fix sumomole's code so it CAN work with said "complex" three color cards, I feel baffled now at how we could incorporate a way to discern the TYPE of hybrid mana from something like Bant Sureblade, seeing as how chroma will only return blue = 1, white = 1, and green = 1, with no way to discern which is which. Other than knowing how much hybrid mana and how much mana of each color there is there really isn't much else I feel we can do. Honestly, right now I just wanna back down from dual devotion for now, as I've tried every way I could think of and I've only succeeded in making myself look like an idiot :oops: .
User avatar
GrovyleXShinyCelebi
 
Posts: 294
Joined: 12 Jun 2013, 18:23
Has thanked: 14 times
Been thanked: 37 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby NeoAnderson » 16 Jan 2014, 01:15

GrovyleXShinyCelebi wrote:
sumomole wrote:
GrovyleXShinyCelebi wrote:Looking through your function, I believe yor function only returns the amount of total hybrid mana in a card. I just realized my equation is void because of how chromas are taken. Ugh.. What you could do is subtract the hybrid amount from chroma of the two colors you're testing, though I believe this again only works on cards with one type of hybrid mana (which appears to be every hybrid mana card currently printed, not saying Wizards might not add cards with multiple types of hybrid in the future... and for these purposes I'm not counting {2/} cards as hybrid).
Of course, a card can have only one type of hybrid mana symbol, and THS set has no hybrid mana card, as for the future sets, that is DotP2015 thing. :lol:
Do'h, I just learned through testing that the idea of taking the chroma and subtracting the hybrid from it is still wrong in cases like Bant Sureblade where it will only count towards, say, 1 in devotion to white and green. Also,

Code: Select all
(num_color == 3 and (colour_A - colour_B == 2 or colour_B - colour_A == 2))
I believe that line would make it only works for three-colored permanents if the two colors in the hybrid mana for that permanent is two colors away from each other (so, like COLOUR_BLACK and COLOUR_WHITE, the former having a value of 3 and the latter having a value of 1), so with things like Bant Sureblade (after checking, difference between values of COLOUR_GREEN and COLOUR_BLUE is 3), it still won't work, I believe.

Frankly, looking back at the trail of false leads I've been chasing and several hours testing and trying to fix sumomole's code so it CAN work with said "complex" three color cards, I feel baffled now at how we could incorporate a way to discern the TYPE of hybrid mana from something like Bant Sureblade, seeing as how chroma will only return blue = 1, white = 1, and green = 1, with no way to discern which is which. Other than knowing how much hybrid mana and how much mana of each color there is there really isn't much else I feel we can do. Honestly, right now I just wanna back down from dual devotion for now, as I've tried every way I could think of and I've only succeeded in making myself look like an idiot :oops: .
Don't feel so bad my friend, is not your fault, the bases that make a process reversible is "the lack of information loss"-
In this case we cannot retrieve any usefull info about Hybryd mana, and this is no sense because if they have coded specific symbols for that mana is really silly to don't implement that symbols into mana management code.
Anyway my function is just a repetitive Cut and Paste, but it works with all the official card already released that have hybrid mana, no matters how many colors they have. It is also easy to update. :wink:
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: BORN OF THE GODS - CARDS SPOILER

Postby sumomole » 16 Jan 2014, 01:42

GrovyleXShinyCelebi wrote:I believe that line would make it only works for three-colored permanents if the two colors in the hybrid mana for that permanent is two colors away from each other (so, like COLOUR_BLACK and COLOUR_WHITE, the former having a value of 3 and the latter having a value of 1), so with things like Bant Sureblade (after checking, difference between values of COLOUR_GREEN and COLOUR_BLUE is 3), it still won't work, I believe.
yes, I forgot {RW} and {GU}, but it is very easy to fix, just replace it with the following code, thank you for reminding. :)
Code: Select all
(num_color == 3 and (colour_A - colour_B == 2 or colour_B - colour_A == 2 or colour_A - colour_B == 3 or colour_B - colour_A == 3))
EDIT: I have updated Ephara's abilities and devotion functions, in fact I often do something extra. :oops:
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: BORN OF THE GODS - CARDS SPOILER - 11 CARDS CODED

Postby NeoAnderson » 16 Jan 2014, 18:48

UPDATE : CODED CARDS 11

Pharagax Giant | Open
Image

I made a custom version for this card, could you help me to test it in different circumstances?
The idea is to check some values and set the decision for the AI.
The checks order is :
1. Check if the player has a noncombat damage immunity (If yes, it choose damage, else make next check)
2. Check for creatures under player control immunity, as like indestructible, can't take combat damage, and also player can't lose, or player can't be attacked......(if yes choose counters, else made calculations)
3. Life point and number of counters calculation ( this function will assign a score based on calculation to each choices)
4. Add a bonus score to counters choice if the player control uquals or more creatures than the opponent.


Using this idea is simple to make also new tribute cards (probably we need just to make some other customs functions)
(I know it is not perfect because there are some combination of effects not considered, but i think can be a good base, instead of let the AI take no sense decision)

Pharagax Giant | Open
Code: Select all
<?xml version='1.0' encoding='UTF-8'?>
<CARD_V2 ExportVersion="1">
  <FILENAME text="PHARAGAX_GIANT_123456" />
  <CARDNAME text="PHARAGAX_GIANT" />
  <TITLE>
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Gigante di Faragax]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Pharagax Giant]]></LOCALISED_TEXT>
  </TITLE>
  <MULTIVERSEID value="123456" />
  <ARTID value="A123456" />
  <ARTIST name="Ryan Pancoast" />
  <CASTING_COST cost="{4}{R}" />
  <TYPE metaname="Creature" />
  <SUB_TYPE metaname="Giant" />
  <EXPANSION value="DPI" />
  <RARITY metaname="C" />
  <POWER value="3" />
  <TOUGHNESS value="3" />
  <TRIGGERED_ABILITY linked_ability_group="1" replacement_query="1" active_zone="ZONE_TRANSITION">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[Tribute 2 |(As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)|]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_TRANSITION" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" from_zone="ZONE_ANY" />
    <RESOLUTION_TIME_ACTION>
    local filter = ClearFilter()
    filter:SetFilterType( FILTER_TYPE_PLAYERS )
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    EffectController():ChooseItem( "CARD_QUERY_CHOOSE_OPPONENT", EffectDC():Make_Targets(0) )
    </RESOLUTION_TIME_ACTION>
  <RESOLUTION_TIME_ACTION>
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil then
       if player:IsAI() == false then
          player:BeginNewMultipleChoice()
          player:AddMultipleChoiceAnswer( "CARD_QUERY_OPTION_YES" )
          player:AddMultipleChoiceAnswer( "CARD_QUERY_INTET_DO_NOT_PAY_MANA" )
          player:AskMultipleChoiceQuestion( "UI_CONDITIONAL_QUESTION_BODY" )
       end
    end
  </RESOLUTION_TIME_ACTION>
    <RESOLUTION_TIME_ACTION>
    local result = 0
    local player = EffectDC():Get_Targets(0):Get_PlayerPtr(0)
    if player ~= nil then
      if player:IsAI() == false then
         result = player:GetMultipleChoiceResult()
      else
         local Immunity = Tribute_ImmunityFromNoCombatDamage(player)
         if Immunity == 1 then
            result = 1
         else
            Immunity = Tribute_ImmunityFromCreatures(player)
            if Immunity == 1 then
               result = 0
            else
               local chest = Tribute_Calculation1(5, 2, player)
               chest = Tribute_Calculation2(chest, player, EffectController())
               local DamageScore = chest:Get_Int(10)
               local CounterScore = chest:Get_Int(11)
               if CounterScore &gt;= DamageScore then
                  result = 0
               else
                  result = 1
               end 
            end
         end   
      end
      if result == 0 then
         EffectSource():AddCounters( MTG():PlusOnePlusOneCounters(), 2 )
      else
         LinkedDC():Set_Int(0,1)
      end
    end
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <TRIGGERED_ABILITY linked_ability_group="1">
    <LOCALISED_TEXT LanguageCode="en-US"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="fr-FR"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="es-ES"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="de-DE"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="it-IT"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="jp-JA"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ko-KR"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="ru-RU"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <LOCALISED_TEXT LanguageCode="pt-BR"><![CDATA[When Pharagax Giant enters the battlefield, if tribute wasn’t paid, Pharagax Giant deals 5 damage to each opponent.]]></LOCALISED_TEXT>
    <TRIGGER value="ZONECHANGE_END" simple_qualifier="self" to_zone="ZONE_BATTLEFIELD" />
    <INTERVENING_IF>
    return LinkedDC():Get_Int(0) == 1
    </INTERVENING_IF>
    <FILTER filter_id="0">
    local filter = ClearFilter()
    filter:SetFilterType ( FILTER_TYPE_PLAYERS )
    filter:Add( FE_TEAM, OP_NOT, EffectController():GetTeam() )
    </FILTER>
    <RESOLUTION_TIME_ACTION filter_id="0">
    EffectSourceLKI():DealDamageTo( 5, FilteredPlayer() )
    </RESOLUTION_TIME_ACTION>
  </TRIGGERED_ABILITY>
  <SFX text="COMBAT_BLUNT_LARGE_ATTACK" power_boundary_min="4" power_boundary_max="-1" />
  <SFX text="COMBAT_BLUNT_SMALL_ATTACK" power_boundary_min="1" power_boundary_max="3" />
</CARD_V2>
Custom Needed Functions | Open
Code: Select all
Tribute_Calculation1 = function(vDamage, nCounters, nPlayer)
 local ValuesChest = EffectDC():Make_Chest(10)
  if nPlayer ~= nil then
     local LifePoints = nPlayer:GetLifeTotal()
     local DamageScore = 0
     local CounterScore = 0
     DamageScore = (LifePoints - vDamage)/4*1200
     CounterScore = (nCounters - LifePoints)*-3/15*1000
     --EffectController():DisplayMessage("Damage = "..DamageScore.."  Counters = "..CounterScore)
     ValuesChest:Set_Int(10,DamageScore)
     ValuesChest:Set_Int(11,CounterScore)
  end
     return ValuesChest
end

Tribute_Calculation2 = function(vChest, nPlayerA, nPlayerB)
     local ValuesChest = EffectDC():Make_Chest(11)
     local DamageScore = vChest:Get_Int(10)
     local CounterScore = vChest:Get_Int(11)
     local Bonus = 0
     local CreaturesA = CountcardTypeControlledBy(CARD_TYPE_CREATURE, nPlayerA, ZONE_BATTLEFIELD)
     local CreaturesB = CountcardTypeControlledBy(CARD_TYPE_CREATURE, nPlayerB, ZONE_BATTLEFIELD)
     if CreaturesA > CreaturesB then
        Bonus = 800
     elseif CreaturesA == CreaturesB then
        Bonus = 400
     end
     ValuesChest:Set_Int(10,DamageScore)
     ValuesChest:Set_Int(11,CounterScore+Bonus)
     return ValuesChest
end


CheckCreaturesForCharacteristicControlledBy = function(nCharacteristic, nPlayer)
-- returns 1 if there is at least one creature on battlefield controlled by nPlayer with the ability nCharacteristic.
-- else returns 0

  local oFilter = ClearFilter()
  oFilter:Add(FE_TYPE, OP_IS, CARD_TYPE_CREATURE)
  oFilter:Add(FE_CHARACTERISTIC, OP_HAS, nCharacteristic)
  oFilter:Add(FE_CONTROLLER, OP_IS, nPlayer)
  if (oFilter:Count() > 0) then
    return 1
  end
  return 0
end

CheckPlayerForCharacteristic = function(nCharacteristic, nPlayer)
-- returns 1 if nPlayer has nCharacteristic
-- else returns 0
    if nPlayer:GetCurrentCharacteristics():Bool_Get(nCharacteristic) then
     return 1
    else
     return 0
    end
end


Tribute_ImmunityFromCreatures = function(nPlayerA)
local value = 0
value = CheckPlayerForCharacteristic(PLAYER_CHARACTERISTIC_CANT_LOSE, nPlayerA)
if value == 1 then
   return value
else
   value = CheckPlayerForCharacteristic(PLAYER_CHARACTERISTIC_DOESNT_DIE_ON_ZERO_LIFE, nPlayerA)
   if value == 1 then
      return value
   else
      value = CheckPlayerForCharacteristic(PLAYER_CHARACTERISTIC_CANT_BE_ATTACKED, nPlayerA)
      if value == 1 then
         return value
      else
          value = CheckPlayerForCharacteristic(PLAYER_CHARACTERISTIC_CANT_TAKE_COMBAT_DAMAGE, nPlayerA)
          if value == 1 then
             return value
          else
             value = CheckCreaturesForCharacteristicControlledBy(CHARACTERISTIC_DOESNT_RECEIVE_DAMAGE, nPlayerA)
        if value == 1 then
                return value
             else
                value = CheckCreaturesForCharacteristicControlledBy(CHARACTERISTIC_DOESNT_RECEIVE_COMBAT_DAMAGE, nPlayerA)
                if value == 1 then
                   return value
                else
                   value = CheckCreaturesForCharacteristicControlledBy(CHARACTERISTIC_INDESTRUCTIBLE, nPlayerA)
                   return value
                end
             end
          end
      end
   end
end
end

Tribute_ImmunityFromNoCombatDamage = function(nPlayerA)
local value = 0
value = CheckPlayerForCharacteristic(PLAYER_CHARACTERISTIC_CREATURES_CANT_TAKE_NONCOMBAT_DAMAGE, nPlayerA)
return value
end
PRIORITY NOTE : THE TRIBUTE FUNCTION IS JUST A TEST, SO PLEASE HELP ME TO LET ME KNOW HOW IT WORKS AND IF YOU FIND SOME WEIRD BEHAVIOUR, WE CAN MAKE IT BETTER TOGHETER. THIS FUNCTION IS STUDIED FOR THAT KIND OF EFFECT SO TO BE APPLIED TO OTHER TRIBUTE CARDS WITH DIFFERENT EFFECT NEEDS SOME CHANGES.
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

Re: BORN OF THE GODS - CARDS SPOILER - 11 CARDS CODED

Postby sumomole » 17 Jan 2014, 01:59

NeoAnderson wrote:PRIORITY NOTE : THE TRIBUTE FUNCTION IS JUST A TEST, SO PLEASE HELP ME TO LET ME KNOW HOW IT WORKS AND IF YOU FIND SOME WEIRD BEHAVIOUR, WE CAN MAKE IT BETTER TOGHETER. THIS FUNCTION IS STUDIED FOR THAT KIND OF EFFECT SO TO BE APPLIED TO OTHER TRIBUTE CARDS WITH DIFFERENT EFFECT NEEDS SOME CHANGES.
good job, but I have a feeling that we have to make a lot of work for tribute, each card requires separate code, and scores also need to continue to improve in the test. =D>
User avatar
sumomole
Programmer
 
Posts: 611
Joined: 07 Jun 2011, 08:34
Has thanked: 51 times
Been thanked: 234 times

Re: BORN OF THE GODS - CARDS SPOILER - 11 CARDS CODED

Postby NeoAnderson » 17 Jan 2014, 02:11

sumomole wrote:
NeoAnderson wrote:PRIORITY NOTE : THE TRIBUTE FUNCTION IS JUST A TEST, SO PLEASE HELP ME TO LET ME KNOW HOW IT WORKS AND IF YOU FIND SOME WEIRD BEHAVIOUR, WE CAN MAKE IT BETTER TOGHETER. THIS FUNCTION IS STUDIED FOR THAT KIND OF EFFECT SO TO BE APPLIED TO OTHER TRIBUTE CARDS WITH DIFFERENT EFFECT NEEDS SOME CHANGES.
good job, but I have a feeling that we have to make a lot of work for tribute, each card requires separate code, and scores also need to continue to improve in the test. =D>
I have the same feeling of you my friend, i was looking about the other cards with tribute like :

Nessian Wilds Ravager
{4} {G} {G}
Creature - Hydra
Tribute 6 (As this creature enters the battlefield, an opponent of your choice may place 6 +1/+1 counters on it.)
When Nessian Wilds Ravager enters the battlefield, if the tribute wasn't paid, you may have Nessian Wilds Ravager fight another target creature.

About this card i am not sure when is appropriate to give it the counters, normally the best solution is the second one.
Probably the only case is when you want to preserve your creatures, because you are able to kill the opponent next turn, but this is a difficult condition to check! You would also give the counters if you have more creatures and one of them has immunity but this is not always true.



Flame-Wreathed Phoenix
{2} {R} {R}
Creature - Phoenix
Flying
Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)
When Flame-Wreathed Phoenix enters the battlefield, if tribute wasn't paid, it gains haste and "When this creature dies, return it to its owners hand."

About this one the you may accept the counters if you control 1 or more creature with flying with the total power enough to kill the phoenix, or if you control a flying creature with immunity, or if the player has immunity.
The second option could be ok if you are able to exile the phoenix but this is really difficult to check!


So as you was saying this ability is really complex to implement and problably need to implement many other function to have a bigger range of effect to apply. This is all caused by a silly A.I.!!!! :?
NeoAnderson
 
Posts: 914
Joined: 10 Sep 2013, 07:49
Has thanked: 18 times
Been thanked: 139 times

PreviousNext

Return to 2014

Who is online

Users browsing this forum: No registered users and 12 guests

Main Menu

User Menu

Our Partners


Who is online

In total there are 12 users online :: 0 registered, 0 hidden and 12 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 12 guests

Login Form