summaryrefslogtreecommitdiffstats
path: root/src/Items/ItemSword.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Items/ItemSword.h')
-rw-r--r--src/Items/ItemSword.h36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/Items/ItemSword.h b/src/Items/ItemSword.h
index a7c1d2432..2b2dbfc0d 100644
--- a/src/Items/ItemSword.h
+++ b/src/Items/ItemSword.h
@@ -12,16 +12,46 @@
class cItemSwordHandler :
public cItemHandler
{
+ typedef cItemHandler super;
public:
cItemSwordHandler(int a_ItemType)
: cItemHandler(a_ItemType)
{
-
}
-
+
+
virtual bool CanHarvestBlock(BLOCKTYPE a_BlockType) override
{
- return (a_BlockType == E_BLOCK_COBWEB);
+ if (a_BlockType == E_BLOCK_COBWEB)
+ {
+ return true;
+ }
+ return super::CanHarvestBlock(a_BlockType);
+ }
+
+
+ virtual bool CanRepairWithRawMaterial(short a_ItemType) override
+ {
+ switch (m_ItemType)
+ {
+ case E_ITEM_WOODEN_SWORD: return (a_ItemType == E_BLOCK_PLANKS);
+ case E_ITEM_STONE_SWORD: return (a_ItemType == E_BLOCK_COBBLESTONE);
+ case E_ITEM_IRON_SWORD: return (a_ItemType == E_ITEM_IRON);
+ case E_ITEM_GOLD_SWORD: return (a_ItemType == E_ITEM_GOLD);
+ case E_ITEM_DIAMOND_SWORD: return (a_ItemType == E_ITEM_DIAMOND);
+ }
+ return false;
+ }
+
+
+ virtual short GetDurabilityLossByAction(eDurabilityLostAction a_Action) override
+ {
+ switch ((int)a_Action)
+ {
+ case dlaAttackEntity: return 1;
+ case dlaBreakBlock: return 2;
+ }
+ return 0;
}
} ;