- fixed Beacon of unrest bug
- Fixed Kraken's eye bug
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-07-25 02:57:30 +00:00
parent 3c2032a99e
commit 719c218552
10 changed files with 115 additions and 58 deletions
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 981 B

+1 -1
View File
@@ -872,7 +872,7 @@ name=Kraken's Eye
mana={2}
type=Artifact
text=Whenever a player casts a blue spell, you may gain 1 life.
auto=@movedTo(*[blue]|stack): may life:1
auto=@movedTo(*[blue]|stack):may life:1
rarity=U
[/card]
[card]
+3
View File
@@ -39,6 +39,7 @@ ascendant_evincar2.txt
ascendant_evincar3.txt
ashen_firebeast.txt
ashen_firebeast2.txt
beacon_of_unrest.txt
#befoul.txt
blessed_wine.txt
#blinking_spirit.txt
@@ -100,6 +101,8 @@ jump.txt
keldon_warlord.txt
keldon_warlord2.txt
kird_ape.txt
kraken_eye.txt
kraken_eye2.txt
kudzu.txt
kudzu2.txt
lhurgoyf.txt
@@ -0,0 +1,18 @@
#Bug: Beacon of unrest goes to graveyard
[INIT]
FIRSTMAIN
[PLAYER1]
hand:beacon of unrest
manapool:{3}{B}{B}
[PLAYER2]
graveyard:shivan dragon
[DO]
beacon of unrest
shivan dragon
[ASSERT]
FIRSTMAIN
[PLAYER1]
inplay:shivan dragon
library:beacon of unrest
[PLAYER2]
[END]
+18
View File
@@ -0,0 +1,18 @@
#Bug:Kraken's eye does nothing
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:kraken's eye
hand:air elemental
manapool:{3}{U}{U}
[PLAYER2]
[DO]
air elemental
choice 0
[ASSERT]
FIRSTMAIN
[PLAYER1]
inplay:kraken's eye,air elemental
life:21
[PLAYER2]
[END]
+36
View File
@@ -0,0 +1,36 @@
#Kraken eye works ok twice in a turn ?
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:kraken's eye,island
hand:air elemental,unsummon
manapool:{3}{U}{U}
[PLAYER2]
[DO]
air elemental
choice 0
next
#begin
next
#attack
next
#blockers
next
#dmage
next
#end
next
#secondmain
island
unsummon
air elemental
choice 0
[ASSERT]
SECONDMAIN
[PLAYER1]
inplay:kraken's eye,island
hand:air elemental
graveyard:unsummon
life:22
[PLAYER2]
[END]
+16 -25
View File
@@ -63,7 +63,7 @@ class AACounter: public ActivatedAbility{
int nb;
int power;
int toughness;
AACounter(int id, MTGCardInstance * _source, MTGCardInstance * _target, int _power, int _toughness, int nb,ManaCost * cost=NULL, int doTap = 1):ActivatedAbility(id,_source,cost,0,doTap),power(_power),toughness(_toughness),nb(nb){
AACounter(int id, MTGCardInstance * _source, MTGCardInstance * _target, int _power, int _toughness, int nb,ManaCost * cost=NULL, int doTap = 0):ActivatedAbility(id,_source,cost,0,doTap),power(_power),toughness(_toughness),nb(nb){
target=_target;
}
@@ -95,7 +95,7 @@ class AACounter: public ActivatedAbility{
class AAFizzler:public ActivatedAbility{
public:
AAFizzler(int _id, MTGCardInstance * card, Spell * _target, ManaCost * _cost = NULL, int _tap = 1):ActivatedAbility(_id, card,_cost,0,_tap){
AAFizzler(int _id, MTGCardInstance * card, Spell * _target, ManaCost * _cost = NULL, int _tap = 0):ActivatedAbility(_id, card,_cost,0,_tap){
target = _target;
}
@@ -129,11 +129,10 @@ class MayAbility:public MTGAbility{
public:
int triggered;
MTGAbility * ability;
int deleteAbility;
MTGAbility * mClone;
MayAbility(int _id, MTGAbility * _ability, MTGCardInstance * _source):MTGAbility(_id,_source),ability(_ability){
triggered = 0;
ability->forceDestroy = 1;
deleteAbility = 1;
mClone = NULL;
}
void Update(float dt){
@@ -150,7 +149,7 @@ public:
}
int testDestroy(){
if (triggered && !game->mLayers->actionLayer()->menuObject){
if (triggered && !game->mLayers->actionLayer()->menuObject && game->mLayers->actionLayer()->getIndexOf(mClone) ==-1){
OutputDebugString("Destroy!\n");
return 1;
}
@@ -165,22 +164,14 @@ public:
int reactToTargetClick(Targetable * object){
OutputDebugString("ReactToTargetClick!\n");
deleteAbility = 0;
game->addObserver(ability);
return ability->reactToTargetClick(object);
mClone = ability->clone();
mClone->addToGame();
mClone->forceDestroy = 1;
return mClone->reactToTargetClick(object);
}
~MayAbility(){
if (deleteAbility) SAFE_DELETE(ability);
}
virtual ostream& toString(ostream& out) const
{
out << "MayAbility ::: triggered : " << triggered
<< " ; ability : " << ability
<< " ; deleteAbility : " << deleteAbility
<< " (";
return MTGAbility::toString(out) << ")";
if (!isClone) SAFE_DELETE(ability);
}
MayAbility * clone() const{
@@ -241,7 +232,7 @@ class GenericActivatedAbility:public ActivatedAbility{
MTGAbility * ability;
int limitPerTurn;
int counters;
GenericActivatedAbility(int _id, MTGCardInstance * card, MTGAbility * a, ManaCost * _cost, int _tap = 1, int limit = 0):ActivatedAbility(_id, card,_cost,0,_tap),ability(a),limitPerTurn(limit){
GenericActivatedAbility(int _id, MTGCardInstance * card, MTGAbility * a, ManaCost * _cost, int _tap = 0, int limit = 0):ActivatedAbility(_id, card,_cost,0,_tap),ability(a),limitPerTurn(limit){
counters = 0;
target = ability->target;
}
@@ -321,7 +312,7 @@ public:
class AADrawer:public ActivatedAbility{
public:
int nbcards;
AADrawer(int _id, MTGCardInstance * card,ManaCost * _cost, int _nbcards = 1, int _tap = 1):ActivatedAbility(_id, card,_cost,0,_tap),nbcards(_nbcards){
AADrawer(int _id, MTGCardInstance * card,ManaCost * _cost, int _nbcards = 1, int _tap = 0):ActivatedAbility(_id, card,_cost,0,_tap),nbcards(_nbcards){
}
int resolve(){
@@ -346,7 +337,7 @@ class AADrawer:public ActivatedAbility{
class AALifer:public ActivatedAbility{
public:
int life;
AALifer(int _id, MTGCardInstance * card, MTGCardInstance * _target, int life, ManaCost * _cost = NULL, int _tap = 1):ActivatedAbility(_id, card,_cost,0,_tap),life(life){
AALifer(int _id, MTGCardInstance * card, MTGCardInstance * _target, int life, ManaCost * _cost = NULL, int _tap = 0):ActivatedAbility(_id, card,_cost,0,_tap),life(life){
target = _target;
}
@@ -1663,7 +1654,7 @@ AADamager(int _id, MTGCardInstance * _source, Damageable * _target, int _damage
class TADamager:public TargetAbility{
public:
int damage;
TADamager(int id, MTGCardInstance * card, ManaCost * _cost, int _damage, TargetChooser * _tc = NULL, int _tap = 1):TargetAbility(id,card, _tc, _cost,0,_tap),damage(_damage){
TADamager(int id, MTGCardInstance * card, ManaCost * _cost, int _damage, TargetChooser * _tc = NULL, int _tap = 0):TargetAbility(id,card, _tc, _cost,0,_tap),damage(_damage){
if (!tc) tc = NEW DamageableTargetChooser(card);
ability = NEW AADamager(id,card,NULL,damage);
}
@@ -3689,7 +3680,7 @@ ALavaborn * clone() const{
class AADepleter:public ActivatedAbility{
public:
int nbcards;
AADepleter(int _id, MTGCardInstance * card, Player * _target, int nbcards = 1, ManaCost * _cost=NULL, int _tap = 1):ActivatedAbility(_id,card, _cost,0,_tap),nbcards(nbcards){
AADepleter(int _id, MTGCardInstance * card, Player * _target, int nbcards = 1, ManaCost * _cost=NULL, int _tap = 0):ActivatedAbility(_id,card, _cost,0,_tap),nbcards(nbcards){
target = _target;
}
int resolve(){
@@ -3719,7 +3710,7 @@ class AADepleter:public ActivatedAbility{
class AARandomDiscarder:public ActivatedAbility{
public:
int nbcards;
AARandomDiscarder(int _id, MTGCardInstance * card, Player * _target, int nbcards = 1, ManaCost * _cost=NULL, int _tap = 1):ActivatedAbility(_id,card, _cost,0,_tap),nbcards(nbcards){
AARandomDiscarder(int _id, MTGCardInstance * card, Player * _target, int nbcards = 1, ManaCost * _cost=NULL, int _tap = 0):ActivatedAbility(_id,card, _cost,0,_tap),nbcards(nbcards){
target = _target;
}
int resolve(){
+4 -1
View File
@@ -106,7 +106,10 @@ int Spell::resolve(){
while (source->next){
source = source->next;
}
source = source->controller()->game->putInPlay(source);
if (!source->hasType("instant") && !source->hasType("sorcery")){
source = source->controller()->game->putInPlay(source);
}
//Play SFX
if (GameOptions::GetInstance()->values[OPTIONS_SFXVOLUME].getIntValue() > 0){
+19 -31
View File
@@ -816,16 +816,11 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
MTGCardInstance * card = spell->source;
if (card->hasType("instant") || card->hasType("sorcery")){
MTGPlayerCards * zones = card->controller()->game;
zones->putInGraveyard(card);
}
if (spell->cursor==1) card->target = spell->getNextCardTarget();
_id = magicText(_id, spell);
GameObserver * game = GameObserver::GetInstance();
MTGPlayerCards * zones = card->controller()->game;
int id = card->getId();
@@ -1697,33 +1692,17 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
}
case 130553:// Beacon of Immortality
{
int life;
Player * player = spell->getNextPlayerTarget();
MTGLibrary * library = card->controller()->game->library;
life = player->life;
player->life+=life;
MTGGameZone * zones[] = {card->controller()->game->inPlay,card->controller()->game->graveyard,card->controller()->game->hand};
for (int k = 0; k < 3; k++){
MTGGameZone * zone = zones[k];
if (zone->hasCard(card)){
card->controller()->game->putInZone(card,zone,library);
library->shuffle();
}
}
break;
Player * player = spell->getNextPlayerTarget();
player->life+=player->life;
zones->putInZone(card,zones->stack,zones->library);
zones->library->shuffle();
break;
}
case 135262:// Beacon of Destruction & unrest
{
MTGLibrary * library = card->controller()->game->library;
MTGGameZone * zones[] = {card->controller()->game->inPlay,card->controller()->game->graveyard,card->controller()->game->hand};
for (int k = 0; k < 3; k++){
MTGGameZone * zone = zones[k];
if (zone->hasCard(card)){
card->controller()->game->putInZone(card,zone,library);
library->shuffle();
}
}
break;
zones->putInZone(card,zones->stack,zones->library);
zones->library->shuffle();
break;
}
case 129750: //Sudden Impact
{
@@ -1897,6 +1876,12 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
game->addObserver(NEW AStrongLandLinkCreature(_id, card,"plains"));
}
if (card->hasType("instant") || card->hasType("sorcery")){
MTGPlayerCards * zones = card->controller()->game;
zones->putInZone(card,zones->stack,zones->graveyard);
}
}
MTGAbility::MTGAbility(int id, MTGCardInstance * card):ActionElement(id){
@@ -2363,7 +2348,10 @@ void GenericTriggeredAbility::Update(float dt){
}
int GenericTriggeredAbility::resolve(){
return ability->resolve();
if (ability->oneShot) return ability->resolve();
MTGAbility * clone = ability->clone();
clone->addToGame();
return 1;
}
int GenericTriggeredAbility::testDestroy(){