135 lines
3.0 KiB
Java
135 lines
3.0 KiB
Java
package magic.model;
|
|
|
|
import magic.model.target.MagicTarget;
|
|
|
|
public class MagicDamage {
|
|
|
|
public static final boolean Combat = true;
|
|
public static final boolean Any = false;
|
|
|
|
private final MagicSource source;
|
|
private MagicTarget target;
|
|
private int amount;
|
|
private int dealtAmount;
|
|
private final boolean combat;
|
|
private boolean unpreventable;
|
|
private boolean noRegeneration;
|
|
|
|
private MagicDamage(final MagicSource source,final MagicTarget target,final int amount,final boolean combat) {
|
|
this.source=source;
|
|
this.target=target;
|
|
this.amount=amount;
|
|
this.combat=combat;
|
|
}
|
|
|
|
public MagicDamage(final MagicSource source,final MagicTarget target,final int amount) {
|
|
this(source, target, amount, false);
|
|
}
|
|
|
|
public static final MagicDamage Combat(final MagicSource source,final MagicTarget target,final int amount) {
|
|
return new MagicDamage(source, target, amount, true);
|
|
}
|
|
|
|
public MagicSource getSource() {
|
|
return source;
|
|
}
|
|
|
|
public boolean isSource(final MagicSource other) {
|
|
return source == other;
|
|
}
|
|
|
|
public boolean isSourcePermanent() {
|
|
return source.isPermanent();
|
|
}
|
|
|
|
public void setTarget(final MagicTarget target) {
|
|
this.target=target;
|
|
}
|
|
|
|
public MagicTarget getTarget() {
|
|
return target;
|
|
}
|
|
|
|
public boolean isTarget(final MagicTarget other) {
|
|
return target == other;
|
|
}
|
|
|
|
public boolean isTargetPlayer() {
|
|
return target.isPlayer();
|
|
}
|
|
|
|
public boolean isTargetCreature() {
|
|
return target.isCreaturePermanent();
|
|
}
|
|
|
|
public MagicPlayer getTargetPlayer() {
|
|
return (MagicPlayer)target;
|
|
}
|
|
|
|
public MagicPermanent getTargetPermanent() {
|
|
return (MagicPermanent)target;
|
|
}
|
|
|
|
public MagicPermanent getSourcePermanent() {
|
|
return (MagicPermanent)source;
|
|
}
|
|
|
|
public void setAmount(final int amt) {
|
|
amount = amt;
|
|
}
|
|
|
|
public int replace() {
|
|
final int oldAmount = amount;
|
|
amount = 0;
|
|
return oldAmount;
|
|
}
|
|
|
|
public int prevent() {
|
|
return prevent(amount);
|
|
}
|
|
|
|
public int prevent(final int amt) {
|
|
final int oldAmount = amount;
|
|
if (!unpreventable) {
|
|
amount -= amt;
|
|
}
|
|
return oldAmount - amount;
|
|
}
|
|
|
|
public int getAmount() {
|
|
return amount;
|
|
}
|
|
|
|
public void setDealtAmount(final int dealtAmount) {
|
|
this.dealtAmount=dealtAmount;
|
|
}
|
|
|
|
public int getDealtAmount() {
|
|
return dealtAmount;
|
|
}
|
|
|
|
public boolean isCombat() {
|
|
return combat;
|
|
}
|
|
|
|
public void setUnpreventable() {
|
|
unpreventable=true;
|
|
}
|
|
|
|
public boolean isPreventable() {
|
|
return !unpreventable;
|
|
}
|
|
|
|
public boolean isUnpreventable() {
|
|
return unpreventable;
|
|
}
|
|
|
|
public void setNoRegeneration() {
|
|
noRegeneration=true;
|
|
}
|
|
|
|
public boolean hasNoRegeneration() {
|
|
return noRegeneration;
|
|
}
|
|
}
|