Skill rewards for clan hunting bonus.
Contributed by MacuK.
This commit is contained in:
@@ -1,31 +1,31 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../data/xsd/ClanReward.xsd">
|
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../data/xsd/ClanReward.xsd">
|
||||||
<membersOnline>
|
<membersOnline>
|
||||||
<players size="10" level="1">
|
<players size="7" level="1">
|
||||||
<skill id="55168" level="1" /> <!-- Clan Unity - Lv. 1 -->
|
<skill id="51016" level="1" /> <!-- Clan's Bonus - XP Lv. 1 -->
|
||||||
</players>
|
</players>
|
||||||
<players size="20" level="2">
|
<players size="14" level="2">
|
||||||
<skill id="55169" level="1" /> <!-- Clan Unity - Lv. 2 -->
|
<skill id="51017" level="1" /> <!-- Clan's Bonus - XP Lv. 2 -->
|
||||||
</players>
|
</players>
|
||||||
<players size="30" level="3">
|
<players size="21" level="3">
|
||||||
<skill id="55170" level="1" /> <!-- Clan Unity - Lv. 3 -->
|
<skill id="51018" level="1" /> <!-- Clan's Bonus - XP Lv. 3 -->
|
||||||
</players>
|
</players>
|
||||||
<players size="40" level="4">
|
<players size="28" level="4">
|
||||||
<skill id="55171" level="1" /> <!-- Clan Unity - Lv. 4 -->
|
<skill id="51019" level="1" /> <!-- Clan's Bonus - XP Lv. 4 -->
|
||||||
</players>
|
</players>
|
||||||
</membersOnline>
|
</membersOnline>
|
||||||
<huntingBonus>
|
<huntingBonus>
|
||||||
<hunting points="28800000" level="1">
|
<hunting points="3267000" level="1">
|
||||||
<item id="70020" count="1" /> <!-- Clan's Supplies - Low Grade -->
|
<skill id="51020" level="1" /> <!-- Clan's Bonus - P. Atk Lv. 1 -->
|
||||||
</hunting>
|
</hunting>
|
||||||
<hunting points="57600000" level="2">
|
<hunting points="6534000" level="2">
|
||||||
<item id="70021" count="1" /> <!-- Clan's Supplies - Medium Grade -->
|
<skill id="51021" level="1" /> <!-- Clan's Bonus - P. Atk Lv. 2 -->
|
||||||
</hunting>
|
</hunting>
|
||||||
<hunting points="86400000" level="3">
|
<hunting points="9801000" level="3">
|
||||||
<item id="70022" count="1" /> <!-- Clan's Supplies - High Grade -->
|
<skill id="51022" level="1" /> <!-- Clan's Bonus - P. Atk Lv. 3 -->
|
||||||
</hunting>
|
</hunting>
|
||||||
<hunting points="115200000" level="4">
|
<hunting points="13068000" level="4">
|
||||||
<item id="70023" count="1" /> <!-- Clan's Supplies - Highest Grade -->
|
<skill id="51023" level="1" /> <!-- Clan's Bonus - P. Atk Lv. 4 -->
|
||||||
</hunting>
|
</hunting>
|
||||||
</huntingBonus>
|
</huntingBonus>
|
||||||
</list>
|
</list>
|
@@ -29,10 +29,10 @@
|
|||||||
<xs:element name="hunting" maxOccurs="unbounded" minOccurs="0">
|
<xs:element name="hunting" maxOccurs="unbounded" minOccurs="0">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element name="item">
|
<xs:element name="skill">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:attribute type="xs:integer" name="id" use="required" />
|
<xs:attribute type="xs:positiveInteger" name="id" use="required" />
|
||||||
<xs:attribute type="xs:long" name="count" use="required" />
|
<xs:attribute type="xs:short" name="level" use="required" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
|
@@ -31,7 +31,6 @@ import org.w3c.dom.Node;
|
|||||||
import org.l2jmobius.commons.util.IXmlReader;
|
import org.l2jmobius.commons.util.IXmlReader;
|
||||||
import org.l2jmobius.gameserver.enums.ClanRewardType;
|
import org.l2jmobius.gameserver.enums.ClanRewardType;
|
||||||
import org.l2jmobius.gameserver.model.clan.ClanRewardBonus;
|
import org.l2jmobius.gameserver.model.clan.ClanRewardBonus;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -113,14 +112,14 @@ public class ClanRewardData implements IXmlReader
|
|||||||
final int requiredAmount = parseInteger(attrs, "points");
|
final int requiredAmount = parseInteger(attrs, "points");
|
||||||
final int level = parseInteger(attrs, "level");
|
final int level = parseInteger(attrs, "level");
|
||||||
final ClanRewardBonus bonus = new ClanRewardBonus(ClanRewardType.HUNTING_MONSTERS, level, requiredAmount);
|
final ClanRewardBonus bonus = new ClanRewardBonus(ClanRewardType.HUNTING_MONSTERS, level, requiredAmount);
|
||||||
forEach(memberNode, IXmlReader::isNode, itemsNode ->
|
forEach(memberNode, IXmlReader::isNode, skillNode ->
|
||||||
{
|
{
|
||||||
if ("item".equalsIgnoreCase(itemsNode.getNodeName()))
|
if ("skill".equalsIgnoreCase(skillNode.getNodeName()))
|
||||||
{
|
{
|
||||||
final NamedNodeMap itemsAttr = itemsNode.getAttributes();
|
final NamedNodeMap skillAttr = skillNode.getAttributes();
|
||||||
final int id = parseInteger(itemsAttr, "id");
|
final int skillId = parseInteger(skillAttr, "id");
|
||||||
final int count = parseInteger(itemsAttr, "count");
|
final int skillLevel = parseInteger(skillAttr, "level");
|
||||||
bonus.setItemReward(new ItemHolder(id, count));
|
bonus.setSkillReward(new SkillHolder(skillId, skillLevel));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
_clanRewards.computeIfAbsent(bonus.getType(), key -> new ArrayList<>()).add(bonus);
|
_clanRewards.computeIfAbsent(bonus.getType(), key -> new ArrayList<>()).add(bonus);
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package org.l2jmobius.gameserver.model.clan;
|
package org.l2jmobius.gameserver.model.clan;
|
||||||
|
|
||||||
import org.l2jmobius.gameserver.enums.ClanRewardType;
|
import org.l2jmobius.gameserver.enums.ClanRewardType;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,7 +28,6 @@ public class ClanRewardBonus
|
|||||||
private final int _level;
|
private final int _level;
|
||||||
private final int _requiredAmount;
|
private final int _requiredAmount;
|
||||||
private SkillHolder _skillReward;
|
private SkillHolder _skillReward;
|
||||||
private ItemHolder _itemReward;
|
|
||||||
|
|
||||||
public ClanRewardBonus(ClanRewardType type, int level, int requiredAmount)
|
public ClanRewardBonus(ClanRewardType type, int level, int requiredAmount)
|
||||||
{
|
{
|
||||||
@@ -62,14 +60,4 @@ public class ClanRewardBonus
|
|||||||
{
|
{
|
||||||
_skillReward = skillReward;
|
_skillReward = skillReward;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemHolder getItemReward()
|
|
||||||
{
|
|
||||||
return _itemReward;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItemReward(ItemHolder itemReward)
|
|
||||||
{
|
|
||||||
_itemReward = itemReward;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
|||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.clan.ClanMember;
|
import org.l2jmobius.gameserver.model.clan.ClanMember;
|
||||||
import org.l2jmobius.gameserver.model.clan.ClanRewardBonus;
|
import org.l2jmobius.gameserver.model.clan.ClanRewardBonus;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -63,13 +62,8 @@ public class RequestPledgeBonusReward implements IClientIncomingPacket
|
|||||||
final ClanRewardBonus bonus = type.getAvailableBonus(player.getClan());
|
final ClanRewardBonus bonus = type.getAvailableBonus(player.getClan());
|
||||||
if (bonus != null)
|
if (bonus != null)
|
||||||
{
|
{
|
||||||
final ItemHolder itemReward = bonus.getItemReward();
|
|
||||||
final SkillHolder skillReward = bonus.getSkillReward();
|
final SkillHolder skillReward = bonus.getSkillReward();
|
||||||
if (itemReward != null)
|
if (skillReward != null)
|
||||||
{
|
|
||||||
player.addItem("ClanReward", itemReward.getId(), itemReward.getCount(), player, true);
|
|
||||||
}
|
|
||||||
else if (skillReward != null)
|
|
||||||
{
|
{
|
||||||
skillReward.getSkill().activateSkill(player, player);
|
skillReward.getSkill().activateSkill(player, player);
|
||||||
}
|
}
|
||||||
|
@@ -39,10 +39,10 @@ public class ExPledgeBonusList implements IClientOutgoingPacket
|
|||||||
{
|
{
|
||||||
packet.writeD(bonus.getSkillReward().getSkillId());
|
packet.writeD(bonus.getSkillReward().getSkillId());
|
||||||
});
|
});
|
||||||
packet.writeC(0x01); // 140
|
packet.writeC(0x00); // 140
|
||||||
ClanRewardData.getInstance().getClanRewardBonuses(ClanRewardType.HUNTING_MONSTERS).stream().sorted(Comparator.comparingInt(ClanRewardBonus::getLevel)).forEach(bonus ->
|
ClanRewardData.getInstance().getClanRewardBonuses(ClanRewardType.HUNTING_MONSTERS).stream().sorted(Comparator.comparingInt(ClanRewardBonus::getLevel)).forEach(bonus ->
|
||||||
{
|
{
|
||||||
packet.writeD(bonus.getItemReward().getId());
|
packet.writeD(bonus.getSkillReward().getSkillId());
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -70,9 +70,9 @@ public class ExPledgeBonusOpen implements IClientOutgoingPacket
|
|||||||
LOGGER.warning("Couldn't find skill reward for highest available members online bonus!!");
|
LOGGER.warning("Couldn't find skill reward for highest available members online bonus!!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (highestHuntingBonus.getItemReward() == null)
|
else if (highestHuntingBonus.getSkillReward() == null)
|
||||||
{
|
{
|
||||||
LOGGER.warning("Couldn't find item reward for highest available hunting bonus!!");
|
LOGGER.warning("Couldn't find skill reward for highest available hunting bonus!!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,8 +90,8 @@ public class ExPledgeBonusOpen implements IClientOutgoingPacket
|
|||||||
// Hunting bonus
|
// Hunting bonus
|
||||||
packet.writeD(highestHuntingBonus.getRequiredAmount());
|
packet.writeD(highestHuntingBonus.getRequiredAmount());
|
||||||
packet.writeD(clan.getHuntingPoints());
|
packet.writeD(clan.getHuntingPoints());
|
||||||
packet.writeC(0x01); // 140
|
packet.writeC(0x02); // 140
|
||||||
packet.writeD(huntingBonus != null ? highestHuntingBonus.getItemReward().getId() : 0x00);
|
packet.writeD(huntingBonus != null ? highestHuntingBonus.getSkillReward().getSkillId() : 0x00);
|
||||||
packet.writeC(huntingBonus != null ? huntingBonus.getLevel() : 0x00);
|
packet.writeC(huntingBonus != null ? huntingBonus.getLevel() : 0x00);
|
||||||
packet.writeC(huntingBonus != null ? 0x01 : 0x00);
|
packet.writeC(huntingBonus != null ? 0x01 : 0x00);
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user