Retail behavior for premium hennas.

This commit is contained in:
MobiusDev
2017-10-19 00:47:01 +00:00
parent 8614eede71
commit 358a50fd2f
24 changed files with 284 additions and 267 deletions

View File

@@ -39,6 +39,5 @@ EnablePremiumHennaSlot = True
# Draw any henna at premium slot.
# Also premium henna drawn at normal slots.
# Premium Henna ids are 23825 to 23830.
# Retail: False
EnableAnyHennaAtPremiumSlot = False

View File

@@ -90,10 +90,25 @@
<item id="17712" price="0" /> <!-- Lv. 5 Legendary INT Dye -->
<item id="17713" price="0" /> <!-- Lv. 5 Legendary WIT Dye -->
<item id="17714" price="0" /> <!-- Lv. 5 Legendary MEN Dye -->
<item id="23825" price="0" /> <!-- Mysterious Human-->
<item id="23829" price="0" /> <!-- Mysterious Dwarf-->
<item id="23830" price="0" /> <!-- Mysterious Kamael-->
<item id="23827" price="0" /> <!-- Mysterious Dark Elf-->
<item id="23826" price="0" /> <!-- Mysterious Elf-->
<item id="23828" price="0" /> <!-- Mysterious Orc-->
<item id="23825" price="0" /> <!-- Mysterious Human Dye, 7 day -->
<item id="23829" price="0" /> <!-- Mysterious Dwarf Dye, 7 day -->
<item id="23830" price="0" /> <!-- Mysterious Kamael Dye, 7 day -->
<item id="23827" price="0" /> <!-- Mysterious Dark Elf Dye, 7 day -->
<item id="23826" price="0" /> <!-- Mysterious Elf Dye, 7 day -->
<item id="23828" price="0" /> <!-- Mysterious Orc Dye, 7 day -->
<item id="23905" price="0" /> <!-- Mysterious Wind Resistance Dye, 7 day -->
<item id="23902" price="0" /> <!-- Mysterious Holy Resistance Dye, 7 day -->
<item id="23903" price="0" /> <!-- Mysterious Fire Resistance Dye, 7 day -->
<item id="23901" price="0" /> <!-- Mysterious Dark Resistance Dye, 7 day -->
<item id="23906" price="0" /> <!-- Mysterious Earth Resistance Dye, 7 day -->
<item id="23904" price="0" /> <!-- Mysterious Water Resistance Dye, 7 day -->
<item id="23907" price="0" /> <!-- Mysterious Abnormal State Resistance Dye, 7 day -->
<item id="23908" price="0" /> <!-- Mysterious Invisibility Boost Dye, 7 day -->
<item id="23911" price="0" /> <!-- Mysterious Valakas Defence Dye, 7 day -->
<item id="23909" price="0" /> <!-- Mysterious World Boss Defence Dye, 7 day -->
<item id="23910" price="0" /> <!-- Mysterious Antharas Defence Dye, 7 day -->
<item id="23912" price="0" /> <!-- Mysterious Lindvior Defence Dye, 7 day -->
<item id="27541" price="0" /> <!-- Mysterious Abnormal State Resistance Dye, 30 day -->
<item id="23845" price="0" /> <!-- Mysterious Hunt Dye, 1 day -->
<item id="23846" price="0" /> <!-- Mysterious Slaughter Dye, 1 day -->
</list>

View File

@@ -20289,9 +20289,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_human" dyeId="500" dyeItemId="23825" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_human" dyeId="500" dyeItemId="23825" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21358" level="1" />
<skill id="21402" level="1" />
@@ -20332,9 +20332,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_elf" dyeId="501" dyeItemId="23826" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_elf" dyeId="501" dyeItemId="23826" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21359" level="1"/>
<skill id="21403" level="1"/>
@@ -20375,9 +20375,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_darkelf" dyeId="502" dyeItemId="23827" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_darkelf" dyeId="502" dyeItemId="23827" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21360" level="1"/>
<skill id="21404" level="1"/>
@@ -20418,9 +20418,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_orcs" dyeId="503" dyeItemId="23828" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_orcs" dyeId="503" dyeItemId="23828" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21361" level="1"/>
<skill id="21405" level="1"/>
@@ -20461,9 +20461,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_dwarf" dyeId="504" dyeItemId="23829" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_dwarf" dyeId="504" dyeItemId="23829" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21362" level="1"/>
<skill id="21406" level="1"/>
@@ -20504,9 +20504,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_kamael" dyeId="505" dyeItemId="23830" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_kamael" dyeId="505" dyeItemId="23830" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21363" level="1"/>
<skill id="21407" level="1"/>
@@ -20547,9 +20547,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_hunt" dyeId="506" dyeItemId="23845" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_hunt" dyeId="506" dyeItemId="23845" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21366" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20589,9 +20589,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="507" dyeItemId="23846" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="507" dyeItemId="23846" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21367" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20631,9 +20631,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="508" dyeItemId="23901" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="508" dyeItemId="23901" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21389" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20673,9 +20673,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="509" dyeItemId="23902" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="509" dyeItemId="23902" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21390" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20715,9 +20715,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="510" dyeItemId="23903" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="510" dyeItemId="23903" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21391" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20757,9 +20757,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="511" dyeItemId="23904" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="511" dyeItemId="23904" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21392" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20799,9 +20799,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="512" dyeItemId="23905" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="512" dyeItemId="23905" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21393" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20841,9 +20841,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="513" dyeItemId="23906" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="513" dyeItemId="23906" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21394" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20883,9 +20883,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="514" dyeItemId="23907" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="514" dyeItemId="23907" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21395" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20925,9 +20925,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="515" dyeItemId="23908" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="515" dyeItemId="23908" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21396" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -20967,9 +20967,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="516" dyeItemId="23909" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="516" dyeItemId="23909" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21397" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -21009,9 +21009,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="517" dyeItemId="23910" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="517" dyeItemId="23910" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21398" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -21051,9 +21051,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="518" dyeItemId="23911" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="518" dyeItemId="23911" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21399" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->
@@ -21093,9 +21093,9 @@
<classId>188</classId> <!-- Eviscerator -->
<classId>189</classId> <!-- Sayha's Seer -->
</henna>
<henna dyeName="dye_myst_slaughter" dyeId="519" dyeItemId="23912" dyeLevel="85">
<wear count="1" fee="64831200" />
<cancel count="0" fee="16207800" />
<henna dyeName="dye_myst_slaughter" dyeId="519" dyeItemId="23912" dyeLevel="85" isPremium="true">
<wear count="1" fee="0" />
<cancel count="0" fee="0" />
<duration time="10080" />
<skill id="21400" level="1"/>
<classId>148</classId> <!-- Sigel Pheonix Knight -->

View File

@@ -54,6 +54,7 @@
<xs:attribute name="dyeName" type="xs:token" />
<xs:attribute name="dyeItemId" type="xs:positiveInteger" />
<xs:attribute name="dyeLevel" type="xs:positiveInteger" />
<xs:attribute name="isPremium" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>

View File

@@ -66,10 +66,6 @@ public class PremiumManager
{
player.setPremiumStatus(false);
player.sendPacket(new ExBrPremiumState(player));
if (player.getHenna(4) != null)
{
player.removeHenna(4);
}
}
}
@@ -95,10 +91,6 @@ public class PremiumManager
{
startExpireTask(player, premiumExpiration - now);
}
else if (player.getHenna(4) != null)
{
player.removeHenna(4);
}
};
private final Consumer<OnPlayerLogout> playerLogoutEvent = (event) ->
@@ -211,10 +203,6 @@ public class PremiumManager
playerOnline.setPremiumStatus(false);
playerOnline.sendPacket(new ExBrPremiumState(playerOnline));
stopExpireTask(playerOnline);
if (playerOnline.getHenna(4) != null)
{
playerOnline.removeHenna(4);
}
}
// UPDATE CACHE

View File

@@ -7947,12 +7947,12 @@ public final class L2PcInstance extends L2Playable
{
if (i == 4)
{
if ((_henna[3] != null) || (henna.getDyeItemId() < 23825) || (henna.getDyeItemId() > 23830))
if ((_henna[3] != null) || !henna.isPremium())
{
return false;
}
}
else if ((henna.getDyeItemId() > 23824) && (henna.getDyeItemId() < 23831))
else if (henna.isPremium())
{
continue;
}

View File

@@ -36,6 +36,7 @@ public class L2Henna
private final int _dyeId;
private final String _dyeName;
private final int _dyeItemId;
private final boolean _isPremium;
private final Map<BaseStats, Integer> _baseStats = new HashMap<>();
private final int _wear_fee;
private final int _wear_count;
@@ -50,6 +51,7 @@ public class L2Henna
_dyeId = set.getInt("dyeId");
_dyeName = set.getString("dyeName");
_dyeItemId = set.getInt("dyeItemId");
_isPremium = set.getBoolean("isPremium", false);
_baseStats.put(BaseStats.STR, set.getInt("str", 0));
_baseStats.put(BaseStats.CON, set.getInt("con", 0));
_baseStats.put(BaseStats.DEX, set.getInt("dex", 0));
@@ -91,6 +93,14 @@ public class L2Henna
return _dyeItemId;
}
/**
* @return true if this dye is premium.
*/
public boolean isPremium()
{
return _isPremium;
}
public int getBaseStats(Stats stat)
{
return _baseStats.getOrDefault(stat, 0);

View File

@@ -361,14 +361,7 @@ public class EnterWorld implements IClientIncomingPacket
// activeChar.queryGameGuard();
// Send Dye Information
if (!Config.PREMIUM_SYSTEM_ENABLED && (activeChar.getHenna(4) != null))
{
activeChar.removeHenna(4);
}
else
{
activeChar.sendPacket(new HennaInfo(activeChar));
}
activeChar.sendPacket(new HennaInfo(activeChar));
// Send Skill list
activeChar.sendSkillList();