您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AddPct函数代码示例

51自学网 2021-06-01 19:41:18
  C++
这篇教程C++ AddPct函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AddPct函数的典型用法代码示例。如果您正苦于以下问题:C++ AddPct函数的具体用法?C++ AddPct怎么用?C++ AddPct使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AddPct函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: int32

void Guardian::UpdateDamagePhysical(WeaponAttackType attType){    if (attType > BASE_ATTACK)        return;    float bonusDamage = 0.0f;    if (m_owner->GetTypeId() == TYPEID_PLAYER)    {        //force of nature        if (GetEntry() == ENTRY_TREANT)        {            int32 spellDmg = int32(m_owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE)) + m_owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE);            if (spellDmg > 0)                bonusDamage = spellDmg * 0.09f;        }        //greater fire elemental        else if (GetEntry() == ENTRY_FIRE_ELEMENTAL)        {            int32 spellDmg = int32(m_owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE)) + m_owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE);            if (spellDmg > 0)                bonusDamage = spellDmg * 0.4f;        }    }    UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND;    float att_speed = float(GetAttackTime(BASE_ATTACK))/1000.0f;    float base_value  = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType)/ 14.0f * att_speed  + bonusDamage;    float base_pct    = GetModifierValue(unitMod, BASE_PCT);    float total_value = GetModifierValue(unitMod, TOTAL_VALUE);    float total_pct   = GetModifierValue(unitMod, TOTAL_PCT);    float weapon_mindamage = GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE);    float weapon_maxdamage = GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE);    float mindamage = ((base_value + weapon_mindamage) * base_pct + total_value) * total_pct;    float maxdamage = ((base_value + weapon_maxdamage) * base_pct + total_value) * total_pct;    /// @todo: remove this    Unit::AuraEffectList const& mDummy = GetAuraEffectsByType(SPELL_AURA_MOD_ATTACKSPEED);    for (Unit::AuraEffectList::const_iterator itr = mDummy.begin(); itr != mDummy.end(); ++itr)    {        switch ((*itr)->GetSpellInfo()->Id)        {        case 61682:        case 61683:            AddPct(mindamage, -(*itr)->GetAmount());            AddPct(maxdamage, -(*itr)->GetAmount());            break;        default:            break;        }    }    SetStatFloatValue(UNIT_FIELD_MINDAMAGE, mindamage);    SetStatFloatValue(UNIT_FIELD_MAXDAMAGE, maxdamage);}
开发者ID:TrueWoW,项目名称:TrinityCore,代码行数:58,


示例2: AddPct

void FlightPathMovementGenerator::DoReset(Player* owner){    if (!owner)        return;    if (!owner->isAlive())        return;    float playerFlightSpeed = 32.0f;    // Add percentage from SPELL_AURA_MOD_TAXI_FLIGHT_SPEED.    Unit::AuraEffectList const& mIncreaseTaxiFlightSpeed = owner->GetAuraEffectsByType(SPELL_AURA_MOD_TAXI_FLIGHT_SPEED);    for (Unit::AuraEffectList::const_iterator i = mIncreaseTaxiFlightSpeed.begin(); i != mIncreaseTaxiFlightSpeed.end(); ++i)        AddPct(playerFlightSpeed, (*i)->GetAmount());    owner->getHostileRefManager().setOnlineOfflineState(false);    owner->AddUnitState(UNIT_STATE_IN_FLIGHT);    owner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);    Movement::MoveSplineInit init(*owner);    uint32 end = GetPathAtMapEnd();    for (uint32 i = GetCurrentNode(); i != end; ++i)    {        G3D::Vector3 vertice((*i_path)[i].x, (*i_path)[i].y, (*i_path)[i].z);        init.Path().push_back(vertice);    }    init.SetFirstPointId(GetCurrentNode());    init.SetFly();    init.SetSmooth();    init.SetWalk(true);    init.SetVelocity(playerFlightSpeed);    init.Launch();}
开发者ID:concept45,项目名称:Core,代码行数:33,


示例3: CalculateAmount

            void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)            {                canBeRecalculated = false;                if (Unit* caster = GetCaster())                {                    // +87% from sp bonus                    float bonus = 0.87f;                    // Borrowed Time                    if (AuraEffect const* borrowedTime = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_BORROWED_TIME, EFFECT_1))                        bonus += CalculatePct(1.0f, borrowedTime->GetAmount());                    bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask());                    // Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)                    // Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage                    bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus);                    bonus *= caster->CalculateLevelPenalty(GetSpellInfo());                    amount += int32(bonus);                    // Twin Disciplines                    if (AuraEffect const* twinDisciplines = caster->GetAuraEffectOfRankedSpell(SPELL_PRIEST_TWIN_DISCIPLINES_RANK_1, EFFECT_1))                        AddPct(amount, twinDisciplines->GetAmount());                    // Mastery: Shield Discipline                    if (caster->HasAura(77484))                        amount += caster->ToPlayer()->GetAura(77484)->GetEffect(0)->GetAmount() * amount / 100;                    // Focused Power                    amount *= caster->GetTotalAuraMultiplier(SPELL_AURA_MOD_HEALING_DONE_PERCENT);                }            }
开发者ID:DSlayerMan,项目名称:ArkCORE-NG,代码行数:33,


示例4: GetModifierValue

void Player::UpdateArmor(){    UnitMods unitMod = UNIT_MOD_ARMOR;    float value = GetModifierValue(unitMod, BASE_VALUE);    // base armor (from items)    value *= GetModifierValue(unitMod, BASE_PCT);           // armor percent from items    value += GetModifierValue(unitMod, TOTAL_VALUE);    //add dynamic flat mods    AuraEffectList const& mResbyIntellect = GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT);    for (AuraEffectList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i)    {        if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL)            value += CalculatePct(GetStat(Stats((*i)->GetMiscValueB())), (*i)->GetAmount());    }    if (GetShapeshiftForm() == FORM_BEAR)        // Thick Hide        if (AuraEffect* thickHide = GetDummyAuraEffect(SPELLFAMILY_GENERIC, 1558, EFFECT_1))            AddPct(value, thickHide->GetAmount());    value *= GetModifierValue(unitMod, TOTAL_PCT);    SetArmor(int32(value));    RecalculatePetsScalingResistance(SPELL_SCHOOL_NORMAL);    UpdateAttackPowerAndDamage();                           // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR}
开发者ID:Cryostorm,项目名称:InfinityCore,代码行数:26,


示例5: HandleHit

        void HandleHit()        {            Player* const caster = GetCaster()->ToPlayer();            Unit* const target = GetHitUnit();            if (!target)                return;            int32 value = GetHitDamage();            uint8 const cp = caster->GetComboPoints();            float const ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);            value += int32(ap * cp * 0.091f);            // Eviscerate and Envenom Bonus Damage            if (AuraEffect const* const aurEff = caster->GetAuraEffect(SPELL_EVISCERATE_BONUS, EFFECT_0))                value += cp * aurEff->GetAmount();            // Revealing Strike            if (AuraEffect const* const aurEff = target->GetAuraEffect(SPELL_REVEALING_STRIKE, EFFECT_2))                AddPct(value, aurEff->GetAmount());            // Serrated Blades            if (AuraEffect const* const aurEff = caster->GetAuraEffectOfRankedSpell(SPELL_SERRATED_BLADES, EFFECT_0))                if (roll_chance_i(aurEff->GetAmount() * cp))                    if (Aura* const aura = target->GetAura(SPELL_RUPTURE, caster->GetGUID()))                        aura->RefreshDuration();            SetHitDamage(value);        }
开发者ID:Tithand,项目名称:TER-Server,代码行数:29,


示例6: HandleAfterHit

            void HandleAfterHit()            {                if (Player* _plr = GetCaster()->ToPlayer())                {                    if (Unit* target = GetHitUnit())                    {                        if (_plr->GetTypeId() == TYPEID_PLAYER && _plr->HasAura(77513) && _plr->getLevel() >= 80)                        {                            // Check the Mastery aura while in Blood presence                            if (_plr->HasAura(77513) && _plr->HasAura(48263))                            {								float Mastery = _plr->GetFloatValue(PLAYER_MASTERY) * 6.25f / 100.0f;                                int32 bp = -int32(GetHitDamage() * Mastery);                                if (Aura* scentOfBlood = _plr->GetAura(SPELL_DK_SCENT_OF_BLOOD))                                    AddPct(bp, (scentOfBlood->GetStackAmount() * 20));                                if (AuraEffect* bloodShield = target->GetAuraEffect(MASTERY_SPELL_BLOOD_SHIELD, EFFECT_0))                                    bp += bloodShield->GetAmount();                                bp = std::min(uint32(bp), target->GetMaxHealth());                                _plr->CastCustomSpell(target, MASTERY_SPELL_BLOOD_SHIELD, &bp, NULL, NULL, true);                            }                        }                    }                }            }
开发者ID:Rastrian,项目名称:DeathCore_6.x-1,代码行数:29,


示例7: HandleDummy

            void HandleDummy(SpellEffIndex /*effIndex*/)            {                Player* caster = GetCaster()->ToPlayer();                if (Unit* target = GetHitUnit())                {                    int32 damage = GetEffectValue();                    int32 mana = int32(damage + (caster->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS+SPELL_SCHOOL_SHADOW) * 0.5f));                    // Shouldn't Appear in Combat Log                    target->ModifyHealth(-damage);                    // Improved Life Tap mod                    if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0))                        AddPct(mana, aurEff->GetAmount());                    caster->CastCustomSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false);                    // Mana Feed                    int32 manaFeedVal = 0;                    if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0))                        manaFeedVal = aurEff->GetAmount();                    if (manaFeedVal > 0)                    {                        ApplyPct(manaFeedVal, mana);                        caster->CastCustomSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL);                    }                }            }
开发者ID:InkVisible,项目名称:EscapeWoW3.3.5a,代码行数:29,


示例8: xp

inline void KillRewarder::_RewardXP(Player* player, float rate){    uint32 xp(_xp);    if (_group)    {        // 4.2.1. If player is in group, adjust XP:        //        * set to 0 if player's level is more than maximum level of not gray member;        //        * cut XP in half if _isFullXP is false.        if (_maxNotGrayMember && player->IsAlive() &&            _maxNotGrayMember->getLevel() >= player->getLevel())            xp = _isFullXP ?            uint32(xp * rate) :             // Reward FULL XP if all group members are not gray.            uint32(xp * rate / 2) + 1;      // Reward only HALF of XP if some of group members are gray.        else            xp = 0;    }    if (xp)    {        // 4.2.2. Apply auras modifying rewarded XP (SPELL_AURA_MOD_XP_PCT).        for (auto const& aura : player->GetAuraEffectsByType(SPELL_AURA_MOD_XP_PCT))            AddPct(xp, aura->GetAmount());        // 4.2.3. Give XP to player.        player->GiveXP(xp, _victim, _groupRate);        if (Pet* pet = player->GetPet())            // 4.2.4. If player has pet, reward pet with XP (100% for single player, 50% for group case).            pet->GivePetXP(_group ? xp / 2 : xp);    }}
开发者ID:boom8866,项目名称:MaddieCore,代码行数:29,


示例9: HandleDummy

            void HandleDummy(SpellEffIndex /*effIndex*/)            {                Player* caster = GetCaster()->ToPlayer();                if (Unit* target = GetHitUnit())                {                    int32 damage = caster->CountPctFromMaxHealth(GetSpellInfo()->Effects[EFFECT_2].CalcValue());                    int32 mana = CalculatePct(damage, GetSpellInfo()->Effects[EFFECT_1].CalcValue());                    // Shouldn't Appear in Combat Log                    target->ModifyHealth(-damage);                    // Improved Life Tap mod                    if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0))                        AddPct(mana, aurEff->GetAmount());                    caster->CastCustomSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, &mana, NULL, NULL, false);                    // Mana Feed                    if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_FLAT_MODIFIER, SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_MANA_FEED, 0))                    {                        int32 manaFeedVal = aurEff->GetAmount();                        ApplyPct(manaFeedVal, mana);                        caster->CastCustomSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, &manaFeedVal, NULL, NULL, true, NULL);                    }                }            }
开发者ID:PavelDev,项目名称:wodnetcore,代码行数:26,


示例10: HandleDamage

            void HandleDamage()            {                int32 damage = GetHitDamage();                // Pain and Suffering reduces damage                if (AuraEffect* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_PAIN_AND_SUFFERING, EFFECT_1))                    AddPct(damage, aurEff->GetAmount());                GetCaster()->CastCustomSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, &damage, 0, 0, true);            }
开发者ID:Stylerdk,项目名称:TrinityCore,代码行数:10,


示例11: OnProc

            void OnProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)            {                PreventDefaultAction();                int32 amount = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()));                // Glyph of Siphon Life                if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_WARLOCK_GLYPH_OF_SIPHON_LIFE, EFFECT_0))                    AddPct(amount, glyph->GetAmount());                GetTarget()->CastCustomSpell(SPELL_WARLOCK_SIPHON_LIFE_HEAL, SPELLVALUE_BASE_POINT0, amount, GetTarget(), true, NULL, aurEff);            }
开发者ID:InkVisible,项目名称:EscapeWoW3.3.5a,代码行数:11,


示例12: AddPct

void HostileReference::addThreatPercent(int32 percent){    // Xinef: Do not allow to modify threat by percent if threat is negative (forced to big value < 0 by spells adding temporary threat)    // Xinef: When the temporary effect ends, temporary threat is added back which results in huge additional amount of threat    if (iThreat <= 0)        return;    float tmpThreat = iThreat;    AddPct(tmpThreat, percent);    addThreat(tmpThreat - iThreat);}
开发者ID:Helias,项目名称:azerothcore-wotlk,代码行数:11,


示例13: HandleDummy

 void HandleDummy(SpellEffIndex /*effIndex*/) {     Unit* caster = GetCaster();     if (Unit* unitTarget = GetHitUnit())     {         multiplier = (GetEffectValue() * unitTarget->GetDiseasesByCaster(caster->GetGUID()) / 100.f);         // Death Knight T8 Melee 4P Bonus         if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_DK_ITEM_T8_MELEE_4P_BONUS, EFFECT_0))             AddPct(multiplier, aurEff->GetAmount());     } }
开发者ID:AlucardVoss,项目名称:Patchs,代码行数:11,


示例14: HandleHeal

 void HandleHeal(SpellEffIndex /*effIndex*/) {     if (Unit* caster = GetOriginalCaster())     {         if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))         {             int32 heal = GetHitHeal();             AddPct(heal, aurEff->GetAmount());             SetHitHeal(heal);         }     } }
开发者ID:Stylerdk,项目名称:TrinityCore,代码行数:12,


示例15: CalculateAmount

        void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)        {            if (Unit* caster = GetCaster())            {                // +75.00% from sp bonus                float bonus = CalculatePct(caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()), 75.0f);                // Divine Guardian is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage                bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus);                bonus *= caster->CalculateLevelPenalty(GetSpellInfo());                amount += int32(bonus);                // Arena - Dampening                if (AuraEffect const* auraEffArenaDampening = caster->GetAuraEffect(SPELL_GENERIC_ARENA_DAMPENING, EFFECT_0))                    AddPct(amount, auraEffArenaDampening->GetAmount());                // Battleground - Dampening                else if (AuraEffect const* auraEffBattlegroudDampening = caster->GetAuraEffect(SPELL_GENERIC_BATTLEGROUND_DAMPENING, EFFECT_0))                    AddPct(amount, auraEffBattlegroudDampening->GetAmount());            }        }
开发者ID:mynew3,项目名称:LordPsyanBots,代码行数:21,


示例16: HandleProc

            void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)            {                PreventDefaultAction();                uint32 maxMana = GetTarget()->GetMaxPower(POWER_MANA);                int32 mana = CalculatePct(maxMana, GetTarget()->GetAttackTime(RANGED_ATTACK) / 1000.0f);                if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER, EFFECT_0))                    AddPct(mana, glyph->GetAmount());                GetTarget()->CastCustomSpell(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, NULL, aurEff);            }
开发者ID:AwkwardDev,项目名称:RE,代码行数:12,


示例17: RecalculateDamage

 void RecalculateDamage(SpellEffIndex /*effIndex*/) {     if (GetHitUnit() && GetHitUnit()->HasAuraState(AURA_STATE_FROZEN, GetSpellInfo(), GetCaster()))     {         if (AuraEffect* aurEff = GetCaster()->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_MAGE, ICON_MAGE_SHATTER, EFFECT_1))         {             int32 damage = GetHitDamage();             AddPct(damage, aurEff->GetAmount());             SetHitDamage(damage);         }     } }
开发者ID:CrazyMeal,项目名称:Serval_Core,代码行数:12,


示例18: HandleAfterHit

            void HandleAfterHit()            {                Unit* caster = GetCaster();                if (Unit* unitTarget = GetHitUnit())                {                    int32 bp = GetHitDamage() * multiplier;                    if (AuraEffect* aurEff = caster->GetAuraEffectOfRankedSpell(SPELL_DK_BLACK_ICE_R1, EFFECT_0))                        AddPct(bp, aurEff->GetAmount());                    caster->CastCustomSpell(unitTarget, SPELL_DK_SCOURGE_STRIKE_TRIGGERED, &bp, NULL, NULL, true);                }            }
开发者ID:AlucardVoss,项目名称:Patchs,代码行数:13,


示例19: HandleOnHit

		void HandleOnHit()		{			if (Unit* caster = GetCaster())			{				int32 damage = GetHitDamage();				// Mastery: Emberstorm				if (AuraEffect* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, 2129, EFFECT_0))					AddPct(damage, aurEff->GetAmount());				SetHitDamage(damage);			}		}
开发者ID:blitztech,项目名称:TrinityCore,代码行数:13,


示例20: HandleDummy

 void HandleDummy(SpellEffIndex /*effIndex*/) {     Unit* caster = GetCaster();     if (Unit* target = GetHitUnit())     {         uint32 count = target->GetDiseasesByCaster(caster->GetGUID());         int32 bp = int32(count * caster->CountPctFromMaxHealth(int32(GetSpellInfo()->Effects[EFFECT_0].DamageMultiplier)));         // Improved Death Strike         if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_DEATHKNIGHT, DK_ICON_ID_IMPROVED_DEATH_STRIKE, 0))             AddPct(bp, caster->CalculateSpellDamage(caster, aurEff->GetSpellInfo(), 2));         caster->CastCustomSpell(caster, SPELL_DK_DEATH_STRIKE_HEAL, &bp, NULL, NULL, false);     } }
开发者ID:Asandru,项目名称:Script-Land,代码行数:13,


示例21: CalculateAmount

            void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool & /*canBeRecalculated*/)            {                if (Unit* caster = GetCaster())                {                    amount = caster->SpellHealingBonusDone(GetUnitOwner(), GetSpellInfo(), amount, HEAL);                    amount = GetUnitOwner()->SpellHealingBonusTaken(caster, GetSpellInfo(), amount, HEAL);                    // Glyph of Earth Shield                    //! WORKAROUND                    //! this glyph is a proc                    if (AuraEffect* glyph = caster->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_EARTH_SHIELD, EFFECT_0))                        AddPct(amount, glyph->GetAmount());                }            }
开发者ID:Allysia1,项目名称:TrinityCore,代码行数:14,


示例22: HandleHeal

		void HandleHeal(SpellEffIndex /*effIndex*/)		{			if (Unit* caster = GetOriginalCaster())			{				if (Aura* prayer = GetHitUnit()->GetAura(41635, caster->GetGUID()))					if (prayer->GetCharges() == prayer->CalcMaxCharges())					{					// Glyph of prayer of mending					if (AuraEffect* glyph = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, 2219, EFFECT_0))					{						int32 heal = GetHitHeal();						AddPct(heal, glyph->GetAmount());						SetHitHeal(heal);					}					}				if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))				{					int32 heal = GetHitHeal();					AddPct(heal, aurEff->GetAmount());					SetHitHeal(heal);				}			}		}
开发者ID:Tithand,项目名称:TER-Server,代码行数:24,


示例23: HandleDummy

 void HandleDummy(SpellEffIndex /*effIndex*/) {     if (Player* caster = GetCaster()->ToPlayer())     {         int32 damage = GetEffectValue();         int32 hitDamage = GetHitDamage();         if (caster->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND))         {             // Damage is increased by 25% if your off-hand weapon is enchanted with Flametongue.             if (caster->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, 0x200000, 0, 0))                 AddPct(hitDamage, damage);             SetHitDamage(hitDamage);         }     } }
开发者ID:Allysia1,项目名称:TrinityCore,代码行数:15,


示例24: CalculateAmount

            void CalculateAmount(AuraEffect const* /*aurEff*/, int32 &amount, bool& canBeRecalculated)            {                canBeRecalculated = false;                                Unit* caster = GetCaster();                if(!caster)                    return;                if(Player* player = caster->ToPlayer())                {                    if (player->HasAuraType(SPELL_AURA_MASTERY) && player->GetPrimaryTalentTree(player->GetActiveSpec()) == BS_WARRIOR_FURY)                    {                        AddPct(amount, 5.60f * player->GetMasteryPoints());                    }                }            }
开发者ID:Faydz,项目名称:TrinityCore,代码行数:17,


示例25: HandleHeal

            void HandleHeal(SpellEffIndex /*effIndex*/)            {                Unit* caster = GetCaster();                if(!caster)                    return;                if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_WARRIOR_BLOODTHIRST_DAMAGE))                {                    int32 calculatedHeal = CalculatePct(caster->GetMaxHealth(), float(spellInfo->Effects[EFFECT_1].CalcValue(GetCaster())) / 1000);                    // Field Dressing check                    if(AuraEffect* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_WARRIOR, 2671, EFFECT_1))                        AddPct(calculatedHeal, aurEff->GetAmount());                    SetHitHeal(calculatedHeal);                }            }
开发者ID:Faydz,项目名称:TrinityCore,代码行数:18,


示例26: GetStat

void Guardian::UpdateMaxHealth(){    UnitMods unitMod = UNIT_MOD_HEALTH;    float stamina = GetStat(STAT_STAMINA) - GetCreateStat(STAT_STAMINA);    uint32 basehealth = 0;    if (Unit* owner = GetCharmerOrOwner())        basehealth = owner->GetMaxHealth();    float multiplicator;    switch (GetEntry())    {        case ENTRY_IMP:                 multiplicator = 0.30f;   break;        case ENTRY_VOIDWALKER:          multiplicator = 0.50f;  break;        case ENTRY_SUCCUBUS:            multiplicator = 0.45f;   break;        case ENTRY_FELHUNTER:           multiplicator = 0.70f; break;        case ENTRY_FELGUARD:            multiplicator = 0.75f;  break;        case ENTRY_BLOODWORM:           multiplicator = 0.10f;   break;        case ENTRY_GHOUL:               multiplicator = 0.75f;  break;        case ENTRY_GARGOYLE:            multiplicator = 0.75f;  break;        case ENTRY_WATER_ELEMENTAL:     multiplicator = 0.50f;  break;        default:                        multiplicator = 0.70f;  break;    }    basehealth *= multiplicator;    float value = GetModifierValue(unitMod, BASE_VALUE) + basehealth;    value *= GetModifierValue(unitMod, BASE_PCT);    value += GetModifierValue(unitMod, TOTAL_VALUE) + stamina * 10;    value *= GetModifierValue(unitMod, TOTAL_PCT);    // Glyph of Voidwalker    if (GetEntry() == ENTRY_VOIDWALKER)    {        if (Player * owner = GetSpellModOwner())            if (AuraEffect * auraEff = owner->GetAuraEffect(56247, 0))                AddPct(value, auraEff->GetAmount());    }    SetMaxHealth((uint32)value);}
开发者ID:Lbniese,项目名称:WoWCircle434,代码行数:41,


示例27: CalculateAmount

            void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool & /*canBeRecalculated*/)            {                if (Unit* caster = GetCaster())                {                    amount = caster->SpellHealingBonusDone(GetUnitOwner(), GetSpellInfo(), amount, HEAL);                    amount = GetUnitOwner()->SpellHealingBonusTaken(caster, GetSpellInfo(), amount, HEAL);                    //! WORKAROUND                    // If target is affected by healing reduction, modifier is guaranteed to be negative                    // value (e.g. -50). To revert the effect, multiply amount with reciprocal of relative value:                    // (100 / ((-1) * modifier)) * 100 = (-1) * 100 * 100 / modifier = -10000 / modifier                    if (int32 modifier = GetUnitOwner()->GetMaxNegativeAuraModifier(SPELL_AURA_MOD_HEALING_PCT))                        ApplyPct(amount, -10000.0f / float(modifier));                    // Glyph of Earth Shield                    //! WORKAROUND                    //! this glyph is a proc                    if (AuraEffect* glyph = caster->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_EARTH_SHIELD, EFFECT_0))                        AddPct(amount, glyph->GetAmount());                }            }
开发者ID:AllThing,项目名称:TrinityCore,代码行数:21,


示例28: CalculateAmount

            void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)            {                if (Unit* caster = GetCaster())                {                    canBeRecalculated = false;                    // $0.2 * (($MWB + $mwb) / 2 + $AP / 14 * $MWS) bonus per tick                    float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);                    int32 mws = caster->GetAttackTime(BASE_ATTACK);                    float mwbMin = caster->GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE);                    float mwbMax = caster->GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE);                    float mwb = ((mwbMin + mwbMax) / 2 + ap * mws / 14000) * 0.2f;                    amount += int32(caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), mwb));                    // "If used while your target is above 75% health, Rend does 35% more damage."                    // as for 3.1.3 only ranks above 9 (wrong tooltip?)                    if (GetSpellInfo()->GetRank() >= 9)                    {                        if (GetUnitOwner()->HasAuraState(AURA_STATE_HEALTH_ABOVE_75_PERCENT, GetSpellInfo(), caster))                            AddPct(amount, GetSpellInfo()->Effects[EFFECT_2].CalcValue(caster));                    }                }            }
开发者ID:GlassFace,项目名称:XC_CORE,代码行数:23,



注:本文中的AddPct函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AddPendingEvent函数代码示例
C++ AddPath函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。