From cd6d0d7188ce5a2177a1539f9b333038f366b9cf Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 10 Aug 2015 16:00:44 +0000 Subject: [PATCH] Sync with L2jServer HighFive Aug 10th 2015. --- trunk/dist/game/data/Routes.xml | 203 ++++++++++-------- .../dist/login/config/LoginServer.properties | 2 +- trunk/dist/tools/sql/game/spawnlist.sql | 27 +-- .../l2jserver/gameserver/model/L2Clan.java | 12 +- .../model/actor/instance/L2PcInstance.java | 22 +- .../model/actor/tasks/player/PetFeedTask.java | 98 ++++----- .../model/olympiad/OlympiadGameTask.java | 10 +- 7 files changed, 199 insertions(+), 175 deletions(-) diff --git a/trunk/dist/game/data/Routes.xml b/trunk/dist/game/data/Routes.xml index 4fdd2d3c69..b1967d0dd5 100644 --- a/trunk/dist/game/data/Routes.xml +++ b/trunk/dist/game/data/Routes.xml @@ -191,125 +191,160 @@ - - - - + + + + + - - - - + + + + + + - - - - - - - + + + + + + + - - - + + + + - - - - - - + + + + + + + - - - - + + + + + + + + - - - - - + + + + + + - - - - + + + + - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - + + + + + + + + + diff --git a/trunk/dist/login/config/LoginServer.properties b/trunk/dist/login/config/LoginServer.properties index 4afd6d04ca..4db4d3b30b 100644 --- a/trunk/dist/login/config/LoginServer.properties +++ b/trunk/dist/login/config/LoginServer.properties @@ -46,7 +46,7 @@ LoginBlockAfterBan = 900 # Default: True AcceptNewGameServer = True -# Flood Protection. All values are in MILISECONDS. +# Flood Protection. All values are in milliseconds. # Default: True EnableFloodProtection = True diff --git a/trunk/dist/tools/sql/game/spawnlist.sql b/trunk/dist/tools/sql/game/spawnlist.sql index 552b71b4bc..9b98039158 100644 --- a/trunk/dist/tools/sql/game/spawnlist.sql +++ b/trunk/dist/tools/sql/game/spawnlist.sql @@ -24089,9 +24089,9 @@ INSERT INTO `spawnlist` VALUES ("dragon_valley", 1, 22815, 88468, 112224, -3256, 0, 0, 11978, 60, 0, 0, 0), ("dragon_valley", 1, 22815, 76971, 117518, -3718, 0, 0, 4767, 60, 0, 0, 0), -- Mesmer Drake -("dragon_valley", 1, 22820, 80733, 109807, -3056, 0, 0, 30185, 60, 0, 0, 0), -("dragon_valley", 1, 22820, 83346, 112987, -3048, 0, 0, 64221, 60, 0, 0, 0), -("dragon_valley", 1, 22820, 86980, 120934, -3040, 0, 0, 25947, 60, 0, 0, 0), +("dragon_valley", 1, 22820, 85452, 108916, -3202, 0, 0, 31829, 240, 0, 0, 0), +("dragon_valley", 1, 22820, 82028, 113982, -3176, 0, 0, 25886, 240, 0, 0, 0), +("dragon_valley", 1, 22820, 83429, 118625, -2996, 0, 0, 13049, 240, 0, 0, 0), -- Emerald Drake ("dragon_valley", 1, 22829, 95286, 112420, -3056, 0, 0, 58614, 60, 0, 0, 0), ("dragon_valley", 1, 22829, 94525, 113255, -3048, 0, 0, 3890, 60, 0, 0, 0), @@ -24175,8 +24175,8 @@ INSERT INTO `spawnlist` VALUES ("dragon_valley", 1, 22830, 97463, 109673, -3680, 0, 0, 62490, 60, 0, 0, 0), ("dragon_valley", 1, 22830, 96837, 109637, -3696, 0, 0, 32816, 60, 0, 0, 0), -- Dust Dragon Tracker -("dragon_valley", 1, 22834, 89602, 108262, -3032, 0, 0, 3788, 60, 0, 0, 0), -("dragon_valley", 1, 22834, 94790, 107669, -3050, 0, 0, 54609, 60, 0, 0, 0), +("dragon_valley", 1, 22834, 88660, 105889, -3138, 0, 0, 20133, 240, 0, 0, 0), +("dragon_valley", 1, 22834, 93937, 107688, -3026, 0, 0, 57122, 240, 0, 0, 0), -- Necromancer of the Valley ("dragon_valley", 1, 22858, 76441, 117265, -3748, 0, 0, 52663, 60, 0, 0, 0), ("dragon_valley", 1, 22858, 77388, 116948, -3805, 0, 0, 62442, 60, 0, 0, 0), @@ -29678,17 +29678,18 @@ INSERT INTO `spawnlist` VALUES ("dragon_valley", 1, 22828, 117749, 122992, -3112, 0, 0, 50766, 60, 0, 0, 0), ("dragon_valley", 1, 22828, 120448, 116760, -3640, 0, 0, 31676, 60, 0, 0, 0), -- Dragon Tracker of the Valley -("dragon_valley", 1, 22831, 113097, 110311, -3000, 0, 0, 30799, 60, 0, 0, 0), +("dragon_valley", 1, 22831, 110670, 110471, -3061, 0, 0, 30799, 300, 0, 0, 0), -- Dragon Scout of the Valley -("dragon_valley", 1, 22832, 113482, 115162, -3200, 0, 0, 64293, 60, 0, 0, 0), -("dragon_valley", 1, 22832, 122135, 108852, -2961, 0, 0, 36885, 60, 0, 0, 0), +("dragon_valley", 1, 22832, 114694, 114701, -3151, 0, 0, 799, 300, 0, 0, 0), +("dragon_valley", 1, 22832, 117266, 111137, -3054, 0, 0, 45144, 300, 0, 0, 0), +("dragon_valley", 1, 22832, 124950, 109275, -3053, 0, 0, 35245, 300, 0, 0, 0), -- Sand Drake Tracker -("dragon_valley", 1, 22833, 123997, 108488, -2986, 0, 0, 58062, 60, 0, 0, 0), -("dragon_valley", 1, 22833, 114890, 115234, -3217, 0, 0, 59684, 60, 0, 0, 0), +("dragon_valley", 1, 22833, 123677, 108508, -3015, 0, 0, 58062, 360, 0, 0, 0), +("dragon_valley", 1, 22833, 113619, 117481, -3129, 0, 0, 22337, 360, 0, 0, 0), -- Dust Dragon Tracker -("dragon_valley", 1, 22834, 109329, 115546, -3112, 0, 0, 18198, 60, 0, 0, 0), -("dragon_valley", 1, 22834, 119960, 109355, -2962, 0, 0, 26432, 60, 0, 0, 0), -("dragon_valley", 1, 22834, 111281, 110266, -3043, 0, 0, 31060, 60, 0, 0, 0), +("dragon_valley", 1, 22834, 108770, 117414, -3042, 0, 0, 38802, 240, 0, 0, 0), +("dragon_valley", 1, 22834, 112508, 110567, -2982, 0, 0, 26432, 240, 0, 0, 0), +("dragon_valley", 1, 22834, 115880, 110205, -3035, 0, 0, 31060, 240, 0, 0, 0), -- Hungry Parasitic Leech ("dragon_valley", 1, 22860, 122868, 115636, -3632, 0, 0, 26803, 60, 0, 0, 0), ("dragon_valley", 1, 22860, 122861, 115697, -3632, 0, 0, 21516, 60, 0, 0, 0), diff --git a/trunk/java/com/l2jserver/gameserver/model/L2Clan.java b/trunk/java/com/l2jserver/gameserver/model/L2Clan.java index 88437fb483..0e1f2860b6 100644 --- a/trunk/java/com/l2jserver/gameserver/model/L2Clan.java +++ b/trunk/java/com/l2jserver/gameserver/model/L2Clan.java @@ -28,8 +28,8 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -134,8 +134,8 @@ public class L2Clan implements IIdentifiable, INamable private int _bloodOathCount; private final ItemContainer _warehouse = new ClanWarehouse(this); - private final List _atWarWith = new CopyOnWriteArrayList<>(); - private final List _atWarAttackers = new CopyOnWriteArrayList<>(); + private final Set _atWarWith = ConcurrentHashMap.newKeySet(); + private final Set _atWarAttackers = ConcurrentHashMap.newKeySet(); private Forum _forum; @@ -1598,7 +1598,7 @@ public class L2Clan implements IIdentifiable, INamable return _warehouse; } - public boolean isAtWarWith(Integer id) + public boolean isAtWarWith(int id) { return _atWarWith.contains(id); } @@ -1658,12 +1658,12 @@ public class L2Clan implements IIdentifiable, INamable return (_atWarWith != null) && !_atWarWith.isEmpty(); } - public List getWarList() + public Set getWarList() { return _atWarWith; } - public List getAttackerList() + public Set getAttackerList() { return _atWarAttackers; } diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java index 66e8b20673..c306f64573 100644 --- a/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java +++ b/trunk/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java @@ -130,7 +130,6 @@ import com.l2jserver.gameserver.model.L2ManufactureItem; import com.l2jserver.gameserver.model.L2Object; import com.l2jserver.gameserver.model.L2Party; import com.l2jserver.gameserver.model.L2Party.messageType; -import com.l2jserver.gameserver.model.L2PetData; import com.l2jserver.gameserver.model.L2PetLevelData; import com.l2jserver.gameserver.model.L2PremiumItem; import com.l2jserver.gameserver.model.L2Radar; @@ -434,7 +433,6 @@ public final class L2PcInstance extends L2Playable /** data for mounted pets */ private int _controlItemId; - private L2PetData _data; private L2PetLevelData _leveldata; private int _curFeed; protected Future _mountFeedTask; @@ -5821,7 +5819,6 @@ public final class L2PcInstance extends L2Playable stopWarnUserTakeBreak(); stopWaterTask(); stopFeed(); - clearPetData(); storePetFood(_mountNpcId); stopRentPet(); stopPvpRegTask(); @@ -6509,7 +6506,6 @@ public final class L2PcInstance extends L2Playable getEffectList().stopAllToggles(); setMount(pet.getId(), pet.getLevel()); setMountObjectID(pet.getControlObjectId()); - clearPetData(); startFeed(pet.getId()); broadcastPacket(new Ride(this)); @@ -6529,7 +6525,6 @@ public final class L2PcInstance extends L2Playable getEffectList().stopAllToggles(); setMount(npcId, getLevel()); - clearPetData(); setMountObjectID(controlItemObjId); broadcastPacket(new Ride(this)); @@ -6653,7 +6648,6 @@ public final class L2PcInstance extends L2Playable int petId = _mountNpcId; setMount(0, 0); stopFeed(); - clearPetData(); if (wasFlying) { removeSkill(CommonSkill.WYVERN_BREATH.getSkill()); @@ -13033,20 +13027,6 @@ public final class L2PcInstance extends L2Playable } } - private final void clearPetData() - { - _data = null; - } - - public final L2PetData getPetData(int npcId) - { - if (_data == null) - { - _data = PetDataTable.getInstance().getPetData(npcId); - } - return _data; - } - private final L2PetLevelData getPetLevelData(int npcId) { if (_leveldata == null) @@ -13091,7 +13071,7 @@ public final class L2PcInstance extends L2Playable public boolean isHungry() { - return _canFeed ? (getCurrentFeed() < ((getPetData(getMountNpcId()).getHungryLimit() / 100f) * getPetLevelData(getMountNpcId()).getPetMaxFeed())) : false; + return _canFeed ? (getCurrentFeed() < ((PetDataTable.getInstance().getPetData(getMountNpcId()).getHungryLimit() / 100f) * getPetLevelData(getMountNpcId()).getPetMaxFeed())) : false; } public void enteredNoLanding(int delay) diff --git a/trunk/java/com/l2jserver/gameserver/model/actor/tasks/player/PetFeedTask.java b/trunk/java/com/l2jserver/gameserver/model/actor/tasks/player/PetFeedTask.java index f282d7d66e..2654bb45bb 100644 --- a/trunk/java/com/l2jserver/gameserver/model/actor/tasks/player/PetFeedTask.java +++ b/trunk/java/com/l2jserver/gameserver/model/actor/tasks/player/PetFeedTask.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import com.l2jserver.gameserver.data.xml.impl.PetDataTable; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.handler.ItemHandler; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; @@ -47,62 +48,61 @@ public class PetFeedTask implements Runnable @Override public void run() { - if (_player != null) + try { - try + if (!_player.isMounted() || (_player.getMountNpcId() == 0) || (PetDataTable.getInstance().getPetData(_player.getMountNpcId()) == null)) { - if (!_player.isMounted() || (_player.getMountNpcId() == 0) || (_player.getPetData(_player.getMountNpcId()) == null)) + _player.stopFeed(); + return; + } + + if (_player.getCurrentFeed() > _player.getFeedConsume()) + { + // eat + _player.setCurrentFeed(_player.getCurrentFeed() - _player.getFeedConsume()); + } + else + { + // go back to pet control item, or simply said, unsummon it + _player.setCurrentFeed(0); + _player.stopFeed(); + _player.dismount(); + _player.sendPacket(SystemMessageId.YOU_ARE_OUT_OF_FEED_MOUNT_STATUS_CANCELED); + return; + } + + final List foodIds = PetDataTable.getInstance().getPetData(_player.getMountNpcId()).getFood(); + if (foodIds.isEmpty()) + { + return; + } + + L2ItemInstance food = null; + for (int id : foodIds) + { + // TODO: possibly pet inv? + food = _player.getInventory().getItemByItemId(id); + if (food != null) { - _player.stopFeed(); - return; - } - - if (_player.getCurrentFeed() > _player.getFeedConsume()) - { - // eat - _player.setCurrentFeed(_player.getCurrentFeed() - _player.getFeedConsume()); - } - else - { - // go back to pet control item, or simply said, unsummon it - _player.setCurrentFeed(0); - _player.stopFeed(); - _player.dismount(); - _player.sendPacket(SystemMessageId.YOU_ARE_OUT_OF_FEED_MOUNT_STATUS_CANCELED); - } - - List foodIds = _player.getPetData(_player.getMountNpcId()).getFood(); - if (foodIds.isEmpty()) - { - return; - } - L2ItemInstance food = null; - for (int id : foodIds) - { - // TODO: possibly pet inv? - food = _player.getInventory().getItemByItemId(id); - if (food != null) - { - break; - } - } - - if ((food != null) && _player.isHungry()) - { - IItemHandler handler = ItemHandler.getInstance().getHandler(food.getEtcItem()); - if (handler != null) - { - handler.useItem(_player, food, false); - SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_WAS_HUNGRY_SO_IT_ATE_S1); - sm.addItemName(food.getId()); - _player.sendPacket(sm); - } + break; } } - catch (Exception e) + + if ((food != null) && _player.isHungry()) { - _log.log(Level.SEVERE, "Mounted Pet [NpcId: " + _player.getMountNpcId() + "] a feed task error has occurred", e); + IItemHandler handler = ItemHandler.getInstance().getHandler(food.getEtcItem()); + if (handler != null) + { + handler.useItem(_player, food, false); + SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_PET_WAS_HUNGRY_SO_IT_ATE_S1); + sm.addItemName(food.getId()); + _player.sendPacket(sm); + } } } + catch (Exception e) + { + _log.log(Level.SEVERE, "Mounted Pet [NpcId: " + _player.getMountNpcId() + "] a feed task error has occurred", e); + } } } diff --git a/trunk/java/com/l2jserver/gameserver/model/olympiad/OlympiadGameTask.java b/trunk/java/com/l2jserver/gameserver/model/olympiad/OlympiadGameTask.java index 3ce92526f5..7569127eb3 100644 --- a/trunk/java/com/l2jserver/gameserver/model/olympiad/OlympiadGameTask.java +++ b/trunk/java/com/l2jserver/gameserver/model/olympiad/OlympiadGameTask.java @@ -98,6 +98,7 @@ public final class OlympiadGameTask implements Runnable BATTLE_COUNTDOWN_SECOND, BATTLE_STARTED, BATTLE_IN_PROGRESS, + GAME_CANCELLED, GAME_STOPPED, TELEPORT_TO_TOWN, CLEANUP, @@ -201,7 +202,7 @@ public final class OlympiadGameTask implements Runnable { if (!startGame()) { - _state = GameState.GAME_STOPPED; + _state = GameState.GAME_CANCELLED; break; } @@ -273,6 +274,13 @@ public final class OlympiadGameTask implements Runnable break; } + // Battle cancelled before teleport participants to the stadium + case GAME_CANCELLED: + { + stopGame(); + _state = GameState.CLEANUP; + break; + } // End of the battle case GAME_STOPPED: {