package client;
import server.MapleInventoryManipulator;
import server.Randomizer;
import tools.packet.CField;
public class RockPaperScissors {
private int round = 0;
private boolean ableAnswer = true;
private boolean win = false;
public RockPaperScissors(MapleClient c, byte mode) {
c.getSession().write(CField.getRPSMode((byte) (9 + mode), -1, -1, -1));
if (mode == 0) {
c.getPlayer().gainMeso(-1000L, true, true);
}
}
public final boolean answer(MapleClient c, int answer) {
if ((this.ableAnswer) && (!this.win) && (answer >= 0) && (answer <= 2)) {
int response = Randomizer.nextInt(3);
if (response == answer) {
c.getSession().write(CField.getRPSMode((byte) 11, -1, (byte) response, (byte) this.round));
} else if (((answer == 0) && (response == 2)) || ((answer == 1) && (response == 0)) || ((answer == 2) && (response == 1))) {
c.getSession().write(CField.getRPSMode((byte) 11, -1, (byte) response, (byte) (this.round + 1)));
this.ableAnswer = false;
this.win = true;
} else {
c.getSession().write(CField.getRPSMode((byte) 11, -1, (byte) response, -1));
this.ableAnswer = false;
}
return true;
}
reward(c);
return false;
}
public final boolean timeOut(MapleClient c) {
if ((this.ableAnswer) && (!this.win)) {
this.ableAnswer = false;
c.getSession().write(CField.getRPSMode((byte) 10, -1, -1, -1));
return true;
}
reward(c);
return false;
}
public final boolean nextRound(MapleClient c) {
if (this.win) {
this.round += 1;
if (this.round < 10) {
this.win = false;
this.ableAnswer = true;
c.getSession().write(CField.getRPSMode((byte) 12, -1, -1, -1));
return true;
}
}
reward(c);
return false;
}
public final void reward(MapleClient c) {
if (this.win) {
MapleInventoryManipulator.addById(c, 4031332 + this.round, (short) 1, "", null, 0L, "Obtained from rock, paper, scissors");
} else if (this.round == 0) {
c.getPlayer().gainMeso(500L, true, true);
}
c.getPlayer().setRPS(null);
}
public final void dispose(MapleClient c) {
reward(c);
c.getSession().write(CField.getRPSMode((byte) 13, -1, -1, -1));
}
}