@Override protected void handleAttacking( final FfFightCommand command, final ResolvationData resolvationData, final List<ParagraphData> resolveList) { command.increaseBattleRound(); command.getMessages().setRoundMessage(command.getRoundNumber()); final FfFightRoundResolver roundResolver = getBeanFactory().getBean(Ship15FightRoundResolver.class); roundResolver.resolveRound(command, resolvationData, null); if (allEnemiesDead(command.getResolvedEnemies())) { command.setOngoing(false); for (final FightOutcome outcome : command.getWin()) { if (command.getRoundNumber() >= outcome.getMin() && command.getRoundNumber() <= outcome.getMax()) { resolveList.add(outcome.getParagraphData()); } } } else if (shipIsDestroyed(resolvationData)) { command.setOngoing(false); resolveList.add(command.getLose()); } else { command.setOngoing(true); command.setKeepOpen(true); } }
@Override public void executePostHandler( final FfFightCommand command, final ResolvationData resolvationData, final FightRoundResult[] results, final BasicEnemyPrePostFightDataContainer data) { final int[] randomNumber = getGenerator().getRandomNumber(1); final String dice = getRenderer().render(getGenerator().getDefaultDiceSide(), randomNumber); final FightCommandMessageList messages = command.getMessages(); messages.addKey("page.ff.label.random.after", dice, randomNumber[0]); final Ff20Character character = (Ff20Character) resolvationData.getCharacter(); if (randomNumber[0] < LUCK_LOWER_LIMIT) { character.changeStamina(STAMINA_EXTRA_DEDUCTION); messages.addKey("page.ff20.fight.daioni.stamina"); } else if (randomNumber[0] > LUCK_UPPER_LIMIT) { character.changeSkill(SKILL_EXTRA_DEDUCTION); messages.addKey("page.ff20.fight.daioni.skill"); } else { character.changeLuck(LUCK_EXTRA_DEDUCTION); messages.addKey("page.ff20.fight.daioni.luck"); } }