mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 09:48:02 +00:00
Player - create, has, remove for InitiativeEffect
This commit is contained in:
@@ -240,6 +240,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
private Deque<SpellAbility> paidForStack = new ArrayDeque<>();
|
||||
|
||||
private Card monarchEffect;
|
||||
private Card initiativeEffect;
|
||||
private Card blessingEffect;
|
||||
private Card keywordEffect;
|
||||
|
||||
@@ -3187,6 +3188,76 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
return !StaticAbilityCantBecomeMonarch.anyCantBecomeMonarch(this);
|
||||
}
|
||||
|
||||
public void createInitiativeEffect(final String set) {
|
||||
final PlayerZone com = getZone(ZoneType.Command);
|
||||
if (initiativeEffect == null) {
|
||||
initiativeEffect = new Card(game.nextCardId(), null, game);
|
||||
initiativeEffect.setOwner(this);
|
||||
initiativeEffect.setImmutable(true);
|
||||
if (set != null) {
|
||||
initiativeEffect.setImageKey("t:initiative_" + set.toLowerCase());
|
||||
initiativeEffect.setSetCode(set);
|
||||
} else {
|
||||
initiativeEffect.setImageKey("t:initiative");
|
||||
}
|
||||
initiativeEffect.setName("The Initiative");
|
||||
|
||||
//Set up damage trigger
|
||||
final String damageTrig = "Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ You | " +
|
||||
"CombatDamage$ True | TriggerZones$ Command | TriggerDescription$ Whenever one or more " +
|
||||
"creatures a player controls deal combat damage to you, that player takes the initiative.";
|
||||
final String damageEff = "DB$ TakeInitiative | Defined$ TriggeredSourceController";
|
||||
|
||||
final Trigger damageTrigger = TriggerHandler.parseTrigger(damageTrig, initiativeEffect, true);
|
||||
|
||||
damageTrigger.setOverridingAbility(AbilityFactory.getAbility(damageEff, initiativeEffect));
|
||||
initiativeEffect.addTrigger(damageTrigger);
|
||||
|
||||
//Set up triggers to venture into Undercity
|
||||
final String ventureTakeTrig = "Mode$ TakesInitiative | ValidPlayer$ You | TriggerZones$ Command | " +
|
||||
"TriggerDescription$ Whenever you take the initiative and at the beginning of your upkeep, " +
|
||||
"venture into Undercity. (If you're in a dungeon, advance to the next room. If not, enter " +
|
||||
"Undercity. You can take the initiative even if you already have it.)";
|
||||
|
||||
final String ventureUpkpTrig = "Mode$ Phase | Phase$ Upkeep | TriggerZones$ Command | ValidPlayer$ You " +
|
||||
"| TriggerDescription$ Whenever you take the initiative and at the beginning of your upkeep, " +
|
||||
"venture into Undercity. (If you're in a dungeon, advance to the next room. If not, enter " +
|
||||
"Undercity. You can take the initiative even if you already have it.) | Secondary$ True";
|
||||
|
||||
final String ventureEff = "DB$ Venture | Dungeon$ Undercity";
|
||||
|
||||
final Trigger ventureUTrigger = TriggerHandler.parseTrigger(ventureUpkpTrig, initiativeEffect, true);
|
||||
ventureUTrigger.setOverridingAbility(AbilityFactory.getAbility(ventureEff, initiativeEffect));
|
||||
initiativeEffect.addTrigger(ventureUTrigger);
|
||||
|
||||
final Trigger ventureTTrigger = TriggerHandler.parseTrigger(ventureTakeTrig, initiativeEffect, true);
|
||||
ventureTTrigger.setOverridingAbility(AbilityFactory.getAbility(ventureEff, initiativeEffect));
|
||||
initiativeEffect.addTrigger(ventureTTrigger);
|
||||
|
||||
initiativeEffect.updateStateForView();
|
||||
}
|
||||
|
||||
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
|
||||
game.getAction().moveTo(ZoneType.Command, initiativeEffect, null, null);
|
||||
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||
|
||||
//com.add(initiativeEffect);
|
||||
|
||||
this.updateZoneForView(com);
|
||||
}
|
||||
|
||||
public boolean hasInitiative() {
|
||||
return equals(game.getHasInitiative());
|
||||
}
|
||||
|
||||
public void removeInitiativeEffect() {
|
||||
final PlayerZone com = getZone(ZoneType.Command);
|
||||
if (initiativeEffect != null) {
|
||||
com.remove(initiativeEffect);
|
||||
this.updateZoneForView(com);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateKeywordCardAbilityText() {
|
||||
if (getKeywordCard() == null)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user