mage.abilities.Ability.addWatcher()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(13.2k)|赞(0)|评价(0)|浏览(75)

本文整理了Java中mage.abilities.Ability.addWatcher()方法的一些代码示例,展示了Ability.addWatcher()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Ability.addWatcher()方法的具体详情如下:
包路径:mage.abilities.Ability
类名称:Ability
方法名:addWatcher

Ability.addWatcher介绍

暂无

代码示例

代码示例来源:origin: magefree/mage

protected void addAbility(Ability ability, Watcher watcher) {
  addAbility(ability);
  ability.addWatcher(watcher);
}

代码示例来源:origin: magefree/mage

public HeatStroke(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
  // At end of combat, destroy each creature that blocked or was blocked this turn.
  Ability ability = new EndOfCombatTriggeredAbility(new HeatStrokeEffect(), false);
  ability.addWatcher(new BlockedThisTurnWatcher());
  ability.addWatcher(new WasBlockedThisTurnWatcher());
  this.addAbility(ability);
}

代码示例来源:origin: magefree/mage

public UphillBattle(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
  // Creatures played by your opponents enter the battlefield tapped.
  Ability tapAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new UphillBattleTapEffect());
  tapAbility.addWatcher(new CreatureWasCastWatcher());
  tapAbility.addWatcher(new PlayCreatureLandWatcher());
  addAbility(tapAbility);
}

代码示例来源:origin: magefree/mage

public SeasonOfTheWitch(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}");
  // At the beginning of your upkeep, sacrifice Season of the Witch unless you pay 2 life.
  Cost cost = new PayLifeCost(2);
  cost.setText("2 life");
  this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(cost), TargetController.YOU, false));
  // At the beginning of the end step, destroy all untapped creatures that didn't attack this turn, except for creatures that couldn't attack.
  Ability ability = new BeginningOfEndStepTriggeredAbility(new SeasonOfTheWitchEffect(), TargetController.ANY, false);
  ability.addWatcher(new AttackedThisTurnWatcher());
  ability.addWatcher(new CouldAttackThisTurnWatcher());
  this.addAbility(ability);
}

代码示例来源:origin: magefree/mage

public HeavyFog(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
  // Cast Deep Wood only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Prevent all damage that would be dealt to you this turn by attacking creatures.
  this.getSpellAbility().addEffect(new HeavyFogEffect());
}

代码示例来源:origin: magefree/mage

public DeepWood(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
  // Cast Deep Wood only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Prevent all damage that would be dealt to you this turn by attacking creatures.
  this.getSpellAbility().addEffect(new DeepWoodEffect());
}

代码示例来源:origin: magefree/mage

public MadDog(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
  this.subtype.add(SubType.HOUND);
  this.power = new MageInt(2);
  this.toughness = new MageInt(2);
  // At the beginning of your end step, if Mad Dog didn't attack or come under your control this turn, sacrifice it.
  Ability ability = new ConditionalInterveningIfTriggeredAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.YOU, false), MadDogCondition.instance, "At the beginning of your end step, if {this} didn't attack or come under your control this turn, sacrifice it");
  ability.addWatcher(new AttackedThisTurnWatcher());
  ability.addWatcher(new PermanentsEnteredBattlefieldWatcher());
  this.addAbility(ability);
}

代码示例来源:origin: magefree/mage

public RallyTheTroops(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
  // Cast Rally the Troops only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Untap all creatures you control.
  this.getSpellAbility().addEffect(new UntapAllControllerEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
}

代码示例来源:origin: magefree/mage

public WarriorsStand(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
  // Cast Warrior's Stand only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Creatures you control get +2/+2 until end of turn.
  this.getSpellAbility().addEffect(new BoostControlledEffect(2, 2, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
}

代码示例来源:origin: magefree/mage

public TreetopDefense(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
  // Cast Treetop Defense only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Creatures you control gain reach until end of turn.
  this.getSpellAbility().addEffect(new GainAbilityControlledEffect(ReachAbility.getInstance(), Duration.EndOfTurn));
}

代码示例来源:origin: magefree/mage

public HarshJustice(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
  // Cast Harsh Justice only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // This turn, whenever an attacking creature deals combat damage to you, it deals that much damage to its controller.
  this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new HarshJusticeTriggeredAbility()));
}

代码示例来源:origin: magefree/mage

public ConfrontTheAssault(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{W}");
  // Cast this spell only if a creature is attacking you.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only if a creature is attacking you."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Create three 1/1 white Spirit creature tokens with flying.
  this.getSpellAbility().addEffect(new CreateTokenEffect(new SpiritWhiteToken("ANA"), 3));
}

代码示例来源:origin: magefree/mage

public ScorchingWinds(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
  // Cast Scorching Winds only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Scorching Winds deals 1 damage to each attacking creature.
  this.getSpellAbility().addEffect(new DamageAllEffect(1, new FilterAttackingCreature()));
}

代码示例来源:origin: magefree/mage

public TwinningGlass(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
  // {1}, {tap}: You may cast a nonland card from your hand without paying its mana cost if it has the same name as a spell that was cast this turn.
  Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TwinningGlassEffect(), new ManaCostsImpl("{1}"));
  ability.addWatcher(new SpellsCastWatcher());
  ability.addCost(new TapSourceCost());
  this.addAbility(ability);
}

代码示例来源:origin: magefree/mage

public EightfoldMaze(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
  // Cast Eightfold Maze only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Destroy target attacking creature.
  this.getSpellAbility().addEffect(new DestroyTargetEffect());
  this.getSpellAbility().addTarget(new TargetAttackingCreature());
}

代码示例来源:origin: magefree/mage

public JustFate(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{W}");
  // Cast Just Fate only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Destroy target attacking creature.
  this.getSpellAbility().addEffect(new DestroyTargetEffect());
  this.getSpellAbility().addTarget(new TargetAttackingCreature());
}

代码示例来源:origin: magefree/mage

public ChampionsVictory(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
  // Cast Champion's Victory only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Return target attacking creature to its owner's hand.
  this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
  this.getSpellAbility().addTarget(new TargetAttackingCreature());
}

代码示例来源:origin: magefree/mage

public Remove(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
  // Cast Remove only during the declare attackers step and only if you've been attacked this step.
  Ability ability = new CastOnlyDuringPhaseStepSourceAbility(
      TurnPhase.COMBAT, PhaseStep.DECLARE_ATTACKERS, AttackedThisStepCondition.instance,
      "Cast this spell only during the declare attackers step and only if you've been attacked this step."
  );
  ability.addWatcher(new PlayerAttackedStepWatcher());
  this.addAbility(ability);
  // Return target attacking creature to its owner's hand.
  this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
  this.getSpellAbility().addTarget(new TargetAttackingCreature());
}

代码示例来源:origin: magefree/mage

public SeaTroll(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
  
  this.subtype.add(SubType.TROLL);
  this.power = new MageInt(2);
  this.toughness = new MageInt(1);
  // {U}: Regenerate Sea Troll. Activate this ability only if Sea Troll blocked or was blocked by a blue creature this turn.
  Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{U}"), new SeaTrollCondition());
  ability.addWatcher(new SeaTrollWatcher());
  this.addAbility(ability);
}

代码示例来源:origin: magefree/mage

public HiddenStockpile(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}{B}");
  // <i>Revolt</i> &mdash; At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token.
  Ability ability = new ConditionalInterveningIfTriggeredAbility(new BeginningOfYourEndStepTriggeredAbility(new CreateTokenEffect(new ServoToken()), false), RevoltCondition.instance,
      "<i>Revolt</i> &mdash; At the beginning of your end step, if a permanent you controlled left the battlefield this turn, create a 1/1 colorless Servo artifact creature token");
  ability.setAbilityWord(AbilityWord.REVOLT);
  ability.addWatcher(new RevoltWatcher());
  this.addAbility(ability);
  // {1}, Sacrifice a creature: Scry 1.
  ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1));
  ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
  this.addAbility(ability);
}

相关文章