Index: C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/config/l2jmods.properties =================================================================== --- C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/config/l2jmods.properties (revision 1062) +++ C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/config/l2jmods.properties (working copy) @@ -122,4 +122,46 @@ # TvTEvent Rules TvTEventTargetTeamMembersAllowed = true TvTEventPotionsAllowed = false -TvTEventSummonByItemAllowed = false \ No newline at end of file +TvTEventSummonByItemAllowed = false + + +#--------------------------------------------------------------- +# Fishing event - +#--------------------------------------------------------------- +# System: +# For every colour of fish the chance is increased by a count. +# The formula is "begin + count * order of colour". Green doesn't count. +# Example: +# Blue beginner fish, 2'nd colour: 9% chance +# Red chest, 6'th colour: 5 + 5*6 = 35% chance +# +# Player gain fish or reward. +# Colors: green, jade, blue, yellow, orange, purple, red, white, black +# +# Enable Fishing Event +FishingEventEnable = true +# Chance: +# Beginners fish +FishingEventBeginnersBegin = 5 +FishingEventBeginnersCount = 4 +# Normal fish +FishingEventNormalBegin = 20 +FishingEventNormalCount = 8 +# Upper grade fish +FishingEventUpperBegin = 25 +FishingEventUpperCount = 8 +# Chest +FishingEventChestBegin = 5 +FishingEventChestCount = 10 +# Event reward id +FishingEventRewardId = 8959 +# Event reward amount (qty is random qty from 1(inclusive) to x(inclusive)) +FishingEventFishRewardQty = 1 +FishingEventChestRewardQty = 3 +# Penalty monster drop reward itemu (monster do not drop reward item if Fishing event is not enabled) +# Formula for drop from penalty monster is "begin + count * (lvl/10 -1) +# Example: +# Caught frog lvl 10, chance 20 + 5 * (10/10 -1) = 20 +FishingEventMonsterDrop = true +FishingEventMonsterDropChanceBegin = 20 +FishingEventMonsterDropChanceCount = 5 \ No newline at end of file Index: C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/Config.java =================================================================== --- C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/Config.java (revision 1062) +++ C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/Config.java (working copy) @@ -805,6 +805,23 @@ public static boolean L2JMOD_WEDDING_SAMESEX; public static boolean L2JMOD_WEDDING_FORMALWEAR; public static int L2JMOD_WEDDING_DIVORCE_COSTS; + + /** L2JMOD Fishing event */ + public static boolean FISHING_EVENT_ENABLE; + public static int FISHING_EVENT_BEGINNERS_BEGIN; + public static int FISHING_EVENT_BEGINNERS_COUNT; + public static int FISHING_EVENT_NORMAL_BEGIN; + public static int FISHING_EVENT_NORMAL_COUNT; + public static int FISHING_EVENT_UPPER_BEGIN; + public static int FISHING_EVENT_UPPER_COUNT; + public static int FISHING_EVENT_CHEST_BEGIN; + public static int FISHING_EVENT_CHEST_COUNT; + public static int FISHING_EVENT_REWARD_ID; + public static int FISHING_EVENT_FISH_REWARD_QTY; + public static int FISHING_EVENT_CHEST_REWARD_QTY; + public static boolean FISHING_EVENT_MONSTER_DROP; + public static int FISHING_EVENT_MONSTER_DROP_CHANCE_BEGIN; + public static int FISHING_EVENT_MONSTER_DROP_CHANCE_COUNT; // Packet information /** Count the amount of packets per minute ? */ @@ -1739,7 +1756,24 @@ L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingAllowSameSex", "False")); L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingFormalWear", "True")); L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20")); - + + /** L2JMOD Fishing event */ + FISHING_EVENT_ENABLE = Boolean.parseBoolean(L2JModSettings.getProperty("FishingEventEnable", "false")); + FISHING_EVENT_BEGINNERS_BEGIN = Integer.parseInt(L2JModSettings.getProperty("FishingEventBeginnersBegin", "5")); + FISHING_EVENT_BEGINNERS_COUNT = Integer.parseInt(L2JModSettings.getProperty("FishingEventBeginnersCount", "2")); + FISHING_EVENT_NORMAL_BEGIN = Integer.parseInt(L2JModSettings.getProperty("FishingEventNormalBegin", "10")); + FISHING_EVENT_NORMAL_COUNT = Integer.parseInt(L2JModSettings.getProperty("FishingEventNormalCount", "3")); + FISHING_EVENT_UPPER_BEGIN = Integer.parseInt(L2JModSettings.getProperty("FishingEventUpperBegin", "15")); + FISHING_EVENT_UPPER_COUNT = Integer.parseInt(L2JModSettings.getProperty("FishingEventUpperCount", "3")); + FISHING_EVENT_CHEST_BEGIN = Integer.parseInt(L2JModSettings.getProperty("FishingEventChestBegin", "5")); + FISHING_EVENT_CHEST_COUNT = Integer.parseInt(L2JModSettings.getProperty("FishingEventChestCount", "5")); + FISHING_EVENT_REWARD_ID = Integer.parseInt(L2JModSettings.getProperty("FishingEventRewardId", "8959")); + FISHING_EVENT_FISH_REWARD_QTY = Integer.parseInt(L2JModSettings.getProperty("FishingEventFishRewardQty", "1")); + FISHING_EVENT_CHEST_REWARD_QTY = Integer.parseInt(L2JModSettings.getProperty("FishingEventChestRewardQty", "3")); + FISHING_EVENT_MONSTER_DROP = Boolean.parseBoolean(L2JModSettings.getProperty("FishingEventMonsterDrop", "false")); + FISHING_EVENT_MONSTER_DROP_CHANCE_BEGIN = Integer.parseInt(L2JModSettings.getProperty("FishingEventMonsterDropChanceBegin", "20")); + FISHING_EVENT_MONSTER_DROP_CHANCE_COUNT = Integer.parseInt(L2JModSettings.getProperty("FishingEventMonsterDropChanceCount", "5")); + if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) { TVT_EVENT_ENABLED = false; Index: C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Attackable.java =================================================================== --- C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Attackable.java (revision 1062) +++ C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Attackable.java (working copy) @@ -1218,6 +1218,16 @@ if (Config.AUTO_LOOT) player.addItem("ChampionLoot", item.getItemId(), item.getCount(), this, true); // Give this or these Item(s) to the L2PcInstance that has killed the L2Attackable else DropItem(player, item); } + + if (Config.FISHING_EVENT_ENABLE == true && Config.FISHING_EVENT_MONSTER_DROP == true){ + if (this.getTemplate().type.toString().equals("L2PenaltyMonster")){ + int amount = this.getTemplate().level/10; + if (Rnd.get(100)<= (Config.FISHING_EVENT_MONSTER_DROP_CHANCE_BEGIN+Config.FISHING_EVENT_MONSTER_DROP_CHANCE_COUNT*(amount-1))){ + RewardItem item = new RewardItem(Config.FISHING_EVENT_REWARD_ID,amount); + player.addItem("FishingLoot", item.getItemId(), item.getCount(), this, true); + } + } + } //Instant Item Drop :> double rateHp = getStat().calcStat(Stats.MAX_HP , 1, this, null); Index: C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Fishing.java =================================================================== --- C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Fishing.java (revision 1062) +++ C:/Documents and Settings/Sparrowhawk/workspace/l2J/java/net/sf/l2j/gameserver/model/L2Fishing.java (working copy) @@ -18,7 +18,7 @@ package net.sf.l2j.gameserver.model; import java.util.concurrent.Future; - +import net.sf.l2j.Config; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.datatables.NpcTable; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; @@ -50,6 +50,7 @@ private double _regenHp; private boolean _isUpperGrade; private int _lureType; + private FishData _FishData; public void run() { @@ -72,6 +73,7 @@ public L2Fishing(L2PcInstance Fisher, FishData fish, boolean isNoob, boolean isUpperGrade) { _fisher = Fisher; + _FishData = fish; _fishMaxHp = fish.getHP(); _fishCurHp = _fishMaxHp; _regenHp = fish.getHpRegen(); @@ -136,7 +138,41 @@ } else { _fisher.sendPacket(new SystemMessage(SystemMessageId.YOU_CAUGHT_SOMETHING)); - _fisher.addItem("Fishing", _fishId, 1, null, true); + if(Config.FISHING_EVENT_ENABLE == true){ + int begin = 0; + int count = 0; + int drop = Rnd.get(Config.FISHING_EVENT_FISH_REWARD_QTY) + 1; + if (_FishData.getGroup() == 0){ //beginners + begin = Config.FISHING_EVENT_BEGINNERS_BEGIN; + count = Config.FISHING_EVENT_BEGINNERS_COUNT; + } + else if (_FishData.getGroup() == 1){ //normal + begin = Config.FISHING_EVENT_NORMAL_BEGIN; + count = Config.FISHING_EVENT_NORMAL_COUNT; + } + else if (_FishData.getGroup() == 2){ //upper grade + begin = Config.FISHING_EVENT_UPPER_BEGIN; + count = Config.FISHING_EVENT_UPPER_COUNT; + } + if (_FishData.getType()==3){ //chest + begin = Config.FISHING_EVENT_CHEST_BEGIN; + count = Config.FISHING_EVENT_CHEST_COUNT; + drop = Rnd.get(Config.FISHING_EVENT_CHEST_REWARD_QTY) + 1; + } + int lvlmultiplier = _FishData.getLevel() / 3; + if(_FishData.getLevel()%3 == 0) { + lvlmultiplier -= 1; + } + if(Rnd.get(100) <= (begin + count*lvlmultiplier)){ + _fisher.addItem("Fishing", Config.FISHING_EVENT_REWARD_ID, drop, null, true); + } + else { + _fisher.addItem("Fishing", _fishId, 1, null, true); + } + } + else { + _fisher.addItem("Fishing", _fishId, 1, null, true); + } } } _fisher.EndFishing(win);