From b15a7e61d42a2ea42a08343a6e8135be2993b82c Mon Sep 17 00:00:00 2001 From: P0nk Date: Sun, 7 Nov 2021 14:26:34 +0100 Subject: [PATCH] Turn map id magic numbers into constants --- src/main/java/client/Character.java | 51 ++-- src/main/java/client/Client.java | 3 +- .../java/client/command/CommandsExecutor.java | 3 +- .../commands/gm0/JoinEventCommand.java | 3 +- .../command/commands/gm1/GotoCommand.java | 2 +- .../command/commands/gm2/JailCommand.java | 7 +- .../command/commands/gm3/SeedCommand.java | 3 +- .../creator/novice/BeginnerCreator.java | 3 +- .../client/creator/novice/LegendCreator.java | 3 +- .../creator/novice/NoblesseCreator.java | 3 +- .../client/creator/veteran/BowmanCreator.java | 3 +- .../creator/veteran/MagicianCreator.java | 3 +- .../client/creator/veteran/PirateCreator.java | 3 +- .../client/creator/veteran/ThiefCreator.java | 3 +- .../creator/veteran/WarriorCreator.java | 3 +- .../java/constants/game/GameConstants.java | 196 ++++++------ src/main/java/constants/id/MapId.java | 281 ++++++++++++++++++ src/main/java/net/server/channel/Channel.java | 12 +- .../handlers/AbstractDealDamageHandler.java | 3 +- .../channel/handlers/ChangeMapHandler.java | 13 +- .../handlers/CloseRangeDamageHandler.java | 3 +- .../channel/handlers/FamilyUseHandler.java | 5 +- .../handlers/GuildOperationHandler.java | 3 +- .../channel/handlers/MagicDamageHandler.java | 4 +- .../channel/handlers/RangedAttackHandler.java | 4 +- .../channel/handlers/TakeDamageHandler.java | 6 +- .../channel/handlers/UseCashItemHandler.java | 5 +- .../listener/MatchCheckerGuildCreation.java | 3 +- .../partysearch/PartySearchCoordinator.java | 5 +- .../scripting/AbstractPlayerInteraction.java | 31 +- .../java/scripting/map/MapScriptMethods.java | 49 ++- .../scripting/npc/NPCConversationManager.java | 6 +- src/main/java/server/StatEffect.java | 3 +- src/main/java/server/events/gm/Coconut.java | 7 +- src/main/java/server/events/gm/Fitness.java | 5 +- src/main/java/server/events/gm/Ola.java | 3 +- src/main/java/server/events/gm/Snowball.java | 7 +- .../java/server/expeditions/Expedition.java | 3 +- src/main/java/server/life/MobSkill.java | 10 +- .../java/server/life/PlayerNPCFactory.java | 5 +- src/main/java/server/maps/DoorObject.java | 5 +- src/main/java/server/maps/GenericPortal.java | 3 +- src/main/java/server/maps/MapFactory.java | 15 +- src/main/java/server/maps/MapleMap.java | 79 ++--- .../java/server/maps/MiniDungeonInfo.java | 26 +- src/main/java/server/maps/SavedLocation.java | 8 +- .../server/partyquest/AriantColiseum.java | 9 +- src/main/java/server/partyquest/Pyramid.java | 3 +- src/main/java/tools/PacketCreator.java | 25 +- src/main/java/tools/packets/Fishing.java | 4 +- .../java/tools/packets/WeddingPackets.java | 11 +- 51 files changed, 615 insertions(+), 341 deletions(-) create mode 100644 src/main/java/constants/id/MapId.java diff --git a/src/main/java/client/Character.java b/src/main/java/client/Character.java index 339aaac946..14437d463a 100644 --- a/src/main/java/client/Character.java +++ b/src/main/java/client/Character.java @@ -37,6 +37,7 @@ import config.YamlConfig; import constants.game.ExpTable; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.id.MobId; import constants.inventory.ItemConstants; import constants.skills.*; @@ -405,10 +406,10 @@ public class Character extends AbstractCharacterObject { //to fix the map 0 lol for (int i = 0; i < 5; i++) { - ret.trockmaps.add(999999999); + ret.trockmaps.add(MapId.NONE); } for (int i = 0; i < 10; i++) { - ret.viptrockmaps.add(999999999); + ret.viptrockmaps.add(MapId.NONE); } return ret; @@ -583,7 +584,8 @@ public class Character extends AbstractCharacterObject { String prop = eim.getProperty("groomId"); if (prop != null) { - return (Integer.parseInt(prop) == id || eim.getIntProperty("brideId") == id) && (mapid == 680000110 || mapid == 680000210); + return (Integer.parseInt(prop) == id || eim.getIntProperty("brideId") == id) && + (mapid == MapId.CHAPEL_WEDDING_ALTAR || mapid == MapId.CATHEDRAL_WEDDING_ALTAR); } } @@ -594,7 +596,7 @@ public class Character extends AbstractCharacterObject { int pts = 0; if (dojoPoints < 17000) { pts = 1 + ((mapid - 1) / 100 % 100) / 6; - if (!GameConstants.isDojoPartyArea(this.getMapId())) { + if (!MapId.isPartyDojo(this.getMapId())) { pts++; } this.dojoPoints += pts; @@ -1401,7 +1403,7 @@ public class Character extends AbstractCharacterObject { // will actually enter the map given as parameter, regardless of being an eventmap or whatnot canWarpCounter++; - eventChangedMap(999999999); + eventChangedMap(MapId.NONE); EventInstanceManager mapEim = target.getEventInstance(); if (mapEim != null) { @@ -1443,10 +1445,10 @@ public class Character extends AbstractCharacterObject { if (mbs.getKey() == BuffStat.MAP_PROTECTION) { byte value = (byte) mbs.getValue().value; - if (value == 1 && ((returnMapid == 211000000 && thisMapid != 200082300) || returnMapid == 193000000)) { + if (value == 1 && ((returnMapid == MapId.EL_NATH && thisMapid != MapId.ORBIS_TOWER_BOTTOM) || returnMapid == MapId.INTERNET_CAFE)) { return true; //protection from cold } else { - return value == 2 && (returnMapid == 230000000 || thisMapid == 200082300); //breathing underwater + return value == 2 && (returnMapid == MapId.AQUARIUM || thisMapid == MapId.ORBIS_TOWER_BOTTOM); //breathing underwater } } } @@ -1456,7 +1458,8 @@ public class Character extends AbstractCharacterObject { } for (Item it : this.getInventory(InventoryType.EQUIPPED).list()) { - if ((it.getFlag() & ItemConstants.COLD) == ItemConstants.COLD && ((returnMapid == 211000000 && thisMapid != 200082300) || returnMapid == 193000000)) { + if ((it.getFlag() & ItemConstants.COLD) == ItemConstants.COLD && + ((returnMapid == MapId.EL_NATH && thisMapid != MapId.ORBIS_TOWER_BOTTOM) || returnMapid == MapId.INTERNET_CAFE)) { return true; //protection from cold } } @@ -1951,7 +1954,7 @@ public class Character extends AbstractCharacterObject { if (ItemId.isNxCard(mapitem.getItemId()) || mapitem.getMeso() > 0 || ii.isConsumeOnPickup(mapitem.getItemId()) || (hasSpaceInventory = InventoryManipulator.checkSpace(client, mapitem.getItemId(), mItem.getQuantity(), mItem.getOwner()))) { int mapId = this.getMapId(); - if ((mapId > 209000000 && mapId < 209000016) || (mapId >= 990000500 && mapId <= 990000502)) {//happyville trees and guild PQ + if ((MapId.isSelfLootableOnly(mapId))) {//happyville trees and guild PQ if (!mapitem.isPlayerDrop() || mapitem.getDropper().getObjectId() == client.getPlayer().getObjectId()) { if (mapitem.getMeso() > 0) { if (!mpcs.isEmpty()) { @@ -6209,7 +6212,7 @@ public class Character extends AbstractCharacterObject { } public boolean attemptCatchFish(int baitLevel) { - return YamlConfig.config.server.USE_FISHING_SYSTEM && GameConstants.isFishingArea(mapid) && + return YamlConfig.config.server.USE_FISHING_SYSTEM && MapId.isFishingArea(mapid) && this.getPosition().getY() > 0 && ItemConstants.isFishingChair(chair.get()) && this.getWorldServer().registerFisherPlayer(this, baitLevel); @@ -7127,7 +7130,7 @@ public class Character extends AbstractCharacterObject { ret.map = mapManager.getMap(ret.mapid); if (ret.map == null) { - ret.map = mapManager.getMap(100000000); + ret.map = mapManager.getMap(MapId.HENESYS); } Portal portal = ret.map.getPortal(ret.initialSpawnPoint); if (portal == null) { @@ -7175,11 +7178,11 @@ public class Character extends AbstractCharacterObject { } } while (vip < 10) { - ret.viptrockmaps.add(999999999); + ret.viptrockmaps.add(MapId.NONE); vip++; } while (reg < 5) { - ret.trockmaps.add(999999999); + ret.trockmaps.add(MapId.NONE); reg++; } } @@ -7585,7 +7588,7 @@ public class Character extends AbstractCharacterObject { break; } } - if (possesed > 0 && !GameConstants.isDojo(getMapId())) { + if (possesed > 0 && !MapId.isDojo(getMapId())) { message("You have used a safety charm, so your EXP points have not been decreased."); InventoryManipulator.removeById(client, ItemConstants.getInventoryType(charmID[i]), charmID[i], 1, true, false); usedSafetyCharm = true; @@ -8410,7 +8413,7 @@ public class Character extends AbstractCharacterObject { if (map == null || (cashshop != null && cashshop.isOpened())) { ps.setInt(21, mapid); } else { - if (map.getForcedReturnId() != 999999999) { + if (map.getForcedReturnId() != MapId.NONE) { ps.setInt(21, map.getForcedReturnId()); } else { ps.setInt(21, getHp() < 1 ? map.getReturnMapId() : map.getId()); @@ -8418,7 +8421,7 @@ public class Character extends AbstractCharacterObject { } ps.setInt(22, meso.get()); ps.setInt(23, hpMpApUsed); - if (map == null || map.getId() == 610020000 || map.getId() == 610020001) { // reset to first spawnpoint on those maps + if (map == null || map.getId() == MapId.CRIMSONWOOD_VALLEY_1 || map.getId() == MapId.CRIMSONWOOD_VALLEY_2) { // reset to first spawnpoint on those maps ps.setInt(24, 0); } else { Portal closest = map.findClosestPlayerSpawnpoint(getPosition()); @@ -8613,7 +8616,7 @@ public class Character extends AbstractCharacterObject { // Vip teleport rocks try (PreparedStatement psVip = con.prepareStatement("INSERT INTO trocklocations(characterid, mapid, vip) VALUES (?, ?, 0)")) { for (int i = 0; i < getTrockSize(); i++) { - if (trockmaps.get(i) != 999999999) { + if (trockmaps.get(i) != MapId.NONE) { psVip.setInt(1, getId()); psVip.setInt(2, trockmaps.get(i)); psVip.addBatch(); @@ -8625,7 +8628,7 @@ public class Character extends AbstractCharacterObject { // Regular teleport rocks try (PreparedStatement psReg = con.prepareStatement("INSERT INTO trocklocations(characterid, mapid, vip) VALUES (?, ?, 1)")) { for (int i = 0; i < getVipTrockSize(); i++) { - if (viptrockmaps.get(i) != 999999999) { + if (viptrockmaps.get(i) != MapId.NONE) { psReg.setInt(1, getId()); psReg.setInt(2, viptrockmaps.get(i)); psReg.addBatch(); @@ -10246,7 +10249,7 @@ public class Character extends AbstractCharacterObject { } public int getTrockSize() { - int ret = trockmaps.indexOf(999999999); + int ret = trockmaps.indexOf(MapId.NONE); if (ret == -1) { ret = 5; } @@ -10257,12 +10260,12 @@ public class Character extends AbstractCharacterObject { public void deleteFromTrocks(int map) { trockmaps.remove(Integer.valueOf(map)); while (trockmaps.size() < 10) { - trockmaps.add(999999999); + trockmaps.add(MapId.NONE); } } public void addTrockMap() { - int index = trockmaps.indexOf(999999999); + int index = trockmaps.indexOf(MapId.NONE); if (index != -1) { trockmaps.set(index, getMapId()); } @@ -10274,7 +10277,7 @@ public class Character extends AbstractCharacterObject { } public int getVipTrockSize() { - int ret = viptrockmaps.indexOf(999999999); + int ret = viptrockmaps.indexOf(MapId.NONE); if (ret == -1) { ret = 10; @@ -10286,12 +10289,12 @@ public class Character extends AbstractCharacterObject { public void deleteFromVipTrocks(int map) { viptrockmaps.remove(Integer.valueOf(map)); while (viptrockmaps.size() < 10) { - viptrockmaps.add(999999999); + viptrockmaps.add(MapId.NONE); } } public void addVipTrockMap() { - int index = viptrockmaps.indexOf(999999999); + int index = viptrockmaps.indexOf(MapId.NONE); if (index != -1) { viptrockmaps.set(index, getMapId()); } diff --git a/src/main/java/client/Client.java b/src/main/java/client/Client.java index 28ff8bd64e..00471ca0a6 100644 --- a/src/main/java/client/Client.java +++ b/src/main/java/client/Client.java @@ -24,6 +24,7 @@ package client; import client.inventory.InventoryType; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.timeout.IdleStateEvent; @@ -930,7 +931,7 @@ public class Client extends ChannelInboundHandlerAdapter { if (player.getMap() != null) { int mapId = player.getMapId(); player.getMap().removePlayer(player); - if (GameConstants.isDojo(mapId)) { + if (MapId.isDojo(mapId)) { this.getChannelServer().freeDojoSectionIfEmpty(mapId); } } diff --git a/src/main/java/client/command/CommandsExecutor.java b/src/main/java/client/command/CommandsExecutor.java index b34f0c6c72..4ec2d4beed 100644 --- a/src/main/java/client/command/CommandsExecutor.java +++ b/src/main/java/client/command/CommandsExecutor.java @@ -31,6 +31,7 @@ import client.command.commands.gm3.*; import client.command.commands.gm4.*; import client.command.commands.gm5.*; import client.command.commands.gm6.*; +import constants.id.MapId; import tools.FilePrinter; import tools.Pair; @@ -87,7 +88,7 @@ public class CommandsExecutor { } private void handleInternal(Client client, String message) { - if (client.getPlayer().getMapId() == 300000012) { + if (client.getPlayer().getMapId() == MapId.JAIL) { client.getPlayer().yellowMessage("You do not have permission to use commands while in jail."); return; } diff --git a/src/main/java/client/command/commands/gm0/JoinEventCommand.java b/src/main/java/client/command/commands/gm0/JoinEventCommand.java index 81ce7a2071..5459d70919 100644 --- a/src/main/java/client/command/commands/gm0/JoinEventCommand.java +++ b/src/main/java/client/command/commands/gm0/JoinEventCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm0; import client.Character; import client.Client; import client.command.Command; +import constants.id.MapId; import server.events.gm.Event; import server.maps.FieldLimit; @@ -44,7 +45,7 @@ public class JoinEventCommand extends Command { if (event.getLimit() > 0) { player.saveLocation("EVENT"); - if (event.getMapId() == 109080000 || event.getMapId() == 109060001) { + if (event.getMapId() == MapId.EVENT_COCONUT_HARVEST || event.getMapId() == MapId.EVENT_SNOWBALL_ENTRANCE) { player.setTeam(event.getLimit() % 2); } diff --git a/src/main/java/client/command/commands/gm1/GotoCommand.java b/src/main/java/client/command/commands/gm1/GotoCommand.java index b074a06a20..c6e32e2e3d 100644 --- a/src/main/java/client/command/commands/gm1/GotoCommand.java +++ b/src/main/java/client/command/commands/gm1/GotoCommand.java @@ -97,7 +97,7 @@ public class GotoCommand extends Command { } } - HashMap gotomaps; + Map gotomaps; if (player.isGM()) { gotomaps = new HashMap<>(GameConstants.GOTO_AREAS); // distinct map registry for GM/users suggested thanks to Vcoc gotomaps.putAll(GameConstants.GOTO_TOWNS); // thanks Halcyon (UltimateMors) for pointing out duplicates on listed entries functionality diff --git a/src/main/java/client/command/commands/gm2/JailCommand.java b/src/main/java/client/command/commands/gm2/JailCommand.java index 2941b5a203..671199d1e3 100644 --- a/src/main/java/client/command/commands/gm2/JailCommand.java +++ b/src/main/java/client/command/commands/gm2/JailCommand.java @@ -26,6 +26,7 @@ package client.command.commands.gm2; import client.Character; import client.Client; import client.command.Command; +import constants.id.MapId; import server.maps.MapleMap; import server.maps.Portal; @@ -57,10 +58,8 @@ public class JailCommand extends Command { if (victim != null) { victim.addJailExpirationTime(MINUTES.toMillis(minutesJailed)); - int mapid = 300000012; - - if (victim.getMapId() != mapid) { // those gone to jail won't be changing map anyway - MapleMap target = c.getChannelServer().getMapFactory().getMap(mapid); + if (victim.getMapId() != MapId.JAIL) { // those gone to jail won't be changing map anyway + MapleMap target = c.getChannelServer().getMapFactory().getMap(MapId.JAIL); Portal targetPortal = target.getPortal(0); victim.saveLocationOnWarp(); victim.changeMap(target, targetPortal); diff --git a/src/main/java/client/command/commands/gm3/SeedCommand.java b/src/main/java/client/command/commands/gm3/SeedCommand.java index 3cbbfac219..19e3bb8cbd 100644 --- a/src/main/java/client/command/commands/gm3/SeedCommand.java +++ b/src/main/java/client/command/commands/gm3/SeedCommand.java @@ -28,6 +28,7 @@ import client.Client; import client.command.Command; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import java.awt.*; @@ -39,7 +40,7 @@ public class SeedCommand extends Command { @Override public void execute(Client c, String[] params) { Character player = c.getPlayer(); - if (player.getMapId() != 910010000) { + if (player.getMapId() != MapId.HENESYS_PQ) { player.yellowMessage("This command can only be used in HPQ."); return; } diff --git a/src/main/java/client/creator/novice/BeginnerCreator.java b/src/main/java/client/creator/novice/BeginnerCreator.java index 258297c602..5271025bbf 100644 --- a/src/main/java/client/creator/novice/BeginnerCreator.java +++ b/src/main/java/client/creator/novice/BeginnerCreator.java @@ -25,6 +25,7 @@ import client.creator.CharacterFactory; import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import constants.id.ItemId; +import constants.id.MapId; /** * @author RonanLana @@ -42,7 +43,7 @@ public class BeginnerCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int top, int bottom, int shoes, int weapon, int gender) { - int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.BEGINNER, 1, 10000, top, bottom, shoes, weapon)); + int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.BEGINNER, 1, MapId.MUSHROOM_TOWN, top, bottom, shoes, weapon)); return status; } } diff --git a/src/main/java/client/creator/novice/LegendCreator.java b/src/main/java/client/creator/novice/LegendCreator.java index 8a5c1890f0..75c5226c5a 100644 --- a/src/main/java/client/creator/novice/LegendCreator.java +++ b/src/main/java/client/creator/novice/LegendCreator.java @@ -25,6 +25,7 @@ import client.creator.CharacterFactory; import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import constants.id.ItemId; +import constants.id.MapId; /** * @author RonanLana @@ -42,7 +43,7 @@ public class LegendCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int top, int bottom, int shoes, int weapon, int gender) { - int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.LEGEND, 1, 914000000, top, bottom, shoes, weapon)); + int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.LEGEND, 1, MapId.ARAN_TUTORIAL_START, top, bottom, shoes, weapon)); return status; } } diff --git a/src/main/java/client/creator/novice/NoblesseCreator.java b/src/main/java/client/creator/novice/NoblesseCreator.java index 2e3a24aa43..2c51e7c898 100644 --- a/src/main/java/client/creator/novice/NoblesseCreator.java +++ b/src/main/java/client/creator/novice/NoblesseCreator.java @@ -25,6 +25,7 @@ import client.creator.CharacterFactory; import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import constants.id.ItemId; +import constants.id.MapId; /** * @author RonanLana @@ -42,7 +43,7 @@ public class NoblesseCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int top, int bottom, int shoes, int weapon, int gender) { - int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.NOBLESSE, 1, 130030000, top, bottom, shoes, weapon)); + int status = createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.NOBLESSE, 1, MapId.STARTING_MAP_NOBLESSE, top, bottom, shoes, weapon)); return status; } } diff --git a/src/main/java/client/creator/veteran/BowmanCreator.java b/src/main/java/client/creator/veteran/BowmanCreator.java index b2d9671621..1490c4330d 100644 --- a/src/main/java/client/creator/veteran/BowmanCreator.java +++ b/src/main/java/client/creator/veteran/BowmanCreator.java @@ -26,6 +26,7 @@ import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import server.ItemInformationProvider; /** @@ -71,6 +72,6 @@ public class BowmanCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int gender, int improveSp) { - return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.BOWMAN, 30, 100000000, equips[gender], equips[2 + gender], equips[4], weapons[0])); + return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.BOWMAN, 30, MapId.HENESYS, equips[gender], equips[2 + gender], equips[4], weapons[0])); } } diff --git a/src/main/java/client/creator/veteran/MagicianCreator.java b/src/main/java/client/creator/veteran/MagicianCreator.java index cdffcb5979..7429b7bee0 100644 --- a/src/main/java/client/creator/veteran/MagicianCreator.java +++ b/src/main/java/client/creator/veteran/MagicianCreator.java @@ -28,6 +28,7 @@ import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import constants.skills.Magician; import server.ItemInformationProvider; @@ -93,6 +94,6 @@ public class MagicianCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int gender, int improveSp) { - return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.MAGICIAN, 30, 101000000, equips[gender], equips[2 + gender], equips[4], weapons[0], gender, improveSp)); + return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.MAGICIAN, 30, MapId.ELLINIA, equips[gender], equips[2 + gender], equips[4], weapons[0], gender, improveSp)); } } diff --git a/src/main/java/client/creator/veteran/PirateCreator.java b/src/main/java/client/creator/veteran/PirateCreator.java index e6a3d6e986..ba6d6d23fc 100644 --- a/src/main/java/client/creator/veteran/PirateCreator.java +++ b/src/main/java/client/creator/veteran/PirateCreator.java @@ -26,6 +26,7 @@ import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import server.ItemInformationProvider; /** @@ -74,6 +75,6 @@ public class PirateCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int gender, int improveSp) { - return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.PIRATE, 30, 120000000, equips[gender], equips[2 + gender], equips[4], weapons[0])); + return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.PIRATE, 30, MapId.NAUTILUS_HARBOR, equips[gender], equips[2 + gender], equips[4], weapons[0])); } } diff --git a/src/main/java/client/creator/veteran/ThiefCreator.java b/src/main/java/client/creator/veteran/ThiefCreator.java index a210d845fc..980f6aeb16 100644 --- a/src/main/java/client/creator/veteran/ThiefCreator.java +++ b/src/main/java/client/creator/veteran/ThiefCreator.java @@ -26,6 +26,7 @@ import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import server.ItemInformationProvider; /** @@ -73,6 +74,6 @@ public class ThiefCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int gender, int improveSp) { - return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.THIEF, 30, 103000000, equips[gender], equips[2 + gender], equips[4], weapons[0])); + return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.THIEF, 30, MapId.KERNING_CITY, equips[gender], equips[2 + gender], equips[4], weapons[0])); } } diff --git a/src/main/java/client/creator/veteran/WarriorCreator.java b/src/main/java/client/creator/veteran/WarriorCreator.java index 4896d1438c..ed4c99f23b 100644 --- a/src/main/java/client/creator/veteran/WarriorCreator.java +++ b/src/main/java/client/creator/veteran/WarriorCreator.java @@ -28,6 +28,7 @@ import client.creator.CharacterFactoryRecipe; import client.inventory.InventoryType; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import constants.skills.Warrior; import server.ItemInformationProvider; @@ -93,6 +94,6 @@ public class WarriorCreator extends CharacterFactory { } public static int createCharacter(Client c, String name, int face, int hair, int skin, int gender, int improveSp) { - return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.WARRIOR, 30, 102000000, equips[gender], equips[2 + gender], equips[4], weapons[0], gender, improveSp)); + return createNewCharacter(c, name, face, hair, skin, gender, createRecipe(Job.WARRIOR, 30, MapId.PERION, equips[gender], equips[2 + gender], equips[4], weapons[0], gender, improveSp)); } } diff --git a/src/main/java/constants/game/GameConstants.java b/src/main/java/constants/game/GameConstants.java index 10d79c2c7d..8f3ba9b911 100644 --- a/src/main/java/constants/game/GameConstants.java +++ b/src/main/java/constants/game/GameConstants.java @@ -3,6 +3,7 @@ package constants.game; import client.Disease; import client.Job; import config.YamlConfig; +import constants.id.MapId; import constants.skills.Aran; import provider.*; import provider.wz.WZFiles; @@ -52,69 +53,69 @@ public class GameConstants { } // "goto" command for players - public static final HashMap GOTO_TOWNS = new HashMap() {{ - put("southperry", 60000); - put("amherst", 1000000); - put("henesys", 100000000); - put("ellinia", 101000000); - put("perion", 102000000); - put("kerning", 103000000); - put("lith", 104000000); - put("sleepywood", 105040300); - put("florina", 110000000); - put("nautilus", 120000000); - put("ereve", 130000000); - put("rien", 140000000); - put("orbis", 200000000); - put("happy", 209000000); - put("elnath", 211000000); - put("ludi", 220000000); - put("aqua", 230000000); - put("leafre", 240000000); - put("mulung", 250000000); - put("herb", 251000000); - put("omega", 221000000); - put("korean", 222000000); - put("ellin", 300000000); - put("nlc", 600000000); - put("showa", 801000000); - put("shrine", 800000000); - put("ariant", 260000000); - put("magatia", 261000000); - put("singapore", 540000000); - put("quay", 541000000); - put("kampung", 551000000); - put("amoria", 680000000); - put("temple", 270000100); - put("square", 103040000); - put("neo", 240070000); - put("mushking", 106020000); + public static final Map GOTO_TOWNS = new HashMap<>() {{ + put("southperry", MapId.SOUTHPERRY); + put("amherst", MapId.AMHERST); + put("henesys", MapId.HENESYS); + put("ellinia", MapId.ELLINIA); + put("perion", MapId.PERION); + put("kerning", MapId.KERNING_CITY); + put("lith", MapId.LITH_HARBOUR); + put("sleepywood", MapId.SLEEPYWOOD); + put("florina", MapId.FLORINA_BEACH); + put("nautilus", MapId.NAUTILUS_HARBOR); + put("ereve", MapId.EREVE); + put("rien", MapId.RIEN); + put("orbis", MapId.ORBIS); + put("happy", MapId.HAPPYVILLE); + put("elnath", MapId.EL_NATH); + put("ludi", MapId.LUDIBRIUM); + put("aqua", MapId.AQUARIUM); + put("leafre", MapId.LEAFRE); + put("mulung", MapId.MU_LUNG); + put("herb", MapId.HERB_TOWN); + put("omega", MapId.OMEGA_SECTOR); + put("kft", MapId.KOREAN_FOLK_TOWN); + put("ellin", MapId.ELLIN_FOREST); + put("nlc", MapId.NEW_LEAF_CITY); + put("showa", MapId.SHOWA_TOWN); + put("shrine", MapId.MUSHROOM_SHRINE); + put("ariant", MapId.ARIANT); + put("magatia", MapId.MAGATIA); + put("singapore", MapId.SINGAPORE); + put("quay", MapId.BOAT_QUAY_TOWN); + put("kampung", MapId.KAMPUNG_VILLAGE); + put("amoria", MapId.AMORIA); + put("temple", MapId.TEMPLE_OF_TIME); + put("square", MapId.KERNING_SQUARE); + put("neo", MapId.NEO_CITY); + put("mushking", MapId.MUSHROOM_KINGDOM); }}; // "goto" command for only-GMs - public static final HashMap GOTO_AREAS = new HashMap() {{ - put("gmmap", 180000000); - put("excavation", 990000000); - put("mushmom", 100000005); - put("griffey", 240020101); - put("manon", 240020401); - put("horseman", 682000001); - put("balrog", 105090900); - put("zakum", 211042300); - put("papu", 220080001); - put("guild", 200000301); - put("skelegon", 240040511); - put("hpq", 100000200); - put("pianus", 230040420); - put("horntail", 240050400); - put("pinkbean", 270050000); - put("keep", 610020006); - put("dojo", 925020001); - put("bosspq", 970030000); - put("fm", 910000000); + public static final Map GOTO_AREAS = new HashMap<>() {{ + put("gmmap", MapId.GM_MAP); + put("excavation", MapId.EXCAVATION_SITE); + put("mushmom", MapId.SOMEONE_ELSES_HOUSE); + put("griffey", MapId.GRIFFEY_FOREST); + put("manon", MapId.MANONS_FOREST); + put("horseman", MapId.HOLLOWED_GROUND); + put("balrog", MapId.CURSED_SANCTUARY); + put("zakum", MapId.DOOR_TO_ZAKUM); + put("papu", MapId.ORIGIN_OF_CLOCKTOWER); + put("guild", MapId.GUILD_HQ); + put("skelegon", MapId.DRAGON_NEST_LEFT_BEHIND); + put("hpq", MapId.HENESYS_PARK); + put("pianus", MapId.CAVE_OF_PIANUS); + put("horntail", MapId.ENTRANCE_TO_HORNTAILS_CAVE); + put("pinkbean", MapId.FORGOTTEN_TWILIGHT); + put("keep", MapId.CRIMSONWOOD_KEEP); + put("dojo", MapId.MU_LUNG_DOJO_HALL); + put("bosspq", MapId.EXCLUSIVE_TRAINING_CENTER); + put("fm", MapId.FM_ENTRANCE); }}; - public static final List GAME_SONGS = new ArrayList(170) {{ + public static final List GAME_SONGS = new ArrayList<>(170) {{ add("Jukebox/Congratulation"); add("Bgm00/SleepyWood"); add("Bgm00/FloralLife"); @@ -332,16 +333,16 @@ public class GameConstants { public static boolean isHallOfFameMap(int mapid) { switch (mapid) { - case 102000004: // warrior - case 101000004: // magician - case 100000204: // bowman - case 103000008: // thief - case 120000105: // pirate - case 130000100: // cygnus - case 130000101: // other cygnus - case 130000110: // cygnus 2nd floor - case 130000120: // cygnus 3rd floor (beginners) - case 140010110: // aran + case MapId.HALL_OF_WARRIORS: // warrior + case MapId.HALL_OF_MAGICIANS: // magician + case MapId.HALL_OF_BOWMEN: // bowman + case MapId.HALL_OF_THIEVES: // thief + case MapId.NAUTILUS_TRAINING_ROOM: // pirate + case MapId.KNIGHTS_CHAMBER: // cygnus + case MapId.KNIGHTS_CHAMBER_LARGE: // other cygnus + case MapId.KNIGHTS_CHAMBER_2: // cygnus 2nd floor + case MapId.KNIGHTS_CHAMBER_3: // cygnus 3rd floor (beginners) + case MapId.PALACE_OF_THE_MASTER: // aran return true; default: @@ -351,11 +352,11 @@ public class GameConstants { public static boolean isPodiumHallOfFameMap(int mapid) { switch (mapid) { - case 102000004: // warrior - case 101000004: // magician - case 100000204: // bowman - case 103000008: // thief - case 120000105: // pirate + case MapId.HALL_OF_WARRIORS: + case MapId.HALL_OF_MAGICIANS: // magician + case MapId.HALL_OF_BOWMEN: // bowman + case MapId.HALL_OF_THIEVES: // thief + case MapId.NAUTILUS_TRAINING_ROOM: // pirate return true; default: @@ -428,22 +429,22 @@ public class GameConstants { int jobid = job.getId(); if (isCygnus(jobid)) { - return 130000100; + return MapId.KNIGHTS_CHAMBER; } else if (isAran(jobid)) { - return 140010110; + return MapId.PALACE_OF_THE_MASTER; } else { if (job.isA(Job.WARRIOR)) { - return 102000004; + return MapId.HALL_OF_WARRIORS; } else if (job.isA(Job.MAGICIAN)) { - return 101000004; + return MapId.HALL_OF_MAGICIANS; } else if (job.isA(Job.BOWMAN)) { - return 100000204; + return MapId.HALL_OF_BOWMEN; } else if (job.isA(Job.THIEF)) { - return 103000008; + return MapId.HALL_OF_THIEVES; } else if (job.isA(Job.PIRATE)) { - return 120000105; + return MapId.NAUTILUS_TRAINING_ROOM; } else { - return 130000110; // beginner explorers are allotted with the Cygnus, available map lul + return MapId.KNIGHTS_CHAMBER_2; // beginner explorers are allotted with the Cygnus, available map lul } } } @@ -556,7 +557,7 @@ public class GameConstants { } public static boolean isFreeMarketRoom(int mapid) { - return mapid / 1000000 == 910 && mapid > 910000000; // FM rooms subset, thanks to shavitush (shavit) + return mapid / 1000000 == 910 && mapid > MapId.FM_ENTRANCE; // FM rooms subset, thanks to shavitush (shavit) } public static boolean isMerchantLocked(MapleMap map) { @@ -564,32 +565,11 @@ public class GameConstants { return true; } - switch (map.getId()) { - case 910000000: - return true; - } - - return false; - } - - public static boolean isBossRush(int mapid) { - return mapid >= 970030100 && mapid <= 970042711; - } - - public static boolean isDojo(int mapid) { - return mapid >= 925020000 && mapid < 925040000; - } - - public static boolean isDojoPartyArea(int mapid) { - return mapid >= 925030100 && mapid < 925040000; + return map.getId() == MapId.FM_ENTRANCE; } public static boolean isDojoBossArea(int mapid) { - return isDojo(mapid) && (((mapid / 100) % 100) % 6) > 0; - } - - public static boolean isPyramid(int mapid) { - return mapid >= 926010010 & mapid <= 930010000; + return MapId.isDojo(mapid) && (((mapid / 100) % 100) % 6) > 0; } public static boolean isAriantColiseumLobby(int mapid) { @@ -603,11 +583,7 @@ public class GameConstants { } public static boolean isPqSkillMap(int mapid) { - return isDojo(mapid) || isPyramid(mapid); - } - - public static boolean isFishingArea(int mapid) { - return mapid == 120010000 || mapid == 251000100 || mapid == 541010110; + return MapId.isDojo(mapid) || MapId.isNettsPyramid(mapid); } public static boolean isFinisherSkill(int skillId) { diff --git a/src/main/java/constants/id/MapId.java b/src/main/java/constants/id/MapId.java new file mode 100644 index 0000000000..2148312993 --- /dev/null +++ b/src/main/java/constants/id/MapId.java @@ -0,0 +1,281 @@ +package constants.id; + +public class MapId { + // Special + public static final int NONE = 999999999; + public static final int GM_MAP = 180000000; + public static final int JAIL = 300000012; // "Cellar: Camp Conference Room" + public static final int DEVELOPERS_HQ = 777777777; + + // Misc + public static final int ORBIS_TOWER_BOTTOM = 200082300; + public static final int INTERNET_CAFE = 193000000; + public static final int CRIMSONWOOD_VALLEY_1 = 610020000; + public static final int CRIMSONWOOD_VALLEY_2 = 610020001; + public static final int HENESYS_PQ = 910010000; + public static final int ORIGIN_OF_CLOCKTOWER = 220080001; + public static final int CAVE_OF_PIANUS = 230040420; + public static final int GUILD_HQ = 200000301; + public static final int FM_ENTRANCE = 910000000; + + // Beginner + public static final int MUSHROOM_TOWN = 10000; + + // Town + public static final int SOUTHPERRY = 60000; + public static final int AMHERST = 1000000; + public static final int HENESYS = 100000000; + public static final int ELLINIA = 101000000; + public static final int PERION = 102000000; + public static final int KERNING_CITY = 103000000; + public static final int LITH_HARBOUR = 104000000; + public static final int SLEEPYWOOD = 105040300; + public static final int MUSHROOM_KINGDOM = 106020000; + public static final int FLORINA_BEACH = 110000000; + public static final int EREVE = 130000000; + public static final int KERNING_SQUARE = 103040000; + public static final int RIEN = 140000000; + public static final int ORBIS = 200000000; + public static final int EL_NATH = 211000000; + public static final int LUDIBRIUM = 220000000; + public static final int AQUARIUM = 230000000; + public static final int LEAFRE = 240000000; + public static final int NEO_CITY = 240070000; + public static final int MU_LUNG = 250000000; + public static final int HERB_TOWN = 251000000; + public static final int OMEGA_SECTOR = 221000000; + public static final int KOREAN_FOLK_TOWN = 222000000; + public static final int ARIANT = 260000000; + public static final int MAGATIA = 261000000; + public static final int TEMPLE_OF_TIME = 270000100; + public static final int ELLIN_FOREST = 300000000; + public static final int SINGAPORE = 540000000; + public static final int BOAT_QUAY_TOWN = 541000000; + public static final int KAMPUNG_VILLAGE = 551000000; + public static final int NEW_LEAF_CITY = 600000000; + public static final int MUSHROOM_SHRINE = 800000000; + public static final int SHOWA_TOWN = 801000000; + public static final int NAUTILUS_HARBOR = 120000000; + public static final int HAPPYVILLE = 209000000; + + public static final int SHOWA_SPA_M = 809000101; + public static final int SHOWA_SPA_F = 809000201; + + private static final int MAPLE_ISLAND_MIN = 0; + private static final int MAPLE_ISLAND_MAX = 2000001; + + public static boolean isMapleIsland(int mapId) { + return mapId >= MAPLE_ISLAND_MIN && mapId <= MAPLE_ISLAND_MAX; + } + + // Travel + // There are 10 of each of these travel maps in the files + public static final int FROM_LITH_TO_RIEN = 200090060; + public static final int FROM_RIEN_TO_LITH = 200090070; + public static final int DANGEROUS_FOREST = 140020300; // Rien docks + public static final int FROM_ELLINIA_TO_EREVE = 200090030; + public static final int SKY_FERRY = 130000210; // Ereve platform + public static final int FROM_EREVE_TO_ELLINIA = 200090031; + public static final int ELLINIA_SKY_FERRY = 101000400; + public static final int FROM_EREVE_TO_ORBIS = 200090021; + public static final int ORBIS_STATION = 200000161; + public static final int FROM_ORBIS_TO_EREVE = 200090020; + + // Aran + public static final int ARAN_TUTORIAL_START = 914000000; + public static final int ARAN_TUTORIAL_MAX = 914000500; + public static final int ARAN_INTRO = 140090000; + private static final int BURNING_FOREST_1 = 914000200; + private static final int BURNING_FOREST_2 = 914000210; + private static final int BURNING_FOREST_3 = 914000220; + + // Aran tutorial + public static boolean isGodlyStatMap(int mapId) { + return mapId == BURNING_FOREST_1 || mapId == BURNING_FOREST_2 || mapId == BURNING_FOREST_3; + } + + // Aran intro + public static final int ARAN_TUTO_1 = 914090010; + public static final int ARAN_TUTO_2 = 914090011; + public static final int ARAN_TUTO_3 = 914090012; + public static final int ARAN_TUTO_4 = 914090013; + public static final int ARAN_POLEARM = 914090100; + public static final int ARAN_MAHA = 914090200; // Black screen when warped to + + // Starting map + public static final int STARTING_MAP_NOBLESSE = 130030000; + + // Cygnus intro + // These are the actual maps + private static final int CYGNUS_INTRO_LOCATION_MIN = 913040000; + private static final int CYGNUS_INTRO_LOCATION_MAX = 913040006; + + public static boolean isCygnusIntro(int mapId) { + return mapId >= CYGNUS_INTRO_LOCATION_MIN && mapId <= CYGNUS_INTRO_LOCATION_MAX; + } + + // Cygnus intro video + public static final int CYGNUS_INTRO_LEAD = 913040100; + public static final int CYGNUS_INTRO_WARRIOR = 913040101; + public static final int CYGNUS_INTRO_BOWMAN = 913040102; + public static final int CYGNUS_INTRO_MAGE = 913040103; + public static final int CYGNUS_INTRO_PIRATE = 913040104; + public static final int CYGNUS_INTRO_THIEF = 913040105; + public static final int CYGNUS_INTRO_CONCLUSION = 913040106; + + // Event + public static final int EVENT_COCONUT_HARVEST = 109080000; + public static final int EVENT_OX_QUIZ = 109020001; + public static final int EVENT_PHYSICAL_FITNESS = 109040000; + public static final int EVENT_OLA_OLA_0 = 109030001; + public static final int EVENT_OLA_OLA_1 = 109030101; + public static final int EVENT_OLA_OLA_2 = 109030201; + public static final int EVENT_OLA_OLA_3 = 109030301; + public static final int EVENT_OLA_OLA_4 = 109030401; + public static final int EVENT_SNOWBALL = 109060000; + public static final int EVENT_FIND_THE_JEWEL = 109010000; + public static final int FITNESS_EVENT_LAST = 109040004; + public static final int OLA_EVENT_LAST_1 = 109030003; + public static final int OLA_EVENT_LAST_2 = 109030103; + public static final int WITCH_TOWER_ENTRANCE = 980040000; + public static final int EVENT_WINNER = 109050000; + public static final int EVENT_EXIT = 109050001; + public static final int EVENT_SNOWBALL_ENTRANCE = 109060001; + + private static final int PHYSICAL_FITNESS_MIN = EVENT_PHYSICAL_FITNESS; + private static final int PHYSICAL_FITNESS_MAX = FITNESS_EVENT_LAST; + + public static boolean isPhysicalFitness(int mapId) { + return mapId >= PHYSICAL_FITNESS_MIN && mapId <= PHYSICAL_FITNESS_MAX; + } + + private static final int OLA_OLA_MIN = EVENT_OLA_OLA_0; + private static final int OLA_OLA_MAX = 109030403; // OLA_OLA_4 level 3 + + public static boolean isOlaOla(int mapId) { + return mapId >= OLA_OLA_MIN && mapId <= OLA_OLA_MAX; + } + + // Self lootable maps + private static final int HAPPYVILLE_TREE_MIN = 209000001; + private static final int HAPPYVILLE_TREE_MAX = 209000015; + private static final int GPQ_FOUNTAIN_MIN = 990000500; + private static final int GPQ_FOUNTAIN_MAX = 990000502; + + public static boolean isSelfLootableOnly(int mapId) { + return (mapId >= HAPPYVILLE_TREE_MIN && mapId <= HAPPYVILLE_TREE_MAX) || + (mapId >= GPQ_FOUNTAIN_MIN && mapId <= GPQ_FOUNTAIN_MAX); + } + + // Dojo + public static final int DOJO_SOLO_BASE = 925020000; + public static final int DOJO_PARTY_BASE = 925030000; + public static final int DOJO_EXIT = 925020002; + private static final int DOJO_MIN = DOJO_SOLO_BASE; + private static final int DOJO_MAX = 925033804; + private static final int DOJO_PARTY_MIN = 925030100; + public static final int DOJO_PARTY_MAX = DOJO_MAX; + + public static boolean isDojo(int mapId) { + return mapId >= DOJO_MIN && mapId <= DOJO_MAX; + } + + public static boolean isPartyDojo(int mapId) { + return mapId >= DOJO_PARTY_MIN && mapId <= DOJO_PARTY_MAX; + } + + // Mini dungeon + public static final int ANT_TUNNEL_2 = 105050100; + public static final int CAVE_OF_MUSHROOMS_BASE = 105050101; + public static final int SLEEPY_DUNGEON_4 = 105040304; + public static final int GOLEMS_CASTLE_RUINS_BASE = 105040320; + public static final int SAHEL_2 = 260020600; + public static final int HILL_OF_SANDSTORMS_BASE = 260020630; + public static final int RAIN_FOREST_EAST_OF_HENESYS = 100020000; + public static final int HENESYS_PIG_FARM_BASE = 100020100; + public static final int COLD_CRADLE = 105090311; + public static final int DRAKES_BLUE_CAVE_BASE = 105090320; + public static final int EOS_TOWER_76TH_TO_90TH_FLOOR = 221023400; + public static final int DRUMMER_BUNNYS_LAIR_BASE = 221023401; + public static final int BATTLEFIELD_OF_FIRE_AND_WATER = 240020500; + public static final int ROUND_TABLE_OF_KENTAURUS_BASE = 240020512; + public static final int RESTORING_MEMORY_BASE = 240040800; + public static final int DESTROYED_DRAGON_NEST = 240040520; + public static final int NEWT_SECURED_ZONE_BASE = 240040900; + public static final int RED_NOSE_PIRATE_DEN_2 = 251010402; + public static final int PILLAGE_OF_TREASURE_ISLAND_BASE = 251010410; + public static final int LAB_AREA_C1 = 261020300; + public static final int CRITICAL_ERROR_BASE = 261020301; + public static final int FANTASY_THEME_PARK_3 = 551030000; + public static final int LONGEST_RIDE_ON_BYEBYE_STATION = 551030001; + + // Boss rush + private static final int BOSS_RUSH_MIN = 970030100; + private static final int BOSS_RUSH_MAX = 970042711; + + public static boolean isBossRush(int mapId) { + return mapId >= BOSS_RUSH_MIN && mapId <= BOSS_RUSH_MAX; + } + + // ARPQ + public static final int ARPQ_LOBBY = 980010000; + public static final int ARPQ_ARENA_1 = 980010101; + public static final int ARPQ_ARENA_2 = 980010201; + public static final int ARPQ_ARENA_3 = 980010301; + public static final int ARPQ_KINGS_ROOM = 980010010; + + // Nett's pyramid + public static final int NETTS_PYRAMID = 926010001; + public static final int NETTS_PYRAMID_SOLO_BASE = 926010100; + public static final int NETTS_PYRAMID_PARTY_BASE = 926020100; + private static final int NETTS_PYRAMID_MIN = NETTS_PYRAMID_SOLO_BASE; + private static final int NETTS_PYRAMID_MAX = 926023500; + + public static boolean isNettsPyramid(int mapId) { + return mapId >= NETTS_PYRAMID_MIN && mapId <= NETTS_PYRAMID_MAX; + } + + // Fishing + private static final int ON_THE_WAY_TO_THE_HARBOR = 120010000; + private static final int PIER_ON_THE_BEACH = 251000100; + private static final int PEACEFUL_SHIP = 541010110; + + public static boolean isFishingArea(int mapId) { + return mapId == ON_THE_WAY_TO_THE_HARBOR || mapId == PIER_ON_THE_BEACH || mapId == PEACEFUL_SHIP; + } + + // Wedding + public static final int AMORIA = 680000000; + public static final int CHAPEL_WEDDING_ALTAR = 680000110; + public static final int CATHEDRAL_WEDDING_ALTAR = 680000210; + public static final int WEDDING_PHOTO = 680000300; + public static final int WEDDING_EXIT = 680000500; + + // Statue + public static final int HALL_OF_WARRIORS = 102000004; // Explorer + public static final int HALL_OF_MAGICIANS = 101000004; + public static final int HALL_OF_BOWMEN = 100000204; + public static final int HALL_OF_THIEVES = 103000008; + public static final int NAUTILUS_TRAINING_ROOM = 120000105; + public static final int KNIGHTS_CHAMBER = 130000100; // Cygnus + public static final int KNIGHTS_CHAMBER_2 = 130000110; + public static final int KNIGHTS_CHAMBER_3 = 130000120; + public static final int KNIGHTS_CHAMBER_LARGE = 130000101; + public static final int PALACE_OF_THE_MASTER = 140010110; // Aran + + // gm-goto + public static final int EXCAVATION_SITE = 990000000; + public static final int SOMEONE_ELSES_HOUSE = 100000005; + public static final int GRIFFEY_FOREST = 240020101; + public static final int MANONS_FOREST = 240020401; + public static final int HOLLOWED_GROUND = 682000001; + public static final int CURSED_SANCTUARY = 105090900; + public static final int DOOR_TO_ZAKUM = 211042300; + public static final int DRAGON_NEST_LEFT_BEHIND = 240040511; + public static final int HENESYS_PARK = 100000200; + public static final int ENTRANCE_TO_HORNTAILS_CAVE = 240050400; + public static final int FORGOTTEN_TWILIGHT = 270050000; + public static final int CRIMSONWOOD_KEEP = 610020006; + public static final int MU_LUNG_DOJO_HALL = 925020001; + public static final int EXCLUSIVE_TRAINING_CENTER = 970030000; +} diff --git a/src/main/java/net/server/channel/Channel.java b/src/main/java/net/server/channel/Channel.java index a8eb87f5d8..f8d2a3eaba 100644 --- a/src/main/java/net/server/channel/Channel.java +++ b/src/main/java/net/server/channel/Channel.java @@ -23,7 +23,7 @@ package net.server.channel; import client.Character; import config.YamlConfig; -import constants.game.GameConstants; +import constants.id.MapId; import net.netty.ChannelServer; import net.packet.Packet; import net.server.PlayerStorage; @@ -499,7 +499,7 @@ public final class Channel { } if (slot < range) { - int slotMapid = (isPartyDojo ? 925030000 : 925020000) + (100 * (fromStage + 1)) + slot; + int slotMapid = (isPartyDojo ? MapId.DOJO_PARTY_BASE : MapId.DOJO_SOLO_BASE) + (100 * (fromStage + 1)) + slot; int dojoSlot = getDojoSlot(slotMapid); if (party != null) { @@ -574,7 +574,7 @@ public final class Channel { final int slot = getDojoSlot(dojoMapId); final int delta = (dojoMapId) % 100; final int stage = (dojoMapId / 100) % 100; - final int dojoBaseMap = (dojoMapId >= 925030000) ? 925030000 : 925020000; + final int dojoBaseMap = (dojoMapId >= MapId.DOJO_PARTY_BASE) ? MapId.DOJO_PARTY_BASE : MapId.DOJO_SOLO_BASE; for (int i = 0; i < 5; i++) { //only 32 stages, but 38 maps if (stage + i > 38) { @@ -605,7 +605,7 @@ public final class Channel { } this.dojoTask[slot] = TimerManager.getInstance().schedule(() -> { final int delta = (dojoMapId) % 100; - final int dojoBaseMap = (slot < 5) ? 925030000 : 925020000; + final int dojoBaseMap = (slot < 5) ? MapId.DOJO_PARTY_BASE : MapId.DOJO_SOLO_BASE; Party party = null; for (int i = 0; i < 5; i++) { //only 32 stages, but 38 maps @@ -613,9 +613,9 @@ public final class Channel { break; } - MapleMap dojoExit = getMapFactory().getMap(925020002); + MapleMap dojoExit = getMapFactory().getMap(MapId.DOJO_EXIT); for (Character chr : getMapFactory().getMap(dojoBaseMap + (100 * (stage + i)) + delta).getAllPlayers()) { - if (GameConstants.isDojo(chr.getMap().getId())) { + if (MapId.isDojo(chr.getMap().getId())) { chr.changeMap(dojoExit); } party = chr.getParty(); diff --git a/src/main/java/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/main/java/net/server/channel/handlers/AbstractDealDamageHandler.java index 047207788d..9343a4f8de 100644 --- a/src/main/java/net/server/channel/handlers/AbstractDealDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -29,6 +29,7 @@ import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.id.MobId; import constants.skills.*; import net.AbstractPacketHandler; @@ -734,7 +735,7 @@ public abstract class AbstractDealDamageHandler extends AbstractPacketHandler { calcDmgMax = (long) Math.ceil(calcDmgMax * dmgBuff); } - if (chr.getMapId() >= 914000000 && chr.getMapId() <= 914000500) { + if (chr.getMapId() >= MapId.ARAN_TUTORIAL_START && chr.getMapId() <= MapId.ARAN_TUTORIAL_MAX) { calcDmgMax += 80000; // Aran Tutorial. } diff --git a/src/main/java/net/server/channel/handlers/ChangeMapHandler.java b/src/main/java/net/server/channel/handlers/ChangeMapHandler.java index c420e1d003..675cf2e199 100644 --- a/src/main/java/net/server/channel/handlers/ChangeMapHandler.java +++ b/src/main/java/net/server/channel/handlers/ChangeMapHandler.java @@ -26,6 +26,7 @@ import client.Client; import client.inventory.InventoryType; import client.inventory.manipulator.InventoryManipulator; import constants.id.ItemId; +import constants.id.MapId; import net.AbstractPacketHandler; import net.packet.InPacket; import server.Trade; @@ -121,17 +122,17 @@ public final class ChangeMapHandler extends AbstractPacketHandler { warp = true; } } else if (divi == 20100) { - if (targetid == 104000000) { + if (targetid == MapId.LITH_HARBOUR) { c.sendPacket(PacketCreator.lockUI(false)); c.sendPacket(PacketCreator.disableUI(false)); warp = true; } } else if (divi == 9130401) { // Only allow warp if player is already in Intro map, or else = hack - if (targetid == 130000000 || targetid / 100 == 9130401) { // Cygnus introduction + if (targetid == MapId.EREVE || targetid / 100 == 9130401) { // Cygnus introduction warp = true; } } else if (divi == 9140900) { // Aran Introduction - if (targetid == 914090011 || targetid == 914090012 || targetid == 914090013 || targetid == 140090000) { + if (targetid == MapId.ARAN_TUTO_2 || targetid == MapId.ARAN_TUTO_3 || targetid == MapId.ARAN_TUTO_4 || targetid == MapId.ARAN_INTRO) { warp = true; } } else if (divi / 10 == 1020) { // Adventurer movie clip Intro @@ -139,7 +140,7 @@ public final class ChangeMapHandler extends AbstractPacketHandler { warp = true; } } else if (divi / 10 >= 980040 && divi / 10 <= 980045) { - if (targetid == 980040000) { + if (targetid == MapId.WITCH_TOWER_ENTRANCE) { warp = true; } } @@ -157,9 +158,9 @@ public final class ChangeMapHandler extends AbstractPacketHandler { return; } - if (chr.getMapId() == 109040004) { + if (chr.getMapId() == MapId.FITNESS_EVENT_LAST) { chr.getFitness().resetTimes(); - } else if (chr.getMapId() == 109030003 || chr.getMapId() == 109030103) { + } else if (chr.getMapId() == MapId.OLA_EVENT_LAST_1 || chr.getMapId() == MapId.OLA_EVENT_LAST_2) { chr.getOla().resetTimes(); } diff --git a/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java index ff5b682922..756675623b 100644 --- a/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -25,6 +25,7 @@ import client.Character; import client.*; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import constants.skills.*; import net.packet.InPacket; import server.StatEffect; @@ -62,7 +63,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { { return; } - if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { + if (MapId.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/main/java/net/server/channel/handlers/FamilyUseHandler.java b/src/main/java/net/server/channel/handlers/FamilyUseHandler.java index 8a00692dd3..7149d25a4f 100644 --- a/src/main/java/net/server/channel/handlers/FamilyUseHandler.java +++ b/src/main/java/net/server/channel/handlers/FamilyUseHandler.java @@ -26,6 +26,7 @@ import client.Client; import client.FamilyEntitlement; import client.FamilyEntry; import config.YamlConfig; +import constants.id.MapId; import net.AbstractPacketHandler; import net.packet.InPacket; import net.server.coordinator.world.InviteCoordinator; @@ -61,7 +62,7 @@ public final class FamilyUseHandler extends AbstractPacketHandler { if (targetMap != null) { if (type == FamilyEntitlement.FAMILY_REUINION) { if (!FieldLimit.CANNOTMIGRATE.check(ownMap.getFieldLimit()) && !FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) - && (targetMap.getForcedReturnId() == 999999999 || targetMap.getId() < 100000000) && targetMap.getEventInstance() == null) { + && (targetMap.getForcedReturnId() == MapId.NONE || MapId.isMapleIsland(targetMap.getId())) && targetMap.getEventInstance() == null) { c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0)); useEntitlement(entry, type); @@ -71,7 +72,7 @@ public final class FamilyUseHandler extends AbstractPacketHandler { } } else { if (!FieldLimit.CANNOTMIGRATE.check(targetMap.getFieldLimit()) && !FieldLimit.CANNOTVIPROCK.check(ownMap.getFieldLimit()) - && (ownMap.getForcedReturnId() == 999999999 || ownMap.getId() < 100000000) && ownMap.getEventInstance() == null) { + && (ownMap.getForcedReturnId() == MapId.NONE || MapId.isMapleIsland(ownMap.getId())) && ownMap.getEventInstance() == null) { if (InviteCoordinator.hasInvite(InviteType.FAMILY_SUMMON, victim.getId())) { c.sendPacket(PacketCreator.sendFamilyMessage(74, 0)); diff --git a/src/main/java/net/server/channel/handlers/GuildOperationHandler.java b/src/main/java/net/server/channel/handlers/GuildOperationHandler.java index a6fc6f4561..fdba87592d 100644 --- a/src/main/java/net/server/channel/handlers/GuildOperationHandler.java +++ b/src/main/java/net/server/channel/handlers/GuildOperationHandler.java @@ -25,6 +25,7 @@ import client.Character; import client.Client; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import net.AbstractPacketHandler; import net.packet.InPacket; import net.server.Server; @@ -216,7 +217,7 @@ public final class GuildOperationHandler extends AbstractPacketHandler { Server.getInstance().changeRank(mc.getGuildId(), cid, newRank); break; case 0x0f: - if (mc.getGuildId() <= 0 || mc.getGuildRank() != 1 || mc.getMapId() != 200000301) { + if (mc.getGuildId() <= 0 || mc.getGuildRank() != 1 || mc.getMapId() != MapId.GUILD_HQ) { System.out.println("[Hack] " + mc.getName() + " tried to change guild emblem without being the guild leader."); return; } diff --git a/src/main/java/net/server/channel/handlers/MagicDamageHandler.java b/src/main/java/net/server/channel/handlers/MagicDamageHandler.java index fd03596916..8b8201e863 100644 --- a/src/main/java/net/server/channel/handlers/MagicDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/MagicDamageHandler.java @@ -24,7 +24,7 @@ package net.server.channel.handlers; import client.Character; import client.*; import config.YamlConfig; -import constants.game.GameConstants; +import constants.id.MapId; import constants.skills.Bishop; import constants.skills.Evan; import constants.skills.FPArchMage; @@ -57,7 +57,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler { } } - if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { + if (MapId.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + +YamlConfig.config.server.DOJO_ENERGY_ATK); c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/main/java/net/server/channel/handlers/RangedAttackHandler.java b/src/main/java/net/server/channel/handlers/RangedAttackHandler.java index 4f0481d3e8..467407f050 100644 --- a/src/main/java/net/server/channel/handlers/RangedAttackHandler.java +++ b/src/main/java/net/server/channel/handlers/RangedAttackHandler.java @@ -29,8 +29,8 @@ import client.inventory.Item; import client.inventory.WeaponType; import client.inventory.manipulator.InventoryManipulator; import config.YamlConfig; -import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.inventory.ItemConstants; import constants.skills.*; import net.packet.InPacket; @@ -65,7 +65,7 @@ public final class RangedAttackHandler extends AbstractDealDamageHandler { } } - if (GameConstants.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { + if (MapId.isDojo(chr.getMap().getId()) && attack.numAttacked > 0) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_ATK); c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java index 720bcc9a9f..6edda769c6 100644 --- a/src/main/java/net/server/channel/handlers/TakeDamageHandler.java +++ b/src/main/java/net/server/channel/handlers/TakeDamageHandler.java @@ -30,7 +30,7 @@ import client.inventory.manipulator.InventoryManipulator; import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; -import constants.game.GameConstants; +import constants.id.MapId; import constants.inventory.ItemConstants; import constants.skills.Aran; import net.AbstractPacketHandler; @@ -189,7 +189,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler { } //in dojo player cannot use pot, so deadly attacks should be turned off as well - if (is_deadly && GameConstants.isDojo(chr.getMap().getId()) && !YamlConfig.config.server.USE_DEADLY_DOJO) { + if (is_deadly && MapId.isDojo(chr.getMap().getId()) && !YamlConfig.config.server.USE_DEADLY_DOJO) { damage = 0; mpattack = 0; } @@ -273,7 +273,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler { } else { map.broadcastGMMessage(chr, PacketCreator.damagePlayer(damagefrom, monsteridfrom, chr.getId(), damage, fake, direction, is_pgmr, pgmr, is_pg, oid, pos_x, pos_y), false); } - if (GameConstants.isDojo(map.getId())) { + if (MapId.isDojo(map.getId())) { chr.setDojoEnergy(chr.getDojoEnergy() + YamlConfig.config.server.DOJO_ENERGY_DMG); c.sendPacket(PacketCreator.getEnergy("energy", chr.getDojoEnergy())); } diff --git a/src/main/java/net/server/channel/handlers/UseCashItemHandler.java b/src/main/java/net/server/channel/handlers/UseCashItemHandler.java index eba6616dab..fc639386e7 100644 --- a/src/main/java/net/server/channel/handlers/UseCashItemHandler.java +++ b/src/main/java/net/server/channel/handlers/UseCashItemHandler.java @@ -34,6 +34,7 @@ import client.processor.stat.AssignSPProcessor; import config.YamlConfig; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.inventory.ItemConstants; import net.AbstractPacketHandler; import net.packet.InPacket; @@ -106,7 +107,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler { int mapId = p.readInt(); if (itemId / 1000 >= 5041 || mapId / 100000000 == player.getMapId() / 100000000) { //check vip or same continent MapleMap targetMap = c.getChannelServer().getMapFactory().getMap(mapId); - if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == 999999999 || mapId < 100000000)) { + if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == MapId.NONE || MapId.isMapleIsland(mapId))) { player.forceChangeMap(targetMap, targetMap.getRandomPlayerSpawnpoint()); success = true; } else { @@ -121,7 +122,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler { if (victim != null) { MapleMap targetMap = victim.getMap(); - if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == 999999999 || targetMap.getId() < 100000000)) { + if (!FieldLimit.CANNOTVIPROCK.check(targetMap.getFieldLimit()) && (targetMap.getForcedReturnId() == MapId.NONE || MapId.isMapleIsland(targetMap.getId()))) { if (!victim.isGM() || victim.gmLevel() <= player.gmLevel()) { // thanks Yoboes for noticing non-GM's being unreachable through rocks player.forceChangeMap(targetMap, targetMap.findClosestPlayerSpawnpoint(victim.getPosition())); success = true; diff --git a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java index 55b803b9c8..94846cfdf1 100644 --- a/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java +++ b/src/main/java/net/server/coordinator/matchchecker/listener/MatchCheckerGuildCreation.java @@ -22,6 +22,7 @@ package net.server.coordinator.matchchecker.listener; import client.Character; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import net.packet.Packet; import net.server.Server; import net.server.coordinator.matchchecker.AbstractMatchCheckerListener; @@ -92,7 +93,7 @@ public class MatchCheckerGuildCreation implements MatchCheckerListenerRecipe { broadcastGuildCreationDismiss(matchPlayers); return; } - if (leader.getMapId() != 200000301) { + if (leader.getMapId() != MapId.GUILD_HQ) { leader.dropMessage(1, "You cannot establish the creation of a new Guild outside of the Guild Headquarters."); broadcastGuildCreationDismiss(matchPlayers); return; diff --git a/src/main/java/net/server/coordinator/partysearch/PartySearchCoordinator.java b/src/main/java/net/server/coordinator/partysearch/PartySearchCoordinator.java index 8de78024b6..e93e99fd93 100644 --- a/src/main/java/net/server/coordinator/partysearch/PartySearchCoordinator.java +++ b/src/main/java/net/server/coordinator/partysearch/PartySearchCoordinator.java @@ -22,6 +22,7 @@ package net.server.coordinator.partysearch; import client.Character; import client.Job; import config.YamlConfig; +import constants.id.MapId; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; @@ -76,9 +77,9 @@ public class PartySearchCoordinator { mapLinks.put(mapid, neighborMaps); for (Data neighbordata : mapdata.getChildren()) { - int neighborid = DataTool.getInt(neighbordata, 999999999); + int neighborid = DataTool.getInt(neighbordata, MapId.NONE); - if (neighborid != 999999999) { + if (neighborid != MapId.NONE) { neighborMaps.add(neighborid); } } diff --git a/src/main/java/scripting/AbstractPlayerInteraction.java b/src/main/java/scripting/AbstractPlayerInteraction.java index e7c1862e08..f2db4abe10 100644 --- a/src/main/java/scripting/AbstractPlayerInteraction.java +++ b/src/main/java/scripting/AbstractPlayerInteraction.java @@ -29,6 +29,7 @@ import client.inventory.manipulator.InventoryManipulator; import config.YamlConfig; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.id.NpcId; import constants.inventory.ItemConstants; import net.server.Server; @@ -680,27 +681,15 @@ public class AbstractPlayerInteraction { } public void displayAranIntro() { - String intro = ""; - switch (c.getPlayer().getMapId()) { - case 914090010: - intro = "Effect/Direction1.img/aranTutorial/Scene0"; - break; - case 914090011: - intro = "Effect/Direction1.img/aranTutorial/Scene1" + (c.getPlayer().getGender() == 0 ? "0" : "1"); - break; - case 914090012: - intro = "Effect/Direction1.img/aranTutorial/Scene2" + (c.getPlayer().getGender() == 0 ? "0" : "1"); - break; - case 914090013: - intro = "Effect/Direction1.img/aranTutorial/Scene3"; - break; - case 914090100: - intro = "Effect/Direction1.img/aranTutorial/HandedPoleArm" + (c.getPlayer().getGender() == 0 ? "0" : "1"); - break; - case 914090200: - intro = "Effect/Direction1.img/aranTutorial/Maha"; - break; - } + String intro = switch (c.getPlayer().getMapId()) { + case MapId.ARAN_TUTO_1 -> "Effect/Direction1.img/aranTutorial/Scene0"; + case MapId.ARAN_TUTO_2 -> "Effect/Direction1.img/aranTutorial/Scene1" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + case MapId.ARAN_TUTO_3 -> "Effect/Direction1.img/aranTutorial/Scene2" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + case MapId.ARAN_TUTO_4 -> "Effect/Direction1.img/aranTutorial/Scene3"; + case MapId.ARAN_POLEARM -> "Effect/Direction1.img/aranTutorial/HandedPoleArm" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + case MapId.ARAN_MAHA -> "Effect/Direction1.img/aranTutorial/Maha"; + default -> ""; + }; showIntro(intro); } diff --git a/src/main/java/scripting/map/MapScriptMethods.java b/src/main/java/scripting/map/MapScriptMethods.java index f9ceea8743..7cbf73903d 100644 --- a/src/main/java/scripting/map/MapScriptMethods.java +++ b/src/main/java/scripting/map/MapScriptMethods.java @@ -24,6 +24,7 @@ package scripting.map; import client.Character.DelayedQuestUpdate; import client.Client; import client.QuestStatus; +import constants.id.MapId; import scripting.AbstractPlayerInteraction; import server.quest.Quest; import tools.PacketCreator; @@ -38,51 +39,35 @@ public class MapScriptMethods extends AbstractPlayerInteraction { public void displayCygnusIntro() { switch (c.getPlayer().getMapId()) { - case 913040100: + case MapId.CYGNUS_INTRO_LEAD -> { lockUI(); c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene0")); - break; - case 913040101: - c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene1")); - break; - case 913040102: - c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene2")); - break; - case 913040103: - c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene3")); - break; - case 913040104: - c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene4")); - break; - case 913040105: - c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene5")); - break; - case 913040106: + } + case MapId.CYGNUS_INTRO_WARRIOR -> c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene1")); + case MapId.CYGNUS_INTRO_BOWMAN -> c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene2")); + case MapId.CYGNUS_INTRO_MAGE -> c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene3")); + case MapId.CYGNUS_INTRO_PIRATE -> c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene4")); + case MapId.CYGNUS_INTRO_THIEF -> c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene5")); + case MapId.CYGNUS_INTRO_CONCLUSION -> { lockUI(); c.sendPacket(PacketCreator.showIntro("Effect/Direction.img/cygnusJobTutorial/Scene6")); - break; + } } } public void displayAranIntro() { switch (c.getPlayer().getMapId()) { - case 914090010: + case MapId.ARAN_TUTO_1 -> { lockUI(); c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene0")); - break; - case 914090011: - c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene1" + c.getPlayer().getGender())); - break; - case 914090012: - c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene2" + c.getPlayer().getGender())); - break; - case 914090013: - c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene3")); - break; - case 914090100: + } + case MapId.ARAN_TUTO_2 -> c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene1" + c.getPlayer().getGender())); + case MapId.ARAN_TUTO_3 -> c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene2" + c.getPlayer().getGender())); + case MapId.ARAN_TUTO_4 -> c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene3")); + case MapId.ARAN_POLEARM -> { lockUI(); c.sendPacket(PacketCreator.showIntro("Effect/Direction1.img/aranTutorial/HandedPoleArm" + c.getPlayer().getGender())); - break; + } } } diff --git a/src/main/java/scripting/npc/NPCConversationManager.java b/src/main/java/scripting/npc/NPCConversationManager.java index e05d9eb43d..707f9b8857 100644 --- a/src/main/java/scripting/npc/NPCConversationManager.java +++ b/src/main/java/scripting/npc/NPCConversationManager.java @@ -28,6 +28,7 @@ import client.inventory.ItemFactory; import client.inventory.Pet; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import constants.id.NpcId; import constants.inventory.ItemConstants; import constants.string.LanguageConstants; @@ -406,7 +407,8 @@ public class NPCConversationManager extends AbstractPlayerInteraction { sendNext("You have obtained a #b#t" + item.getId() + "##k."); - int[] maps = {100000000, 101000000, 102000000, 103000000, 105040300, 800000000, 809000101, 809000201, 600000000, 120000000}; + int[] maps = {MapId.HENESYS, MapId.ELLINIA, MapId.PERION, MapId.KERNING_CITY, MapId.SLEEPYWOOD, MapId.MUSHROOM_SHRINE, + MapId.SHOWA_SPA_M, MapId.SHOWA_SPA_F, MapId.NEW_LEAF_CITY, MapId.NAUTILUS_HARBOR}; final int mapId = maps[(getNpc() != NpcId.GACHAPON_NAUTILUS && getNpc() != NpcId.GACHAPON_NLC) ? (getNpc() - NpcId.GACHAPON_HENESYS) : getNpc() == NpcId.GACHAPON_NLC ? 8 : 9]; String map = c.getChannelServer().getMapFactory().getMap(mapId).getMapName(); @@ -500,7 +502,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction { MapManager mapManager = c.getChannelServer().getMapFactory(); MapleMap map = null; - int mapid = 926010100; + int mapid = MapId.NETTS_PYRAMID_SOLO_BASE; if (party) { mapid += 10000; } diff --git a/src/main/java/server/StatEffect.java b/src/main/java/server/StatEffect.java index 486082c146..6c06f47b8d 100644 --- a/src/main/java/server/StatEffect.java +++ b/src/main/java/server/StatEffect.java @@ -31,6 +31,7 @@ import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.id.ItemId; +import constants.id.MapId; import constants.inventory.ItemConstants; import constants.skills.*; import net.packet.Packet; @@ -908,7 +909,7 @@ public class StatEffect { MapleMap target; Portal pt; - if (moveTo == 999999999) { + if (moveTo == MapId.NONE) { if (sourceid != ItemId.ANTI_BANISH_SCROLL) { target = applyto.getMap().getReturnMap(); pt = target.getRandomPlayerSpawnpoint(); diff --git a/src/main/java/server/events/gm/Coconut.java b/src/main/java/server/events/gm/Coconut.java index 37162b47da..43e4a34d62 100644 --- a/src/main/java/server/events/gm/Coconut.java +++ b/src/main/java/server/events/gm/Coconut.java @@ -23,6 +23,7 @@ package server.events.gm; import client.Character; +import constants.id.MapId; import server.TimerManager; import server.maps.MapleMap; import tools.PacketCreator; @@ -59,7 +60,7 @@ public class Coconut extends Event { map.broadcastMessage(PacketCreator.getClock(300)); TimerManager.getInstance().schedule(() -> { - if (map.getId() == 109080000) { + if (map.getId() == MapId.EVENT_COCONUT_HARVEST) { if (getMapleScore() == getStoryScore()) { bonusTime(); } else if (getMapleScore() > getStoryScore()) { @@ -132,9 +133,9 @@ public class Coconut extends Event { for (Character chr : chars) { if ((getMapleScore() > getStoryScore() && chr.getTeam() == 0) || (getStoryScore() > getMapleScore() && chr.getTeam() == 1)) { - chr.changeMap(109050000); + chr.changeMap(MapId.EVENT_WINNER); } else { - chr.changeMap(109050001); + chr.changeMap(MapId.EVENT_EXIT); } } map.setCoconut(null); diff --git a/src/main/java/server/events/gm/Fitness.java b/src/main/java/server/events/gm/Fitness.java index 31bf84486d..edfa22c1a3 100644 --- a/src/main/java/server/events/gm/Fitness.java +++ b/src/main/java/server/events/gm/Fitness.java @@ -23,6 +23,7 @@ package server.events.gm; import client.Character; +import constants.id.MapId; import server.TimerManager; import tools.PacketCreator; @@ -41,7 +42,7 @@ public class Fitness { public Fitness(final Character chr) { this.chr = chr; this.schedule = TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() >= 109040000 && chr.getMapId() <= 109040004) { + if (MapId.isPhysicalFitness(chr.getMapId())) { chr.changeMap(chr.getMap().getReturnMap()); } }, 900000); @@ -82,7 +83,7 @@ public class Fitness { if (chr.getFitness() == null) { resetTimes(); } - if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) { + if (MapId.isPhysicalFitness(chr.getMapId())) { if (getTimeLeft() > 9000 && getTimeLeft() < 11000) { chr.sendPacket(PacketCreator.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) { diff --git a/src/main/java/server/events/gm/Ola.java b/src/main/java/server/events/gm/Ola.java index 0f3bbfa5de..0f96bc2946 100644 --- a/src/main/java/server/events/gm/Ola.java +++ b/src/main/java/server/events/gm/Ola.java @@ -22,6 +22,7 @@ package server.events.gm; import client.Character; +import constants.id.MapId; import server.TimerManager; import tools.PacketCreator; @@ -39,7 +40,7 @@ public class Ola { public Ola(final Character chr) { this.chr = chr; this.schedule = TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() >= 109030001 && chr.getMapId() <= 109030303) { + if (MapId.isOlaOla(chr.getMapId())) { chr.changeMap(chr.getMap().getReturnMap()); } resetTimes(); diff --git a/src/main/java/server/events/gm/Snowball.java b/src/main/java/server/events/gm/Snowball.java index 22a1249306..d93bf7b7d2 100644 --- a/src/main/java/server/events/gm/Snowball.java +++ b/src/main/java/server/events/gm/Snowball.java @@ -22,6 +22,7 @@ along with this program. If not, see . package server.events.gm; import client.Character; +import constants.id.MapId; import server.TimerManager; import server.maps.MapleMap; import tools.PacketCreator; @@ -152,10 +153,10 @@ public class Snowball { public void warpOut() { TimerManager.getInstance().schedule(() -> { - if (winner == true) { - map.warpOutByTeam(team, 109050000); + if (winner) { + map.warpOutByTeam(team, MapId.EVENT_WINNER); } else { - map.warpOutByTeam(team, 109050001); + map.warpOutByTeam(team, MapId.EVENT_EXIT); } map.setSnowball(team, null); diff --git a/src/main/java/server/expeditions/Expedition.java b/src/main/java/server/expeditions/Expedition.java index 764c24ea60..58187c2360 100644 --- a/src/main/java/server/expeditions/Expedition.java +++ b/src/main/java/server/expeditions/Expedition.java @@ -23,6 +23,7 @@ package server.expeditions; import client.Character; +import constants.id.MapId; import constants.id.MobId; import net.packet.Packet; import net.server.PlayerStorage; @@ -256,7 +257,7 @@ public class Expedition { player.dropMessage(6, "[Expedition] You have been banned from this expedition."); } if (ExpeditionType.ARIANT.equals(type) || ExpeditionType.ARIANT1.equals(type) || ExpeditionType.ARIANT2.equals(type)) { - player.changeMap(980010000); + player.changeMap(MapId.ARPQ_LOBBY); } } } diff --git a/src/main/java/server/life/MobSkill.java b/src/main/java/server/life/MobSkill.java index 26241eedc8..af91a0e35a 100644 --- a/src/main/java/server/life/MobSkill.java +++ b/src/main/java/server/life/MobSkill.java @@ -24,7 +24,7 @@ package server.life; import client.Character; import client.Disease; import client.status.MonsterStatus; -import constants.game.GameConstants; +import constants.id.MapId; import constants.id.MobId; import net.server.services.task.channel.OverallService; import net.server.services.type.ChannelServices; @@ -244,7 +244,7 @@ public class MobSkill { int skillLimit = this.getLimit(); MapleMap map = monster.getMap(); - if (GameConstants.isDojo(map.getId())) { // spawns in dojo should be unlimited + if (MapId.isDojo(map.getId())) { // spawns in dojo should be unlimited skillLimit = Integer.MAX_VALUE; } @@ -252,7 +252,7 @@ public class MobSkill { List summons = getSummons(); int summonLimit = monster.countAvailableMobSummons(summons.size(), skillLimit); if (summonLimit >= 1) { - boolean bossRushMap = GameConstants.isBossRush(map.getId()); + boolean bossRushMap = MapId.isBossRush(map.getId()); Collections.shuffle(summons); for (Integer mobId : summons.subList(0, summonLimit)) { @@ -286,14 +286,14 @@ public class MobSkill { break; } switch (map.getId()) { - case 220080001: //Pap map + case MapId.ORIGIN_OF_CLOCKTOWER: //Pap map if (xpos < -890) { xpos = (int) (Math.ceil(Math.random() * 150) - 890); } else if (xpos > 230) { xpos = (int) (230 - Math.ceil(Math.random() * 150)); } break; - case 230040420: // Pianus map + case MapId.CAVE_OF_PIANUS: // Pianus map if (xpos < -239) { xpos = (int) (Math.ceil(Math.random() * 150) - 239); } else if (xpos > 371) { diff --git a/src/main/java/server/life/PlayerNPCFactory.java b/src/main/java/server/life/PlayerNPCFactory.java index 7cbf65884a..a0a8de7f59 100644 --- a/src/main/java/server/life/PlayerNPCFactory.java +++ b/src/main/java/server/life/PlayerNPCFactory.java @@ -20,6 +20,7 @@ package server.life; import constants.id.ItemId; +import constants.id.MapId; import constants.id.NpcId; import net.server.Server; import provider.Data; @@ -51,7 +52,7 @@ public class PlayerNPCFactory { if (thisData != null) { DataProvider map = DataProviderFactory.getDataProvider(WZFiles.MAP); - thisData = map.getData("Map/Map7/777777777.img"); + thisData = map.getData("Map/Map7/" + MapId.DEVELOPERS_HQ + ".img"); if (thisData != null) { DataProvider sound = DataProviderFactory.getDataProvider(WZFiles.SOUND); @@ -112,7 +113,7 @@ public class PlayerNPCFactory { if (thisData != null) { byte[] encData = {0x52, 0x6F, 0x6E, 0x61, 0x6E}; String name = new String(encData); - int face = 20104, hair = 30215, gender = 0, skin = 0, dir = 0, mapid = 777777777; + int face = 20104, hair = 30215, gender = 0, skin = 0, dir = 0, mapid = MapId.DEVELOPERS_HQ; int FH = 4, RX0 = -143, RX1 = -243, CX = -193, CY = 117, scriptId = NpcId.CUSTOM_DEV; Map equips = new HashMap<>(); diff --git a/src/main/java/server/maps/DoorObject.java b/src/main/java/server/maps/DoorObject.java index 97eeb728f3..2af6da1821 100644 --- a/src/main/java/server/maps/DoorObject.java +++ b/src/main/java/server/maps/DoorObject.java @@ -21,6 +21,7 @@ package server.maps; import client.Character; import client.Client; +import constants.id.MapId; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReadLock; import net.server.audit.locks.MonitoredReentrantReadWriteLock; @@ -128,7 +129,7 @@ public class DoorObject extends AbstractMapObject { if (from.getId() == chr.getMapId()) { Party party = chr.getParty(); if (party != null && (ownerId == chr.getId() || party.getMemberById(ownerId) != null)) { - client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); + client.sendPacket(PacketCreator.partyPortal(MapId.NONE, MapId.NONE, new Point(-1, -1))); } client.sendPacket(PacketCreator.removeDoor(ownerId, inTown())); } @@ -136,7 +137,7 @@ public class DoorObject extends AbstractMapObject { public void sendDestroyData(Client client, boolean partyUpdate) { if (client != null && from.getId() == client.getPlayer().getMapId()) { - client.sendPacket(PacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); + client.sendPacket(PacketCreator.partyPortal(MapId.NONE, MapId.NONE, new Point(-1, -1))); client.sendPacket(PacketCreator.removeDoor(ownerId, inTown())); } } diff --git a/src/main/java/server/maps/GenericPortal.java b/src/main/java/server/maps/GenericPortal.java index e07067fc28..8ba35f21a3 100644 --- a/src/main/java/server/maps/GenericPortal.java +++ b/src/main/java/server/maps/GenericPortal.java @@ -24,6 +24,7 @@ package server.maps; import client.Character; import client.Client; import constants.game.GameConstants; +import constants.id.MapId; import net.server.audit.locks.MonitoredLockType; import net.server.audit.locks.MonitoredReentrantLock; import net.server.audit.locks.factory.MonitoredReentrantLockFactory; @@ -140,7 +141,7 @@ public class GenericPortal implements Portal { } catch (NullPointerException npe) { npe.printStackTrace(); } - } else if (getTargetMapId() != 999999999) { + } else if (getTargetMapId() != MapId.NONE) { Character chr = c.getPlayer(); if (!(chr.getChalkboard() != null && GameConstants.isFreeMarketRoom(getTargetMapId()))) { MapleMap to = chr.getEventInstance() == null ? c.getChannelServer().getMapFactory().getMap(getTargetMapId()) : chr.getEventInstance().getMapInstance(getTargetMapId()); diff --git a/src/main/java/server/maps/MapFactory.java b/src/main/java/server/maps/MapFactory.java index e231bc086e..f9f7c09506 100644 --- a/src/main/java/server/maps/MapFactory.java +++ b/src/main/java/server/maps/MapFactory.java @@ -21,6 +21,7 @@ */ package server.maps; +import constants.id.MapId; import provider.Data; import provider.DataProvider; import provider.DataProviderFactory; @@ -309,7 +310,7 @@ public class MapFactory { map.setTown(DataTool.getIntConvert("town", infoData, 0) != 0); map.setHPDec(DataTool.getIntConvert("decHP", infoData, 0)); map.setHPDecProtect(DataTool.getIntConvert("protectItem", infoData, 0)); - map.setForcedReturnMap(DataTool.getInt(infoData.getChildByPath("forcedReturn"), 999999999)); + map.setForcedReturnMap(DataTool.getInt(infoData.getChildByPath("forcedReturn"), MapId.NONE)); map.setBoat(mapData.getChildByPath("shipObj") != null); map.setTimeLimit(DataTool.getIntConvert("timeLimit", infoData, -1)); map.setFieldType(DataTool.getIntConvert("fieldType", infoData, 0)); @@ -381,15 +382,15 @@ public class MapFactory { StringBuilder builder = new StringBuilder(); if (mapid < 100000000) { builder.append("maple"); - } else if (mapid >= 100000000 && mapid < 200000000) { + } else if (mapid >= 100000000 && mapid < MapId.ORBIS) { builder.append("victoria"); - } else if (mapid >= 200000000 && mapid < 300000000) { + } else if (mapid >= MapId.ORBIS && mapid < MapId.ELLIN_FOREST) { builder.append("ossyria"); - } else if (mapid >= 300000000 && mapid < 400000000) { + } else if (mapid >= MapId.ELLIN_FOREST && mapid < 400000000) { builder.append("elin"); - } else if (mapid >= 540000000 && mapid < 560000000) { + } else if (mapid >= MapId.SINGAPORE && mapid < 560000000) { builder.append("singapore"); - } else if (mapid >= 600000000 && mapid < 620000000) { + } else if (mapid >= MapId.NEW_LEAF_CITY && mapid < 620000000) { builder.append("MasteriaGL"); } else if (mapid >= 677000000 && mapid < 677100000) { builder.append("Episode1GL"); @@ -403,7 +404,7 @@ public class MapFactory { builder.append("HalloweenGL"); } else if (mapid >= 683000000 && mapid < 684000000) { builder.append("event"); - } else if (mapid >= 800000000 && mapid < 900000000) { + } else if (mapid >= MapId.MUSHROOM_SHRINE && mapid < 900000000) { if ((mapid >= 889100000 && mapid < 889200000)) { builder.append("etc"); } else { diff --git a/src/main/java/server/maps/MapleMap.java b/src/main/java/server/maps/MapleMap.java index 7ec9a932c3..570127dddb 100644 --- a/src/main/java/server/maps/MapleMap.java +++ b/src/main/java/server/maps/MapleMap.java @@ -33,6 +33,7 @@ import client.status.MonsterStatus; import client.status.MonsterStatusEffect; import config.YamlConfig; import constants.game.GameConstants; +import constants.id.MapId; import constants.id.MobId; import constants.inventory.ItemConstants; import net.packet.Packet; @@ -120,7 +121,7 @@ public class MapleMap { private String streetName; private MapEffect mapEffect = null; private boolean everlast = false; - private int forcedReturnMap = 999999999; + private int forcedReturnMap = MapId.NONE; private int timeLimit; private long mapTimer; private int decHP = 0; @@ -264,7 +265,7 @@ public class MapleMap { } public MapleMap getReturnMap() { - if (returnMapId == 999999999) { + if (returnMapId == MapId.NONE) { return this; } return getChannelServer().getMapFactory().getMap(returnMapId); @@ -2388,7 +2389,7 @@ public class MapleMap { } } if (onUserEnter.length() != 0) { - if (onUserEnter.equals("cygnusTest") && (mapid < 913040000 || mapid > 913040006)) { + if (onUserEnter.equals("cygnusTest") && !MapId.isCygnusIntro(mapid)) { chr.saveLocation("INTRO"); } @@ -2399,52 +2400,52 @@ public class MapleMap { chr.cancelBuffStats(BuffStat.MONSTER_RIDING); } - if (mapid == 200090060) { // To Rien + if (mapid == MapId.FROM_LITH_TO_RIEN) { // To Rien int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(1)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090060) { - chr.changeMap(140020300, 0); + if (chr.getMapId() == MapId.FROM_LITH_TO_RIEN) { + chr.changeMap(MapId.DANGEROUS_FOREST, 0); } }, travelTime); - } else if (mapid == 200090070) { // To Lith Harbor + } else if (mapid == MapId.FROM_RIEN_TO_LITH) { // To Lith Harbor int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(1)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090070) { - chr.changeMap(104000000, 3); + if (chr.getMapId() == MapId.FROM_RIEN_TO_LITH) { + chr.changeMap(MapId.LITH_HARBOUR, 3); } }, travelTime); - } else if (mapid == 200090030) { // To Ereve (SkyFerry) + } else if (mapid == MapId.FROM_ELLINIA_TO_EREVE) { // To Ereve (SkyFerry) int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(2)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090030) { - chr.changeMap(130000210, 0); + if (chr.getMapId() == MapId.FROM_ELLINIA_TO_EREVE) { + chr.changeMap(MapId.SKY_FERRY, 0); } }, travelTime); - } else if (mapid == 200090031) { // To Victoria Island (SkyFerry) + } else if (mapid == MapId.FROM_EREVE_TO_ELLINIA) { // To Victoria Island (SkyFerry) int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(2)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090031) { - chr.changeMap(101000400, 0); + if (chr.getMapId() == MapId.FROM_EREVE_TO_ELLINIA) { + chr.changeMap(MapId.ELLINIA_SKY_FERRY, 0); } }, travelTime); - } else if (mapid == 200090021) { // To Orbis (SkyFerry) + } else if (mapid == MapId.FROM_EREVE_TO_ORBIS) { // To Orbis (SkyFerry) int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(8)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090021) { - chr.changeMap(200000161, 0); + if (chr.getMapId() == MapId.FROM_EREVE_TO_ORBIS) { + chr.changeMap(MapId.ORBIS_STATION, 0); } }, travelTime); - } else if (mapid == 200090020) { // To Ereve From Orbis (SkyFerry) + } else if (mapid == MapId.FROM_ORBIS_TO_EREVE) { // To Ereve From Orbis (SkyFerry) int travelTime = getWorldServer().getTransportationTime((int) MINUTES.toMillis(8)); chr.sendPacket(PacketCreator.getClock(travelTime / 1000)); TimerManager.getInstance().schedule(() -> { - if (chr.getMapId() == 200090020) { - chr.changeMap(130000210, 0); + if (chr.getMapId() == MapId.FROM_ORBIS_TO_EREVE) { + chr.changeMap(MapId.SKY_FERRY, 0); } }, travelTime); } else if (MiniDungeonInfo.isDungeonMap(mapid)) { @@ -2550,7 +2551,7 @@ public class MapleMap { mapEffect.sendStartData(chr.getClient()); } chr.sendPacket(PacketCreator.resetForcedStats()); - if (mapid == 914000200 || mapid == 914000210 || mapid == 914000220) { + if (MapId.isGodlyStatMap(mapid)) { chr.sendPacket(PacketCreator.aranGodlyStats()); } if (chr.getEventInstance() != null && chr.getEventInstance().isTimerStarted()) { @@ -2564,7 +2565,7 @@ public class MapleMap { chr.sendPacket(PacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000))); } - if (mapid == 109060000) { + if (mapid == MapId.EVENT_SNOWBALL) { chr.sendPacket(PacketCreator.rollSnowBall(true, 0, null, null)); } @@ -2591,7 +2592,7 @@ public class MapleMap { public Portal getRandomPlayerSpawnpoint() { List spawnPoints = new ArrayList<>(); for (Portal portal : portals.values()) { - if (portal.getType() >= 0 && portal.getType() <= 1 && portal.getTargetMapId() == 999999999) { + if (portal.getType() >= 0 && portal.getType() <= 1 && portal.getTargetMapId() == MapId.NONE) { spawnPoints.add(portal); } } @@ -2604,7 +2605,7 @@ public class MapleMap { double shortestDistance = Double.POSITIVE_INFINITY; for (Portal portal : portals.values()) { double distance = portal.getPosition().distanceSq(from); - if (portal.getType() == Portal.TELEPORT_PORTAL && distance < shortestDistance && portal.getTargetMapId() != 999999999) { + if (portal.getType() == Portal.TELEPORT_PORTAL && distance < shortestDistance && portal.getTargetMapId() != MapId.NONE) { closest = portal; shortestDistance = distance; } @@ -2617,7 +2618,7 @@ public class MapleMap { double shortestDistance = Double.POSITIVE_INFINITY; for (Portal portal : portals.values()) { double distance = portal.getPosition().distanceSq(from); - if (portal.getType() >= 0 && portal.getType() <= 1 && distance < shortestDistance && portal.getTargetMapId() == 999999999) { + if (portal.getType() >= 0 && portal.getType() <= 1 && distance < shortestDistance && portal.getTargetMapId() == MapId.NONE) { closest = portal; shortestDistance = distance; } @@ -3895,20 +3896,21 @@ public class MapleMap { } public void startEvent(final Character chr) { - if (this.mapid == 109080000 && getCoconut() == null) { + if (this.mapid == MapId.EVENT_COCONUT_HARVEST && getCoconut() == null) { setCoconut(new Coconut(this)); coconut.startEvent(); - } else if (this.mapid == 109040000) { + } else if (this.mapid == MapId.EVENT_PHYSICAL_FITNESS) { chr.setFitness(new Fitness(chr)); chr.getFitness().startFitness(); - } else if (this.mapid == 109030101 || this.mapid == 109030201 || this.mapid == 109030301 || this.mapid == 109030401) { + } else if (this.mapid == MapId.EVENT_OLA_OLA_1 || this.mapid == MapId.EVENT_OLA_OLA_2 || + this.mapid == MapId.EVENT_OLA_OLA_3 || this.mapid == MapId.EVENT_OLA_OLA_4) { chr.setOla(new Ola(chr)); chr.getOla().startOla(); - } else if (this.mapid == 109020001 && getOx() == null) { + } else if (this.mapid == MapId.EVENT_OX_QUIZ && getOx() == null) { setOx(new OxQuiz(this)); getOx().sendQuestion(); setOxQuiz(true); - } else if (this.mapid == 109060000 && getSnowball(chr.getTeam()) == null) { + } else if (this.mapid == MapId.EVENT_SNOWBALL && getSnowball(chr.getTeam()) == null) { setSnowball(0, new Snowball(0, this)); setSnowball(1, new Snowball(1, this)); getSnowball(chr.getTeam()).startEvent(); @@ -3930,13 +3932,13 @@ public class MapleMap { public String getEventNPC() { StringBuilder sb = new StringBuilder(); sb.append("Talk to "); - if (mapid == 60000) { + if (mapid == MapId.SOUTHPERRY) { sb.append("Paul!"); - } else if (mapid == 104000000) { + } else if (mapid == MapId.LITH_HARBOUR) { sb.append("Jean!"); - } else if (mapid == 200000000) { + } else if (mapid == MapId.ORBIS) { sb.append("Martin!"); - } else if (mapid == 220000000) { + } else if (mapid == MapId.LUDIBRIUM) { sb.append("Tony!"); } else { return null; @@ -3945,15 +3947,16 @@ public class MapleMap { } public boolean hasEventNPC() { - return this.mapid == 60000 || this.mapid == 104000000 || this.mapid == 200000000 || this.mapid == 220000000; + return this.mapid == 60000 || this.mapid == MapId.LITH_HARBOUR || this.mapid == MapId.ORBIS || this.mapid == MapId.LUDIBRIUM; } public boolean isStartingEventMap() { - return this.mapid == 109040000 || this.mapid == 109020001 || this.mapid == 109010000 || this.mapid == 109030001 || this.mapid == 109030101; + return this.mapid == MapId.EVENT_PHYSICAL_FITNESS || this.mapid == MapId.EVENT_OX_QUIZ || + this.mapid == MapId.EVENT_FIND_THE_JEWEL || this.mapid == MapId.EVENT_OLA_OLA_0 || this.mapid == MapId.EVENT_OLA_OLA_1; } public boolean isEventMap() { - return this.mapid >= 109010000 && this.mapid < 109050000 || this.mapid > 109050001 && this.mapid <= 109090000; + return this.mapid >= MapId.EVENT_FIND_THE_JEWEL && this.mapid < MapId.EVENT_WINNER || this.mapid > MapId.EVENT_EXIT && this.mapid <= 109090000; } public void setTimeMob(int id, String msg) { diff --git a/src/main/java/server/maps/MiniDungeonInfo.java b/src/main/java/server/maps/MiniDungeonInfo.java index 7c1f36a12f..80c958d3c8 100644 --- a/src/main/java/server/maps/MiniDungeonInfo.java +++ b/src/main/java/server/maps/MiniDungeonInfo.java @@ -21,6 +21,8 @@ */ package server.maps; +import constants.id.MapId; + /** * @author Alan (SharpAceX) */ @@ -29,18 +31,18 @@ public enum MiniDungeonInfo { //http://bbb.hidden-street.net/search_finder/mini%20dungeon - CAVE_OF_MUSHROOMS(105050100, 105050101, 30), - GOLEM_CASTLE_RUINS(105040304, 105040320, 34), - HILL_OF_SANDSTORMS(260020600, 260020630, 30), - HENESYS_PIG_FARM(100020000, 100020100, 30), - DRAKES_BLUE_CAVE(105090311, 105090320, 30), - DRUMMER_BUNNYS_LAIR(221023400, 221023401, 30), - THE_ROUND_TABLE_OF_KENTARUS(240020500, 240020512, 30), - THE_RESTORING_MEMORY(240040511, 240040800, 19), - NEWT_SECURED_ZONE(240040520, 240040900, 19), - PILLAGE_OF_TREASURE_ISLAND(251010402, 251010410, 30), - CRITICAL_ERROR(261020300, 261020301, 30), - LONGEST_RIDE_ON_BYEBYE_STATION(551030000, 551030001, 19); + CAVE_OF_MUSHROOMS(MapId.ANT_TUNNEL_2, MapId.CAVE_OF_MUSHROOMS_BASE, 30), // Horny Mushroom, Zombie Mushroom + GOLEM_CASTLE_RUINS(MapId.SLEEPY_DUNGEON_4, MapId.GOLEMS_CASTLE_RUINS_BASE, 34), // Stone Golem, Mixed Golem + HILL_OF_SANDSTORMS(MapId.SAHEL_2, MapId.HILL_OF_SANDSTORMS_BASE, 30), // Sand Rat + HENESYS_PIG_FARM(MapId.RAIN_FOREST_EAST_OF_HENESYS, MapId.HENESYS_PIG_FARM_BASE, 30), // Pig, Ribbon Pig + DRAKES_BLUE_CAVE(MapId.COLD_CRADLE, MapId.DRAKES_BLUE_CAVE_BASE, 30), // Dark Drake + DRUMMER_BUNNYS_LAIR(MapId.EOS_TOWER_76TH_TO_90TH_FLOOR, MapId.DRUMMER_BUNNYS_LAIR_BASE, 30), // Drumming Bunny + THE_ROUND_TABLE_OF_KENTARUS(MapId.BATTLEFIELD_OF_FIRE_AND_WATER, MapId.ROUND_TABLE_OF_KENTAURUS_BASE, 30), // Blue/Red/Black Kentaurus + THE_RESTORING_MEMORY(MapId.DRAGON_NEST_LEFT_BEHIND, MapId.RESTORING_MEMORY_BASE, 19), // Skelegon, Skelosaurus + NEWT_SECURED_ZONE(MapId.DESTROYED_DRAGON_NEST, MapId.NEWT_SECURED_ZONE_BASE, 19), // Jr. Newtie, Transforming Jr. Newtie + PILLAGE_OF_TREASURE_ISLAND(MapId.RED_NOSE_PIRATE_DEN_2, MapId.PILLAGE_OF_TREASURE_ISLAND_BASE, 30), // Captain + CRITICAL_ERROR(MapId.LAB_AREA_C1, MapId.CRITICAL_ERROR_BASE, 30), // Roid + LONGEST_RIDE_ON_BYEBYE_STATION(MapId.FANTASY_THEME_PARK_3, MapId.LONGEST_RIDE_ON_BYEBYE_STATION, 19); // Froscola, Jester Scarlion private final int baseId; private final int dungeonId; diff --git a/src/main/java/server/maps/SavedLocation.java b/src/main/java/server/maps/SavedLocation.java index dcdb6f5b0c..2f38ff5423 100644 --- a/src/main/java/server/maps/SavedLocation.java +++ b/src/main/java/server/maps/SavedLocation.java @@ -22,16 +22,16 @@ package server.maps; public class SavedLocation { - private int mapid = 102000000; + private final int mapId; private final int portal; - public SavedLocation(int mapid, int portal) { - this.mapid = mapid; + public SavedLocation(int mapId, int portal) { + this.mapId = mapId; this.portal = portal; } public int getMapId() { - return mapid; + return mapId; } public int getPortal() { diff --git a/src/main/java/server/partyquest/AriantColiseum.java b/src/main/java/server/partyquest/AriantColiseum.java index c9a74f1951..2a7b8f50c2 100644 --- a/src/main/java/server/partyquest/AriantColiseum.java +++ b/src/main/java/server/partyquest/AriantColiseum.java @@ -22,6 +22,7 @@ package server.partyquest; import client.Character; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import server.TimerManager; import server.expeditions.Expedition; import server.expeditions.ExpeditionType; @@ -249,9 +250,9 @@ public class AriantColiseum { private ExpeditionType getExpeditionType() { ExpeditionType type; - if (map.getId() == 980010101) { + if (map.getId() == MapId.ARPQ_ARENA_1) { type = ExpeditionType.ARIANT; - } else if (map.getId() == 980010201) { + } else if (map.getId() == MapId.ARPQ_ARENA_2) { type = ExpeditionType.ARIANT1; } else { type = ExpeditionType.ARIANT2; @@ -265,7 +266,7 @@ public class AriantColiseum { cancelAriantSchedules(); for (Character chr : map.getAllPlayers()) { - chr.changeMap(980010010, 0); + chr.changeMap(MapId.ARPQ_KINGS_ROOM, 0); } } @@ -275,7 +276,7 @@ public class AriantColiseum { for (Character chr : exped.getActiveMembers()) { chr.setAriantColiseum(null); - chr.changeMap(980010000, 0); + chr.changeMap(MapId.ARPQ_LOBBY, 0); } map.getWorldServer().registerTimedMapObject(() -> { diff --git a/src/main/java/server/partyquest/Pyramid.java b/src/main/java/server/partyquest/Pyramid.java index a73e56252b..29a22d7bae 100644 --- a/src/main/java/server/partyquest/Pyramid.java +++ b/src/main/java/server/partyquest/Pyramid.java @@ -24,6 +24,7 @@ package server.partyquest; import client.Character; import constants.id.ItemId; +import constants.id.MapId; import net.server.world.Party; import server.ItemInformationProvider; import server.TimerManager; @@ -85,7 +86,7 @@ public class Pyramid extends PartyQuest { gaugeSchedule = TimerManager.getInstance().register(() -> { gauge -= decrease; if (gauge <= 0) { - warp(926010001); + warp(MapId.NETTS_PYRAMID); } }, 1000); diff --git a/src/main/java/tools/PacketCreator.java b/src/main/java/tools/PacketCreator.java index fdfaa8e556..ba2d646fa2 100644 --- a/src/main/java/tools/PacketCreator.java +++ b/src/main/java/tools/PacketCreator.java @@ -34,6 +34,7 @@ import config.YamlConfig; import constants.game.ExpTable; import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.id.NpcId; import constants.inventory.ItemConstants; import constants.skills.Buccaneer; @@ -1079,8 +1080,8 @@ public class PacketCreator { final OutPacket p; if (town) { p = OutPacket.create(SendOpcode.SPAWN_PORTAL); - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); } else { p = OutPacket.create(SendOpcode.REMOVE_DOOR); p.writeByte(0); @@ -3700,14 +3701,14 @@ public class PacketCreator { p.writeInt(mdo.getPosition().x); p.writeInt(mdo.getPosition().y); } else { - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); p.writeInt(0); p.writeInt(0); } } else { - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); p.writeInt(0); p.writeInt(0); } @@ -3811,20 +3812,20 @@ public class PacketCreator { p.writeInt(mdo.getPosition().x); p.writeInt(mdo.getPosition().y); } else { - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); p.writeInt(0); p.writeInt(0); } } else { - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); p.writeInt(0); p.writeInt(0); } } else { - p.writeInt(999999999); - p.writeInt(999999999); + p.writeInt(MapId.NONE); + p.writeInt(MapId.NONE); p.writeInt(0); p.writeInt(0); } diff --git a/src/main/java/tools/packets/Fishing.java b/src/main/java/tools/packets/Fishing.java index b001820082..49b7e9a1d4 100644 --- a/src/main/java/tools/packets/Fishing.java +++ b/src/main/java/tools/packets/Fishing.java @@ -21,8 +21,8 @@ package tools.packets; import client.Character; import config.YamlConfig; -import constants.game.GameConstants; import constants.id.ItemId; +import constants.id.MapId; import constants.inventory.ItemConstants; import server.ItemInformationProvider; import tools.PacketCreator; @@ -72,7 +72,7 @@ public class Fishing { return; } - if (!GameConstants.isFishingArea(chr.getMapId())) { + if (!MapId.isFishingArea(chr.getMapId())) { chr.dropMessage("You are not in a fishing area!"); return; } diff --git a/src/main/java/tools/packets/WeddingPackets.java b/src/main/java/tools/packets/WeddingPackets.java index f5f096171b..3d275de151 100644 --- a/src/main/java/tools/packets/WeddingPackets.java +++ b/src/main/java/tools/packets/WeddingPackets.java @@ -9,6 +9,7 @@ package tools.packets; import client.Character; import client.inventory.Item; import constants.id.ItemId; +import constants.id.MapId; import net.opcodes.SendOpcode; import net.packet.OutPacket; import net.packet.Packet; @@ -139,11 +140,11 @@ public class WeddingPackets extends PacketCreator { } public enum WeddingMap { - WEDDINGTOWN(680000000), - CHAPEL_STARTMAP(680000110), - CATHEDRAL_STARTMAP(680000210), - PHOTOMAP(680000300), - EXITMAP(680000500); + WEDDINGTOWN(MapId.AMORIA), + CHAPEL_STARTMAP(MapId.CHAPEL_WEDDING_ALTAR), + CATHEDRAL_STARTMAP(MapId.CATHEDRAL_WEDDING_ALTAR), + PHOTOMAP(MapId.WEDDING_PHOTO), + EXITMAP(MapId.WEDDING_EXIT); private final int wm; WeddingMap(int wm) {