本文整理汇总了C++中CUser::GetItemPrototype方法的典型用法代码示例。如果您正苦于以下问题:C++ CUser::GetItemPrototype方法的具体用法?C++ CUser::GetItemPrototype怎么用?C++ CUser::GetItemPrototype使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUser
的用法示例。
在下文中一共展示了CUser::GetItemPrototype方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetACDamage
short Unit::GetACDamage(int damage, Unit *pTarget)
{
// This isn't applicable to NPCs.
if (isNPC() || pTarget->isNPC())
return damage;
#ifdef EBENEZER
if (pTarget->isDead())
return 0;
CUser * pUser = TO_USER(this);
uint8 weaponSlots[] = { RIGHTHAND, LEFTHAND };
foreach_array (slot, weaponSlots)
{
_ITEM_TABLE * pWeapon = pUser->GetItemPrototype(slot);
if (pWeapon == nullptr)
continue;
if (pWeapon->isDagger())
damage -= damage * pTarget->m_sDaggerR / 200;
else if (pWeapon->isSword())
damage -= damage * pTarget->m_sSwordR / 200;
else if (pWeapon->isAxe())
damage -= damage * pTarget->m_sAxeR / 200;
else if (pWeapon->isMace())
damage -= damage * pTarget->m_sMaceR / 200;
else if (pWeapon->isSpear())
damage -= damage * pTarget->m_sSpearR / 200;
else if (pWeapon->isBow())
damage -= damage * pTarget->m_sBowR / 200;
}
示例2: lock
//.........这里部分代码省略.........
case BUFF_TYPE_PROHIBIT_INVIS:
pTarget->m_bCanStealth = false;
break;
case BUFF_TYPE_RESIS_AND_MAGIC_DMG: // Elysian Web
pTarget->m_bMagicDamageReduction = 100;
break;
case BUFF_TYPE_TRIPLEAC_HALFSPEED: // Wall of Iron
pTarget->m_sACPercent -= 300; // 300%, or 3x
pTarget->m_bSpeedAmount = 100;
break;
case BUFF_TYPE_BLOCK_CURSE: // Counter Curse
pTarget->m_bBlockCurses = false;
break;
case BUFF_TYPE_BLOCK_CURSE_REFLECT: // Curse Refraction
pTarget->m_bReflectCurses = false;
break;
case BUFF_TYPE_MANA_ABSORB: // Outrage / Frenzy / Mana Shield
pTarget->m_bManaAbsorb = 0;
break;
case BUFF_TYPE_IGNORE_WEAPON: // Weapon cancellation
#if defined(GAMESERVER)
if (pTarget->isPlayer())
{
CUser * pTUser = TO_USER(pTarget);
_ITEM_DATA * pLeftItem, * pRightItem;
_ITEM_TABLE * pLeftHand = pTUser->GetItemPrototype(LEFTHAND, pLeftItem),
* pRightHand = pTUser->GetItemPrototype(RIGHTHAND, pRightItem);
pTUser->m_bWeaponsDisabled = false;
if (pLeftHand != nullptr)
pTUser->UserLookChange(LEFTHAND, pLeftItem->nNum, pLeftItem->sDuration);
if (pRightHand != nullptr)
pTUser->UserLookChange(RIGHTHAND, pRightItem->nNum, pRightItem->sDuration);
}
#endif
break;
case BUFF_TYPE_VARIOUS_EFFECTS: //... whatever the event item grants.
// what is tweaked in the database: AC, Attack, MaxHP, resistances
break;
case BUFF_TYPE_PASSION_OF_SOUL: // Passion of the Soul
// Increase pet's HP by 120
break;
case BUFF_TYPE_FIRM_DETERMINATION: // Firm Determination
// Increase pet's AC by 20
break;
case BUFF_TYPE_SPEED2: // Cold Wave
pTarget->m_bSpeedAmount = 100;
break;
case BUFF_TYPE_UNK_EXPERIENCE: // unknown buff type, used for something relating to XP.
break;