package javastory.channel.maps; import java.awt.Point; import javastory.channel.ChannelCharacter; import javastory.channel.ChannelServer; import javastory.channel.life.LifeFactory; import javastory.server.TimerManager; import javastory.tools.Randomizer; import javastory.tools.packets.ChannelPackets; public class Event_DojoAgent { private final static int baseAgentMapId = 970030000; // 9500337 = mano private final static Point point1 = new Point(140, 0), point2 = new Point(-193, 0), point3 = new Point(355, 0); public static boolean warpStartAgent(final ChannelCharacter c, final boolean party) { final int stage = 1; final int mapid = baseAgentMapId + stage * 100; for (int i = mapid; i < mapid + 15; i++) { final GameMap map = ChannelServer.getMapFactory().getMap(i); if (map.getCharacterCount() == 0) { clearMap(map, false); c.changeMap(map, map.getPortal(0)); map.respawn(true); return true; } } return false; } public static boolean warpNextMap_Agent(final ChannelCharacter c, final boolean fromResting) { final int currentmap = c.getMapId(); final int thisStage = (currentmap - baseAgentMapId) / 100; GameMap map = c.getMap(); if (map.getSpawnedMonstersOnMap() > 0) { return false; } if (!fromResting) { clearMap(map, true); int cashGain; cashGain = (int) (Math.random() * 50); if (cashGain < 10) { cashGain = 10; c.modifyCSPoints(1, cashGain, true); } else { c.modifyCSPoints(1, cashGain, true); } } if (currentmap >= 970032700 && currentmap <= 970032800) { map = ChannelServer.getMapFactory().getMap(baseAgentMapId); c.changeMap(map, map.getPortal(0)); return true; } final int nextmapid = baseAgentMapId + (thisStage + 1) * 100; for (int i = nextmapid; i < nextmapid + 7; i++) { map = ChannelServer.getMapFactory().getMap(i); if (map.getCharacterCount() == 0) { clearMap(map, false); c.changeMap(map, map.getPortal(0)); map.respawn(true); return true; } } return false; } public static boolean warpStartDojo(final ChannelCharacter c, final boolean party) { int stage = 1; if (party || stage == -1 || stage > 38) { stage = 1; } final int mapid = 925020000 + stage * 100; for (int i = mapid; i < mapid + 15; i++) { final GameMap map = ChannelServer.getMapFactory().getMap(i); if (map.getCharacterCount() == 0) { clearMap(map, false); c.changeMap(map, map.getPortal(0)); spawnMonster(map, stage); return true; } } return false; } // Resting rooms : // 925020600 ~ 925020609 // 925021200 ~ 925021209 // 925021800 ~ 925021809 // 925022400 ~ 925022409 // 925023000 ~ 925023009 // 925023600 ~ 925023609 public static boolean warpNextMap(final ChannelCharacter c, final boolean fromResting) { final int currentmap = c.getMapId(); if (!fromResting) { clearMap(ChannelServer.getMapFactory().getMap(currentmap), true); int cashGain; cashGain = (int) (Math.random() * 50); if (cashGain < 10) { cashGain = 10; c.modifyCSPoints(1, cashGain, true); } else { c.modifyCSPoints(1, cashGain, true); } c.setDojoPoints(c.getDojoPoints() + 10); c.getClient().write(ChannelPackets.Mulung_Pts(10, c.getDojoPoints())); } if (currentmap >= 925023800 && currentmap <= 925023814) { final GameMap map = ChannelServer.getMapFactory().getMap(925020003); c.modifyCSPoints(1, 5000, true); c.changeMap(map, map.getPortal(1)); return true; } final int temp = (currentmap - 925000000) / 100; final int thisStage = (int) (temp - Math.floor(temp / 100.0f) * 100); final int nextmapid = 925020000 + (thisStage + 1) * 100; for (int i = nextmapid; i < nextmapid + 15; i++) { final GameMap map = ChannelServer.getMapFactory().getMap(i); if (map.getCharacterCount() == 0) { clearMap(map, false); c.changeMap(map, map.getPortal(0)); spawnMonster(map, thisStage + 1); return true; } } return false; } private static void clearMap(final GameMap map, final boolean check) { if (check) { if (map.getCharacterCount() != 0) { return; } } map.killAllMonsters(false); map.resetReactors(); } private static void spawnMonster(final GameMap map, final int stage) { final int mobid; switch (stage) { case 1: mobid = 9300184; // Mano break; case 2: mobid = 9300185; // Stumpy break; case 3: mobid = 9300186; // Dewu break; case 4: mobid = 9300187; // King Slime break; case 5: mobid = 9300188; // Giant Centipede break; case 7: mobid = 9300189; // Faust break; case 8: mobid = 9300190; // King Clang break; case 9: mobid = 9300191; // Mushmom break; case 10: mobid = 9300192; // Alishar break; case 11: mobid = 9300193; // Timer break; case 13: mobid = 9300194; // Dale break; case 14: mobid = 9300195; // Papa Pixie break; case 15: mobid = 9300196; // Zombie Mushmom break; case 16: mobid = 9300197; // Jeno break; case 17: mobid = 9300198; // Lord Pirate break; case 19: mobid = 9300199; // Old Fox break; case 20: mobid = 9300200; // Tae Roon break; case 21: mobid = 9300201; // Poison Golem break; case 22: mobid = 9300202; // Ghost Priest break; case 23: mobid = 9300203; // Jr. Balrog break; case 25: mobid = 9300204; // Eliza break; case 26: mobid = 9300205; // Frankenroid break; case 27: mobid = 9300206; // Chimera break; case 28: mobid = 9300207; // Snack Bar break; case 29: mobid = 9300208; // Snowman break; case 31: mobid = 9300209; // Blue Mushmom break; case 32: mobid = 9300210; // Crimson Balrog break; case 33: mobid = 9300211; // Manon break; case 34: mobid = 9300212; // Griffey break; case 35: mobid = 9300213; // Leviathan break; case 37: mobid = 9300214; // Papulatus break; case 38: mobid = 9300215; // Mu gong break; default: return; } if (mobid != 0) { final int rand = Randomizer.nextInt(3); TimerManager.getInstance().schedule(new Runnable() { @Override public void run() { map.spawnMonsterWithEffect(LifeFactory.getMonster(mobid), 15, rand == 0 ? point1 : rand == 1 ? point2 : point3); } }, 3000); } } }