public void act(Character c, Skill action, String choice) { if (c == p1) { p1act = action; } if (c == p2) { p2act = action; } action.choice = choice; if (p1act == null) { p1.act(this); } else if (p2act == null) { p2.act(this); } else if (p1act != null && p2act != null) { clear(); if (p1.human() || p2.human()) { Global.gui().clearText(); } p1act = checkWorship(p1, p2, p1act); p2act = checkWorship(p2, p1, p2act); if (Global.isDebugOn(DebugFlags.DEBUG_SCENE)) { System.out.println(p1.name() + " uses " + p1act.getLabel(this)); System.out.println(p2.name() + " uses " + p2act.getLabel(this)); } if (p1.pet != null && p2.pet != null) { petbattle(p1.pet, p2.pet); } else if (p1.pet != null) { p1.pet.act(this, p2); } else if (p2.pet != null) { p2.pet.act(this, p1); } useSkills(); this.write("<br>"); p1.eot(this, p2, p2act); p2.eot(this, p1, p1act); checkStamina(p1); checkStamina(p2); getStance().decay(this); getStance().checkOngoing(this); phase = 0; if (!(p1.human() || p2.human())) { timer++; turn(); } updateMessage(); } }
public void turn() { if (p1.checkLoss() && p2.checkLoss()) { state = eval(); p1.evalChallenges(this, null); p2.evalChallenges(this, null); p2.draw(this, state); phase = 2; updateMessage(); winner = Optional.of(Global.noneCharacter()); if (!(p1.human() || p2.human())) { end(); } return; } if (p1.checkLoss()) { state = eval(); p1.evalChallenges(this, p2); p2.evalChallenges(this, p2); p2.victory(this, state); doVictory(p2, p1); winner = Optional.of(p2); phase = 2; updateMessage(); if (!(p1.human() || p2.human())) { end(); } return; } if (p2.checkLoss()) { state = eval(); p1.evalChallenges(this, p1); p2.evalChallenges(this, p1); p1.victory(this, state); doVictory(p1, p2); winner = Optional.of(p1); phase = 2; updateMessage(); if (!(p1.human() || p2.human())) { end(); } return; } if (!p1.human() && !p2.human() && timer > 15) { if (p1.getArousal().get() > p2.getArousal().get()) { state = eval(); if (Global.isDebugOn(DebugFlags.DEBUG_SCENE)) { System.out.println(p2.name() + " victory over " + p1.name()); } p2.victory(this, state); doVictory(p2, p1); phase = 2; updateMessage(); if (!(p1.human() || p2.human())) { end(); } return; } else if (p1.getArousal().get() < p2.getArousal().get()) { state = eval(); if (Global.isDebugOn(DebugFlags.DEBUG_SCENE)) { System.out.println(p1.name() + " victory over " + p2.name()); } p1.victory(this, state); doVictory(p1, p2); phase = 2; updateMessage(); if (!(p2.human() || p1.human())) { end(); } return; } else { state = eval(); if (Global.isDebugOn(DebugFlags.DEBUG_SCENE)) { System.out.println(p2.name() + " draw with " + p1.name()); } p2.draw(this, state); phase = 2; updateMessage(); if (!(p1.human() || p2.human())) { end(); } return; } } Character player; Character other; if (p1.human()) { player = p1; other = p2; } else { player = p2; other = p1; } phase = 1; p1.regen(this); p2.regen(this); message = other.describe(player.get(Attribute.Perception), this) + "<p>" + Global.capitalizeFirstLetter(getStance().describe()) + "<p>" + player.describe(other.get(Attribute.Perception), this) + "<p>"; if ((p1.human() || p2.human()) && !Global.checkFlag(Flag.noimage)) { Global.gui().clearImage(); Global.gui().displayImage(imagePath, images.get(imagePath)); } p1act = null; p2act = null; p1.act(this); if (Global.random(3) == 0 && (p1.human() || p2.human())) { NPC commenter = (NPC) getOther(Global.getPlayer()); Optional<String> comment = commenter.getComment(this); if (comment.isPresent()) { write( commenter, "<i>\"" + Global.format(comment.get(), commenter, Global.getPlayer()) + "\"</i>"); } } updateAndClearMessage(); }