mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 02:52:02 -08:00
refactor: improved usage of getSourceObjectZoneChangeCounter, added docs (part of #13737)
This commit is contained in:
parent
492c7c9db8
commit
e8342e1f11
5 changed files with 10 additions and 7 deletions
|
|
@ -106,7 +106,7 @@ enum HaktosTheUnscarredPredicate implements ObjectSourcePlayerPredicate<Card> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
|
public boolean apply(ObjectSourcePlayer<Card> input, Game game) {
|
||||||
Object obj = game.getState().getValue(input.getSourceId() + "" + input.getSource().getSourceObjectZoneChangeCounter() + "_haktos_number");
|
Object obj = game.getState().getValue(input.getSourceId() + "" + input.getObject().getZoneChangeCounter(game) + "_haktos_number");
|
||||||
if (!(obj instanceof Integer)) {
|
if (!(obj instanceof Integer)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ enum TalionTheKindlyLordPredicate implements ObjectSourcePlayerPredicate<StackOb
|
||||||
public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
|
public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
|
||||||
Object obj = game.getState().getValue(
|
Object obj = game.getState().getValue(
|
||||||
"chosenNumber_" + input.getSource().getSourceId()
|
"chosenNumber_" + input.getSource().getSourceId()
|
||||||
+ '_' + input.getSource().getSourceObjectZoneChangeCounter()
|
+ '_' + input.getObject().getZoneChangeCounter(game)
|
||||||
);
|
);
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -516,6 +516,10 @@ public interface Ability extends Controllable, Serializable {
|
||||||
*/
|
*/
|
||||||
void initSourceObjectZoneChangeCounter(Game game, boolean force);
|
void initSourceObjectZoneChangeCounter(Game game, boolean force);
|
||||||
|
|
||||||
|
// TODO: it's activating time of ability, not current object's zcc, see #13737,
|
||||||
|
// in most use cases you must use game.getState().getZoneChangeCounter or input.getObject().getZoneChangeCounter(game)
|
||||||
|
// only ability related logic can use it (example: delayed triggers)
|
||||||
|
@Deprecated
|
||||||
int getSourceObjectZoneChangeCounter();
|
int getSourceObjectZoneChangeCounter();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,7 @@ public enum AnotherPredicate implements ObjectSourcePlayerPredicate<MageObject>
|
||||||
if (!input.getObject().getId().equals(input.getSourceId())) {
|
if (!input.getObject().getId().equals(input.getSourceId())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
int zcc = input.getSource().getSourceObjectZoneChangeCounter();
|
return false;
|
||||||
return zcc != 0 && zcc != input.getObject().getZoneChangeCounter(game);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ public enum SaddledSourceThisTurnPredicate implements ObjectSourcePlayerPredicat
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
|
public boolean apply(ObjectSourcePlayer<Permanent> input, Game game) {
|
||||||
return SaddledMountWatcher.checkIfSaddledThisTurn(
|
// for delayed triggers must use starting zcc (when delayed trigger created)
|
||||||
input.getObject(), new MageObjectReference(input.getSourceId(), input.getSource().getSourceObjectZoneChangeCounter(), game), game
|
MageObjectReference startingMor = new MageObjectReference(input.getSourceId(), input.getSource().getSourceObjectZoneChangeCounter(), game);
|
||||||
);
|
return SaddledMountWatcher.checkIfSaddledThisTurn(input.getObject(), startingMor, game);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue