Adapted appearance stone rework to all branches.

This commit is contained in:
MobiusDev
2017-11-20 02:22:09 +00:00
parent 029878f7b8
commit d4b385cffb
112 changed files with 83636 additions and 41736 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/items.xsd">
<item id="25700" name="Maid Costume Appearance Stone" additionalName="Top-grade / Debuff Reflect" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -10,12 +13,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26880" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25701" name="Maid Costume Appearance Stone" additionalName="Top-grade / Damage Reflect Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect Resistance + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -23,12 +33,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26881" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25702" name="Maid Costume Appearance Stone" additionalName="Top-grade / Ranged Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Bow/Crossbow Resistance + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -36,12 +53,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26882" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25703" name="Maid Costume Appearance Stone" additionalName="Top-grade / P. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -49,12 +73,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26883" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25704" name="Maid Costume Appearance Stone" additionalName="Top-grade / M. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, M. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -62,12 +93,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26884" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25705" name="Maid Costume Appearance Stone" additionalName="Top-grade / Attribute Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Attribute Resistance + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -75,12 +113,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26885" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25706" name="Maid Costume Appearance Stone" additionalName="Top-grade / Received Heal Amount Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Received Heal Amount + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -88,12 +133,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26886" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25707" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. HP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. HP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -101,12 +153,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26887" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25708" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. MP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. MP + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -114,12 +173,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26888" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25709" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max CP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. CP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -127,12 +193,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26889" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25710" name="Maid Costume Appearance Stone" additionalName="Top-grade / Speed Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Speed + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -140,12 +213,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26890" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25711" name="Maid Costume Appearance Stone" additionalName="Top-grade / HP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, HP Recovery Bonus + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -153,12 +233,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26891" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25712" name="Maid Costume Appearance Stone" additionalName="Top-grade / MP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, MP Recovery Bonus + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -166,12 +253,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26892" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25713" name="Maid Costume Appearance Stone" additionalName="Top-grade / Evasion Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P./M. Evasion + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -179,12 +273,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26893" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25714" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 15" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -192,12 +293,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26894" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25715" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 16" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -205,12 +313,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26895" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25716" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 17" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 17. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -218,12 +333,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26896" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25717" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 18" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 18. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -231,12 +353,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26897" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25718" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 19" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 19. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -244,12 +373,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26898" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25719" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 20" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 20. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -257,8 +393,12 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26899" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25720" name="Visual Enchant Stone" additionalName="Low-grade / Debuff Reflect" type="EtcItem">
<!-- Talk to the Fantasy Isle Paddy to trade Male/Female Swimsuit, Formal Wear, Santa Outfit, Beach/Alluring/Seductive Swimsuit, and Maid Costume into Debuff Reflect + 3% Appearance Stone. -->

View File

@@ -1452,6 +1452,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26274" name="Halloween Weapon Appearance Stone" type="EtcItem">
<!-- Changes the appearance of a weapon to that of a Halloween weapon. Can be used on shields and sigils. Note: Appearance may reset when the Change Weapon skill is used. -->
@@ -1460,6 +1463,9 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26275" name="Halloween Shaper" type="Weapon">
<!-- Halloween weapon. -->

View File

@@ -95,6 +95,105 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="visual" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="id" use="optional" />
<xs:attribute name="weaponType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="SWORD" />
<xs:enumeration value="BLUNT" />
<xs:enumeration value="DAGGER" />
<xs:enumeration value="BOW" />
<xs:enumeration value="POLE" />
<xs:enumeration value="DUAL" />
<xs:enumeration value="ETC" />
<xs:enumeration value="FIST" />
<xs:enumeration value="DUALFIST" />
<xs:enumeration value="FISHINGROD" />
<xs:enumeration value="RAPIER" />
<xs:enumeration value="ANCIENTSWORD" />
<xs:enumeration value="CROSSBOW" />
<xs:enumeration value="FLAG" />
<xs:enumeration value="OWNTHING" />
<xs:enumeration value="DUALDAGGER" />
<xs:enumeration value="DUALBLUNT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="handType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="ONE_HANDED" />
<xs:enumeration value="TWO_HANDED" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="bodyPart" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="none" />
<xs:enumeration value="shirt" />
<xs:enumeration value="lbracelet" />
<xs:enumeration value="rbracelet" />
<xs:enumeration value="talisman" />
<xs:enumeration value="chest" />
<xs:enumeration value="fullarmor" />
<xs:enumeration value="head" />
<xs:enumeration value="hair" />
<xs:enumeration value="hairall" />
<xs:enumeration value="underwear" />
<xs:enumeration value="back" />
<xs:enumeration value="neck" />
<xs:enumeration value="legs" />
<xs:enumeration value="feet" />
<xs:enumeration value="gloves" />
<xs:enumeration value="chest,legs" />
<xs:enumeration value="belt" />
<xs:enumeration value="rhand" />
<xs:enumeration value="lhand" />
<xs:enumeration value="lrhand" />
<xs:enumeration value="rear;lear" />
<xs:enumeration value="rfinger;lfinger" />
<xs:enumeration value="brooch" />
<xs:enumeration value="brooch_jewel" />
<xs:enumeration value="onepiece" />
<xs:enumeration value="hair2" />
<xs:enumeration value="dhair" />
<xs:enumeration value="alldress" />
<xs:enumeration value="deco1" />
<xs:enumeration value="waist" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="magicType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="MAGICAL" />
<xs:enumeration value="PHYISICAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required" />
<xs:attribute name="targetType" use="optional">
@@ -181,6 +280,9 @@
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>

View File

@@ -22,13 +22,13 @@ import java.util.Map;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jmobius.commons.util.IGameXmlReader;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -75,9 +75,6 @@ public class AppearanceItemData implements IGameXmlReader
@Override
public void parseDocument(Document doc, File f)
{
StatsSet set;
Node att;
NamedNodeMap attrs;
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
{
if ("list".equalsIgnoreCase(n.getNodeName()))
@@ -86,15 +83,7 @@ public class AppearanceItemData implements IGameXmlReader
{
if ("appearance_stone".equalsIgnoreCase(d.getNodeName()))
{
attrs = d.getAttributes();
set = new StatsSet();
for (int i = 0; i < attrs.getLength(); i++)
{
att = attrs.item(i);
set.set(att.getNodeName(), att.getNodeValue());
}
final AppearanceStone stone = new AppearanceStone(set);
final AppearanceStone stone = new AppearanceStone(new StatsSet(parseAttributes(d)));
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
{
switch (c.getNodeName())
@@ -129,6 +118,10 @@ public class AppearanceItemData implements IGameXmlReader
stone.addRaceNot(raceNot);
break;
}
case "visual":
{
stone.addVisualId(new AppearanceHolder(new StatsSet(parseAttributes(c))));
}
}
}
if (ItemTable.getInstance().getTemplate(stone.getId()) != null)
@@ -145,6 +138,11 @@ public class AppearanceItemData implements IGameXmlReader
}
}
public int getLoadedElementsCount()
{
return _stones.size();
}
public AppearanceStone getStone(int stone)
{
return _stones.get(stone);

View File

@@ -0,0 +1,85 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jmobius.gameserver.model.holders;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceHandType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceMagicType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
/**
* @author Sdw
*/
public class AppearanceHolder
{
private final int _visualId;
private final WeaponType _weaponType;
private final ArmorType _armorType;
private final AppearanceHandType _handType;
private final AppearanceMagicType _magicType;
private final AppearanceTargetType _targetType;
private final Integer _bodyPart;
public AppearanceHolder(StatsSet set)
{
_visualId = set.getInt("id", 0);
_weaponType = set.getEnum("weaponType", WeaponType.class, WeaponType.NONE);
_armorType = set.getEnum("armorType", ArmorType.class, ArmorType.NONE);
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
_targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
_bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
}
public WeaponType getWeaponType()
{
return _weaponType;
}
public ArmorType getArmorType()
{
return _armorType;
}
public AppearanceHandType getHandType()
{
return _handType;
}
public AppearanceMagicType getMagicType()
{
return _magicType;
}
public AppearanceTargetType getTargetType()
{
return _targetType;
}
public int getBodyPart()
{
return _bodyPart;
}
public int getVisualId()
{
return _visualId;
}
}

View File

@@ -24,10 +24,14 @@ import java.util.List;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@@ -48,6 +52,7 @@ public class AppearanceStone
private List<Integer> _bodyParts;
private List<Race> _races;
private List<Race> _racesNot;
private List<AppearanceHolder> _allVisualIds;
public AppearanceStone(StatsSet set)
{
@@ -61,9 +66,27 @@ public class AppearanceStone
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
// No grade items cannot change appearance, because client doesn't have No-Grade restoration stones.
final CrystalType crystalType = set.getEnum("crystalType", CrystalType.class, CrystalType.NONE);
if (crystalType == CrystalType.NONE)
final CrystalType crystalType = set.getEnum("grade", CrystalType.class, null);
// If no crystal type is defined, we must add all defaults.
if (crystalType == null)
{
switch (targetType)
{
case ACCESSORY:
case ALL:
{
addCrystalType(CrystalType.NONE);
}
case WEAPON:
case ARMOR:
{
for (CrystalType cryType : CrystalType.values())
{
@@ -73,17 +96,13 @@ public class AppearanceStone
}
}
}
}
}
else
{
addCrystalType(crystalType);
}
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
final int bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
if (bodyPart != L2Item.SLOT_NONE)
{
@@ -185,6 +204,20 @@ public class AppearanceStone
_bodyParts.add(part);
}
public void addVisualId(AppearanceHolder appearanceHolder)
{
if (_allVisualIds == null)
{
_allVisualIds = new ArrayList<>();
}
_allVisualIds.add(appearanceHolder);
}
public List<AppearanceHolder> getVisualIds()
{
return _allVisualIds != null ? _allVisualIds : Collections.emptyList();
}
public List<Integer> getBodyParts()
{
return _bodyParts != null ? _bodyParts : Collections.emptyList();
@@ -217,4 +250,297 @@ public class AppearanceStone
{
return _racesNot != null ? _racesNot : Collections.emptyList();
}
/**
* @param player the actor requesting to use this appearance.
* @param targetItem the item to be modified with this appearance.
* @return {@code true} if the item is valid for appearance change, {@code false} otherwise.
*/
public boolean checkConditions(L2PcInstance player, L2ItemInstance targetItem)
{
if (targetItem == null)
{
return false;
}
if (getTargetTypes().isEmpty())
{
return false;
}
if (targetItem.isEquipped() && (getRacesNot().contains(player.getRace()) || (!getRaces().isEmpty() && !getRaces().contains(player.getRace()))))
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AN_EQUIPPED_ITEM_INTO_THE_APPEARANCE_OF_AN_UNEQUIPPABLE_ITEM_PLEASE_CHECK_RACE_GENDER_RESTRICTIONS_YOU_CAN_MODIFY_THE_APPEARANCE_IF_YOU_UNEQUIP_THE_ITEM);
return false;
}
switch (getType())
{
case RESTORE:
{
if (targetItem.getVisualId() == 0)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_RESTORE_ITEMS_THAT_HAVE_NOT_BEEN_MODIFIED);
return false;
}
if ((targetItem.isWeapon() && !getTargetTypes().contains(AppearanceTargetType.WEAPON)) || (targetItem.isArmor() && !getTargetTypes().contains(AppearanceTargetType.ARMOR)) || (targetItem.isEtcItem() && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (((targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR2) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIRALL)) && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
default:
{
// Seems like in retail item with already changed appearance, can be changed again without being restored.
final AppearanceTargetType targetType = getTargetTypes().get(0);
switch (targetType)
{
case NONE:
{
return false;
}
case WEAPON:
{
if (!targetItem.isWeapon())
{
player.sendPacket(SystemMessageId.WEAPONS_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ARMOR:
{
if (!targetItem.isArmor())
{
player.sendPacket(SystemMessageId.ARMOR_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ACCESSORY:
{
if ((targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR2) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIRALL))
{
player.sendPacket(SystemMessageId.HAIR_ACCESSORIES_ONLY);
return false;
}
break;
}
case ALL:
{
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (findVisualChange(targetItem) == null)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
return true;
}
}
break;
}
}
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (targetItem.isArmor() && !getBodyParts().isEmpty() && !getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != getWeaponType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_USED_AS_AN_APPEARANCE_WEAPON);
return false;
}
switch (getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
}
switch (getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
if (getArmorType() != ArmorType.NONE)
{
switch (getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
return true;
}
public AppearanceHolder findVisualChange(L2ItemInstance targetItem)
{
for (AppearanceHolder holder : _allVisualIds)
{
if (targetItem.isArmor() && (holder.getBodyPart() != 0) && (targetItem.getItem().getBodyPart() != holder.getBodyPart()))
{
continue;
}
if (holder.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != holder.getWeaponType()))
{
continue;
}
switch (holder.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
continue;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
continue;
}
break;
}
}
switch (holder.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
continue;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
continue;
}
}
}
}
if (holder.getArmorType() != ArmorType.NONE)
{
switch (holder.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
continue;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
continue;
}
}
}
}
return holder;
}
return null;
}
}

View File

@@ -26,13 +26,11 @@ import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingExtractionItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
/**
* @author UnAfraid
@@ -63,175 +61,100 @@ public class RequestExTryToPutShapeShiftingEnchantSupportItem implements IClient
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
final PcInventory inventory = player.getInventory();
final L2ItemInstance targetItem = inventory.getItemByObjectId(_targetItemObjId);
final L2ItemInstance extracItem = inventory.getItemByObjectId(_extracItemObjId);
final L2ItemInstance extractItem = inventory.getItemByObjectId(_extracItemObjId);
L2ItemInstance stone = request.getAppearanceStone();
if ((targetItem == null) || (extracItem == null) || (stone == null))
if ((targetItem == null) || (extractItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()) || (extractItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((appearanceStone.getType() == AppearanceType.RESTORE) || (appearanceStone.getType() == AppearanceType.FIXED))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_A_MODIFIED_ITEM);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (extracItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extracItem);
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_ITEMS_THAT_ARE_HIGHER_GRADE_THAN_ITEMS_TO_BE_MODIFIED);
player.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (!appearanceStone.checkConditions(player, targetItem))
{
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extractItem);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.SUCCESS);
}
}

View File

@@ -22,13 +22,8 @@ import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
@@ -77,13 +72,20 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (!targetItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
@@ -91,8 +93,7 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -107,158 +108,9 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NOGRADE_ITEMS);
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.ITEM_GRADES_DO_NOT_MATCH);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}

View File

@@ -22,14 +22,12 @@ import com.l2jmobius.gameserver.enums.InventorySlot;
import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.model.variables.ItemVariables;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
@@ -37,8 +35,6 @@ import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.ExAdenaInvenCount;
import com.l2jmobius.gameserver.network.serverpackets.ExUserInfoEquipSlot;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
/**
@@ -68,7 +64,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
@@ -79,36 +75,36 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if ((targetItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getOwnerId() != player.getObjectId())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
@@ -116,223 +112,100 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(ExShapeShiftingResult.FAILED);
// player.removeRequest(ShapeShiftingItemRequest.class.getName());
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
final L2ItemInstance extracItem = request.getAppearanceExtractItem();
final L2ItemInstance extractItem = request.getAppearanceExtractItem();
int extracItemId = 0;
if ((appearanceStone.getType() != AppearanceType.RESTORE) && (appearanceStone.getType() != AppearanceType.FIXED))
{
if (extracItem == null)
if (extractItem == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
if (extractItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.isEtcItem() && (targetItem.getItem().getCrystalType().ordinal() <= extracItem.getItem().getCrystalType().ordinal()))
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getOwnerId() != player.getObjectId())
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extracItem.getId();
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final long cost = appearanceStone.getCost();
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extractItem.getId();
}
long cost = appearanceStone.getCost();
if (cost > player.getAdena())
{
client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AS_YOU_DO_NOT_HAVE_ENOUGH_ADENA);
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getCount() < 1L)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getType() == AppearanceType.NORMAL)
{
if (inventory.destroyItem(getClass().getSimpleName(), extracItem, 1, player, this) == null)
if (inventory.destroyItem(getClass().getSimpleName(), extractItem, 1, player, this) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -341,7 +214,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
inventory.destroyItem(getClass().getSimpleName(), stone, 1, player, this);
player.reduceAdena(getClass().getSimpleName(), cost, extracItem, true);
player.reduceAdena(getClass().getSimpleName(), cost, extractItem, false);
switch (appearanceStone.getType())
{
@@ -353,18 +226,32 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
case NORMAL:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case BLESSED:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case FIXED:
{
if (appearanceStone.getVisualIds().isEmpty())
{
extracItemId = appearanceStone.getVisualId();
targetItem.setVisualId(appearanceStone.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
else
{
final AppearanceHolder holder = appearanceStone.findVisualChange(targetItem);
if (holder != null)
{
extracItemId = holder.getVisualId();
targetItem.setVisualId(holder.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
}
break;
}
}
@@ -376,17 +263,13 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
targetItem.getVariables().storeMe();
if (appearanceStone.getCost() > 0)
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_SPENT_S1_ON_A_SUCCESSFUL_APPEARANCE_MODIFICATION).addLong(cost));
}
else
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_S_APPEARANCE_MODIFICATION_HAS_FINISHED).addItemName(targetItem.getDisplayId()));
}
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(targetItem);
if (extractItem != null)
{
iu.addModifiedItem(extractItem);
}
if (inventory.getItemByObjectId(stone.getObjectId()) == null)
{
iu.addRemovedItem(stone);

View File

@@ -27,8 +27,10 @@ public class ExShapeShiftingResult implements IClientOutgoingPacket
{
public static int RESULT_FAILED = 0x00;
public static int RESULT_SUCCESS = 0x01;
public static int RESULT_CLOSE = 0x02;
public static ExShapeShiftingResult FAILED = new ExShapeShiftingResult(RESULT_FAILED, 0, 0);
public static ExShapeShiftingResult CLOSE = new ExShapeShiftingResult(RESULT_CLOSE, 0, 0);
private final int _result;
private final int _targetItemId;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/items.xsd">
<item id="25700" name="Maid Costume Appearance Stone" additionalName="Top-grade / Debuff Reflect" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -10,12 +13,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26880" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25701" name="Maid Costume Appearance Stone" additionalName="Top-grade / Damage Reflect Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect Resistance + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -23,12 +33,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26881" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25702" name="Maid Costume Appearance Stone" additionalName="Top-grade / Ranged Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Bow/Crossbow Resistance + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -36,12 +53,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26882" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25703" name="Maid Costume Appearance Stone" additionalName="Top-grade / P. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -49,12 +73,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26883" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25704" name="Maid Costume Appearance Stone" additionalName="Top-grade / M. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, M. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -62,12 +93,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26884" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25705" name="Maid Costume Appearance Stone" additionalName="Top-grade / Attribute Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Attribute Resistance + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -75,12 +113,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26885" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25706" name="Maid Costume Appearance Stone" additionalName="Top-grade / Received Heal Amount Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Received Heal Amount + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -88,12 +133,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26886" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25707" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. HP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. HP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -101,12 +153,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26887" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25708" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. MP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. MP + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -114,12 +173,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26888" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25709" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max CP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. CP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -127,12 +193,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26889" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25710" name="Maid Costume Appearance Stone" additionalName="Top-grade / Speed Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Speed + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -140,12 +213,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26890" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25711" name="Maid Costume Appearance Stone" additionalName="Top-grade / HP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, HP Recovery Bonus + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -153,12 +233,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26891" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25712" name="Maid Costume Appearance Stone" additionalName="Top-grade / MP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, MP Recovery Bonus + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -166,12 +253,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26892" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25713" name="Maid Costume Appearance Stone" additionalName="Top-grade / Evasion Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P./M. Evasion + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -179,12 +273,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26893" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25714" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 15" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -192,12 +293,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26894" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25715" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 16" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -205,12 +313,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26895" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25716" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 17" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 17. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -218,12 +333,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26896" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25717" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 18" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 18. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -231,12 +353,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26897" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25718" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 19" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 19. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -244,12 +373,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26898" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25719" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 20" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 20. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -257,8 +393,12 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26899" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25720" name="Visual Enchant Stone" additionalName="Low-grade / Debuff Reflect" type="EtcItem">
<!-- Talk to the Fantasy Isle Paddy to trade Male/Female Swimsuit, Formal Wear, Santa Outfit, Beach/Alluring/Seductive Swimsuit, and Maid Costume into Debuff Reflect + 3% Appearance Stone. -->

View File

@@ -1452,6 +1452,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26274" name="Halloween Weapon Appearance Stone" type="EtcItem">
<!-- Changes the appearance of a weapon to that of a Halloween weapon. Can be used on shields and sigils. Note: Appearance may reset when the Change Weapon skill is used. -->
@@ -1460,6 +1463,9 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26275" name="Halloween Shaper" type="Weapon">
<!-- Halloween weapon. -->

View File

@@ -635,6 +635,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26358" name="Pirate Crew Appeareance Stone" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Pirate Crew member. Can be used as a top or a one piece. It changes everything, making the appearance of all armor into that of a Pirate Crew member. Appearance is restored through the use of a Restoration Stone. -->
@@ -644,6 +647,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26359" name="Automatic Appearance Stone: Tears Weapon" additionalName="30-day" type="EtcItem">
<!-- Changes the appearance of all weapons into those of Tears Weapons of corresponding types for 30 days. Can be used on shields and sigils. Double-click to use. Note: Appearance may reset when the Change Weapon skill is used. -->

View File

@@ -1,4 +1,4 @@
<?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="../../xsd/items.xsd">
<item id="26500" name="Cat's Eye" additionalName="Lv. 4" type="Armor">
<!-- Decreases damage received from Reflect Damage by 40%. Effect does not stack with additional jewels of the same type. -->
@@ -187,9 +187,10 @@
<set name="is_private_storeable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26510" name="Attendance Vitality Tonic" additionalName="Event" type="EtcItem">
<!-- Attendance Vitality Tonic. 1 out of 4 bars on the vitality gauge are replenished. Cooldown 60 minutes. Cannot be used in the Olympiad. Can be used more than 5 times a week. -->
<!-- Attendance Vitality Tonic. 1 out of 4 bars on the vitality gauge are replenished. Cooldown 60 minutes. Cannot be used in the Olympiad. -->
<set name="icon" val="icon.etc_recall_potion3" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
@@ -201,6 +202,7 @@
<set name="is_private_storeable" val="false" />
<set name="etcitem_type" val="POTION" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26511" name="Anakim Set Pack" type="EtcItem">
<!-- Double-click to obtain 1 Anakim Outfit Appearance Stone (30-day) and 1 Agathion - Anakim Holy Barrier (30-day). The Appearance Stone and bracelet cannot be dropped or exchanged. -->
@@ -224,6 +226,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
</item>
<item id="26513" name="Lv. 5 Legendary CHA Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 5 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (CHA). -->
@@ -232,6 +235,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26514" name="Lv. 5 Legendary LUC Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 5 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (LUC). -->
@@ -240,6 +244,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26515" name="Lv. 3 Legendary CHA Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 3 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (CHA). -->
@@ -248,6 +253,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26516" name="Lv. 3 Legendary LUC Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 3 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (LUC). -->
@@ -256,6 +262,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26517" name="Apparition Stone (All-purpose)" type="EtcItem">
<!-- Made of a fake soul, this can summon Terakan, Cassius, or Ladar at the Altar of Souls near Faeron Village. -->
@@ -294,6 +301,7 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26521" name="Pirate Crew Appeareance Stone" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Pirate Crew member. Can use Pirate Crew skill after appearance modification. Can be used as a top or a one piece. It changes everything, making the appearance of all armor into that of a Pirate Crew member. Appearance is restored through the use of a Restoration Stone. -->
@@ -303,11 +311,17 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26522" name="Rabbit Ears" additionalName="STR + Critical Rate" type="Armor">
<!-- STR + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -315,6 +329,11 @@
<!-- DEX + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -322,6 +341,11 @@
<!-- CON + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -329,6 +353,11 @@
<!-- MEN + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -336,6 +365,11 @@
<!-- INT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -343,6 +377,11 @@
<!-- WIT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -350,6 +389,11 @@
<!-- STR + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -357,6 +401,11 @@
<!-- DEX + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -364,6 +413,11 @@
<!-- CON + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -371,6 +425,11 @@
<!-- MEN + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -378,6 +437,11 @@
<!-- INT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -385,6 +449,11 @@
<!-- WIT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -392,6 +461,11 @@
<!-- STR + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -399,6 +473,11 @@
<!-- DEX + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -406,6 +485,11 @@
<!-- CON + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -413,6 +497,11 @@
<!-- MEN + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -420,6 +509,11 @@
<!-- INT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -427,6 +521,11 @@
<!-- WIT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -434,6 +533,11 @@
<!-- STR + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -441,6 +545,11 @@
<!-- DEX + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -448,6 +557,11 @@
<!-- CON + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -455,6 +569,11 @@
<!-- MEN + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -462,6 +581,11 @@
<!-- INT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -469,6 +593,11 @@
<!-- WIT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -476,6 +605,11 @@
<!-- STR + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -483,6 +617,11 @@
<!-- DEX + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -490,6 +629,11 @@
<!-- CON + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -497,6 +641,11 @@
<!-- MEN + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -504,6 +653,11 @@
<!-- INT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -511,6 +665,11 @@
<!-- WIT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -518,6 +677,11 @@
<!-- STR + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -525,6 +689,11 @@
<!-- DEX + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -532,6 +701,11 @@
<!-- CON + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -539,6 +713,11 @@
<!-- MEN + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -546,6 +725,11 @@
<!-- INT + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -553,6 +737,11 @@
<!-- WIT + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -560,6 +749,11 @@
<!-- STR + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -567,6 +761,11 @@
<!-- DEX + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -574,6 +773,11 @@
<!-- CON + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -581,6 +785,11 @@
<!-- MEN + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -588,6 +797,11 @@
<!-- INT + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -595,6 +809,11 @@
<!-- WIT + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -602,6 +821,11 @@
<!-- STR + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -609,6 +833,11 @@
<!-- DEX + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -616,6 +845,11 @@
<!-- CON + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -623,6 +857,11 @@
<!-- MEN + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -630,6 +869,11 @@
<!-- INT + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -637,6 +881,11 @@
<!-- WIT + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -644,6 +893,11 @@
<!-- STR + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -651,6 +905,11 @@
<!-- DEX + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -658,6 +917,11 @@
<!-- CON + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -665,6 +929,11 @@
<!-- MEN + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -672,6 +941,11 @@
<!-- INT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -679,6 +953,11 @@
<!-- WIT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -686,6 +965,11 @@
<!-- STR + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -693,6 +977,11 @@
<!-- DEX + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -700,6 +989,11 @@
<!-- CON + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -707,6 +1001,11 @@
<!-- MEN + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -714,6 +1013,11 @@
<!-- INT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -721,6 +1025,11 @@
<!-- WIT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -728,6 +1037,11 @@
<!-- STR + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -735,6 +1049,11 @@
<!-- DEX + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -742,6 +1061,11 @@
<!-- CON + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -749,6 +1073,11 @@
<!-- MEN + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -756,6 +1085,11 @@
<!-- INT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -763,6 +1097,11 @@
<!-- WIT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -770,6 +1109,11 @@
<!-- STR + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -777,6 +1121,11 @@
<!-- DEX + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -784,6 +1133,11 @@
<!-- CON + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -791,6 +1145,11 @@
<!-- MEN + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -798,6 +1157,11 @@
<!-- INT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -805,6 +1169,11 @@
<!-- WIT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -812,6 +1181,11 @@
<!-- STR + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -819,6 +1193,11 @@
<!-- DEX + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -826,6 +1205,11 @@
<!-- CON + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -833,6 +1217,11 @@
<!-- MEN + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -840,6 +1229,11 @@
<!-- INT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -847,6 +1241,11 @@
<!-- WIT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1130,5 +1130,8 @@
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="time" val="10080" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
</list>

View File

@@ -7,7 +7,10 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46201" name="Halloween Weapon Appearance Stone" additionalName="7-day" type="EtcItem">
<!-- Changes the appearance of a weapon into that of a Halloween weapon. -->
@@ -16,6 +19,9 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="time" val="10080" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46202" name="Halloween Weapon Appearance Stone" additionalName="90-day" type="EtcItem">
<!-- Changes the appearance of a weapon into that of a Halloween weapon. -->
@@ -23,7 +29,10 @@
<set name="is_stackable" val="true" />
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46203" name="Halloween Outfit" type="Armor">
<!-- Halloween appearance. -->
@@ -953,7 +962,10 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46269" name="Automatic Appearance: Frozen Weapon" type="EtcItem">
<!-- Changes the appearance of all weapons into those of Frozen Weapons of corresponding types. Can be used on shields and sigils. -->
@@ -971,6 +983,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46271" name="Ninja Outfit Appearance Stone" type="EtcItem">
<!-- Modifies the appearance of armor into that of a Ninja Outfit. Works on one-piece armor. It changes everything, making the appearance of all armor into that of a Ninja's outfit. -->
@@ -1199,6 +1214,13 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="weight" val="150" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<skills>
<skill id="13827" level="2" /> <!-- Christmas Talisman - ALL STAT (High) -->
</skills>
</item>
<item id="46292" name="Christmas Talisman" additionalName="ALL STAT +1" type="Armor">
<!-- Event item. All Stats + 1 when equipped. Effect does not stack with additional Talismans of the same type. -->
@@ -1207,6 +1229,13 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="weight" val="150" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<skills>
<skill id="13827" level="1" /> <!-- Christmas Talisman - ALL STAT (High) -->
</skills>
</item>
<item id="46293" name="Christmas Talisman: P. Skill Critical Damage" additionalName="1-hour" type="Armor">
<!-- Event item. P. Skill Critical Damage + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1221,7 +1250,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13828" level="1" /> <!-- Christmas Talisman - P. Skill Critical Damage -->
</skills>
</item>
<item id="46294" name="Christmas Talisman: M. Skill Critical Damage" additionalName="1-hour" type="Armor">
<!-- Event item. M. Skill Critical Damage + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1236,7 +1272,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13829" level="1" /> <!-- Christmas Talisman - M. Skill Critical Damage -->
</skills>
</item>
<item id="46295" name="Christmas Talisman: Ultimate Defense" additionalName="1-hour" type="Armor">
<!-- Event item. P. Atk. + 5000 and M. Def. + 5000 for 15 seconds. Cooldown is 10 min. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1251,7 +1294,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13830" level="1" /> <!-- Christmas Talisman - Ultimate Defense -->
</skills>
</item>
<item id="46296" name="Christmas Talisman: Debuff Resistance" additionalName="1-hour" type="Armor">
<!-- Event Item. Defends against Debuffs 5 times for 15 seconds. Cooldown is 10 min. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1266,7 +1316,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13831" level="1" /> <!-- Christmas Talisman - Debuff Resistance -->
</skills>
</item>
<item id="46297" name="Christmas Talisman: P. Atk." additionalName="1-hour" type="Armor">
<!-- Event item. P. Atk. + 5% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1281,7 +1338,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13832" level="1" /> <!-- Christmas Talisman - P. Atk -->
</skills>
</item>
<item id="46298" name="Christmas Talisman: M. Atk." additionalName="1-hour" type="Armor">
<!-- Event item. M. Atk. + 5% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1296,7 +1360,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13833" level="1" /> <!-- Christmas Talisman - M. Atk -->
</skills>
</item>
<item id="46299" name="Christmas Talisman: P. Def." additionalName="1-hour" type="Armor">
<!-- Event item. P. Def. + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1311,6 +1382,13 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13834" level="1" /> <!-- Christmas Talisman - P. Def -->
</skills>
</item>
</list>

View File

@@ -13,7 +13,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13835" level="1" /> <!-- Christmas Talisman - M. Def -->
</skills>
</item>
<item id="46301" name="Christmas Talisman: Attribute Defense" additionalName="1-hour" type="Armor">
<!-- Event item. All Attributes Defense + 30 when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -28,7 +35,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13836" level="1" /> <!-- Christmas Talisman - Attribute Resistance -->
</skills>
</item>
<item id="46302" name="Christmas Talisman Pack" additionalName="P. Skill Critical Damage" type="EtcItem">
<!-- Double-click to get a Christmas Talisman: P. Skill Critical Damage (1-hour). Will be deleted after the event. -->

View File

@@ -11,7 +11,7 @@
</stats>
</item>
<item id="46601" name="White Assassin Suit" type="Armor">
<set name="icon" val="icon.dark_assassin" />
<set name="icon" val="icon.skill1802" />
<set name="armor_type" val="HEAVY" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
@@ -22,7 +22,7 @@
</stats>
</item>
<item id="46602" name="Blue Dynasty Cloak" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Cloak. -->
<!-- Blue Dynasty Cloak. -->
<set name="icon" val="icon.vesper_cloack_i00" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
@@ -35,20 +35,26 @@
</stats>
</item>
<item id="46603" name="Blue Dynasty Armor Appearance Stone" type="EtcItem">
<!-- L2 Assist App item. Changes the appearance of your entire armor into that of Blue Dynasty. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
<!-- Changes the appearance of your entire armor into that of Blue Dynasty. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46604" name="Zubei Armor Appearance Stone" type="EtcItem">
<!-- L2 Assist App item. Changes the appearance of your entire armor into that of Red Zubei. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
<!-- Changes the appearance of your entire armor into that of Red Zubei. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46605" name="White Assassin Suit Appearance Stone" type="EtcItem">
<!-- Changes the appearance of your entire armor into that of the White Assassin Suit. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
@@ -59,114 +65,187 @@
<set name="is_stackable" val="true" />
<set name="handler" val="Appearance" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46606" name="Blue Dynasty Circlet" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
<item id="46607" name="Blue Dynasty Circlet" additionalName="STR" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. STR + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. STR + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9554" level="1" />
</skills>
</item>
<item id="46608" name="Blue Dynasty Circlet" additionalName="DEX" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. DEX + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. DEX + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9555" level="1" />
</skills>
</item>
<item id="46609" name="Blue Dynasty Circlet" additionalName="CON" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CON + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CON + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9556" level="1" />
</skills>
</item>
<item id="46610" name="Blue Dynasty Circlet" additionalName="MEN" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. MEN + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. MEN + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9557" level="1" />
</skills>
</item>
<item id="46611" name="Blue Dynasty Circlet" additionalName="INT" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. INT + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. INT + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9558" level="1" />
</skills>
</item>
<item id="46612" name="Blue Dynasty Circlet" additionalName="WIT" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. WIT + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. WIT + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9559" level="1" />
</skills>
</item>
<item id="46613" name="Blue Dynasty Circlet" additionalName="Critical Rate" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Critical Rate + 50 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9560" level="1" />
</skills>
</item>
<item id="46614" name="Blue Dynasty Circlet" additionalName="Critical Damage" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Critical Damage + 90 and M. Critical Damage + 68 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Critical Damage + 90 and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9561" level="1" />
</skills>
</item>
<item id="46615" name="Blue Dynasty Circlet" additionalName="P. Def." type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Def. + 5% when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Def. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9562" level="1" />
</skills>
</item>
<item id="46616" name="Blue Dynasty Circlet" additionalName="M. Def." type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Def. + 5% when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Def. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9563" level="1" />
</skills>
</item>
<item id="46617" name="Blue Dynasty Circlet" additionalName="Evasion" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Evasion + 5 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Evasion + 5 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9564" level="1" />
</skills>
</item>
<item id="46618" name="Blue Dynasty Circlet" additionalName="P. Atk." type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Atk. + 5% when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9565" level="1" />
</skills>
</item>
<item id="46619" name="Blue Dynasty Circlet" additionalName="M. Atk." type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Atk. + 10% when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9566" level="1" />
</skills>
</item>
<item id="46620" name="Blue Dynasty Circlet" additionalName="Accuracy" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Accuracy + 5 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Accuracy + 5 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9567" level="1" />
</skills>
</item>
<item id="46621" name="Shadow Blue Seal Bracelet" type="Armor">
<!-- L2 Assist App item. Can summon Shadow Blue. -->
<!-- Can summon Shadow Blue. -->
<set name="icon" val="icon.etc_rbracelet_aga_agit_i00" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
@@ -247,18 +326,28 @@
<set name="is_stackable" val="true" />
</item>
<item id="46627" name="Blue Dynasty Circlet" additionalName="LUC" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. LUC + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. LUC + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="18048" level="1" /> <!-- Hair Accessory (LUC) -->
</skills>
</item>
<item id="46628" name="Blue Dynasty Circlet" additionalName="CHA" type="Armor">
<!-- L2 Assist App item. Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CHA + 3 when equipped. -->
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CHA + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="18049" level="1" /> <!-- Hair Accessory (CHA) -->
</skills>
</item>
<item id="46629" name="Practice StormBringer" type="Weapon">
<!-- Temporary practice weapon for learning about the Soul Crystal system. Very inefficient as a weapon. -->
@@ -294,6 +383,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">142.0</stat>
<stat type="maxMp">58</stat>
</stats>
</item>
<item id="46631" name="Twilight Earring" additionalName="30-day" type="Armor">
@@ -313,6 +403,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">107.0</stat>
<stat type="maxMp">43</stat>
</stats>
</item>
<item id="46632" name="Twilight Ring" additionalName="30-day" type="Armor">
@@ -332,6 +423,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">71.0</stat>
<stat type="maxMp">29</stat>
</stats>
</item>
<item id="46633" name="Seraph Necklace" additionalName="30-day" type="Armor">
@@ -351,6 +443,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">161.0</stat>
<stat type="maxMp">62</stat>
</stats>
</item>
<item id="46634" name="Seraph Earring" additionalName="30-day" type="Armor">
@@ -370,6 +463,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">121.0</stat>
<stat type="maxMp">46</stat>
</stats>
</item>
<item id="46635" name="Seraph Ring" additionalName="30-day" type="Armor">
@@ -389,6 +483,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">80.0</stat>
<stat type="maxMp">31</stat>
</stats>
</item>
<item id="46636" name="Eternal Necklace" additionalName="30-day" type="Armor">
@@ -408,6 +503,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">174.0</stat>
<stat type="maxMp">65</stat>
</stats>
</item>
<item id="46637" name="Eternal Earring" additionalName="30-day" type="Armor">
@@ -427,6 +523,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">130.0</stat>
<stat type="maxMp">49</stat>
</stats>
</item>
<item id="46638" name="Eternal Ring" additionalName="30-day" type="Armor">
@@ -446,6 +543,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">87.0</stat>
<stat type="maxMp">33</stat>
</stats>
</item>
<item id="46639" name="Roa's Lost Item" additionalName="Event" type="EtcItem">

View File

@@ -95,6 +95,105 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="visual" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="id" use="optional" />
<xs:attribute name="weaponType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="SWORD" />
<xs:enumeration value="BLUNT" />
<xs:enumeration value="DAGGER" />
<xs:enumeration value="BOW" />
<xs:enumeration value="POLE" />
<xs:enumeration value="DUAL" />
<xs:enumeration value="ETC" />
<xs:enumeration value="FIST" />
<xs:enumeration value="DUALFIST" />
<xs:enumeration value="FISHINGROD" />
<xs:enumeration value="RAPIER" />
<xs:enumeration value="ANCIENTSWORD" />
<xs:enumeration value="CROSSBOW" />
<xs:enumeration value="FLAG" />
<xs:enumeration value="OWNTHING" />
<xs:enumeration value="DUALDAGGER" />
<xs:enumeration value="DUALBLUNT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="handType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="ONE_HANDED" />
<xs:enumeration value="TWO_HANDED" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="bodyPart" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="none" />
<xs:enumeration value="shirt" />
<xs:enumeration value="lbracelet" />
<xs:enumeration value="rbracelet" />
<xs:enumeration value="talisman" />
<xs:enumeration value="chest" />
<xs:enumeration value="fullarmor" />
<xs:enumeration value="head" />
<xs:enumeration value="hair" />
<xs:enumeration value="hairall" />
<xs:enumeration value="underwear" />
<xs:enumeration value="back" />
<xs:enumeration value="neck" />
<xs:enumeration value="legs" />
<xs:enumeration value="feet" />
<xs:enumeration value="gloves" />
<xs:enumeration value="chest,legs" />
<xs:enumeration value="belt" />
<xs:enumeration value="rhand" />
<xs:enumeration value="lhand" />
<xs:enumeration value="lrhand" />
<xs:enumeration value="rear;lear" />
<xs:enumeration value="rfinger;lfinger" />
<xs:enumeration value="brooch" />
<xs:enumeration value="brooch_jewel" />
<xs:enumeration value="onepiece" />
<xs:enumeration value="hair2" />
<xs:enumeration value="dhair" />
<xs:enumeration value="alldress" />
<xs:enumeration value="deco1" />
<xs:enumeration value="waist" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="magicType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="MAGICAL" />
<xs:enumeration value="PHYISICAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required" />
<xs:attribute name="targetType" use="optional">
@@ -181,6 +280,9 @@
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>

View File

@@ -22,13 +22,13 @@ import java.util.Map;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jmobius.commons.util.IGameXmlReader;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -75,9 +75,6 @@ public class AppearanceItemData implements IGameXmlReader
@Override
public void parseDocument(Document doc, File f)
{
StatsSet set;
Node att;
NamedNodeMap attrs;
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
{
if ("list".equalsIgnoreCase(n.getNodeName()))
@@ -86,15 +83,7 @@ public class AppearanceItemData implements IGameXmlReader
{
if ("appearance_stone".equalsIgnoreCase(d.getNodeName()))
{
attrs = d.getAttributes();
set = new StatsSet();
for (int i = 0; i < attrs.getLength(); i++)
{
att = attrs.item(i);
set.set(att.getNodeName(), att.getNodeValue());
}
final AppearanceStone stone = new AppearanceStone(set);
final AppearanceStone stone = new AppearanceStone(new StatsSet(parseAttributes(d)));
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
{
switch (c.getNodeName())
@@ -129,6 +118,10 @@ public class AppearanceItemData implements IGameXmlReader
stone.addRaceNot(raceNot);
break;
}
case "visual":
{
stone.addVisualId(new AppearanceHolder(new StatsSet(parseAttributes(c))));
}
}
}
if (ItemTable.getInstance().getTemplate(stone.getId()) != null)
@@ -145,6 +138,11 @@ public class AppearanceItemData implements IGameXmlReader
}
}
public int getLoadedElementsCount()
{
return _stones.size();
}
public AppearanceStone getStone(int stone)
{
return _stones.get(stone);

View File

@@ -0,0 +1,85 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jmobius.gameserver.model.holders;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceHandType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceMagicType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
/**
* @author Sdw
*/
public class AppearanceHolder
{
private final int _visualId;
private final WeaponType _weaponType;
private final ArmorType _armorType;
private final AppearanceHandType _handType;
private final AppearanceMagicType _magicType;
private final AppearanceTargetType _targetType;
private final Integer _bodyPart;
public AppearanceHolder(StatsSet set)
{
_visualId = set.getInt("id", 0);
_weaponType = set.getEnum("weaponType", WeaponType.class, WeaponType.NONE);
_armorType = set.getEnum("armorType", ArmorType.class, ArmorType.NONE);
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
_targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
_bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
}
public WeaponType getWeaponType()
{
return _weaponType;
}
public ArmorType getArmorType()
{
return _armorType;
}
public AppearanceHandType getHandType()
{
return _handType;
}
public AppearanceMagicType getMagicType()
{
return _magicType;
}
public AppearanceTargetType getTargetType()
{
return _targetType;
}
public int getBodyPart()
{
return _bodyPart;
}
public int getVisualId()
{
return _visualId;
}
}

View File

@@ -24,10 +24,14 @@ import java.util.List;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@@ -48,6 +52,7 @@ public class AppearanceStone
private List<Integer> _bodyParts;
private List<Race> _races;
private List<Race> _racesNot;
private List<AppearanceHolder> _allVisualIds;
public AppearanceStone(StatsSet set)
{
@@ -61,9 +66,27 @@ public class AppearanceStone
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
// No grade items cannot change appearance, because client doesn't have No-Grade restoration stones.
final CrystalType crystalType = set.getEnum("crystalType", CrystalType.class, CrystalType.NONE);
if (crystalType == CrystalType.NONE)
final CrystalType crystalType = set.getEnum("grade", CrystalType.class, null);
// If no crystal type is defined, we must add all defaults.
if (crystalType == null)
{
switch (targetType)
{
case ACCESSORY:
case ALL:
{
addCrystalType(CrystalType.NONE);
}
case WEAPON:
case ARMOR:
{
for (CrystalType cryType : CrystalType.values())
{
@@ -73,17 +96,13 @@ public class AppearanceStone
}
}
}
}
}
else
{
addCrystalType(crystalType);
}
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
final int bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
if (bodyPart != L2Item.SLOT_NONE)
{
@@ -185,6 +204,20 @@ public class AppearanceStone
_bodyParts.add(part);
}
public void addVisualId(AppearanceHolder appearanceHolder)
{
if (_allVisualIds == null)
{
_allVisualIds = new ArrayList<>();
}
_allVisualIds.add(appearanceHolder);
}
public List<AppearanceHolder> getVisualIds()
{
return _allVisualIds != null ? _allVisualIds : Collections.emptyList();
}
public List<Integer> getBodyParts()
{
return _bodyParts != null ? _bodyParts : Collections.emptyList();
@@ -217,4 +250,297 @@ public class AppearanceStone
{
return _racesNot != null ? _racesNot : Collections.emptyList();
}
/**
* @param player the actor requesting to use this appearance.
* @param targetItem the item to be modified with this appearance.
* @return {@code true} if the item is valid for appearance change, {@code false} otherwise.
*/
public boolean checkConditions(L2PcInstance player, L2ItemInstance targetItem)
{
if (targetItem == null)
{
return false;
}
if (getTargetTypes().isEmpty())
{
return false;
}
if (targetItem.isEquipped() && (getRacesNot().contains(player.getRace()) || (!getRaces().isEmpty() && !getRaces().contains(player.getRace()))))
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AN_EQUIPPED_ITEM_INTO_THE_APPEARANCE_OF_AN_UNEQUIPPABLE_ITEM_PLEASE_CHECK_RACE_GENDER_RESTRICTIONS_YOU_CAN_MODIFY_THE_APPEARANCE_IF_YOU_UNEQUIP_THE_ITEM);
return false;
}
switch (getType())
{
case RESTORE:
{
if (targetItem.getVisualId() == 0)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_RESTORE_ITEMS_THAT_HAVE_NOT_BEEN_MODIFIED);
return false;
}
if ((targetItem.isWeapon() && !getTargetTypes().contains(AppearanceTargetType.WEAPON)) || (targetItem.isArmor() && !getTargetTypes().contains(AppearanceTargetType.ARMOR)) || (targetItem.isEtcItem() && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (((targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR2) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIRALL)) && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
default:
{
// Seems like in retail item with already changed appearance, can be changed again without being restored.
final AppearanceTargetType targetType = getTargetTypes().get(0);
switch (targetType)
{
case NONE:
{
return false;
}
case WEAPON:
{
if (!targetItem.isWeapon())
{
player.sendPacket(SystemMessageId.WEAPONS_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ARMOR:
{
if (!targetItem.isArmor())
{
player.sendPacket(SystemMessageId.ARMOR_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ACCESSORY:
{
if ((targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR2) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIRALL))
{
player.sendPacket(SystemMessageId.HAIR_ACCESSORIES_ONLY);
return false;
}
break;
}
case ALL:
{
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (findVisualChange(targetItem) == null)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
return true;
}
}
break;
}
}
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (targetItem.isArmor() && !getBodyParts().isEmpty() && !getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != getWeaponType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_USED_AS_AN_APPEARANCE_WEAPON);
return false;
}
switch (getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
}
switch (getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
if (getArmorType() != ArmorType.NONE)
{
switch (getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
return true;
}
public AppearanceHolder findVisualChange(L2ItemInstance targetItem)
{
for (AppearanceHolder holder : _allVisualIds)
{
if (targetItem.isArmor() && (holder.getBodyPart() != 0) && (targetItem.getItem().getBodyPart() != holder.getBodyPart()))
{
continue;
}
if (holder.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != holder.getWeaponType()))
{
continue;
}
switch (holder.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
continue;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
continue;
}
break;
}
}
switch (holder.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
continue;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
continue;
}
}
}
}
if (holder.getArmorType() != ArmorType.NONE)
{
switch (holder.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
continue;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
continue;
}
}
}
}
return holder;
}
return null;
}
}

View File

@@ -26,13 +26,11 @@ import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingExtractionItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
/**
* @author UnAfraid
@@ -63,175 +61,100 @@ public class RequestExTryToPutShapeShiftingEnchantSupportItem implements IClient
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
final PcInventory inventory = player.getInventory();
final L2ItemInstance targetItem = inventory.getItemByObjectId(_targetItemObjId);
final L2ItemInstance extracItem = inventory.getItemByObjectId(_extracItemObjId);
final L2ItemInstance extractItem = inventory.getItemByObjectId(_extracItemObjId);
L2ItemInstance stone = request.getAppearanceStone();
if ((targetItem == null) || (extracItem == null) || (stone == null))
if ((targetItem == null) || (extractItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()) || (extractItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((appearanceStone.getType() == AppearanceType.RESTORE) || (appearanceStone.getType() == AppearanceType.FIXED))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_A_MODIFIED_ITEM);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (extracItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extracItem);
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_ITEMS_THAT_ARE_HIGHER_GRADE_THAN_ITEMS_TO_BE_MODIFIED);
player.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (!appearanceStone.checkConditions(player, targetItem))
{
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extractItem);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.SUCCESS);
}
}

View File

@@ -22,13 +22,8 @@ import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
@@ -77,13 +72,20 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (!targetItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
@@ -91,8 +93,7 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -107,158 +108,9 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NOGRADE_ITEMS);
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.ITEM_GRADES_DO_NOT_MATCH);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}

View File

@@ -22,14 +22,12 @@ import com.l2jmobius.gameserver.enums.InventorySlot;
import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.model.variables.ItemVariables;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
@@ -37,8 +35,6 @@ import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.ExAdenaInvenCount;
import com.l2jmobius.gameserver.network.serverpackets.ExUserInfoEquipSlot;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
/**
@@ -68,7 +64,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
@@ -79,36 +75,36 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if ((targetItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getOwnerId() != player.getObjectId())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
@@ -116,223 +112,100 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(ExShapeShiftingResult.FAILED);
// player.removeRequest(ShapeShiftingItemRequest.class.getName());
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
final L2ItemInstance extracItem = request.getAppearanceExtractItem();
final L2ItemInstance extractItem = request.getAppearanceExtractItem();
int extracItemId = 0;
if ((appearanceStone.getType() != AppearanceType.RESTORE) && (appearanceStone.getType() != AppearanceType.FIXED))
{
if (extracItem == null)
if (extractItem == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
if (extractItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.isEtcItem() && (targetItem.getItem().getCrystalType().ordinal() <= extracItem.getItem().getCrystalType().ordinal()))
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getOwnerId() != player.getObjectId())
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extracItem.getId();
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final long cost = appearanceStone.getCost();
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extractItem.getId();
}
long cost = appearanceStone.getCost();
if (cost > player.getAdena())
{
client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AS_YOU_DO_NOT_HAVE_ENOUGH_ADENA);
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getCount() < 1L)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getType() == AppearanceType.NORMAL)
{
if (inventory.destroyItem(getClass().getSimpleName(), extracItem, 1, player, this) == null)
if (inventory.destroyItem(getClass().getSimpleName(), extractItem, 1, player, this) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -341,7 +214,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
inventory.destroyItem(getClass().getSimpleName(), stone, 1, player, this);
player.reduceAdena(getClass().getSimpleName(), cost, extracItem, true);
player.reduceAdena(getClass().getSimpleName(), cost, extractItem, false);
switch (appearanceStone.getType())
{
@@ -353,18 +226,32 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
case NORMAL:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case BLESSED:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case FIXED:
{
if (appearanceStone.getVisualIds().isEmpty())
{
extracItemId = appearanceStone.getVisualId();
targetItem.setVisualId(appearanceStone.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
else
{
final AppearanceHolder holder = appearanceStone.findVisualChange(targetItem);
if (holder != null)
{
extracItemId = holder.getVisualId();
targetItem.setVisualId(holder.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
}
break;
}
}
@@ -376,17 +263,13 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
targetItem.getVariables().storeMe();
if (appearanceStone.getCost() > 0)
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_SPENT_S1_ON_A_SUCCESSFUL_APPEARANCE_MODIFICATION).addLong(cost));
}
else
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_S_APPEARANCE_MODIFICATION_HAS_FINISHED).addItemName(targetItem.getDisplayId()));
}
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(targetItem);
if (extractItem != null)
{
iu.addModifiedItem(extractItem);
}
if (inventory.getItemByObjectId(stone.getObjectId()) == null)
{
iu.addRemovedItem(stone);

View File

@@ -27,8 +27,10 @@ public class ExShapeShiftingResult implements IClientOutgoingPacket
{
public static int RESULT_FAILED = 0x00;
public static int RESULT_SUCCESS = 0x01;
public static int RESULT_CLOSE = 0x02;
public static ExShapeShiftingResult FAILED = new ExShapeShiftingResult(RESULT_FAILED, 0, 0);
public static ExShapeShiftingResult CLOSE = new ExShapeShiftingResult(RESULT_CLOSE, 0, 0);
private final int _result;
private final int _targetItemId;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/items.xsd">
<item id="25700" name="Maid Costume Appearance Stone" additionalName="Top-grade / Debuff Reflect" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -10,12 +13,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26880" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25701" name="Maid Costume Appearance Stone" additionalName="Top-grade / Damage Reflect Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Debuff Reflect Resistance + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -23,12 +33,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26881" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25702" name="Maid Costume Appearance Stone" additionalName="Top-grade / Ranged Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Bow/Crossbow Resistance + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -36,12 +53,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26882" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25703" name="Maid Costume Appearance Stone" additionalName="Top-grade / P. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -49,12 +73,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26883" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25704" name="Maid Costume Appearance Stone" additionalName="Top-grade / M. Def. Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, M. Def. + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -62,12 +93,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26884" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25705" name="Maid Costume Appearance Stone" additionalName="Top-grade / Attribute Resistance" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Attribute Resistance + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -75,12 +113,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26885" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25706" name="Maid Costume Appearance Stone" additionalName="Top-grade / Received Heal Amount Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Received Heal Amount + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -88,12 +133,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26886" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25707" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. HP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. HP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -101,12 +153,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26887" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25708" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max. MP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. MP + 10%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -114,12 +173,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26888" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25709" name="Maid Costume Appearance Stone" additionalName="Top-grade / Max CP Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Max. CP + 15%. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -127,12 +193,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26889" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25710" name="Maid Costume Appearance Stone" additionalName="Top-grade / Speed Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Speed + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -140,12 +213,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26890" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25711" name="Maid Costume Appearance Stone" additionalName="Top-grade / HP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, HP Recovery Bonus + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -153,12 +233,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26891" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25712" name="Maid Costume Appearance Stone" additionalName="Top-grade / MP Recovery Bonus Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, MP Recovery Bonus + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -166,12 +253,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26892" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25713" name="Maid Costume Appearance Stone" additionalName="Top-grade / Evasion Increase" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, P./M. Evasion + 8. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -179,12 +273,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26893" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25714" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 15" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 15. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -192,12 +293,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26894" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25715" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 16" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 16. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -205,12 +313,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26895" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25716" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 17" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 17. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -218,12 +333,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26896" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25717" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 18" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 18. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -231,12 +353,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26897" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25718" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 19" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 19. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -244,12 +373,19 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26898" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25719" name="Maid Costume Appearance Stone" additionalName="Top-grade / Option 20" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Maid Costume. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. When modified, Top-grade / Option + 20. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="is_freightable" val="false" />
<set name="is_stackable" val="true" />
<set name="is_clan_depositable" val="false" />
<set name="is_mailable" val="false" />
<set name="is_tradable" val="false" />
@@ -257,8 +393,12 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<skills>
<skill id="26899" level="1" /> <!-- Maid Costume Appearance Stone -->
</skills>
</item>
<item id="25720" name="Visual Enchant Stone" additionalName="Low-grade / Debuff Reflect" type="EtcItem">
<!-- Talk to the Fantasy Isle Paddy to trade Male/Female Swimsuit, Formal Wear, Santa Outfit, Beach/Alluring/Seductive Swimsuit, and Maid Costume into Debuff Reflect + 3% Appearance Stone. -->

View File

@@ -1452,6 +1452,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26274" name="Halloween Weapon Appearance Stone" type="EtcItem">
<!-- Changes the appearance of a weapon to that of a Halloween weapon. Can be used on shields and sigils. Note: Appearance may reset when the Change Weapon skill is used. -->
@@ -1460,6 +1463,9 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26275" name="Halloween Shaper" type="Weapon">
<!-- Halloween weapon. -->

View File

@@ -635,6 +635,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26358" name="Pirate Crew Appeareance Stone" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Pirate Crew member. Can be used as a top or a one piece. It changes everything, making the appearance of all armor into that of a Pirate Crew member. Appearance is restored through the use of a Restoration Stone. -->
@@ -644,6 +647,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26359" name="Automatic Appearance Stone: Tears Weapon" additionalName="30-day" type="EtcItem">
<!-- Changes the appearance of all weapons into those of Tears Weapons of corresponding types for 30 days. Can be used on shields and sigils. Double-click to use. Note: Appearance may reset when the Change Weapon skill is used. -->

View File

@@ -187,6 +187,7 @@
<set name="is_private_storeable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26510" name="Attendance Vitality Tonic" additionalName="Event" type="EtcItem">
<!-- Attendance Vitality Tonic. 1 out of 4 bars on the vitality gauge are replenished. Cooldown 60 minutes. Cannot be used in the Olympiad. -->
@@ -201,6 +202,7 @@
<set name="is_private_storeable" val="false" />
<set name="etcitem_type" val="POTION" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26511" name="Anakim Set Pack" type="EtcItem">
<!-- Double-click to obtain 1 Anakim Outfit Appearance Stone (30-day) and 1 Agathion - Anakim Holy Barrier (30-day). The Appearance Stone and bracelet cannot be dropped or exchanged. -->
@@ -224,6 +226,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="PEEL" />
</item>
<item id="26513" name="Lv. 5 Legendary CHA Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 5 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (CHA). -->
@@ -232,6 +235,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26514" name="Lv. 5 Legendary LUC Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 5 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (LUC). -->
@@ -240,6 +244,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26515" name="Lv. 3 Legendary CHA Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 3 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (CHA). -->
@@ -248,6 +253,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26516" name="Lv. 3 Legendary LUC Dye Pack" type="EtcItem">
<!-- Double-click to get 1 of the following Lv. 3 Legendary Dyes: STR/DEX/CON/INT/WIT/MEN (LUC). -->
@@ -256,6 +262,7 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE_ON_SKILL_SUCCESS" />
</item>
<item id="26517" name="Apparition Stone (All-purpose)" type="EtcItem">
<!-- Made of a fake soul, this can summon Terakan, Cassius, or Ladar at the Altar of Souls near Faeron Village. -->
@@ -294,6 +301,7 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26521" name="Pirate Crew Appeareance Stone" type="EtcItem">
<!-- Changes the appearance of the entire armor into that of a Pirate Crew member. Can use Pirate Crew skill after appearance modification. Can be used as a top or a one piece. It changes everything, making the appearance of all armor into that of a Pirate Crew member. Appearance is restored through the use of a Restoration Stone. -->
@@ -303,11 +311,17 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="26522" name="Rabbit Ears" additionalName="STR + Critical Rate" type="Armor">
<!-- STR + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -315,6 +329,11 @@
<!-- DEX + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -322,6 +341,11 @@
<!-- CON + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -329,6 +353,11 @@
<!-- MEN + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -336,6 +365,11 @@
<!-- INT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -343,6 +377,11 @@
<!-- WIT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -350,6 +389,11 @@
<!-- STR + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -357,6 +401,11 @@
<!-- DEX + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -364,6 +413,11 @@
<!-- CON + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -371,6 +425,11 @@
<!-- MEN + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -378,6 +437,11 @@
<!-- INT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -385,6 +449,11 @@
<!-- WIT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -392,6 +461,11 @@
<!-- STR + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -399,6 +473,11 @@
<!-- DEX + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -406,6 +485,11 @@
<!-- CON + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -413,6 +497,11 @@
<!-- MEN + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -420,6 +509,11 @@
<!-- INT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -427,6 +521,11 @@
<!-- WIT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -434,6 +533,11 @@
<!-- STR + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -441,6 +545,11 @@
<!-- DEX + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -448,6 +557,11 @@
<!-- CON + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -455,6 +569,11 @@
<!-- MEN + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -462,6 +581,11 @@
<!-- INT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -469,6 +593,11 @@
<!-- WIT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -476,6 +605,11 @@
<!-- STR + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -483,6 +617,11 @@
<!-- DEX + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -490,6 +629,11 @@
<!-- CON + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -497,6 +641,11 @@
<!-- MEN + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -504,6 +653,11 @@
<!-- INT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -511,6 +665,11 @@
<!-- WIT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -518,6 +677,11 @@
<!-- STR + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -525,6 +689,11 @@
<!-- DEX + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -532,6 +701,11 @@
<!-- CON + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -539,6 +713,11 @@
<!-- MEN + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -546,6 +725,11 @@
<!-- INT + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -553,6 +737,11 @@
<!-- WIT + 3 and P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -560,6 +749,11 @@
<!-- STR + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -567,6 +761,11 @@
<!-- DEX + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -574,6 +773,11 @@
<!-- CON + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -581,6 +785,11 @@
<!-- MEN + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -588,6 +797,11 @@
<!-- INT + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -595,6 +809,11 @@
<!-- WIT + 3 and M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -602,6 +821,11 @@
<!-- STR + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -609,6 +833,11 @@
<!-- DEX + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -616,6 +845,11 @@
<!-- CON + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -623,6 +857,11 @@
<!-- MEN + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -630,6 +869,11 @@
<!-- INT + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -637,6 +881,11 @@
<!-- WIT + 3 and Accuracy + 5 when equipped. -->
<set name="icon" val="icon.accessory_rabbit_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -644,6 +893,11 @@
<!-- STR + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -651,6 +905,11 @@
<!-- DEX + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -658,6 +917,11 @@
<!-- CON + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -665,6 +929,11 @@
<!-- MEN + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -672,6 +941,11 @@
<!-- INT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -679,6 +953,11 @@
<!-- WIT + 3 and Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -686,6 +965,11 @@
<!-- STR + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -693,6 +977,11 @@
<!-- DEX + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -700,6 +989,11 @@
<!-- CON + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -707,6 +1001,11 @@
<!-- MEN + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -714,6 +1013,11 @@
<!-- INT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -721,6 +1025,11 @@
<!-- WIT + 3, P. Critical Damage + 90, and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -728,6 +1037,11 @@
<!-- STR + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -735,6 +1049,11 @@
<!-- DEX + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -742,6 +1061,11 @@
<!-- CON + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -749,6 +1073,11 @@
<!-- MEN + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -756,6 +1085,11 @@
<!-- INT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -763,6 +1097,11 @@
<!-- WIT + 3 and P. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -770,6 +1109,11 @@
<!-- STR + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -777,6 +1121,11 @@
<!-- DEX + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -784,6 +1133,11 @@
<!-- CON + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -791,6 +1145,11 @@
<!-- MEN + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -798,6 +1157,11 @@
<!-- INT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -805,6 +1169,11 @@
<!-- WIT + 3 and M. Def. + 5% when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -812,6 +1181,11 @@
<!-- STR + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -819,6 +1193,11 @@
<!-- DEX + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -826,6 +1205,11 @@
<!-- CON + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -833,6 +1217,11 @@
<!-- MEN + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -840,6 +1229,11 @@
<!-- INT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
@@ -847,6 +1241,11 @@
<!-- WIT + 3 and Evasion + 5 when equipped. -->
<set name="icon" val="icon.accessory_racoon_ear_i00" />
<set name="default_action" val="EQUIP" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="enchant_enabled" val="7" />
<set name="isAppearanceable" val="true" />
<set name="commissionItemType" val="HAIR_ACCESSORY" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1130,5 +1130,8 @@
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="time" val="10080" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
</list>

View File

@@ -7,7 +7,10 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46201" name="Halloween Weapon Appearance Stone" additionalName="7-day" type="EtcItem">
<!-- Changes the appearance of a weapon into that of a Halloween weapon. -->
@@ -16,6 +19,9 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="time" val="10080" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46202" name="Halloween Weapon Appearance Stone" additionalName="90-day" type="EtcItem">
<!-- Changes the appearance of a weapon into that of a Halloween weapon. -->
@@ -23,7 +29,10 @@
<set name="is_stackable" val="true" />
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46203" name="Halloween Outfit" type="Armor">
<!-- Halloween appearance. -->
@@ -953,7 +962,10 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="time" val="129600" />
<set name="time" val="7776000" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46269" name="Automatic Appearance: Frozen Weapon" type="EtcItem">
<!-- Changes the appearance of all weapons into those of Frozen Weapons of corresponding types. Can be used on shields and sigils. -->
@@ -971,6 +983,9 @@
<set name="is_commissionable" val="false" />
<set name="etcitem_type" val="SHAPE_SHIFTING_AM_FIXED" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46271" name="Ninja Outfit Appearance Stone" type="EtcItem">
<!-- Modifies the appearance of armor into that of a Ninja Outfit. Works on one-piece armor. It changes everything, making the appearance of all armor into that of a Ninja's outfit. -->
@@ -1199,6 +1214,13 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="weight" val="150" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<skills>
<skill id="13827" level="2" /> <!-- Christmas Talisman - ALL STAT (High) -->
</skills>
</item>
<item id="46292" name="Christmas Talisman" additionalName="ALL STAT +1" type="Armor">
<!-- Event item. All Stats + 1 when equipped. Effect does not stack with additional Talismans of the same type. -->
@@ -1207,6 +1229,13 @@
<set name="is_freightable" val="false" />
<set name="is_sellable" val="false" />
<set name="weight" val="150" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<skills>
<skill id="13827" level="1" /> <!-- Christmas Talisman - ALL STAT (High) -->
</skills>
</item>
<item id="46293" name="Christmas Talisman: P. Skill Critical Damage" additionalName="1-hour" type="Armor">
<!-- Event item. P. Skill Critical Damage + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1221,7 +1250,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13828" level="1" /> <!-- Christmas Talisman - P. Skill Critical Damage -->
</skills>
</item>
<item id="46294" name="Christmas Talisman: M. Skill Critical Damage" additionalName="1-hour" type="Armor">
<!-- Event item. M. Skill Critical Damage + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1236,7 +1272,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13829" level="1" /> <!-- Christmas Talisman - M. Skill Critical Damage -->
</skills>
</item>
<item id="46295" name="Christmas Talisman: Ultimate Defense" additionalName="1-hour" type="Armor">
<!-- Event item. P. Atk. + 5000 and M. Def. + 5000 for 15 seconds. Cooldown is 10 min. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1251,7 +1294,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13830" level="1" /> <!-- Christmas Talisman - Ultimate Defense -->
</skills>
</item>
<item id="46296" name="Christmas Talisman: Debuff Resistance" additionalName="1-hour" type="Armor">
<!-- Event Item. Defends against Debuffs 5 times for 15 seconds. Cooldown is 10 min. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1266,7 +1316,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13831" level="1" /> <!-- Christmas Talisman - Debuff Resistance -->
</skills>
</item>
<item id="46297" name="Christmas Talisman: P. Atk." additionalName="1-hour" type="Armor">
<!-- Event item. P. Atk. + 5% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1281,7 +1338,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13832" level="1" /> <!-- Christmas Talisman - P. Atk -->
</skills>
</item>
<item id="46298" name="Christmas Talisman: M. Atk." additionalName="1-hour" type="Armor">
<!-- Event item. M. Atk. + 5% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1296,7 +1360,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13833" level="1" /> <!-- Christmas Talisman - M. Atk -->
</skills>
</item>
<item id="46299" name="Christmas Talisman: P. Def." additionalName="1-hour" type="Armor">
<!-- Event item. P. Def. + 7% when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -1311,6 +1382,13 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13834" level="1" /> <!-- Christmas Talisman - P. Def -->
</skills>
</item>
</list>

View File

@@ -13,7 +13,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13835" level="1" /> <!-- Christmas Talisman - M. Def -->
</skills>
</item>
<item id="46301" name="Christmas Talisman: Attribute Defense" additionalName="1-hour" type="Armor">
<!-- Event item. All Attributes Defense + 30 when equipped. Effect does not stack with additional Talismans of the same type. 1-hour. -->
@@ -28,7 +35,14 @@
<set name="is_sellable" val="false" />
<set name="is_commissionable" val="false" />
<set name="is_private_storeable" val="false" />
<set name="time" val="60" />
<set name="bodypart" val="deco1" />
<set name="useSkillDisTime" val="6" />
<set name="equip_reuse_delay" val="30" />
<set name="immediate_effect" val="true" />
<set name="time" val="3600" />
<skills>
<skill id="13836" level="1" /> <!-- Christmas Talisman - Attribute Resistance -->
</skills>
</item>
<item id="46302" name="Christmas Talisman Pack" additionalName="P. Skill Critical Damage" type="EtcItem">
<!-- Double-click to get a Christmas Talisman: P. Skill Critical Damage (1-hour). Will be deleted after the event. -->

View File

@@ -41,6 +41,9 @@
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46604" name="Zubei Armor Appearance Stone" type="EtcItem">
<!-- Changes the appearance of your entire armor into that of Red Zubei. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
@@ -49,6 +52,9 @@
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46605" name="White Assassin Suit Appearance Stone" type="EtcItem">
<!-- Changes the appearance of your entire armor into that of the White Assassin Suit. Tops and one-pieces only. Modified armor can be restored to their original appearance with a Restoration Stone. -->
@@ -59,111 +65,184 @@
<set name="is_stackable" val="true" />
<set name="handler" val="Appearance" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="46606" name="Blue Dynasty Circlet" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
</item>
<item id="46607" name="Blue Dynasty Circlet" additionalName="Str" type="Armor">
<item id="46607" name="Blue Dynasty Circlet" additionalName="STR" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. STR + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9554" level="1" />
</skills>
</item>
<item id="46608" name="Blue Dynasty Circlet" additionalName="DEX" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. DEX + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9555" level="1" />
</skills>
</item>
<item id="46609" name="Blue Dynasty Circlet" additionalName="CON" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CON + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9556" level="1" />
</skills>
</item>
<item id="46610" name="Blue Dynasty Circlet" additionalName="MEN" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. MEN + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9557" level="1" />
</skills>
</item>
<item id="46611" name="Blue Dynasty Circlet" additionalName="Int" type="Armor">
<item id="46611" name="Blue Dynasty Circlet" additionalName="INT" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. INT + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9558" level="1" />
</skills>
</item>
<item id="46612" name="Blue Dynasty Circlet" additionalName="WIT" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. WIT + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9559" level="1" />
</skills>
</item>
<item id="46613" name="Blue Dynasty Circlet" additionalName="Critical Rate" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Critical Rate + 50 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9560" level="1" />
</skills>
</item>
<item id="46614" name="Blue Dynasty Circlet" additionalName="Critical Damage" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Critical Damage + 90 and M. Critical Damage + 68 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9561" level="1" />
</skills>
</item>
<item id="46615" name="Blue Dynasty Circlet" additionalName="P. Def." type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Def. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9562" level="1" />
</skills>
</item>
<item id="46616" name="Blue Dynasty Circlet" additionalName="M. Def." type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Def. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9563" level="1" />
</skills>
</item>
<item id="46617" name="Blue Dynasty Circlet" additionalName="Evasion" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Evasion + 5 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9564" level="1" />
</skills>
</item>
<item id="46618" name="Blue Dynasty Circlet" additionalName="P. Atk." type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. P. Atk. + 5% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9565" level="1" />
</skills>
</item>
<item id="46619" name="Blue Dynasty Circlet" additionalName="M. Atk." type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. M. Atk. + 10% when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9566" level="1" />
</skills>
</item>
<item id="46620" name="Blue Dynasty Circlet" additionalName="Accuracy" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. Accuracy + 5 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="9567" level="1" />
</skills>
</item>
<item id="46621" name="Shadow Blue Seal Bracelet" type="Armor">
<!-- Can summon Shadow Blue. -->
@@ -249,16 +328,26 @@
<item id="46627" name="Blue Dynasty Circlet" additionalName="LUC" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. LUC + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="18048" level="1" /> <!-- Hair Accessory (LUC) -->
</skills>
</item>
<item id="46628" name="Blue Dynasty Circlet" additionalName="CHA" type="Armor">
<!-- Blue Dynasty Circlet. Uses 2 Hair Accessory slots. CHA + 3 when equipped. -->
<set name="icon" val="icon.Accessary_angel_circlet_i00" />
<set name="bodypart" val="hair2" />
<set name="immediate_effect" val="true" />
<set name="default_action" val="EQUIP" />
<set name="is_freightable" val="false" />
<set name="weight" val="10" />
<skills>
<skill id="18049" level="1" /> <!-- Hair Accessory (CHA) -->
</skills>
</item>
<item id="46629" name="Practice StormBringer" type="Weapon">
<!-- Temporary practice weapon for learning about the Soul Crystal system. Very inefficient as a weapon. -->
@@ -294,6 +383,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">142.0</stat>
<stat type="maxMp">58</stat>
</stats>
</item>
<item id="46631" name="Twilight Earring" additionalName="30-day" type="Armor">
@@ -313,6 +403,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">107.0</stat>
<stat type="maxMp">43</stat>
</stats>
</item>
<item id="46632" name="Twilight Ring" additionalName="30-day" type="Armor">
@@ -332,6 +423,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">71.0</stat>
<stat type="maxMp">29</stat>
</stats>
</item>
<item id="46633" name="Seraph Necklace" additionalName="30-day" type="Armor">
@@ -351,6 +443,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">161.0</stat>
<stat type="maxMp">62</stat>
</stats>
</item>
<item id="46634" name="Seraph Earring" additionalName="30-day" type="Armor">
@@ -370,6 +463,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">121.0</stat>
<stat type="maxMp">46</stat>
</stats>
</item>
<item id="46635" name="Seraph Ring" additionalName="30-day" type="Armor">
@@ -389,6 +483,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">80.0</stat>
<stat type="maxMp">31</stat>
</stats>
</item>
<item id="46636" name="Eternal Necklace" additionalName="30-day" type="Armor">
@@ -408,6 +503,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">174.0</stat>
<stat type="maxMp">65</stat>
</stats>
</item>
<item id="46637" name="Eternal Earring" additionalName="30-day" type="Armor">
@@ -427,6 +523,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">130.0</stat>
<stat type="maxMp">49</stat>
</stats>
</item>
<item id="46638" name="Eternal Ring" additionalName="30-day" type="Armor">
@@ -446,6 +543,7 @@
<set name="time" val="43200" />
<stats>
<stat type="mDef">87.0</stat>
<stat type="maxMp">33</stat>
</stats>
</item>
<item id="46639" name="Roa's Lost Item" additionalName="Event" type="EtcItem">

View File

@@ -967,33 +967,45 @@
<skill id="18621" level="1" /> <!-- Supply Box -->
</skills>
</item>
<item id="47363" name="Red Noblesse Appearance Stone" type="EtcItem">
<item id="47363" name="Red Noblesse Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-bod armor into a Red Noblesse Garment. The stone modifies the appearance of all armor, and all armor appears as a Red Noblesse Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47364" name="White Noblesse Appearance Stone" type="EtcItem">
<item id="47364" name="White Noblesse Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-bod armor into a White Noblesse Garment. The stone modifies the appearance of all armor, and all armor appears as a White Noblesse Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47365" name="Blue Musketeer Appearance Stone" type="EtcItem">
<item id="47365" name="Blue Musketeer Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-bod armor into a Blue Musketeer Garment. The stone modifies the appearance of all armor, and all armor appears as a Blue Musketeer Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47366" name="Red Musketeer Appearance Stone" type="EtcItem">
<item id="47366" name="Red Musketeer Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-bod armor into a Red Musketeer Garment. The stone modifies the appearance of all armor, and all armor appears as a Red Musketeer Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47367" name="Royal Save Ticket Box" type="EtcItem">
<!-- Double click to obtain an R~R99 Red or Blue Royal Save Ticket. -->

View File

@@ -629,33 +629,45 @@
<set name="is_sellable" val="false" />
<set name="is_stackable" val="true" />
</item>
<item id="47461" name="Red Pirate Garment Appearance Stone" type="EtcItem">
<item id="47461" name="Red Pirate Garment Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-body armor into a Red Pirate Garment. The stone modifies the appearance of all armor, and all armor appears as a Red Pirate Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47462" name="Pirate Shipmate Garment Appearance Stone" type="EtcItem">
<item id="47462" name="Pirate Shipmate Garment Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-body armor into a Pirate Shipmate Garment. The stone modifies the appearance of all armor, and all armor appears as a Pirate Shipmate Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47463" name="Cowboy-Purple Garment Appearance Stone" type="EtcItem">
<item id="47463" name="Cowboy-Purple Garment Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-body armor into a Cowboy-Purple Garment. The stone modifies the appearance of all armor, and all armor appears as a Cowboy-Purple Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47464" name="White Assassin Suit Appearance Stone" type="EtcItem">
<item id="47464" name="White Assassin Suit Appearance Stone" additionalName="None" type="EtcItem">
<!-- Use to change the appearance of your upper or full-body armor into a White Assassin Suit. The stone modifies the appearance of all armor, and all armor appears as a White Assassin Outfit. -->
<set name="icon" val="BranchSys3.icon1.g_scrl_change_chest" />
<set name="default_action" val="SKILL_REDUCE" />
<set name="is_sellable" val="false" />
<set name="etcitem_type" val="SCROLL" />
<set name="is_stackable" val="true" />
<set name="is_sellable" val="false" />
<set name="immediate_effect" val="true" />
<set name="handler" val="Appearance" />
<set name="default_action" val="SKILL_REDUCE" />
</item>
<item id="47465" name="Chaos Essence (Dual Class) Treasure Chest (Time limited)" type="EtcItem">
<!-- Double click to obtain Chaos Essence (Dual Class) 30-day. -->

View File

@@ -95,6 +95,105 @@
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="visual" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:int" name="id" use="optional" />
<xs:attribute name="weaponType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="SWORD" />
<xs:enumeration value="BLUNT" />
<xs:enumeration value="DAGGER" />
<xs:enumeration value="BOW" />
<xs:enumeration value="POLE" />
<xs:enumeration value="DUAL" />
<xs:enumeration value="ETC" />
<xs:enumeration value="FIST" />
<xs:enumeration value="DUALFIST" />
<xs:enumeration value="FISHINGROD" />
<xs:enumeration value="RAPIER" />
<xs:enumeration value="ANCIENTSWORD" />
<xs:enumeration value="CROSSBOW" />
<xs:enumeration value="FLAG" />
<xs:enumeration value="OWNTHING" />
<xs:enumeration value="DUALDAGGER" />
<xs:enumeration value="DUALBLUNT" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="handType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="ONE_HANDED" />
<xs:enumeration value="TWO_HANDED" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="bodyPart" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="none" />
<xs:enumeration value="shirt" />
<xs:enumeration value="lbracelet" />
<xs:enumeration value="rbracelet" />
<xs:enumeration value="talisman" />
<xs:enumeration value="chest" />
<xs:enumeration value="fullarmor" />
<xs:enumeration value="head" />
<xs:enumeration value="hair" />
<xs:enumeration value="hairall" />
<xs:enumeration value="underwear" />
<xs:enumeration value="back" />
<xs:enumeration value="neck" />
<xs:enumeration value="legs" />
<xs:enumeration value="feet" />
<xs:enumeration value="gloves" />
<xs:enumeration value="chest,legs" />
<xs:enumeration value="belt" />
<xs:enumeration value="rhand" />
<xs:enumeration value="lhand" />
<xs:enumeration value="lrhand" />
<xs:enumeration value="rear;lear" />
<xs:enumeration value="rfinger;lfinger" />
<xs:enumeration value="brooch" />
<xs:enumeration value="brooch_jewel" />
<xs:enumeration value="onepiece" />
<xs:enumeration value="hair2" />
<xs:enumeration value="dhair" />
<xs:enumeration value="alldress" />
<xs:enumeration value="deco1" />
<xs:enumeration value="waist" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="magicType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="NONE" />
<xs:enumeration value="MAGICAL" />
<xs:enumeration value="PHYISICAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:integer" name="id" use="required" />
<xs:attribute name="targetType" use="optional">
@@ -181,6 +280,9 @@
<xs:attribute name="armorType" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="HEAVY" />
<xs:enumeration value="LIGHT" />
<xs:enumeration value="MAGIC" />
<xs:enumeration value="SIGIL" />
<xs:enumeration value="SHIELD" />
</xs:restriction>

View File

@@ -22,13 +22,13 @@ import java.util.Map;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import com.l2jmobius.commons.util.IGameXmlReader;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
@@ -75,9 +75,6 @@ public class AppearanceItemData implements IGameXmlReader
@Override
public void parseDocument(Document doc, File f)
{
StatsSet set;
Node att;
NamedNodeMap attrs;
for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
{
if ("list".equalsIgnoreCase(n.getNodeName()))
@@ -86,15 +83,7 @@ public class AppearanceItemData implements IGameXmlReader
{
if ("appearance_stone".equalsIgnoreCase(d.getNodeName()))
{
attrs = d.getAttributes();
set = new StatsSet();
for (int i = 0; i < attrs.getLength(); i++)
{
att = attrs.item(i);
set.set(att.getNodeName(), att.getNodeValue());
}
final AppearanceStone stone = new AppearanceStone(set);
final AppearanceStone stone = new AppearanceStone(new StatsSet(parseAttributes(d)));
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
{
switch (c.getNodeName())
@@ -129,6 +118,10 @@ public class AppearanceItemData implements IGameXmlReader
stone.addRaceNot(raceNot);
break;
}
case "visual":
{
stone.addVisualId(new AppearanceHolder(new StatsSet(parseAttributes(c))));
}
}
}
if (ItemTable.getInstance().getTemplate(stone.getId()) != null)
@@ -145,6 +138,11 @@ public class AppearanceItemData implements IGameXmlReader
}
}
public int getLoadedElementsCount()
{
return _stones.size();
}
public AppearanceStone getStone(int stone)
{
return _stones.get(stone);

View File

@@ -0,0 +1,85 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jmobius.gameserver.model.holders;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceHandType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceMagicType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
/**
* @author Sdw
*/
public class AppearanceHolder
{
private final int _visualId;
private final WeaponType _weaponType;
private final ArmorType _armorType;
private final AppearanceHandType _handType;
private final AppearanceMagicType _magicType;
private final AppearanceTargetType _targetType;
private final Integer _bodyPart;
public AppearanceHolder(StatsSet set)
{
_visualId = set.getInt("id", 0);
_weaponType = set.getEnum("weaponType", WeaponType.class, WeaponType.NONE);
_armorType = set.getEnum("armorType", ArmorType.class, ArmorType.NONE);
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
_targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
_bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
}
public WeaponType getWeaponType()
{
return _weaponType;
}
public ArmorType getArmorType()
{
return _armorType;
}
public AppearanceHandType getHandType()
{
return _handType;
}
public AppearanceMagicType getMagicType()
{
return _magicType;
}
public AppearanceTargetType getTargetType()
{
return _targetType;
}
public int getBodyPart()
{
return _bodyPart;
}
public int getVisualId()
{
return _visualId;
}
}

View File

@@ -24,10 +24,14 @@ import java.util.List;
import com.l2jmobius.gameserver.datatables.ItemTable;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.StatsSet;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.CrystalType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.SystemMessageId;
/**
* @author UnAfraid
@@ -48,6 +52,7 @@ public class AppearanceStone
private List<Integer> _bodyParts;
private List<Race> _races;
private List<Race> _racesNot;
private List<AppearanceHolder> _allVisualIds;
public AppearanceStone(StatsSet set)
{
@@ -61,9 +66,27 @@ public class AppearanceStone
_handType = set.getEnum("handType", AppearanceHandType.class, AppearanceHandType.NONE);
_magicType = set.getEnum("magicType", AppearanceMagicType.class, AppearanceMagicType.NONE);
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
// No grade items cannot change appearance, because client doesn't have No-Grade restoration stones.
final CrystalType crystalType = set.getEnum("crystalType", CrystalType.class, CrystalType.NONE);
if (crystalType == CrystalType.NONE)
final CrystalType crystalType = set.getEnum("grade", CrystalType.class, null);
// If no crystal type is defined, we must add all defaults.
if (crystalType == null)
{
switch (targetType)
{
case ACCESSORY:
case ALL:
{
addCrystalType(CrystalType.NONE);
}
case WEAPON:
case ARMOR:
{
for (CrystalType cryType : CrystalType.values())
{
@@ -73,17 +96,13 @@ public class AppearanceStone
}
}
}
}
}
else
{
addCrystalType(crystalType);
}
final AppearanceTargetType targetType = set.getEnum("targetType", AppearanceTargetType.class, AppearanceTargetType.NONE);
if (targetType != AppearanceTargetType.NONE)
{
addTargetType(targetType);
}
final int bodyPart = ItemTable.SLOTS.get(set.getString("bodyPart", "none"));
if (bodyPart != L2Item.SLOT_NONE)
{
@@ -185,6 +204,20 @@ public class AppearanceStone
_bodyParts.add(part);
}
public void addVisualId(AppearanceHolder appearanceHolder)
{
if (_allVisualIds == null)
{
_allVisualIds = new ArrayList<>();
}
_allVisualIds.add(appearanceHolder);
}
public List<AppearanceHolder> getVisualIds()
{
return _allVisualIds != null ? _allVisualIds : Collections.emptyList();
}
public List<Integer> getBodyParts()
{
return _bodyParts != null ? _bodyParts : Collections.emptyList();
@@ -217,4 +250,297 @@ public class AppearanceStone
{
return _racesNot != null ? _racesNot : Collections.emptyList();
}
/**
* @param player the actor requesting to use this appearance.
* @param targetItem the item to be modified with this appearance.
* @return {@code true} if the item is valid for appearance change, {@code false} otherwise.
*/
public boolean checkConditions(L2PcInstance player, L2ItemInstance targetItem)
{
if (targetItem == null)
{
return false;
}
if (getTargetTypes().isEmpty())
{
return false;
}
if (targetItem.isEquipped() && (getRacesNot().contains(player.getRace()) || (!getRaces().isEmpty() && !getRaces().contains(player.getRace()))))
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AN_EQUIPPED_ITEM_INTO_THE_APPEARANCE_OF_AN_UNEQUIPPABLE_ITEM_PLEASE_CHECK_RACE_GENDER_RESTRICTIONS_YOU_CAN_MODIFY_THE_APPEARANCE_IF_YOU_UNEQUIP_THE_ITEM);
return false;
}
switch (getType())
{
case RESTORE:
{
if (targetItem.getVisualId() == 0)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_RESTORE_ITEMS_THAT_HAVE_NOT_BEEN_MODIFIED);
return false;
}
if ((targetItem.isWeapon() && !getTargetTypes().contains(AppearanceTargetType.WEAPON)) || (targetItem.isArmor() && !getTargetTypes().contains(AppearanceTargetType.ARMOR)) || (targetItem.isEtcItem() && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (((targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIR2) || (targetItem.getItem().getBodyPart() == L2Item.SLOT_HAIRALL)) && !getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
default:
{
// Seems like in retail item with already changed appearance, can be changed again without being restored.
final AppearanceTargetType targetType = getTargetTypes().get(0);
switch (targetType)
{
case NONE:
{
return false;
}
case WEAPON:
{
if (!targetItem.isWeapon())
{
player.sendPacket(SystemMessageId.WEAPONS_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ARMOR:
{
if (!targetItem.isArmor())
{
player.sendPacket(SystemMessageId.ARMOR_ONLY);
return false;
}
if (targetItem.getItem().getCrystalType() == CrystalType.NONE)
{
player.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NO_GRADE_ITEMS);
return false;
}
break;
}
case ACCESSORY:
{
if ((targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIR2) && (targetItem.getItem().getBodyPart() != L2Item.SLOT_HAIRALL))
{
player.sendPacket(SystemMessageId.HAIR_ACCESSORIES_ONLY);
return false;
}
break;
}
case ALL:
{
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (findVisualChange(targetItem) == null)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
return true;
}
}
break;
}
}
if (!getCrystalTypes().isEmpty() && !getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (targetItem.isArmor() && !getBodyParts().isEmpty() && !getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
if (getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != getWeaponType()))
{
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_USED_AS_AN_APPEARANCE_WEAPON);
return false;
}
switch (getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
}
switch (getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
if (getArmorType() != ArmorType.NONE)
{
switch (getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return false;
}
}
}
}
return true;
}
public AppearanceHolder findVisualChange(L2ItemInstance targetItem)
{
for (AppearanceHolder holder : _allVisualIds)
{
if (targetItem.isArmor() && (holder.getBodyPart() != 0) && (targetItem.getItem().getBodyPart() != holder.getBodyPart()))
{
continue;
}
if (holder.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != holder.getWeaponType()))
{
continue;
}
switch (holder.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
continue;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
continue;
}
break;
}
}
switch (holder.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
continue;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
continue;
}
}
}
}
if (holder.getArmorType() != ArmorType.NONE)
{
switch (holder.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
continue;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
continue;
}
}
}
}
return holder;
}
return null;
}
}

View File

@@ -26,13 +26,11 @@ import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingExtractionItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
/**
* @author UnAfraid
@@ -63,175 +61,100 @@ public class RequestExTryToPutShapeShiftingEnchantSupportItem implements IClient
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
final PcInventory inventory = player.getInventory();
final L2ItemInstance targetItem = inventory.getItemByObjectId(_targetItemObjId);
final L2ItemInstance extracItem = inventory.getItemByObjectId(_extracItemObjId);
final L2ItemInstance extractItem = inventory.getItemByObjectId(_extracItemObjId);
L2ItemInstance stone = request.getAppearanceStone();
if ((targetItem == null) || (extracItem == null) || (stone == null))
if ((targetItem == null) || (extractItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()) || (extractItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((appearanceStone.getType() == AppearanceType.RESTORE) || (appearanceStone.getType() == AppearanceType.FIXED))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_A_MODIFIED_ITEM);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (extracItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extracItem);
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
player.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.YOU_CANNOT_EXTRACT_FROM_ITEMS_THAT_ARE_HIGHER_GRADE_THAN_ITEMS_TO_BE_MODIFIED);
player.sendPacket(ExPutShapeShiftingExtractionItemResult.FAILED);
return;
}
if (!appearanceStone.checkConditions(player, targetItem))
{
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
request.setAppearanceExtractItem(extractItem);
client.sendPacket(ExPutShapeShiftingExtractionItemResult.SUCCESS);
}
}

View File

@@ -22,13 +22,8 @@ import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
@@ -77,13 +72,20 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (!targetItem.getItem().isAppearanceable())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
@@ -91,8 +93,7 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -107,158 +108,9 @@ public class RequestExTryToPutShapeShiftingTargetItem implements IClientIncoming
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_OR_RESTORE_NOGRADE_ITEMS);
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(SystemMessageId.ITEM_GRADES_DO_NOT_MATCH);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
client.sendPacket(SystemMessageId.THIS_ITEM_DOES_NOT_MEET_REQUIREMENTS);
return;
}
}
}
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
player.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
return;
}

View File

@@ -22,14 +22,12 @@ import com.l2jmobius.gameserver.enums.InventorySlot;
import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.actor.request.ShapeShiftingItemRequest;
import com.l2jmobius.gameserver.model.holders.AppearanceHolder;
import com.l2jmobius.gameserver.model.itemcontainer.PcInventory;
import com.l2jmobius.gameserver.model.items.L2Item;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceStone;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceTargetType;
import com.l2jmobius.gameserver.model.items.appearance.AppearanceType;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.items.type.ArmorType;
import com.l2jmobius.gameserver.model.items.type.WeaponType;
import com.l2jmobius.gameserver.model.variables.ItemVariables;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
@@ -37,8 +35,6 @@ import com.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import com.l2jmobius.gameserver.network.serverpackets.ExAdenaInvenCount;
import com.l2jmobius.gameserver.network.serverpackets.ExUserInfoEquipSlot;
import com.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExPutShapeShiftingTargetItemResult;
import com.l2jmobius.gameserver.network.serverpackets.appearance.ExShapeShiftingResult;
/**
@@ -68,7 +64,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if (player.isInStoreMode() || player.isInCraftMode() || player.isProcessingRequest() || player.isProcessingTransaction() || (request == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
client.sendPacket(SystemMessageId.YOU_CANNOT_USE_THIS_SYSTEM_DURING_TRADING_PRIVATE_STORE_AND_WORKSHOP_SETUP);
return;
}
@@ -79,36 +75,36 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
if ((targetItem == null) || (stone == null))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getOwnerId() != player.getObjectId())
if ((stone.getOwnerId() != player.getObjectId()) || (targetItem.getOwnerId() != player.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_MODIFIED_OR_RESTORED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((targetItem.getItemLocation() != ItemLocation.INVENTORY) && (targetItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
stone = inventory.getItemByObjectId(stone.getObjectId());
if (stone == null)
if ((stone = inventory.getItemByObjectId(stone.getObjectId())) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
@@ -116,223 +112,100 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
final AppearanceStone appearanceStone = AppearanceItemData.getInstance().getStone(stone.getId());
if (appearanceStone == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (((appearanceStone.getType() != AppearanceType.RESTORE) && (targetItem.getVisualId() > 0)) || ((appearanceStone.getType() == AppearanceType.RESTORE) && (targetItem.getVisualId() == 0)))
if (!appearanceStone.checkConditions(player, targetItem))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
// TODO: Handle hair accessory!
// if (!targetItem.isEtcItem() && (targetItem.getItem().getCrystalType() == CrystalType.NONE))
{
// client.sendPacket(ExShapeShiftingResult.FAILED);
// player.removeRequest(ShapeShiftingItemRequest.class.getName());
// return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY)) // accessory tempfix
{
if (!appearanceStone.getCrystalTypes().isEmpty() && !appearanceStone.getCrystalTypes().contains(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getTargetTypes().isEmpty())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!appearanceStone.getTargetTypes().contains(AppearanceTargetType.ALL))
{
if (targetItem.isWeapon() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.WEAPON))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ARMOR) && !appearanceStone.getTargetTypes().contains(AppearanceTargetType.ACCESSORY))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
else if (targetItem.isArmor() && !appearanceStone.getBodyParts().isEmpty() && !appearanceStone.getBodyParts().contains(targetItem.getItem().getBodyPart()))
{
client.sendPacket(ExPutShapeShiftingTargetItemResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
if (appearanceStone.getWeaponType() != WeaponType.NONE)
{
if (!targetItem.isWeapon() || (targetItem.getItemType() != appearanceStone.getWeaponType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
switch (appearanceStone.getHandType())
{
case ONE_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_R_HAND) != L2Item.SLOT_R_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case TWO_HANDED:
{
if ((targetItem.getItem().getBodyPart() & L2Item.SLOT_LR_HAND) != L2Item.SLOT_LR_HAND)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
}
switch (appearanceStone.getMagicType())
{
case MAGICAL:
{
if (!targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case PHYISICAL:
{
if (targetItem.getItem().isMagicWeapon())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
if (appearanceStone.getArmorType() != ArmorType.NONE)
{
switch (appearanceStone.getArmorType())
{
case SHIELD:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SHIELD))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
break;
}
case SIGIL:
{
if (!targetItem.isArmor() || (targetItem.getItemType() != ArmorType.SIGIL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
}
}
}
final L2ItemInstance extracItem = request.getAppearanceExtractItem();
final L2ItemInstance extractItem = request.getAppearanceExtractItem();
int extracItemId = 0;
if ((appearanceStone.getType() != AppearanceType.RESTORE) && (appearanceStone.getType() != AppearanceType.FIXED))
{
if (extracItem == null)
if (extractItem == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!targetItem.getItem().isAppearanceable())
if (extractItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extracItem.getItemLocation() != ItemLocation.INVENTORY) && (extracItem.getItemLocation() != ItemLocation.PAPERDOLL))
if (!extractItem.getItem().isAppearanceable())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (!extracItem.isEtcItem() && (targetItem.getItem().getCrystalType().ordinal() <= extracItem.getItem().getCrystalType().ordinal()))
if ((extractItem.getItemLocation() != ItemLocation.INVENTORY) && (extractItem.getItemLocation() != ItemLocation.PAPERDOLL))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getVisualId() > 0)
if (extractItem.getItem().getCrystalType().isGreater(targetItem.getItem().getCrystalType()))
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (extracItem.getOwnerId() != player.getObjectId())
if (extractItem.getVisualId() > 0)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extracItem.getId();
}
if (targetItem.getOwnerId() != player.getObjectId())
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
final long cost = appearanceStone.getCost();
if ((extractItem.getItemType() != targetItem.getItemType()) || (extractItem.getId() == targetItem.getId()) || (extractItem.getObjectId() == targetItem.getObjectId()))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if ((extractItem.getItem().getBodyPart() != targetItem.getItem().getBodyPart()) && ((extractItem.getItem().getBodyPart() != L2Item.SLOT_FULL_ARMOR) || (targetItem.getItem().getBodyPart() != L2Item.SLOT_CHEST)))
{
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
extracItemId = extractItem.getId();
}
long cost = appearanceStone.getCost();
if (cost > player.getAdena())
{
client.sendPacket(SystemMessageId.YOU_CANNOT_MODIFY_AS_YOU_DO_NOT_HAVE_ENOUGH_ADENA);
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (stone.getCount() < 1L)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
client.sendPacket(ExShapeShiftingResult.CLOSE);
player.removeRequest(ShapeShiftingItemRequest.class);
return;
}
if (appearanceStone.getType() == AppearanceType.NORMAL)
{
if (inventory.destroyItem(getClass().getSimpleName(), extracItem, 1, player, this) == null)
if (inventory.destroyItem(getClass().getSimpleName(), extractItem, 1, player, this) == null)
{
client.sendPacket(ExShapeShiftingResult.FAILED);
player.removeRequest(ShapeShiftingItemRequest.class);
@@ -341,7 +214,7 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
inventory.destroyItem(getClass().getSimpleName(), stone, 1, player, this);
player.reduceAdena(getClass().getSimpleName(), cost, extracItem, true);
player.reduceAdena(getClass().getSimpleName(), cost, extractItem, false);
switch (appearanceStone.getType())
{
@@ -353,18 +226,32 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
case NORMAL:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case BLESSED:
{
targetItem.setVisualId(extracItem.getId());
targetItem.setVisualId(extractItem.getId());
break;
}
case FIXED:
{
if (appearanceStone.getVisualIds().isEmpty())
{
extracItemId = appearanceStone.getVisualId();
targetItem.setVisualId(appearanceStone.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
else
{
final AppearanceHolder holder = appearanceStone.findVisualChange(targetItem);
if (holder != null)
{
extracItemId = holder.getVisualId();
targetItem.setVisualId(holder.getVisualId());
targetItem.getVariables().set(ItemVariables.VISUAL_APPEARANCE_STONE_ID, appearanceStone.getId());
}
}
break;
}
}
@@ -376,17 +263,13 @@ public class RequestShapeShiftingItem implements IClientIncomingPacket
}
targetItem.getVariables().storeMe();
if (appearanceStone.getCost() > 0)
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_SPENT_S1_ON_A_SUCCESSFUL_APPEARANCE_MODIFICATION).addLong(cost));
}
else
{
client.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_S_APPEARANCE_MODIFICATION_HAS_FINISHED).addItemName(targetItem.getDisplayId()));
}
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(targetItem);
if (extractItem != null)
{
iu.addModifiedItem(extractItem);
}
if (inventory.getItemByObjectId(stone.getObjectId()) == null)
{
iu.addRemovedItem(stone);

Some files were not shown because too many files have changed in this diff Show More