/*-------------------------------------------------------------------------*/ @Override public java.util.List<MazeEvent> springTrap() { Maze maze = Maze.getInstance(); java.util.List<MazeEvent> result = new ArrayList<MazeEvent>(); Point tile = maze.getTile(); int facing = maze.getFacing(); if (getTraps() != null && getTraps().size() > 0 && getCurrentTrap() != null) { result.addAll(getCurrentTrap().getPayload().execute(maze, tile, tile, facing)); } if (maze.getCurrentCombat() != null) { // something has started a combat // leave the chest basically unopened return result; } // check if trap has killed the party result.add(new CheckPartyStatusEvent()); if (Maze.getInstance().getParty() != null && Maze.getInstance().getParty().numAlive() > 0) { result.addAll(executeChestContents()); } return result; }
/*-------------------------------------------------------------------------*/ @Override public java.util.List<MazeEvent> executeChestContents() { Maze maze = Maze.getInstance(); java.util.List<MazeEvent> result = new ArrayList<MazeEvent>(); Point tile = maze.getTile(); int facing = maze.getFacing(); // chest opens result.add(new MazeScriptEvent("_OPEN_CHEST_")); // chest contents result.addAll(getChestContents().execute(maze, tile, tile, facing)); // clean up and back to movement result.add(new SetChestStateEvent(this, Chest.State.EMPTY)); result.add(new RemoveObjectEvent(getEngineObject())); result.add(new SetStateEvent(maze, Maze.State.MOVEMENT)); return result; }