⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 item.h

📁 网络游戏魔域的服务端与客户端完整源代码 包括详细的说明文档与开发日志
💻 H
📖 第 1 页 / 共 2 页
字号:
	// add by zlong 2003-11-24
	bool	IsChestItem()	{ return (GetInt(ITEMDATA_TYPE) >= TYPE_CHEST_SPACE3) && (GetInt(ITEMDATA_TYPE) <= TYPE_CHEST_SPACE9); }
	// add by zlong 3002-12-05
	bool	IsPick()		{ return 470 == (GetInt(ITEMDATA_TYPE)/1000)%1000; }		// 是否挖矿用的锄头
	bool	IsMantle()		{ return IsFinery() && GetItemType() == ITEMTYPE_MANTLE; }

public: // static
	static bool	IsBowSort(int nType)	{ return CItem::IsBow(nType) || CItem::IsCrossBow(nType); }
	static bool	IsBow(int nType)		{ return CItem::GetItemSort(nType) == ITEMSORT_WEAPON2 && CItem::GetItemType(nType) == DWEAPON_BOW; }
	static bool	IsCrossBow(int nType)	{ return CItem::GetItemSort(nType) == ITEMSORT_WEAPON2 && CItem::GetItemType(nType) == DWEAPON_CROSSBOW; }
	static bool	IsShield(int nType)		{ return CItem::GetItemSort(nType) == ITEMSORT_SHIELD; }
	static bool IsGameCard(int nType)	{ return ((nType == CARD_FEE_POINT) || (nType == CARD_FEE_POINT2)); }
	static bool IsExpend(int nType)		{ return CItem::IsArrowSort(nType) || (CItem::GetItemSort(nType) == ITEMSORT_EXPEND && CItem::GetItemType(nType)  < ITEMTYPE_SPECIAL_USE); }
	static bool IsCountable(int nType)	{ return CItem::IsArrowSort(nType) || (CItem::GetItemSort(nType) == ITEMSORT_EXPEND && !CItem::IsEudemon(nType) && !CItem::IsEudemonEgg(nType)); }
	// add by zlong 2003-11-20
	static bool	IsMount(int nType)		{ return CItem::GetItemSort(nType) == ITEMSORT_MOUNT; }
	static bool	IsEquipment(int nType)	{ return !CItem::IsArrowSort(nType) && ((GetItemSort(nType) >= IETMSORT_FINERY && GetItemSort(nType) <= ITEMSORT_MOUNT) || CItem::IsShield(nType)); }
	// add by zlong 2003-12-05
	static bool IsArrowSort(int nType)	{ return CItem::IsArrow(nType) || CItem::IsDart(nType); }
	static bool IsArrow(int nType)		{ return nType == ARROW_TYPE_ID; }
	static bool IsDart(int nType)		{ return nType == DART_TYPE_ID; }
	static int  GetQuality(int nType)	{ return (nType/1000000000)*10 + (nType%10); }
	static bool IsMedicine(int nType)	{ return CItem::IsExpend(nType) && CItem::GetItemType(nType)==ITEMTYPE_PHYSIC; }

	static bool	IsSpell(int nType)		{ return CItem::IsExpend(nType) && CItem::GetItemType(nType)==ITEMTYPE_SCROLL; }
	static bool	IsWPGBadge(int nType)	{ return nType/100 == 10600 && (nType/10)%10 >= 1 && (nType/10)%10 <= 5 && (nType%10) >= 1 && (nType%10) <= 5; }
	// 魔魂宝石判断 -- zlong 2004-02-05
	static bool	IsGhostGem(int nType)	{ return CItem::IsExpend(nType) && CItem::GetItemType(nType) == ITEMTYPE_GHOSTGEM; }

	static bool	IsNeedIdent(int nIdent)	{ return (nIdent & _ITEM_STATUS_NOT_IDENT) != 0; }
	static int	HideTypeUnident(OBJID idType)	{ if(CItem::IsEquipment(idType)) return ((idType/10)*10)%10000000; if(CItem::IsSpell(idType)) return ((idType/100)*100)%10000000; return idType; }
	static int	HideTypeQuality(OBJID idType)	{ if(CItem::IsEquipment(idType)) return ((idType/10)*10)%10000000; return idType; }

public:

	//modified by jinggy--2004-11-11
	bool ChangeAddition(int nLevel);//改变装备的追加等级

	
	bool	IsHoldEnable()		{ return IsWeapon1() || IsWeapon2() || IsShield() || IsArrowSort(); }
	// modified by zlong 2003-12-01 -- Sprite is equip enable
	bool	IsEquipEnable()		{ return IsEquipment() || IsArrowSort() || IsSprite(); }
	bool	IsEatEnable()		{ return IsMedicine(); }
	bool	IsPileEnable()		{ return IsExpend() && GetInt(ITEMDATA_AMOUNTLIMIT) > 1; }
	bool	IsRepairEnable()	{ return !IsExpend() && !IsNeedIdent() && GetInt(ITEMDATA_AMOUNTLIMIT) >= 100 && !IsCannotRepair(); }
	// modified by zlong 2003-11-24 ---- chest item can not Exchange and store
	bool	IsExchangeEnable()	{ return (GetInt(ITEMDATA_MONOPOLY) & MONOPOLY_MASK) == 0 && !IsChestItem(); }
	bool	IsStorageEnable()	{ return (GetInt(ITEMDATA_MONOPOLY) & STORAGE_MASK) == 0 && !IsChestItem(); }
	bool	IsSellEnable()		{ return ((GetInt(ITEMDATA_MONOPOLY) & SELL_DISABLE_MASK) == 0 &&!IsGameCard() && !IsChestItem()); }
	bool	IsNeverDropWhenDead()	{ return (GetInt(ITEMDATA_MONOPOLY) & NEVER_DROP_WHEN_DEAD_MASK) != 0; }
	bool	IsNonsuchItem();	//	{ return (GetInt(ITEMDATA_TYPE)%10) >= 8; }
	bool	IsNormalArrow()		{ return GetInt(ITEMDATA_TYPE) == NORMAL_ARROW_TYPE; }
	// modified by zlong 2003-11-24 ---- chest item is not discardable
	bool	IsDiscardable()		{ return (!IsGameCard() && !IsChestItem()); }
	bool	IsNeedIdent()		{ return IsNeedIdent(GetInt(ITEMDATA_IDENT)); }
	bool	IsCannotRepair()	{ return (GetInt(ITEMDATA_IDENT) & _ITEM_STATUS_CANNOT_REPAIR) != 0; }
	bool	IsNeverWear()		{ return (GetInt(ITEMDATA_IDENT) & _ITEM_STATUS_NEVER_DAMAGE) != 0; }
	
	
public:	// 幻兽 -- zlong 2004-02-03
	static bool	IsEudemon(OBJID idType)			{ return CItem::GetItemSort(idType) == ITEMSORT_EXPEND && CItem::GetItemType(idType) == ITEMTYPE_EUDEMON; }
	static bool	IsEudemonEgg(OBJID idType)		{ return CItem::GetItemSort(idType) == ITEMSORT_EXPEND && CItem::GetItemType(idType) == ITEMTYPE_EUDEMON_EGG; }
	static int	GetEudemonType(OBJID idType)	{ return (idType/1000)%10; }
	bool	IsEudemon()			{ return CItem::IsEudemon(GetInt(ITEMDATA_TYPE)); }
	bool	IsEudemonEgg()		{ return CItem::IsEudemonEgg(GetInt(ITEMDATA_TYPE)); }
	bool	IsEvilEudemon()		{ return (IsEudemon() && (GetInt(ITEMDATA_TYPE)%10)==EUDEMON_GROUP_EVIL); }

	bool	IsEvolveEnable();
	bool	IsEvolve2Enable();
	bool	IsAliveEudemon()	{ return (IsEudemon() && GetInt(ITEMDATA_EUDEMON_LIFE) > 0); }

	int		GetEudemonType()	{ return CItem::GetEudemonType(GetInt(ITEMDATA_TYPE)); }
	int		GetEudemonLevel()	{ return GetInt(ITEMDATA_EUDEMON_LEVEL); }
//	int     GetEudemonGrowth100(){return GetInt(ITEMDATA_GROWTH)*GetInt(ITEMDATA_GROWTH_ORIGINAL)/100;}
//	bool	SendEudemonAttrib(CUser* pUser);
	int		GetEudemonMaxLife()	{ return __max(1, (GetEudemonLevel() * (GetInt(ITEMDATA_LIFE) * GetInt(ITEMDATA_GROWTH) + GetAddition(ITEMADDITIONDATA_LIFE)*100) / 10000)); }
	OBJID	GetEudemonID()		{ CHECKF (m_pEudemonData); return m_pEudemonData->GetID(); }

	OBJID	GetDivineID()		{ return (GetInt(ITEMDATA_TYPE)/10%10); }
	UCHAR	GetRelationShip(OBJID idDivine);
	bool	AddRelationShip(OBJID idDivine, int nValue);

public:	//精灵 -- add by zlong 2003-11-28
	static bool	IsSprite(OBJID idType)		{ return CItem::GetItemSort(idType) == ITEMSORT_EXPEND && CItem::GetItemType(idType) == ITEMTYPE_SPRITE; }
	static int	GetSpriteType(OBJID idType)	{ return (idType/1000)%10; }
	bool	IsSprite()			{ return CItem::IsSprite(GetInt(ITEMDATA_TYPE)); }
	int		GetSpriteType()		{ return CItem::GetSpriteType(GetInt(ITEMDATA_TYPE)); }
	int		GetSpriteLevel()	{ return GetInt(ITEMDATA_SPRITE_LEVEL); }

	int		AwardExp(int nExp, int nLuck = 0);
	int		AddGrowth(int nGrowth);

	int		AdjustOriginalGrowth();
protected:
	void	GrowUp(int nLuck = 0);
	int		GetExp()			{ return GetInt(ITEMDATA_EXP); }
	int		GetGrowth100()		{ return GetInt(ITEMDATA_GROWTH); }

public:	// get
	int		GetAddition(ITEMADDITIONDATA idx);
	int		GetMaxAtk()			{ return GetAddition(ITEMADDITIONDATA_ATTACK_MAX) + GetInt(ITEMDATA_ATTACK_MAX_); }
	int		GetMinAtk()			{ return GetAddition(ITEMADDITIONDATA_ATTACK_MIN) + GetInt(ITEMDATA_ATTACK_MIN_); }
	int		GetMgcMaxAtk()		{ return GetAddition(ITEMADDITIONDATA_MGCATK_MAX) + GetInt(ITEMDATA_MAGICATK_MAX_); }
	int		GetMgcMinAtk()		{ return GetAddition(ITEMADDITIONDATA_MGCATK_MIN) + GetInt(ITEMDATA_MAGICATK_MIN_); }
	int		GetDef()			{ return GetAddition(ITEMADDITIONDATA_DEFENSE) + GetInt(ITEMDATA_DEFENSE_); }
	int		GetMgcDef()			{ return GetAddition(ITEMADDITIONDATA_MAGICDEF) + GetInt(ITEMDATA_MAGICDEF_); }
	int		GetDexteriy()		{ return GetAddition(ITEMADDITIONDATA_DEXTERITY); }	// + GetInt(ITEMDATA_DEXTERITY); }
	int		GetDodge()			{ return GetAddition(ITEMADDITIONDATA_DODGE) + GetInt(ITEMDATA_DODGE); }
	int		GetLife()			{ return GetAddition(ITEMADDITIONDATA_LIFE) + GetInt(ITEMDATA_LIFE); }
	int		GetHitRate()		{ return GetInt(ITEMDATA_HITRATE); }


public: // const
	int		CalcRepairMoney();
	DWORD	GetSellPrice();
	int		GetItemCount()			{ if(IsExpend()) return GetInt(ITEMDATA_AMOUNT); return 1; }		// 物品的数量,非易耗品返回1
	int		GetWeight()			{ if(IsArrowSort()) return (GetInt(ITEMDATA_AMOUNT)-1)*GetInt(ITEMDATA_WEIGHT_)/ARROW_PILE_WEIGHT + 1; return GetItemCount() * GetInt(ITEMDATA_WEIGHT_); }
	static 	int		GetWeight(OBJID idType, int nAmount=0);		// nAmount: amount 字段值

public: // modify attribute
	void	SetIdent(bool bNeedIdent, bool bUpdate)	{ 
				if(bNeedIdent) SetInt(ITEMDATA_IDENT, GetInt(ITEMDATA_IDENT)|_ITEM_STATUS_NOT_IDENT, bUpdate); 
				else SetInt(ITEMDATA_IDENT, GetInt(ITEMDATA_IDENT)&(~_ITEM_STATUS_NOT_IDENT), bUpdate); }
	void	SetStatus(DWORD dwData, bool bUpdate) { SetInt(ITEMDATA_IDENT, dwData, bUpdate); }

public: // gem effect
	int		GetGemDmgEffect		(void);
	int		GetGemMgcAtkEffect	(void);
	int		GetGemHitRateEffect	(void);
	int		GetGemExpEffect		(void);
	int		GetGemWpnExpEffect	(void);
	int		GetGemMgcExpEffect	(void);
	int		GetGemDurEffect		(OBJID idGemType=ID_NONE);

public: // application
	CItem*	Split(int nNum);

public:

	//升级战魂等级-------jinggy------2004-11-12
	void WarGhostLevelUpgrade(CUserPtr pUser);
	bool WarGhostLevelReset();	
	//判断是否是状态攻击类宝石-----jinggy---2004-11-12
	bool IsGemActiveAtk();

	int		GetItemSubType();

	int		GetLevel	(void);
	int		GetQuality	(void)	{ return GetQuality(GetInt(ITEMDATA_TYPE)); }

	bool	ChangeType	(OBJID idNewType);
	bool	ChangeColor	(int nColor);
	
	bool	RecoverDur			(void);
	int		GetRecoverDurCost	(void);

protected: // 类型
	int		GetItemSort()			{ return CItem::GetItemSort(GetInt(ITEMDATA_TYPE)); }
	int		GetItemType()			{ return CItem::GetItemType(GetInt(ITEMDATA_TYPE)); }
public:
	static int	GetItemSort(OBJID idType)			{ return (idType%10000000)/100000; }		// 百万 + 十万
	static int	GetItemType(OBJID idType);									// 武器返回(万位,千位)*千,其它返回万位*万
public:

	//---jinggy---铸造系统---begin
	void WarGhostLevelDec(int nDec);
	int GetSuperAddition();
	int GetWarGhostLevel();

	bool DecSuperAddition();

	bool UpSuperAddition();
	bool UpQuality();
	bool UpLevel();

	bool IsGemForEmbedEquip();
	bool IsGemForUpSuperAddition();
	bool IsGemForUpQuality();
	bool IsGemForUpLevel();
	//---jinggy---铸造系统---end
	static int	GetSubType(OBJID idType)			{ return (idType%1000000)/1000; }

protected: // 
	CItem*	Clone();		// 新物品存数据库

	MYHEAP_DECLARATION(s_heap)
};

#endif // !defined(AFX_ITEM_H__CA7CE885_1DCF_4B96_B308_FB7F40CCF4BA__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -