Skip to content

Handle Land Played This Turn via List for MayPlay uses #10465

@Hanmac

Description

@Hanmac

For #4700 part about incMayPlayTurn

I want Player::getLandPlayedThisTurn to return a List<SpellAbility> (mostly LandAbility)
maybe stored in Game like SpellCastThisTurn (but Lands can only be played by active turn player?)

public final int getLandsPlayedThisTurn() {
return landsPlayedThisTurn;
}
public final int getLandsPlayedLastTurn() {
return landsPlayedLastTurn;
}
public final void addLandPlayedThisTurn() {
landsPlayedThisTurn++;
achievementTracker.landsPlayed++;
view.updateNumLandThisTurn(this);
}

While checking this code, I found this problem:

boolean oppSkippedLandDrop = (tgtPlayer.getLandsPlayedLastTurn() == 0 && ph.isPlayerTurn(ai))
|| (tgtPlayer.getLandsPlayedThisTurn() == 0 && ph.isPlayerTurn(tgtPlayer) && ph.getPhase().isAfter(PhaseType.MAIN2));

LandsPlayedLastTurn isn't really correct for multiplayer, because it doesn't look at TargetPlayers last turn.

If I store a copy of the LandAbility, I might implement this in java:

T:Mode$ LandPlayed | Origin$ Exile | ValidCard$ Land.YouCtrl | Execute$ StoreVar | Static$ True
SVar:StoreVar:DB$ StoreSVar | SVar$ LandsPlayedFromExile | Type$ Number | Expression$ 1

T:Mode$ LandPlayed | Origin$ Exile,Library,Graveyard | ValidCard$ Land.YouCtrl | Execute$ StoreVar | Static$ True
SVar:StoreVar:DB$ StoreSVar | SVar$ LandsPlayedFromNotHand | Type$ Number | Expression$ 1

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions