Added HTR18, HT19, AFR and AFC sets, added/fixed old primitives, improved Android dowloader, fixed it lang file, fixed IMA rarities, fixed order index of some old sets, added all features from D&D such as Dungeon Cards and Dice (d20,d10, adn so on).

This commit is contained in:
Vittorio Alfieri
2021-07-17 02:33:08 +02:00
parent d98956a1b8
commit 31ab9edc81
43 changed files with 9693 additions and 1740 deletions
+52 -2
View File
@@ -729,6 +729,39 @@ public:
}
};
class TrCardDungeonCompleted: public Trigger
{
public:
bool limitOnceATurn;
int triggeredTurn;
int totaldng;
string playerName;
TrCardDungeonCompleted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false, bool limitOnceATurn = false, int totaldng = 0, string playerName = "") :
Trigger(observer, id, source,once, tc),limitOnceATurn(limitOnceATurn), totaldng(totaldng), playerName(playerName)
{
}
int triggerOnEventImpl(WEvent * event)
{
WEventCardDungeonCompleted * e = dynamic_cast<WEventCardDungeonCompleted *> (event);
if (!e) return 0;
if (limitOnceATurn && triggeredTurn == game->turn)
return 0;
if (totaldng > 0 && totaldng != e->totaldng)
return 0;
if (playerName != "" && playerName != e->playerName)
return 0;
if (!tc->canTarget(e->card)) return 0;
triggeredTurn = game->turn;
return 1;
}
TrCardDungeonCompleted * clone() const
{
return NEW TrCardDungeonCompleted(*this);
}
};
class TrCardRolledDie: public Trigger
{
public:
@@ -747,6 +780,8 @@ public:
if (!e) return 0;
if (limitOnceATurn && triggeredTurn == game->turn)
return 0;
if (rollresult == -1 && e->card->dieNumFaces != e->card->lastRollResult)
return 0;
if (rollresult > 0 && rollresult != e->card->lastRollResult)
return 0;
if (playerName != "" && playerName != e->playerName)
@@ -4027,6 +4062,19 @@ public:
AAExploresEvent * clone() const;
~AAExploresEvent();
};
//Dungeon Completed
class AAAlterDungeonCompleted: public ActivatedAbilityTP
{
public:
int dungeoncounter;
AAAlterDungeonCompleted(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int dungeoncounter, ManaCost * _cost = NULL,
int who = TargetChooser::UNSET);
int resolve();
const string getMenuText();
AAAlterDungeonCompleted * clone() const;
~AAAlterDungeonCompleted();
};
//Yidaro Counter
class AAAlterYidaroCount: public ActivatedAbilityTP
{
@@ -6566,11 +6614,12 @@ class AASetDie: public InstantAbility
{
public:
int side;
int diefaces;
string abilityToAlter;
string abilityWin;
string abilityLose;
MTGAbility * abilityAltered;
AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1,string toAdd = "");
AASetDie(GameObserver* observer, int id, MTGCardInstance * source, MTGCardInstance * target, int side = -1, int diefaces = 6, string toAdd = "");
int resolve();
const string getMenuText();
AASetDie * clone() const;
@@ -6582,7 +6631,8 @@ public:
string baseAbility;
AASetDie * setDie;
int userchoice;
GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL, int userchoice = 0);
int diefaces;
GenericRollDie(GameObserver* observer, int id, MTGCardInstance * source, Targetable * target, string toAdd = "", ManaCost * cost = NULL, int userchoice = 0, int diefaces = 6);
int resolve();
const string getMenuText();
GenericRollDie * clone() const;
+7 -3
View File
@@ -34,7 +34,8 @@ enum
SBMENU_ADD_NORMAL = 803,
SBMENU_ADD_SB = 804,
SBMENU_ADD_CMD = 805,
SBMENU_ADD_CANCEL = 806
SBMENU_ADD_DNG = 806,
SBMENU_ADD_CANCEL = 807
};
// enums for menu options
@@ -76,7 +77,7 @@ private:
DeckViewerStages mStage;
JMusic * bgMusic;
InteractiveButton *toggleDeckButton, *sb_cmd_Button, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton;
InteractiveButton *toggleDeckButton, *sb_cmd_dng_Button, *sellCardButton, *statsPrevButton, *filterButton, *toggleViewButton, *toggleUpButton, *toggleDownButton, *toggleLeftButton, *toggleRightButton;
WGuiFilters * filterMenu;
WSrcDeckViewer * source;
@@ -91,6 +92,7 @@ private:
DeckDataWrapper * myCollection;
DeckDataWrapper * mySideboard;
DeckDataWrapper * myCommandZone;
DeckDataWrapper * myDungeonZone;
StatsWrapper * mStatsWrapper;
int hudAlpha;
@@ -115,6 +117,7 @@ private:
void toggleView();
void insertSideBoard();
void insertCommandZone();
void insertDungeonZone();
public:
GameStateDeckViewer(GameApp* parent);
virtual ~GameStateDeckViewer();
@@ -122,12 +125,13 @@ public:
void updateFilters();
void rebuildFilters();
void toggleCollection();
void toggleSB_CMD();
void toggleSB_CMD_DNG();
void Start();
virtual void End();
void addRemove(MTGCard * card);
void SBaddRemove(MTGCard * card);
void CMDaddRemove(MTGCard * card);
void DNGaddRemove(MTGCard * card);
void choiceAddRemove(MTGCard * card);
virtual void Update(float dt);
void renderOnScreenBasicInfo();
+1
View File
@@ -117,6 +117,7 @@ public:
int lastFlipResult;
int dieSide;
int lastRollResult;
int dieNumFaces;
int scryedCards;
int stillInUse();
+2
View File
@@ -221,6 +221,7 @@ public:
vector<string> meta_AIHints;
vector<string> Sideboard;
vector<string> CommandZone;
vector<string> DungeonZone;
string meta_unlockRequirements;
int meta_id;
@@ -239,6 +240,7 @@ public:
int remove(MTGCard * card);
void replaceSB(vector<string> newSB = vector<string>());
void replaceCMD(vector<string> newCMD = vector<string>());
void replaceDNG(vector<string> newDNG = vector<string>());
string getFilename();
int save();
int save(const string& destFileName, bool useExpandedDescriptions, const string& deckTitle, const string& deckDesc);
+7 -1
View File
@@ -308,7 +308,13 @@ class Constants
LIFEFAKER = 181,
DOUBLEFACEDEATH = 182,
GAINEDDOUBLEFACEDEATH = 183,
NB_BASIC_ABILITIES = 184,
TWODNGTRG = 184,
NODNGOPP = 185,
NODNGPLR = 186,
CANPLAYAURAEQUIPTOPLIBRARY = 187,//aurasequipment
COUNTERDEATH = 188,
DUNGEONCOMPLETED = 189,
NB_BASIC_ABILITIES = 190,
RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics
+1
View File
@@ -250,6 +250,7 @@ public:
MTGCardInstance * putInExile(MTGCardInstance * card);
MTGCardInstance * putInLibrary(MTGCardInstance * card);
MTGCardInstance * putInHand(MTGCardInstance * card);
MTGCardInstance * putInSideboard(MTGCardInstance * card);
MTGCardInstance * putInZone(MTGCardInstance * card, MTGGameZone * from, MTGGameZone * to, bool asCopy = false);
int isInPlay(MTGCardInstance * card);
int isInGrave(MTGCardInstance * card);
+1
View File
@@ -44,6 +44,7 @@ public:
int drawCounter;
int energyCount;
int yidaroCount;
int dungeonCompleted;
int numOfCommandCast;
int monarch;
int surveilOffset;
+8
View File
@@ -390,6 +390,14 @@ struct WEventCardExplored : public WEventCardUpdate {
virtual Targetable * getTarget(int target);
};
//dungeon completed event
struct WEventCardDungeonCompleted : public WEventCardUpdate {
int totaldng;
string playerName;
WEventCardDungeonCompleted(MTGCardInstance * card, int totaldng, string playerName);
virtual Targetable * getTarget(int target);
};
//roll die event
struct WEventCardRollDie : public WEventCardUpdate {
string playerName;