Updated AgitDecoInfo packet.

This commit is contained in:
MobiusDevelopment
2022-07-11 12:24:11 +00:00
parent f632005ccd
commit 3617418be1
98 changed files with 4035 additions and 998 deletions

View File

@@ -30,6 +30,7 @@ import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.enums.ClanHallGrade;
import org.l2jmobius.gameserver.enums.SocialClass;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.actor.Player;
@@ -43,9 +44,11 @@ import org.l2jmobius.gameserver.model.zone.type.ResidenceZone;
public abstract class AbstractResidence extends ListenersContainer implements INamable
{
private static final Logger LOGGER = Logger.getLogger(AbstractResidence.class.getName());
protected ClanHallGrade _grade = ClanHallGrade.GRADE_NONE;
private final int _residenceId;
private String _name;
private ResidenceZone _zone = null;
private final Map<Integer, ResidenceFunction> _functions = new ConcurrentHashMap<>();
private List<SkillLearn> _residentialSkills = new ArrayList<>();
@@ -67,6 +70,15 @@ public abstract class AbstractResidence extends ListenersContainer implements IN
_residentialSkills = SkillTreeData.getInstance().getAvailableResidentialSkills(getResidenceId());
}
/**
* Gets the grade of clan hall.
* @return grade of this {@link ClanHall} in {@link ClanHallGrade} enum.
*/
public ClanHallGrade getGrade()
{
return _grade;
}
public int getResidenceId()
{
return _residenceId;

View File

@@ -57,7 +57,6 @@ public class ClanHall extends AbstractResidence
private static final Logger LOGGER = Logger.getLogger(ClanHall.class.getName());
// Static parameters
private final ClanHallGrade _grade;
private final ClanHallType _type;
private final int _minBid;
final int _lease;
@@ -196,15 +195,6 @@ public class ClanHall extends AbstractResidence
_doors.forEach(door -> door.openCloseMe(open));
}
/**
* Gets the grade of clan hall.
* @return grade of this {@link ClanHall} in {@link ClanHallGrade} enum.
*/
public ClanHallGrade getGrade()
{
return _grade;
}
/**
* Gets all {@link Door} related to this {@link ClanHall}.
* @return all {@link Door} related to this {@link ClanHall}

View File

@@ -17,12 +17,14 @@
package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.enums.ClanHallGrade;
import org.l2jmobius.gameserver.model.residences.AbstractResidence;
import org.l2jmobius.gameserver.model.residences.ResidenceFunction;
import org.l2jmobius.gameserver.model.residences.ResidenceFunctionType;
import org.l2jmobius.gameserver.network.OutgoingPackets;
/**
* @author Steuf, UnAfraid
* @author Steuf
*/
public class AgitDecoInfo implements IClientOutgoingPacket
{
@@ -38,20 +40,151 @@ public class AgitDecoInfo implements IClientOutgoingPacket
{
OutgoingPackets.AGIT_DECO_INFO.writeId(packet);
packet.writeD(_residense.getResidenceId());
for (ResidenceFunctionType type : ResidenceFunctionType.values())
// Fireplace
ResidenceFunction function = _residense.getFunction(ResidenceFunctionType.HP_REGEN);
if ((function == null) || (function.getLevel() == 0))
{
if (type == ResidenceFunctionType.NONE)
{
continue;
}
packet.writeC(_residense.hasFunction(type) ? 1 : 0);
packet.writeC(0);
}
else if (((_residense.getGrade() == ClanHallGrade.GRADE_NONE) && (function.getLevel() < 2)) || ((_residense.getGrade() == ClanHallGrade.GRADE_D) && (function.getLevel() < 3)) || ((_residense.getGrade() == ClanHallGrade.GRADE_C) && (function.getLevel() < 4)) || ((_residense.getGrade() == ClanHallGrade.GRADE_B) && (function.getLevel() < 5)))
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Carpet - Statue
function = _residense.getFunction(ResidenceFunctionType.MP_REGEN);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
packet.writeC(0);
}
else if ((((_residense.getGrade() == ClanHallGrade.GRADE_NONE) || (_residense.getGrade() == ClanHallGrade.GRADE_D)) && (function.getLevel() < 2)) || ((_residense.getGrade() == ClanHallGrade.GRADE_C) && (function.getLevel() < 3)) || ((_residense.getGrade() == ClanHallGrade.GRADE_B) && (function.getLevel() < 4)))
{
packet.writeC(1);
packet.writeC(1);
}
else
{
packet.writeC(2);
packet.writeC(2);
}
// Chandelier
function = _residense.getFunction(ResidenceFunctionType.EXP_RESTORE);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (function.getLevel() < 2)
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Mirror
function = _residense.getFunction(ResidenceFunctionType.TELEPORT);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (function.getLevel() < 2)
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Crystal
packet.writeC(0);
// Curtain
function = _residense.getFunction(ResidenceFunctionType.CURTAIN);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (function.getLevel() < 2)
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Magic Curtain
function = _residense.getFunction(ResidenceFunctionType.ITEM);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (((_residense.getGrade() == ClanHallGrade.GRADE_NONE) && (function.getLevel() < 2)) || (function.getLevel() < 3))
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Support
function = _residense.getFunction(ResidenceFunctionType.BUFF);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (((_residense.getGrade() == ClanHallGrade.GRADE_NONE) && (function.getLevel() < 2)) || ((_residense.getGrade() == ClanHallGrade.GRADE_D) && (function.getLevel() < 4)) || ((_residense.getGrade() == ClanHallGrade.GRADE_C) && (function.getLevel() < 5)) || ((_residense.getGrade() == ClanHallGrade.GRADE_B) && (function.getLevel() < 8)))
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Flag
function = _residense.getFunction(ResidenceFunctionType.OUTERFLAG);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (function.getLevel() < 2)
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Front platform
function = _residense.getFunction(ResidenceFunctionType.PLATFORM);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (function.getLevel() < 2)
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Item create?
function = _residense.getFunction(ResidenceFunctionType.ITEM);
if ((function == null) || (function.getLevel() == 0))
{
packet.writeC(0);
}
else if (((_residense.getGrade() == ClanHallGrade.GRADE_NONE) && (function.getLevel() < 2)) || (function.getLevel() < 3))
{
packet.writeC(1);
}
else
{
packet.writeC(2);
}
// Unknown
packet.writeD(0); // TODO: Find me!
packet.writeD(0); // TODO: Find me!
packet.writeD(0); // TODO: Find me!
packet.writeD(0); // TODO: Find me!
packet.writeD(0); // TODO: Find me!
return true;
}
}
}