/*
OrpheusMS: MapleStory Private Server based on OdinMS
Copyright (C) 2012 Aaron Weiss <aaron@deviant-core.net>
Patrick Huy <patrick.huy@frz.cc>
Matthias Butz <matze@odinms.de>
Jan Christian Meyer <vimes@odinms.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package server.events.gm;
import client.MapleCharacter;
import java.util.concurrent.ScheduledFuture;
import server.TimerManager;
import tools.MaplePacketCreator;
/**
*
* @author kevintjuh93
*/
public class MapleFitness {
private MapleCharacter chr;
private long time = 0;
private long timeStarted = 0;
private ScheduledFuture<?> schedule = null;
private ScheduledFuture<?> schedulemsg = null;
public MapleFitness(final MapleCharacter chr) {
this.chr = chr;
this.schedule = TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (chr.getMapId() >= 109040000 && chr.getMapId() <= 109040004)
chr.changeMap(chr.getMap().getReturnMap());
}
}, 900000);
}
public void startFitness() {
chr.getMap().startEvent();
chr.getClient().announce(MaplePacketCreator.getClock(900));
this.timeStarted = System.currentTimeMillis();
this.time = 900000;
checkAndMessage();
chr.getMap().getPortal("join00").setPortalStatus(true);
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter."));
}
public boolean isTimerStarted() {
return time > 0 && timeStarted > 0;
}
public long getTime() {
return time;
}
public void resetTimes() {
this.time = 0;
this.timeStarted = 0;
schedule.cancel(false);
schedulemsg.cancel(false);
}
public long getTimeLeft() {
return time - (System.currentTimeMillis() - timeStarted);
}
public void checkAndMessage() {
this.schedulemsg = TimerManager.getInstance().register(new Runnable() {
@Override
public void run() {
if (chr.getFitness() == null) {
resetTimes();
}
if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) {
if (getTimeLeft() > 9000 && getTimeLeft() < 11000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~"));
} else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!"));
} else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!"));
} else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up."));
} else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags."));
} else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!"));
} else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing."));
} else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on."));
} else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages."));
} else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag."));
} else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) {
chr.getClient().announce(MaplePacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that."));
}
} else {
resetTimes();
}
}
}, 5000, 29500);
}
// 14:30 [Notice][MapleStory Physical Fitness Test] consists of 4 stages,
// and if you happen to die during the game, you'll be eliminated from the
// game, so please be careful of that.
// 14:00 [Notice]There may be a heavy lag due to many users at stage 1 all
// at once. It won't be difficult, so please make sure not to fall down
// because of heavy lag.
// 13:00 [Notice]Everyone that clears [The Maple Physical Fitness Test] on
// time will be given an item, regardless of the order of finish, so just
// relax, take your time, and clear the 4 stages.
// 11:40 [Notice]Please remember that if you die during the event, you'll be
// eliminated from the game. You still have plenty of time left, so either
// take a potion or recover HP first before moving on.
// 11:00 [Notice]The 2nd stage offers monkeys throwing bananas. Please make
// sure to avoid them by moving along at just the right timing.
// 10:00 [Notice]The most important thing you'll need to know to avoid the
// bananas thrown by the monkeys is *Timing* Timing is everything in this!
// 8:20 [Notice]Please remember that if you die during the event, you'll be
// eliminated from the game. If you're running out of HP, either take a
// potion or recover HP first before moving on.
// 6:00 [Notice]For those who have heavy lags, please make sure to move
// slowly to avoid falling all the way down because of lags.
// 5:00 [Notice]The 3rd stage offers traps where you may see them, but you
// won't be able to step on them. Please be careful of them as you make your
// way up.
// 4:00 [Notice]The 4th stage is the last one for [The Maple Physical
// Fitness Test]. Please don't give up at the last minute and try your best.
// The reward is waiting for you at the very top!
// 1:40 [Notice]Alright, you don't have much time remaining. Please hurry up
// a little!
// 0:10 [Notice]You have 10 sec left. Those of you unable to beat the game,
// we hope you beat it next time! Great job everyone!! See you later~
}