#ifndef _MTGDEFINITION_H_ #define _MTGDEFINITION_H_ const float DEFAULT_MENU_FONT_SCALE = 1.0f; const float DEFAULT_MAIN_FONT_SCALE = 1.0f; const float DEFAULT_TEXT_FONT_SCALE = 1.0f; const float ACTIVE_MENU_FONT_SCALE = 1.2f; #include using std::string; typedef enum { GAME_TYPE_CLASSIC, GAME_TYPE_MOMIR, GAME_TYPE_RANDOM1, GAME_TYPE_RANDOM2, GAME_TYPE_RANDOM3, GAME_TYPE_RANDOM5, GAME_TYPE_RANDOMCOMMANDER, GAME_TYPE_HORDE, GAME_TYPE_SET_LIMITED, GAME_TYPE_STORY, GAME_TYPE_DEMO, GAME_TYPE_STONEHEWER, GAME_TYPE_HERMIT, GAME_TYPE_COMMANDER, #ifdef NETWORK_SUPPORT GAME_TYPE_SLAVE, #endif //NETWORK_SUPPORT } GameType; typedef enum { PLAYER_TYPE_CPU = 0, PLAYER_TYPE_HUMAN = 1, PLAYER_TYPE_TESTSUITE = 2, PLAYER_TYPE_CPU_TEST = 3, } PlayerType; typedef enum { MTG_PHASE_INVALID = -1, MTG_PHASE_BEFORE_BEGIN = 0, MTG_PHASE_UNTAP = 1, MTG_PHASE_UPKEEP = 2, MTG_PHASE_DRAW = 3, MTG_PHASE_FIRSTMAIN = 4, MTG_PHASE_COMBATBEGIN = 5, MTG_PHASE_COMBATATTACKERS = 6, MTG_PHASE_COMBATBLOCKERS = 7, MTG_PHASE_COMBATDAMAGE = 8, MTG_PHASE_COMBATEND = 9, MTG_PHASE_SECONDMAIN = 10, MTG_PHASE_ENDOFTURN = 11, MTG_PHASE_CLEANUP = 12, MTG_PHASE_AFTER_EOT = 13, NB_MTG_PHASES = 14 } GamePhase; class Constants { public: // Exception Codes /* Exception codes */ const static int PARSER_FAILED_INSTANTIATION = 1000; const static int PARSER_KEYWORD_NOT_MATCHED = 2000; const static int PARSER_INVALID_KEYWORD = 3000; // color constants static const string kManaColorless; static const string kManaGreen; static const string kManaBlue; static const string kManaRed; static const string kManaBlack; static const string kManaWhite; static const string kManaWaste; // alternative costs constants static const string kAlternativeKeyword; static const string kBuyBackKeyword; static const string kFlashBackKeyword; static const string kRetraceKeyword; static const string kKickerKeyword; static const string kMorphKeyword; static const string kBestowKeyword; // used for deck statistics static const int STATS_FOR_TURNS = 8; static const int STATS_MAX_MANA_COST = 9; enum { MTG_COLOR_ARTIFACT = 0, MTG_COLOR_GREEN = 1, MTG_COLOR_BLUE = 2, MTG_COLOR_RED = 3, MTG_COLOR_BLACK = 4, MTG_COLOR_WHITE = 5, MTG_COLOR_WASTE = 6, MTG_COLOR_LAND = 7, MTG_NB_COLORS = 8, MTG_UNCOLORED = 0, MTG_FOREST = 1, MTG_ISLAND = 2, MTG_MOUNTAIN = 3, MTG_SWAMP = 4, MTG_PLAIN = 5, MTG_TYPE_CREATURE = 10, MTG_TYPE_ARTIFACT = 11, MTG_TYPE_ENCHANTMENT = 12, MTG_TYPE_SORCERY = 13, MTG_TYPE_LAND = 14, MTG_TYPE_INSTANT = 15, TRAMPLE = 0, FORESTWALK = 1, ISLANDWALK = 2, MOUNTAINWALK = 3, SWAMPWALK = 4, PLAINSWALK = 5, FLYING = 6, FIRSTSTRIKE = 7, DOUBLESTRIKE = 8, FEAR = 9, FLASH = 10, HASTE = 11, LIFELINK = 12, REACH = 13, SHROUD = 14, VIGILANCE = 15, DEFENSER = 16, DEFENDER = 16, BANDING = 17, PROTECTIONGREEN = 18, PROTECTIONBLUE = 19, PROTECTIONRED = 20, PROTECTIONBLACK = 21, PROTECTIONWHITE = 22, UNBLOCKABLE = 23, WITHER = 24, PERSIST = 25, RETRACE = 26, EXALTED = 27, NOFIZZLE = 28, SHADOW = 29, REACHSHADOW = 30, FORESTHOME = 31, ISLANDHOME = 32, MOUNTAINHOME = 33, SWAMPHOME = 34, PLAINSHOME = 35, CLOUD = 36, CANTATTACK = 37, MUSTATTACK = 38, CANTBLOCK = 39, DOESNOTUNTAP = 40, OPPONENTSHROUD = 41, INDESTRUCTIBLE = 42, INTIMIDATE = 43, DEATHTOUCH = 44, HORSEMANSHIP = 45, CANTREGEN = 46, ONEBLOCKER = 47, INFECT = 48, POISONTOXIC = 49, POISONTWOTOXIC = 50, POISONTHREETOXIC = 51, PHANTOM = 52, WILTING = 53, VIGOR = 54, CHANGELING = 55, ABSORB = 56,//this need to be coded for players too "If a source would deal damage" TREASON = 57, UNEARTH = 58, CANTLOSE = 59, CANTLIFELOSE = 60, CANTMILLLOSE = 61, SNOWWALK = 62, NONBASICWALK = 63, STRONG = 64, STORM = 65, PHASING = 66, SPLITSECOND = 67, WEAK = 68, AFFINITYARTIFACTS = 69, AFFINITYPLAINS = 70, AFFINITYFOREST = 71, AFFINITYISLAND = 72, AFFINITYMOUNTAIN = 73, AFFINITYSWAMP = 74, AFFINITYGREENCREATURES = 75, CANTWIN = 76, NOMAXHAND = 77, LEYLINE = 78, PLAYERSHROUD = 79, CONTROLLERSHROUD = 80, SUNBURST = 81, FLANKING = 82, EXILEDEATH = 83, LEGENDARYWALK = 84, DESERTWALK = 85, SNOWFORESTWALK = 86, SNOWPLAINSWALK = 87, SNOWMOUNTAINWALK = 88, SNOWISLANDWALK = 89, SNOWSWAMPWALK = 90, CANATTACK = 91, HYDRA = 92, UNDYING = 93, POISONSHROUD = 94, NOACTIVATED = 95, NOACTIVATEDTAP = 96, NOMANA = 97, ONLYMANA = 98, POISONDAMAGER = 99, soulbond = 100, LURE = 101, NOLEGEND = 102, CANPLAYFROMGRAVEYARD = 103, TOKENIZER = 104, MYGRAVEEXILER = 105, OPPGRAVEEXILER = 106, LIBRARYDEATH = 107, SHUFFLELIBRARYDEATH = 108, OFFERING = 109, EVADEBIGGER = 110, SPELLMASTERY = 111, NOLIFEGAIN = 112, NOLIFEGAINOPPONENT = 113, AURAWARD = 114, MADNESS = 115, PROTECTIONFROMCOLOREDSPELLS = 116, MYGCREATUREEXILER = 117, OPPGCREATUREEXILER = 118, PAYZERO = 119, TRINISPHERE = 120, CANPLAYFROMEXILE = 121, LIBRARYEATER = 122, DEVOID = 123, CANTCHANGELIFE = 124, COMBATTOUGHNESS = 125, CANTPAYLIFE = 126, CANTBESACRIFIED = 127, SKULK = 128, MENACE = 129, NOSOLO = 130,//cant attack alone MUSTBLOCK = 131,//blocks each turn DETHRONE = 132, OVERLOAD = 133, SHACKLER = 134, FLYERSONLY = 135,//can attack only if it has flying TEMPFLASHBACK = 136, NOLEGENDRULE =137, CANTTRANSFORM =138, ASFLASH =139, CONDUITED = 140, CANBLOCKTAPPED = 141, OPPNOMAXHAND = 142, CANTCREW = 143, HIDDENFACE = 144, ANYTYPEOFMANA = 145, NECROED = 146, CANTPWATTACK = 147, CANPLAYFROMLIBRARYTOP = 148,//all CANPLAYLANDTOPLIBRARY = 149,//land CANPLAYCREATURETOPLIBRARY = 150,//creature CANPLAYARTIFACTTOPLIBRARY = 151,//artifact CANPLAYINSTANTSORCERYTOPLIBRARY = 152,//instantorsorcery SHOWFROMTOPLIBRARY = 153, SHOWOPPONENTTOPLIBRARY = 154, TOTEMARMOR = 155, DISCARDTOPLAYBYOPPONENT = 156, MODULAR = 157, MUTATE = 158, ADVENTURE = 159, MENTOR = 160, PROWESS = 161, NOFIZZLEALTERNATIVE = 162, HASOTHERKICKER = 163, PARTNER = 164, CANBECOMMANDER = 165, ISCOMMANDER = 166, THREEBLOCKERS = 167, HANDDEATH = 168, INPLAYDEATH = 169, INPLAYTAPDEATH = 170, GAINEDEXILEDEATH = 171, GAINEDHANDDEATH = 172, CYCLING = 173, FORETELL = 174, ANYTYPEOFMANAABILITY = 175, BOAST = 176, TWOBOAST = 177, REPLACESCRY = 178, HASNOKICKER = 179, UNDAMAGEABLE = 180, LIFEFAKER = 181, DOUBLEFACEDEATH = 182, GAINEDDOUBLEFACEDEATH = 183, TWODNGTRG = 184, NODNGOPP = 185, NODNGPLR = 186, CANPLAYAURAEQUIPTOPLIBRARY = 187,//aurasequipment COUNTERDEATH = 188, DUNGEONCOMPLETED = 189, PERPETUALLIFELINK = 190, PERPETUALDEATHTOUCH = 191, NONCOMBATVIGOR = 192, NOMOVETRIGGER = 193, WASCOMMANDER = 194, SHOWOPPONENTHAND = 195, SHOWCONTROLLERHAND = 196, HASREPLICATE = 197, ISPREY = 198, HASDISTURB = 199, DAYBOUND = 200, NIGHTBOUND = 201, DECAYED = 202, HASSTRIVE = 203, ISCONSPIRACY = 204, HASAFTERMATH = 205, NOENTERTRG = 206, NODIETRG = 207, TRAINING = 208, ENERGYSHROUD = 209, EXPSHROUD = 210, COUNTERSHROUD = 211, NONIGHT = 212, NODAMAGEREMOVED = 213, NB_BASIC_ABILITIES = 214, RARITY_S = 'S', //Special Rarity RARITY_M = 'M', //Mythics RARITY_R = 'R', //Rares RARITY_U = 'U', //Uncommons RARITY_C = 'C', //Commons RARITY_L = 'L', //Lands RARITY_T = 'T', //Tokens ECON_NORMAL = 0, //Options default to 0. ECON_HARD = 1, ECON_LUCK = 2, ECON_EASY = 3, //Price for singles PRICE_1M = 3000, PRICE_1R = 500, PRICE_1S = 200, PRICE_1U = 100, PRICE_1C = 20, PRICE_1L = 5, //Price in booster PRICE_BOOSTER = 700, PRICE_MIXED_BOOSTER = 800, CHANCE_CUSTOM_PACK = 15, CHANCE_PURE_OVERRIDE = 50, CHANCE_MIXED_OVERRIDE = 25, GRADE_SUPPORTED = 0, GRADE_BORDERLINE = 1, GRADE_UNOFFICIAL = 2, GRADE_CRAPPY = 3, GRADE_UNSUPPORTED = 4, GRADE_DANGEROUS = 5, BY_SECTOR=0, BY_NAME=1, BY_DATE=2, ASKIP_NONE=0, ASKIP_SAFE=1, ASKIP_FULL=2, WHO_P=0, WHO_O=1, WHO_R=2, KICKER_ALWAYS=0, KICKER_CHOICE=1, }; enum { NOT_CAST = 0, CAST_NORMALLY = 1, CAST_WITH_KICKER = 2, CAST_WITH_ALTERNATIVE = 3, CAST_WITH_BUYBACK = 4, CAST_WITH_FLASHBACK = 5, CAST_WITH_RETRACE = 6, CAST_WITH_MORPH = 7, CAST_WITH_SUSPEND = 8, CAST_WITH_BESTOW = 9, CAST_ALTERNATE = -1, //matches all alternate costs, including itself CAST_ALL = -2, // matches everything except NOT_CAST CAST_DONT_CARE = -3 //matches everything }; static char MTGColorChars[]; static vector MTGColorStrings; static int _r[], _g[], _b[]; static map MTGBasicAbilitiesMap; static const char* MTGBasicAbilities[]; static const string MTGPhaseNames[]; static const char* MTGPhaseCodeNames[]; static int GetBasicAbilityIndex(string mtgAbility); static int GetColorStringIndex(string mtgColor); static int NB_Colors; }; #endif