Merge branch 'master' into cmake

This commit is contained in:
xawotihs
2025-04-22 20:37:50 +02:00
275 changed files with 298456 additions and 54638 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -45,19 +45,29 @@ class CardDescriptor: public MTGCardInstance
int convertedManacost; // might fit better into MTGCardInstance?
int zposComparisonMode;
int zposition;
int numofColorsComparisonMode;
int numofColors;
int hasKickerCost;
int hasConvokeCost;
int hasFlashbackCost;
int hasBackSide;
int modified;
int toxicity;
int hasPartner;
int isPermanent;
int hasXCost;
int anyCounter;
int init();
CardDescriptor();
void unsecureSetKicked(int i);
void unsecureSetHasKickerCost(int i);
void unsecureSetHasFlashbackCost(int i);
void unsecureSetHasBackSide(int i);
void unsecureSetHasPartner(int i);
void unsecureSetKicked(int k);
void unsecureSetHasKickerCost(int k);
void unsecureSetHasConvokeCost(int k);
void unsecureSetHasFlashbackCost(int k);
void unsecureSetHasBackSide(int k);
void unsecureSetModified(int k);
void unsecureSetHasToxic(int k);
void unsecureSetHasPartner(int k);
void unsecureSetIsPermanent(int k);
void unsecureSetTapped(int i);
void unsecuresetfresh(int k);
void unsecuresetrecent(int j);

View File

@@ -33,7 +33,7 @@ public:
DamageableType type_as_damageable;
Damageable(GameObserver* observer, int _life)
: Targetable(observer), life(_life), handsize(0),
poisonCount(0), damageCount(0), preventable(0), thatmuch(0),
poisonCount(0), damageCount(0), preventable(0), thatmuch(0), exceededDamage(0),
lifeLostThisTurn(0), lifeGainedThisTurn(0), type_as_damageable(DAMAGEABLE_MTGCARDINSTANCE)
{}
int getLife(){return life;}

View File

@@ -94,6 +94,7 @@ public:
COMMANDER_MODE_UNLOCKED,
LAST_NAMED, //Any option after this does not look up in optionNames.
SET_UNLOCKS = LAST_NAMED + 1, //For sets.
EXIT,
};
static int optionSet(int setID);

View File

@@ -78,7 +78,7 @@ private:
DeckViewerStages mStage;
JMusic * bgMusic;
InteractiveButton *toggleDeckButton, *sb_cmd_dng_Button, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton;
InteractiveButton *toggleDeckButton, *sb_cmd_dng_Button, *sellCardButton, *statsPrevButton, *filterButton, *menuButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton;
WGuiFilters * filterMenu;
WSrcDeckViewer * source;

View File

@@ -72,7 +72,7 @@ private:
vector<MTGCardInstance*> subBooster;
MTGDeck * booster;
bool bListCards;
InteractiveButton *cycleCardsButton, *showCardListButton;
InteractiveButton *cycleCardsButton, *showCardListButton, *shopMenuButton;
bool disablePurchase, clearInput;
void beginFilters();

View File

@@ -97,6 +97,9 @@ public:
bool turningOver;
bool isMorphed;
int isFlipped;
int isCommander;
int isRingBearer;
bool isDefeated;
string MeldedFrom;
bool isPhased;
bool isCascaded;
@@ -149,8 +152,10 @@ public:
int summoningSickness;
ManaCost reducedCost;
ManaCost increasedCost;
ManaCost producedMana;
ManaCost * getReducedManaCost();
ManaCost * getIncreasedManaCost();
ManaCost * getProducedMana();
bool matchesCastFilter(int castMethod);
bool hasTotemArmor();
@@ -207,6 +212,7 @@ public:
int stepPower(CombatStep step);
int afterDamage();
int has(int ability);
int getToxicity();
int cleanup();
MTGCard * model;

View File

@@ -129,7 +129,7 @@ public:
void prefetchCardNameCache();
#endif
MTGCard * getCardByName(string name);
MTGCard * getCardByName(string name, int forcedSetId = -1);
void loadFolder(const string& folder, const string& filename="" );
int load(const string& config_file);

View File

@@ -17,6 +17,8 @@ typedef enum
GAME_TYPE_RANDOM2,
GAME_TYPE_RANDOM3,
GAME_TYPE_RANDOM5,
GAME_TYPE_RANDOMCOMMANDER,
GAME_TYPE_RANDOMCOMMANDERFROMFILE,
GAME_TYPE_HORDE,
GAME_TYPE_SET_LIMITED,
GAME_TYPE_STORY,
@@ -165,7 +167,7 @@ class Constants
MUSTATTACK = 38,
CANTBLOCK = 39,
DOESNOTUNTAP = 40,
OPPONENTSHROUD = 41,
HEXPROOF = 41,
INDESTRUCTIBLE = 42,
INTIMIDATE = 43,
DEATHTOUCH = 44,
@@ -224,7 +226,7 @@ class Constants
NOMANA = 97,
ONLYMANA = 98,
POISONDAMAGER = 99,
soulbond = 100,
SOULBOND = 100,
LURE = 101,
NOLEGEND = 102,
CANPLAYFROMGRAVEYARD = 103,
@@ -290,7 +292,7 @@ class Constants
HASOTHERKICKER = 163,
PARTNER = 164,
CANBECOMMANDER = 165,
ISCOMMANDER = 166,
POISONFOURTOXIC = 166,
THREEBLOCKERS = 167,
HANDDEATH = 168,
INPLAYDEATH = 169,
@@ -318,7 +320,7 @@ class Constants
PERPETUALDEATHTOUCH = 191,
NONCOMBATVIGOR = 192,
NOMOVETRIGGER = 193,
WASCOMMANDER = 194,
CANLOYALTYTWICE = 194,
SHOWOPPONENTHAND = 195,
SHOWCONTROLLERHAND = 196,
HASREPLICATE = 197,
@@ -338,7 +340,32 @@ class Constants
COUNTERSHROUD = 211,
NONIGHT = 212,
NODAMAGEREMOVED = 213,
NB_BASIC_ABILITIES = 214,
BACKGROUNDPARTNER = 214,
BOTTOMLIBRARYDEATH = 215,
NOLOYALTYDAMAGE = 216,
NODEFENSEDAMAGE = 217,
AFFINITYALLCREATURES = 218,
AFFINITYCONTROLLERCREATURES = 219,
AFFINITYOPPONENTCREATURES = 220,
AFFINITYALLDEADCREATURES = 221,
AFFINITYPARTY = 222,
AFFINITYENCHANTMENTS = 223,
AFFINITYBASICLANDTYPES = 224,
AFFINITYTWOBASICLANDTYPES = 225,
AFFINITYGRAVECREATURES = 226,
AFFINITYATTACKINGCREATURES = 227,
AFFINITYGRAVEINSTSORC = 228,
POISONFIVETOXIC = 229,
POISONSIXTOXIC = 230,
POISONSEVENTOXIC = 231,
POISONEIGHTTOXIC = 232,
POISONNINETOXIC = 233,
POISONTENTOXIC = 234,
EQPASINST = 235,
CANLOYALTYASINST = 236,
CANPLAYENCHANTMENTTOPLIBRARY = 237,//enchantment
AFFINITYTWOALLDEADCREATURES = 238,
NB_BASIC_ABILITIES = 239,
RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics

View File

@@ -45,9 +45,11 @@ public:
int energyCount;
int experienceCount;
int yidaroCount;
int ringTemptations;
int dungeonCompleted;
int numOfCommandCast;
int monarch;
int initiative;
int surveilOffset;
int devotionOffset;
int lastShuffleTurn;
@@ -66,7 +68,6 @@ public:
int snowManaC;
string lastChosenName;
vector<string> prowledTypes;
vector<MTGCardInstance*>curses;
Player(GameObserver *observer, string deckFile, string deckFileSmall, MTGDeck * deck = NULL);
virtual ~Player();
virtual void setObserver(GameObserver*g);

View File

@@ -44,6 +44,8 @@ protected:
Player * loadPlayerRandom(GameObserver* observer, int isAI, int mode);
Player * loadPlayerRandomThree(GameObserver* observer, int isAI);
Player * loadPlayerRandomFive(GameObserver* observer, int isAI);
Player * loadPlayerRandomCommander(GameObserver* observer, int isAI);
Player * loadPlayerRandomCommanderFromFile(GameObserver* observer, int isAI);
Player * loadPlayerHorde(GameObserver* observer, int isAI);
Player * loadRandomSetLimited(GameObserver* observer, int isAI);
Player * initPlayer(GameObserver *observer, int playerId);

View File

@@ -33,7 +33,9 @@ public:
TYPE_DUNGEON = 18,
TYPE_EMBLEM = 19,
TYPE_CONSPIRACY = 20,
LAST_TYPE = TYPE_CONSPIRACY,
TYPE_BACKGROUND = 21,
TYPE_BATTLE = 22,
LAST_TYPE = TYPE_BATTLE,
};
protected:

View File

@@ -69,6 +69,22 @@ struct WEventCounters : public WEvent {
virtual Targetable * getTarget(int target);
};
struct WEventTotalCounters : public WEvent {
MTGCardInstance * targetCard;
Counters * counter;
string name;
int power;
int toughness;
bool added;
bool removed;
int totalamount;
bool iscost;
MTGCardInstance * source;
WEventTotalCounters(Counters *counter,string name,int power, int toughness,bool added = false, bool removed = false, int totalamount = 0, bool iscost = false, MTGCardInstance * source = NULL);
using WEvent::getTarget;
virtual Targetable * getTarget(int target);
};
struct WEventLife : public WEvent {
Player * player;
int amount;
@@ -146,6 +162,10 @@ struct WEventCardTappedForMana : public WEventCardUpdate {
virtual Targetable * getTarget(int target);
};
struct WEventCardManaProduced : public WEventCardUpdate {
WEventCardManaProduced(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//Event when a card's "attacker" status changes
//before:Player/Planeswalker that card was attacking previously
@@ -385,6 +405,31 @@ struct WEventplayerMonarch : public WEvent {
virtual Targetable * getTarget(Player * player);
};
//ring tempts event
struct WEventplayerTempted : public WEvent {
WEventplayerTempted(Player * player);
Player * player;
using WEvent::getTarget;
virtual Targetable * getTarget(Player * player);
};
//proliferate event
struct WEventplayerProliferated : public WEvent {
WEventplayerProliferated(Player * player);
Player * player;
MTGCardInstance * source;
using WEvent::getTarget;
virtual Targetable * getTarget(Player * player);
};
//initiative event
struct WEventplayerInitiative : public WEvent {
WEventplayerInitiative(Player * player);
Player * player;
using WEvent::getTarget;
virtual Targetable * getTarget(Player * player);
};
//shuffle event
struct WEventplayerShuffled : public WEvent {
WEventplayerShuffled(Player * player);
@@ -399,6 +444,12 @@ struct WEventCardBoasted : public WEventCardUpdate {
virtual Targetable * getTarget(int target);
};
//defeated event
struct WEventCardDefeated : public WEventCardUpdate {
WEventCardDefeated(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//surveil event
struct WEventCardSurveiled : public WEventCardUpdate {
WEventCardSurveiled(MTGCardInstance * card);
@@ -423,12 +474,25 @@ struct WEventCardScryed : public WEventCardUpdate {
virtual Targetable * getTarget(int target);
};
//ninjutsu event
struct WEventCardNinja : public WEventCardUpdate {
WEventCardNinja(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//explores event
struct WEventCardExplored : public WEventCardUpdate {
WEventCardExplored(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//ring bearer event
struct WEventCardBearerChosen : public WEventCardUpdate {
bool bearerChanged;
WEventCardBearerChosen(MTGCardInstance * card);
virtual Targetable * getTarget(int target);
};
//dungeon completed event
struct WEventCardDungeonCompleted : public WEventCardUpdate {
int totaldng;

View File

@@ -13,8 +13,8 @@ Mod by: Vitty85
/* Wagic versions */
#define WAGIC_VERSION_MAJOR 0
#define WAGIC_VERSION_MEDIUM 23
#define WAGIC_VERSION_MINOR 1
#define WAGIC_VERSION_MEDIUM 25
#define WAGIC_VERSION_MINOR 3
#define VERSION_DOT(a, b, c) a ##.## b ##.## c
#define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c