2014-09-12 13:34:19 -04:00
|
|
|
|
2013-07-29 07:13:03 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "ItemHandler.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class cItemFoodHandler :
|
|
|
|
public cItemHandler
|
|
|
|
{
|
|
|
|
typedef cItemHandler super;
|
|
|
|
|
|
|
|
public:
|
|
|
|
cItemFoodHandler(int a_ItemType)
|
|
|
|
: super(a_ItemType)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool IsFood(void) override
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
virtual FoodInfo GetFoodInfo(void) override
|
|
|
|
{
|
2014-07-21 09:19:48 -04:00
|
|
|
switch (m_ItemType)
|
2013-07-29 07:13:03 -04:00
|
|
|
{
|
2013-08-02 02:54:30 -04:00
|
|
|
// Please keep alpha-sorted.
|
2014-09-03 19:18:58 -04:00
|
|
|
case E_ITEM_BAKED_POTATO: return FoodInfo(5, 7.2);
|
2013-08-02 02:46:30 -04:00
|
|
|
case E_ITEM_BREAD: return FoodInfo(5, 6);
|
2014-02-03 16:16:26 -05:00
|
|
|
// Carrots handled in ItemSeeds
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_COOKED_CHICKEN: return FoodInfo(6, 7.2);
|
2014-07-31 17:04:00 -04:00
|
|
|
case E_ITEM_COOKED_FISH: return FoodInfo(5, 6); // TODO: Add other fish types
|
2014-09-11 09:57:36 -04:00
|
|
|
case E_ITEM_COOKED_MUTTON: return FoodInfo(6, 9.6);
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_COOKED_PORKCHOP: return FoodInfo(8, 12.8);
|
2014-09-11 09:57:36 -04:00
|
|
|
case E_ITEM_COOKED_RABBIT: return FoodInfo(5, 6);
|
2013-08-02 02:46:30 -04:00
|
|
|
case E_ITEM_COOKIE: return FoodInfo(2, 0.4);
|
2014-07-31 17:04:00 -04:00
|
|
|
// Golden apple handled in ItemGoldenApple
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_GOLDEN_CARROT: return FoodInfo(6, 14.4);
|
2013-08-02 02:46:30 -04:00
|
|
|
case E_ITEM_MELON_SLICE: return FoodInfo(2, 1.2);
|
2014-07-31 17:04:00 -04:00
|
|
|
case E_ITEM_POISONOUS_POTATO: return FoodInfo(2, 1.2);
|
2014-02-03 16:16:26 -05:00
|
|
|
// Potatoes handled in ItemSeeds
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_PUMPKIN_PIE: return FoodInfo(8, 4.8);
|
2014-09-11 09:57:36 -04:00
|
|
|
case E_ITEM_RABBIT_STEW: return FoodInfo(10, 12);
|
2014-09-03 04:29:10 -04:00
|
|
|
case E_ITEM_RED_APPLE: return FoodInfo(4, 2.4);
|
2013-08-02 02:46:30 -04:00
|
|
|
case E_ITEM_RAW_BEEF: return FoodInfo(3, 1.8);
|
2014-07-31 17:04:00 -04:00
|
|
|
case E_ITEM_RAW_CHICKEN: return FoodInfo(2, 1.2);
|
2013-08-02 02:46:30 -04:00
|
|
|
case E_ITEM_RAW_FISH: return FoodInfo(2, 1.2);
|
2014-09-03 04:29:10 -04:00
|
|
|
case E_ITEM_RAW_MUTTON: return FoodInfo(2, 1.2);
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_RAW_PORKCHOP: return FoodInfo(3, 1.8);
|
2014-09-11 09:57:36 -04:00
|
|
|
case E_ITEM_RAW_RABBIT: return FoodInfo(3, 1.8);
|
2014-07-31 17:04:00 -04:00
|
|
|
case E_ITEM_ROTTEN_FLESH: return FoodInfo(4, 0.8);
|
|
|
|
case E_ITEM_SPIDER_EYE: return FoodInfo(2, 3.2);
|
2013-08-02 02:54:30 -04:00
|
|
|
case E_ITEM_STEAK: return FoodInfo(8, 12.8);
|
2013-07-29 07:13:03 -04:00
|
|
|
}
|
|
|
|
LOGWARNING("%s: Unknown food item (%d), returning zero nutrition", __FUNCTION__, m_ItemType);
|
|
|
|
return FoodInfo(0, 0.f);
|
|
|
|
}
|
2014-07-31 17:04:00 -04:00
|
|
|
|
|
|
|
virtual bool GetEatEffect(cEntityEffect::eType & a_EffectType, int & a_EffectDurationTicks, short & a_EffectIntensity, float & a_Chance) override
|
|
|
|
{
|
|
|
|
switch (m_ItemType)
|
|
|
|
{
|
|
|
|
case E_ITEM_RAW_CHICKEN:
|
|
|
|
{
|
|
|
|
a_EffectType = cEntityEffect::effHunger;
|
|
|
|
a_EffectDurationTicks = 600;
|
|
|
|
a_EffectIntensity = 0;
|
|
|
|
a_Chance = 0.3f;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
case E_ITEM_ROTTEN_FLESH:
|
|
|
|
{
|
|
|
|
a_EffectType = cEntityEffect::effHunger;
|
|
|
|
a_EffectDurationTicks = 600;
|
|
|
|
a_EffectIntensity = 0;
|
|
|
|
a_Chance = 0.8f;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
case E_ITEM_SPIDER_EYE:
|
|
|
|
{
|
|
|
|
a_EffectType = cEntityEffect::effPoison;
|
|
|
|
a_EffectDurationTicks = 100;
|
|
|
|
a_EffectIntensity = 0;
|
|
|
|
a_Chance = 1.0f;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
case E_ITEM_POISONOUS_POTATO:
|
|
|
|
{
|
|
|
|
a_EffectType = cEntityEffect::effPoison;
|
|
|
|
a_EffectDurationTicks = 100;
|
|
|
|
a_EffectIntensity = 0;
|
|
|
|
a_Chance = 0.6f;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2013-07-29 07:13:03 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|