Automating Fishing.
This commit is contained in:
parent
7d5e51e914
commit
687969b37f
@ -93,7 +93,7 @@ public final class Fishing extends AbstractEffect
|
||||
}
|
||||
else
|
||||
{
|
||||
player.endFishing(false);
|
||||
player.endFishing(false, false);
|
||||
}
|
||||
|
||||
player.sendPacket(SystemMessageId.YOUR_ATTEMPT_AT_FISHING_HAS_BEEN_CANCELLED);
|
||||
@ -134,7 +134,7 @@ public final class Fishing extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Config.SERVER_CLASSIC_SUPPORT && (player.getLevel() < 85))
|
||||
if (player.getLevel() < 85)
|
||||
{
|
||||
player.sendMessage("You must be level 85 or higher to fish.");
|
||||
return;
|
||||
|
@ -217,6 +217,7 @@ import com.l2jserver.gameserver.model.fishing.L2Fish;
|
||||
import com.l2jserver.gameserver.model.fishing.L2Fishing;
|
||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||
import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.model.holders.SkillUseHolder;
|
||||
import com.l2jserver.gameserver.model.interfaces.IEventListener;
|
||||
import com.l2jserver.gameserver.model.interfaces.ILocational;
|
||||
@ -302,7 +303,6 @@ import com.l2jserver.gameserver.network.serverpackets.ObservationMode;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ObservationReturn;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowUpdate;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PetInventoryUpdate;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PlaySound;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListDelete;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PrivateStoreListBuy;
|
||||
@ -752,6 +752,7 @@ public final class L2PcInstance extends L2Playable
|
||||
private int _fishx = 0;
|
||||
private int _fishy = 0;
|
||||
private int _fishz = 0;
|
||||
private final static SkillHolder FISHING_SKILL = new SkillHolder(1312, 1);
|
||||
|
||||
private volatile Set<Integer> _transformAllowedSkills;
|
||||
private ScheduledFuture<?> _taskRentPet;
|
||||
@ -11899,20 +11900,20 @@ public final class L2PcInstance extends L2Playable
|
||||
if ((fish == null) || fish.isEmpty())
|
||||
{
|
||||
sendMessage("Error - Fish are not defined");
|
||||
endFishing(false);
|
||||
endFishing(false, false);
|
||||
return;
|
||||
}
|
||||
// Use a copy constructor else the fish data may be over-written below
|
||||
_fish = fish.get(Rnd.get(fish.size())).clone();
|
||||
fish.clear();
|
||||
sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
||||
// sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
||||
if (!GameTimeController.getInstance().isNight() && _lure.isNightLure())
|
||||
{
|
||||
_fish.setFishGroup(-1);
|
||||
}
|
||||
// sendMessage("Hook x,y: " + _x + "," + _y + " - Water Z, Player Z:" + _z + ", " + getZ()); //debug line, uncoment to show coordinates used in fishing.
|
||||
broadcastPacket(new ExFishingStart(this, _fish.getFishGroup(), _x, _y, _z, _lure.isNightLure()));
|
||||
sendPacket(new PlaySound(1, "SF_P_01", 0, 0, 0, 0, 0));
|
||||
// sendPacket(new PlaySound(1, "SF_P_01", 0, 0, 0, 0, 0));
|
||||
startLookingForFishTask();
|
||||
}
|
||||
|
||||
@ -11951,7 +11952,7 @@ public final class L2PcInstance extends L2Playable
|
||||
checkDelay = _fish.getGutsCheckTime() * 66;
|
||||
}
|
||||
}
|
||||
_taskforfish = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), 10000, checkDelay);
|
||||
_taskforfish = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new LookingForFishTask(this, _fish.getStartCombatTime(), _fish.getFishGuts(), _fish.getFishGroup(), isNoob, isUpperGrade), Rnd.get(10000, 40000), checkDelay);
|
||||
}
|
||||
}
|
||||
|
||||
@ -12242,7 +12243,7 @@ public final class L2PcInstance extends L2Playable
|
||||
_fishCombat = new L2Fishing(this, _fish, isNoob, isUpperGrade, _lure.getId());
|
||||
}
|
||||
|
||||
public void endFishing(boolean win)
|
||||
public void endFishing(boolean win, boolean continueFishing)
|
||||
{
|
||||
_fishing = false;
|
||||
_fishx = 0;
|
||||
@ -12256,11 +12257,21 @@ public final class L2PcInstance extends L2Playable
|
||||
_fishCombat = null;
|
||||
_lure = null;
|
||||
// Ends fishing
|
||||
broadcastPacket(new ExFishingEnd(win, this));
|
||||
addExpAndSp(_fish.getExp(), _fish.getSp()); // Reward Player with Exp and Sp
|
||||
sendPacket(SystemMessageId.YOU_REEL_YOUR_LINE_IN_AND_STOP_FISHING);
|
||||
setIsImmobilized(false);
|
||||
if (win && continueFishing)
|
||||
{
|
||||
addExpAndSp(_fish.getExp(), _fish.getSp()); // Reward Player with Exp and Sp
|
||||
}
|
||||
broadcastPacket(new ExFishingEnd(continueFishing ? (win ? 1 : 0) : 2, this));
|
||||
stopLookingForFishTask();
|
||||
if (!continueFishing)
|
||||
{
|
||||
sendPacket(SystemMessageId.YOU_REEL_YOUR_LINE_IN_AND_STOP_FISHING);
|
||||
setIsImmobilized(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
useMagic(FISHING_SKILL.getSkill(), false, true);
|
||||
}
|
||||
}
|
||||
|
||||
public L2Fishing getFishCombat()
|
||||
|
@ -50,7 +50,7 @@ public class LookingForFishTask implements Runnable
|
||||
{
|
||||
if (System.currentTimeMillis() >= _endTaskTime)
|
||||
{
|
||||
_player.endFishing(false);
|
||||
_player.endFishing(false, true);
|
||||
return;
|
||||
}
|
||||
if (_fishGroup == -1)
|
||||
|
@ -20,6 +20,7 @@ package com.l2jserver.gameserver.model.fishing;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.data.xml.impl.FishingMonstersData;
|
||||
import com.l2jserver.gameserver.instancemanager.FishingChampionshipManager;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
@ -105,10 +106,10 @@ public class L2Fishing implements Runnable
|
||||
// Succeeded in getting a bite
|
||||
// _fisher.sendPacket(SystemMessageId.YOU_VE_GOT_A_BITE);
|
||||
|
||||
// if (_fishAiTask == null)
|
||||
// {
|
||||
// _fishAiTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this, 1000, 1000);
|
||||
// }
|
||||
if ((_fishAiTask == null) && _fisher.isFishing())
|
||||
{
|
||||
_fishAiTask = ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(this, 1000, 1000);
|
||||
}
|
||||
|
||||
// TODO: New fishing system?
|
||||
doDie(true);
|
||||
@ -169,7 +170,8 @@ public class L2Fishing implements Runnable
|
||||
}
|
||||
}
|
||||
}
|
||||
_fisher.endFishing(win);
|
||||
|
||||
_fisher.endFishing(win, true);
|
||||
_fisher = null;
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.clientpackets;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
@ -41,11 +42,19 @@ public class RequestExAutoFish extends L2GameClientPacket
|
||||
protected void runImpl()
|
||||
{
|
||||
final L2PcInstance activeChar = getActiveChar();
|
||||
if ((activeChar == null) || activeChar.isFishing())
|
||||
if (activeChar == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
activeChar.useMagic(FISHING_SKILL.getSkill(), false, true);
|
||||
if (activeChar.isFishing())
|
||||
{
|
||||
activeChar.endFishing(true, false);// TODO: Correct Animation
|
||||
}
|
||||
else
|
||||
{
|
||||
activeChar.sendPacket(SystemMessageId.YOU_CAST_YOUR_LINE_AND_START_TO_FISH);
|
||||
activeChar.useMagic(FISHING_SKILL.getSkill(), false, true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -22,14 +22,14 @@ import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
|
||||
/**
|
||||
* @author -Wooden-
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExFishingEnd extends L2GameServerPacket
|
||||
{
|
||||
private final boolean _win;
|
||||
private final int _win;
|
||||
private final L2Character _activeChar;
|
||||
|
||||
public ExFishingEnd(boolean win, L2PcInstance character)
|
||||
public ExFishingEnd(int win, L2PcInstance character)
|
||||
{
|
||||
_win = win;
|
||||
_activeChar = character;
|
||||
@ -41,6 +41,6 @@ public class ExFishingEnd extends L2GameServerPacket
|
||||
writeC(0xFE);
|
||||
writeH(0x1F);
|
||||
writeD(_activeChar.getObjectId());
|
||||
writeC(_win ? 1 : 0);
|
||||
writeC(_win); // lose 0 - win 1 - quit 2
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user