/*
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.LinkedList;
import java.util.List;
import server.TimerManager;
import server.maps.MapleMap;
import tools.MaplePacketCreator;
/**
*
* @author kevintjuh93
*/
// Make them better :)
public class MapleCoconut extends MapleEvent {
private MapleMap map = null;
private int MapleScore = 0;
private int StoryScore = 0;
private int countBombing = 80;
private int countFalling = 401;
private int countStopped = 20;
private List<MapleCoconuts> coconuts = new LinkedList<MapleCoconuts>();
public MapleCoconut(MapleMap map) {
super(1, 50);
this.map = map;
}
public void startEvent() {
map.startEvent();
for (int i = 0; i < 506; i++) {
coconuts.add(new MapleCoconuts(i));
}
map.broadcastMessage(MaplePacketCreator.hitCoconut(true, 0, 0));
setCoconutsHittable(true);
map.broadcastMessage(MaplePacketCreator.getClock(300));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (map.getId() == 109080000) {
if (getMapleScore() == getStoryScore()) {
bonusTime();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
}
}
}
}, 300000);
}
public void bonusTime() {
map.broadcastMessage(MaplePacketCreator.getClock(120));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
if (getMapleScore() == getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
warpOut();
} else if (getMapleScore() > getStoryScore()) {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 0) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
} else {
for (MapleCharacter chr : map.getCharacters()) {
if (chr.getTeam() == 1) {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory"));
} else {
chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose"));
chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed"));
}
}
warpOut();
}
}
}, 120000);
}
public void warpOut() {
setCoconutsHittable(false);
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
for (MapleCharacter chr : map.getCharacters()) {
if ((getMapleScore() > getStoryScore() && chr.getTeam() == 0) || (getStoryScore() > getMapleScore() && chr.getTeam() == 1)) {
chr.changeMap(109050000);
} else {
chr.changeMap(109050001);
}
}
map.setCoconut(null);
}
}, 12000);
}
public int getMapleScore() {
return MapleScore;
}
public int getStoryScore() {
return StoryScore;
}
public void addMapleScore() {
this.MapleScore += 1;
}
public void addStoryScore() {
this.StoryScore += 1;
}
public int getBombings() {
return countBombing;
}
public void bombCoconut() {
countBombing--;
}
public int getFalling() {
return countFalling;
}
public void fallCoconut() {
countFalling--;
}
public int getStopped() {
return countStopped;
}
public void stopCoconut() {
countStopped--;
}
public MapleCoconuts getCoconut(int id) {
return coconuts.get(id);
}
public List<MapleCoconuts> getAllCoconuts() {
return coconuts;
}
public void setCoconutsHittable(boolean hittable) {
for (MapleCoconuts nut : coconuts) {
nut.setHittable(hittable);
}
}
}