Feather of Blessing reuse delay.

Contributed by Fakee.
This commit is contained in:
MobiusDevelopment
2022-06-22 08:47:48 +00:00
parent c312007be8
commit 6098ba52a0
50 changed files with 450 additions and 80 deletions

View File

@@ -533,16 +533,17 @@ public class EnterWorld implements IClientIncomingPacket
PetitionManager.getInstance().checkPetitionMessages(player);
}
player.onPlayerEnter();
player.sendPacket(new SkillCoolTime(player));
player.sendPacket(new ExVoteSystemInfo(player));
if (player.isAlikeDead()) // dead or fake dead
{
// no broadcast needed since the player will already spawn dead to others
player.sendPacket(new Die(player));
}
player.onPlayerEnter();
player.sendPacket(new SkillCoolTime(player));
player.sendPacket(new ExVoteSystemInfo(player));
for (Item item : player.getInventory().getItems())
{
if (item.isTimeLimitedItem())

View File

@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets;
import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.ClanHallData;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.TeleportWhereType;
import org.l2jmobius.gameserver.instancemanager.CastleManager;
import org.l2jmobius.gameserver.instancemanager.FortManager;
@@ -37,6 +38,7 @@ import org.l2jmobius.gameserver.model.siege.Castle;
import org.l2jmobius.gameserver.model.siege.Castle.CastleFunction;
import org.l2jmobius.gameserver.model.siege.Fort;
import org.l2jmobius.gameserver.model.siege.Fort.FortFunction;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.PacketLogger;
@@ -245,9 +247,18 @@ public class RequestRestartPoint implements IClientIncomingPacket
PacketLogger.warning("Player [" + player.getName() + "] called RestartPointPacket - Fixed and he isn't festival participant!");
return;
}
if (player.isGM() || player.destroyItemByItemId("Feather", 10649, 1, player, false) || player.destroyItemByItemId("Feather", 13300, 1, player, false) || player.destroyItemByItemId("Feather", 13128, 1, player, false))
if (player.isGM())
{
player.doRevive(100.00);
player.doRevive(100);
}
else if (player.destroyItemByItemId("Feather", 10649, 1, player, false) || player.destroyItemByItemId("Feather", 13300, 1, player, false) || player.destroyItemByItemId("Feather", 13128, 1, player, false))
{
final Skill skill = SkillData.getInstance().getSkill(7008, 1);
if (skill != null)
{
player.doRevive(100);
skill.applyEffects(player, player);
}
}
else
{

View File

@@ -24,6 +24,8 @@ import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.siege.Castle;
import org.l2jmobius.gameserver.model.siege.Fort;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.network.OutgoingPackets;
/**
@@ -34,6 +36,7 @@ public class Die implements IClientOutgoingPacket
private final int _objectId;
private final boolean _isSweepable;
private int _flags = 1; // To nearest village.
private int _delayFeather = 0;
public Die(Creature creature)
{
@@ -57,6 +60,16 @@ public class Die implements IClientOutgoingPacket
siegeClan = fort.getSiege().getAttackerClan(clan);
isInFortDefense = (siegeClan == null) && fort.getSiege().checkIsDefender(clan);
}
for (BuffInfo effect : creature.getEffectList().getEffects())
{
final Skill skill = effect.getSkill();
if (skill.getId() == 7008)
{
_delayFeather = effect.getTime();
}
}
// ClanHall check.
if ((clan != null) && (clan.getHideoutId() > 0))
{
@@ -92,7 +105,7 @@ public class Die implements IClientOutgoingPacket
packet.writeD(_objectId);
packet.writeQ(_flags);
packet.writeD(_isSweepable ? 1 : 0);
packet.writeD(0); // Feather item time.
packet.writeD(_delayFeather); // Feather item time.
packet.writeC(0); // Hide die animation.
packet.writeD(0);
packet.writeD(0);