mirror of
https://github.com/magefree/mage.git
synced 2026-01-25 12:49:39 -08:00
- Shining Shoal will now work with spells. Yes, more work on this needs to be done. If a chosen source deals damage to multiple targets, the controller should be able to choose how that damage is distributed.
This commit is contained in:
parent
97ccd22564
commit
9cf0ebb2ae
1 changed files with 11 additions and 7 deletions
|
|
@ -140,14 +140,15 @@ class ShiningShoalPreventDamageTargetEffect extends PreventionEffectImpl {
|
||||||
if (prevented > 0) {
|
if (prevented > 0) {
|
||||||
UUID redirectTo = source.getTargets().get(1).getFirstTarget();
|
UUID redirectTo = source.getTargets().get(1).getFirstTarget();
|
||||||
Permanent permanent = game.getPermanent(redirectTo);
|
Permanent permanent = game.getPermanent(redirectTo);
|
||||||
|
MageObject sourceObject = game.getObject(source.getFirstTarget());
|
||||||
if (permanent != null) {
|
if (permanent != null) {
|
||||||
game.informPlayers("Dealing " + prevented + " to " + permanent.getName() + " instead");
|
game.informPlayers(sourceObject.getIdName() + "deals " + prevented + " to " + permanent.getName() + " instead");
|
||||||
// keep the original source id as it is redirecting
|
// keep the original source id as it is redirecting
|
||||||
permanent.damage(prevented, event.getSourceId(), game, ((DamageEvent) event).isCombatDamage(), ((DamageEvent) event).isPreventable(), event.getAppliedEffects());
|
permanent.damage(prevented, event.getSourceId(), game, ((DamageEvent) event).isCombatDamage(), ((DamageEvent) event).isPreventable(), event.getAppliedEffects());
|
||||||
}
|
}
|
||||||
Player player = game.getPlayer(redirectTo);
|
Player player = game.getPlayer(redirectTo);
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
game.informPlayers("Dealing " + prevented + " to " + player.getLogName() + " instead");
|
game.informPlayers(sourceObject.getIdName() + "deals " + prevented + " to " + player.getLogName() + " instead");
|
||||||
// keep the original source id as it is redirecting
|
// keep the original source id as it is redirecting
|
||||||
player.damage(prevented, event.getSourceId(), game, ((DamageEvent) event).isCombatDamage(), ((DamageEvent) event).isPreventable(), event.getAppliedEffects());
|
player.damage(prevented, event.getSourceId(), game, ((DamageEvent) event).isCombatDamage(), ((DamageEvent) event).isPreventable(), event.getAppliedEffects());
|
||||||
}
|
}
|
||||||
|
|
@ -160,14 +161,17 @@ class ShiningShoalPreventDamageTargetEffect extends PreventionEffectImpl {
|
||||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||||
if (!this.used && super.applies(event, source, game)) {
|
if (!this.used && super.applies(event, source, game)) {
|
||||||
|
|
||||||
// check source
|
// get source of the damage event
|
||||||
MageObject object = game.getObject(event.getSourceId());
|
MageObject sourceObject = game.getObject(event.getSourceId());
|
||||||
if (object == null) {
|
// get the chosen damage source
|
||||||
|
MageObject chosenSourceObject = game.getObject(source.getFirstTarget());
|
||||||
|
// does the source of the damage exist?
|
||||||
|
if (sourceObject == null) {
|
||||||
game.informPlayers("Couldn't find source of damage");
|
game.informPlayers("Couldn't find source of damage");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// do the 2 objects match?
|
||||||
if (!object.getId().equals(source.getFirstTarget())) {
|
if (sourceObject.getId() != chosenSourceObject.getId()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue