forked from External/mage
[CLB] Implemented White Plume Adventurer
This commit is contained in:
parent
4777466b50
commit
86dad5e54f
13 changed files with 524 additions and 9 deletions
|
|
@ -26,6 +26,7 @@ import mage.constants.*;
|
|||
import mage.counters.CounterType;
|
||||
import mage.counters.Counters;
|
||||
import mage.designations.Designation;
|
||||
import mage.designations.Initiative;
|
||||
import mage.designations.Monarch;
|
||||
import mage.filter.Filter;
|
||||
import mage.filter.FilterCard;
|
||||
|
|
@ -36,6 +37,7 @@ import mage.filter.predicate.mageobject.NamePredicate;
|
|||
import mage.filter.predicate.permanent.ControllerIdPredicate;
|
||||
import mage.game.combat.Combat;
|
||||
import mage.game.command.*;
|
||||
import mage.game.command.dungeons.UndercityDungeon;
|
||||
import mage.game.events.*;
|
||||
import mage.game.events.TableEvent.EventType;
|
||||
import mage.game.mulligan.Mulligan;
|
||||
|
|
@ -536,21 +538,24 @@ public abstract class GameImpl implements Game {
|
|||
));
|
||||
}
|
||||
|
||||
private Dungeon getOrCreateDungeon(UUID playerId) {
|
||||
private Dungeon getOrCreateDungeon(UUID playerId, boolean undercity) {
|
||||
Dungeon dungeon = this.getPlayerDungeon(playerId);
|
||||
if (dungeon != null && dungeon.hasNextRoom()) {
|
||||
return dungeon;
|
||||
}
|
||||
removeDungeon(dungeon);
|
||||
return this.addDungeon(Dungeon.selectDungeon(playerId, this), playerId);
|
||||
return this.addDungeon(undercity ? new UndercityDungeon() : Dungeon.selectDungeon(playerId, this), playerId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ventureIntoDungeon(UUID playerId) {
|
||||
public void ventureIntoDungeon(UUID playerId, boolean undercity) {
|
||||
if (playerId == null) {
|
||||
return;
|
||||
}
|
||||
if (replaceEvent(GameEvent.getEvent(GameEvent.EventType.VENTURE, playerId, null, playerId))) {
|
||||
return;
|
||||
}
|
||||
this.getOrCreateDungeon(playerId).moveToNextRoom(playerId, this);
|
||||
this.getOrCreateDungeon(playerId, undercity).moveToNextRoom(playerId, this);
|
||||
fireEvent(GameEvent.getEvent(GameEvent.EventType.VENTURED, playerId, null, playerId));
|
||||
}
|
||||
|
||||
|
|
@ -3691,6 +3696,22 @@ public abstract class GameImpl implements Game {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getInitiativeId() {
|
||||
return getState().getInitiativeId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void takeInitiative(Ability source, UUID initiativeId) {
|
||||
if (getInitiativeId() == null) {
|
||||
getState().addDesignation(new Initiative(), this, initiativeId);
|
||||
} else if (!getInitiativeId().equals(initiativeId)) {
|
||||
getState().setInitiativeId(initiativeId);
|
||||
}
|
||||
informPlayers(getPlayer(initiativeId).getLogName() + " takes the initiative");
|
||||
fireEvent(new GameEvent(GameEvent.EventType.TOOK_INITIATIVE, initiativeId, source, initiativeId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int damagePlayerOrPlaneswalker(UUID playerOrWalker, int damage, UUID attackerId, Ability source, Game game, boolean combatDamage, boolean preventable) {
|
||||
return damagePlayerOrPlaneswalker(playerOrWalker, damage, attackerId, source, game, combatDamage, preventable, null);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue