📄 initallstat.cpp
字号:
{ m_Defense[ATTR_CURRENT] = m_Defense[ATTR_CURRENT] + pHolyArmor->getDefBonus(); } } // 菩矫宏 扁贱俊 狼秦 棵扼啊绰 瓷仿摹甫 拌魂茄促. if (pWeapon != NULL) { Item::ItemClass IClass = pWeapon->getItemClass(); int DamageBonus = 0; int ToHitBonus = 0; int CriticalRatioBonus = 0; // 醚牢 版快.. ObservingEye眉农. by sigi. 2002.6.19 if (pWeapon->isGun() && isFlag(Effect::EFFECT_CLASS_OBSERVING_EYE)) { EffectObservingEye* pObservingEye= dynamic_cast<EffectObservingEye*>(findEffect(Effect::EFFECT_CLASS_OBSERVING_EYE)); if (pObservingEye != NULL) { int DamageBonus = pObservingEye->getDamageBonus(); m_Damage[ATTR_CURRENT] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_CURRENT] + DamageBonus); m_Damage[ATTR_MAX] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_MAX] + DamageBonus); CriticalRatioBonus += pObservingEye->getCriticalHitBonus();// m_CriticalRatio[ATTR_CURRENT] = m_CriticalRatio[ATTR_CURRENT] + CriticalRatioBonus;// m_CriticalRatio[ATTR_MAX] = m_CriticalRatio[ATTR_MAX] + CriticalRatioBonus; //int VisionBonus = pObservingEye->getVisionBonus(); // 捞芭绰 client俊辑 贸府窍档废 茄促. } } // Liveness 焊呈胶 歹秦林扁 if ( pLiveness != NULL && pWeapon->isGun() ) { m_HP[ATTR_MAX] = m_HP[ATTR_MAX] + LivenessHPBonus; m_Defense[ATTR_CURRENT] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_CURRENT] + LivenessDefenseBonus); } // Passive Skill : Will of Iron 歹秦林扁 : SWORD or BLADE 老锭 if ( (pFabulousSoul != NULL && pWeapon->getItemClass() == Item::ITEM_CLASS_SWORD) || (pWillOfIron != NULL && pWeapon->getItemClass() == Item::ITEM_CLASS_BLADE) ) { m_HP[ATTR_MAX] += HPBonus_WillOfIron; } if ( pWeapon->isGun() ) { DamageBonus += getSkillDomainLevel( SKILL_DOMAIN_GUN ) / 10; } SkillSlot* pArmsMastery1 = getSkill(SKILL_ARMS_MASTERY_1); SkillSlot* pArmsMastery2 = getSkill(SKILL_ARMS_MASTERY_2); if (IClass == Item::ITEM_CLASS_AR) { SkillSlot* pARMastery = getSkill(SKILL_AR_MASTERY); if (pARMastery != NULL && pARMastery->canUse()) { DamageBonus += 3; ToHitBonus += 5; } if ( pArmsMastery2 != NULL && pArmsMastery2->canUse() ) { ToHitBonus += 6; DamageBonus += 5; CriticalRatioBonus += 6; } else if ( pArmsMastery1 != NULL && pArmsMastery1->canUse() ) { ToHitBonus += 4; DamageBonus += 3; CriticalRatioBonus += 4; } } else if (IClass == Item::ITEM_CLASS_SMG) { SkillSlot* pSMGMastery = getSkill(SKILL_SMG_MASTERY); if (pSMGMastery != NULL && pSMGMastery->canUse()) { DamageBonus += 3; ToHitBonus += 5; } if ( pArmsMastery2 != NULL && pArmsMastery2->canUse() ) { ToHitBonus += 5; DamageBonus += 5; CriticalRatioBonus += 7; } else if ( pArmsMastery1 != NULL && pArmsMastery1->canUse() ) { ToHitBonus += 3; DamageBonus += 3; CriticalRatioBonus += 5; } } else if (IClass == Item::ITEM_CLASS_SG) { SkillSlot* pSGMastery = getSkill(SKILL_SG_MASTERY); if (pSGMastery != NULL && pSGMastery->canUse()) { DamageBonus += 3; ToHitBonus += 5; } if ( pArmsMastery2 != NULL && pArmsMastery2->canUse() ) { ToHitBonus += 5; DamageBonus += 6; CriticalRatioBonus += 10; } else if ( pArmsMastery1 != NULL && pArmsMastery1->canUse() ) { ToHitBonus += 3; DamageBonus += 5; CriticalRatioBonus += 9; } } else if (IClass == Item::ITEM_CLASS_SR) { SkillSlot* pSRMastery = getSkill(SKILL_SR_MASTERY); if (pSRMastery != NULL && pSRMastery->canUse()) { DamageBonus += 3; ToHitBonus += 5; } if ( pArmsMastery2 != NULL && pArmsMastery2->canUse() ) { ToHitBonus += 11; DamageBonus += 7; CriticalRatioBonus += 5; } else if ( pArmsMastery1 != NULL && pArmsMastery1->canUse() ) { ToHitBonus += 9; DamageBonus += 5; CriticalRatioBonus += 3; } if (isFlag(Effect::EFFECT_CLASS_SNIPING_MODE)) { //DamageBonus += 3; //ToHitBonus += 5; // by sigi. 2002.12.3 SkillSlot* pSniping = getSkill(SKILL_SNIPING); if (pSniping!=NULL) { int level = pSniping->getExpLevel(); int damage = m_Damage[ATTR_CURRENT]; int toHit = m_ToHit[ATTR_CURRENT]; int damageBonusPercent = m_STR[ATTR_CURRENT]/20 * level/20; int toHitBonusPercent = m_DEX[ATTR_CURRENT]/10 * level/20; DamageBonus += damage * damageBonusPercent/100; ToHitBonus += toHit * toHitBonusPercent/100; } } } else if (IClass == Item::ITEM_CLASS_SWORD) // by sigi. 2002.6.7 { // SWORD_MASTERY SkillSlot* pMastery = getSkill(SKILL_SWORD_MASTERY); if (pMastery != NULL && pMastery->canUse()) { int level = m_SkillDomainLevels[SKILL_DOMAIN_SWORD]; /* switch (g_pSkillInfoManager->getGradeByDomainLevel(level)) { case SKILL_GRADE_APPRENTICE: DamageBonus += 2; break; case SKILL_GRADE_ADEPT: DamageBonus += 3; break; case SKILL_GRADE_EXPERT: DamageBonus += 4; break; case SKILL_GRADE_MASTER: DamageBonus += 5; break; case SKILL_GRADE_GRAND_MASTER: DamageBonus += 6; break; default: break; } */ // by sigi. 2002.12.3// DamageBonus += level*10/125; DamageBonus += 3 + level/15; } } else if (IClass == Item::ITEM_CLASS_BLADE) // by sigi. 2002.6.7 { // CONCENTRATION SkillSlot* pSkill = getSkill(SKILL_CONCENTRATION); if (pSkill != NULL && pSkill->canUse()) { int level = m_SkillDomainLevels[SKILL_DOMAIN_BLADE]; /* switch (g_pSkillInfoManager->getGradeByDomainLevel(level)) { case SKILL_GRADE_APPRENTICE: ToHitBonus += 3; break; case SKILL_GRADE_ADEPT: ToHitBonus += 6; break; case SKILL_GRADE_EXPERT: ToHitBonus += 9; break; case SKILL_GRADE_MASTER: ToHitBonus += 12; break; case SKILL_GRADE_GRAND_MASTER: ToHitBonus += 15; break; default: break; } */ // by sigi. 2002.12.3// ToHitBonus += level/6; ToHitBonus += 3+(level/10); } // EVASION pSkill = getSkill(SKILL_EVASION); if (pSkill != NULL && pSkill->canUse()) { int level = m_SkillDomainLevels[SKILL_DOMAIN_BLADE]; // by sigi. 2002.12.3// Defense_t DefenseBonus = (level-20)/5; Defense_t DefenseBonus = 3 + (level-20)/5; /* switch (g_pSkillInfoManager->getGradeByDomainLevel(level)) { case SKILL_GRADE_APPRENTICE: DefenseBonus += 3; break; case SKILL_GRADE_ADEPT: DefenseBonus += 6; break; case SKILL_GRADE_EXPERT: DefenseBonus += 9; break; case SKILL_GRADE_MASTER: DefenseBonus += 12; break; case SKILL_GRADE_GRAND_MASTER: DefenseBonus += 15; break; default: break; } */ // 老窜 Evasion父 defense甫 官操骨肺 咯扁辑父 拌魂.. by sigi m_Defense[ATTR_CURRENT] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_CURRENT] + DefenseBonus); m_Defense[ATTR_MAX] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_MAX] + DefenseBonus); } } //cout << "ToHitBonus = " << ToHitBonus << endl; if ( pWeapon->isGun() ) { // Concealment 焊呈胶 歹秦林扁 m_Defense[ATTR_CURRENT] += DefBonus; m_Protection[ATTR_CURRENT] += ProBonus; m_Defense[ATTR_MAX] += DefBonus; m_Protection[ATTR_MAX] += ProBonus; } m_ToHit[ATTR_CURRENT] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + ToHitBonus); m_ToHit[ATTR_MAX] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_MAX] + ToHitBonus); m_Damage[ATTR_CURRENT] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_CURRENT] + DamageBonus); m_Damage[ATTR_MAX] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_MAX] + DamageBonus); m_CriticalRatio[ATTR_CURRENT] = m_CriticalRatio[ATTR_CURRENT] + CriticalRatioBonus; m_CriticalRatio[ATTR_MAX] = m_CriticalRatio[ATTR_MAX] + CriticalRatioBonus; } // 规菩 眉农. by sigi. 2002.6.7 if (pShield!=NULL && pShield->getItemClass()==Item::ITEM_CLASS_SHIELD) { int ProtectionBonus = 0; SkillSlot* pMastery = getSkill(SKILL_SHIELD_MASTERY); if (pMastery != NULL && pMastery->canUse()) { int level = m_SkillDomainLevels[SKILL_DOMAIN_SWORD]; /* switch (g_pSkillInfoManager->getGradeByDomainLevel(level)) { case SKILL_GRADE_APPRENTICE: ProtectionBonus += 3; break; case SKILL_GRADE_ADEPT: ProtectionBonus += 6; break; case SKILL_GRADE_EXPERT: ProtectionBonus += 9; break; case SKILL_GRADE_MASTER: ProtectionBonus += 12; break; case SKILL_GRADE_GRAND_MASTER: ProtectionBonus += 15; break; default: break; } */ // by sigi. 2002.12.3// ProtectionBonus += (level-20)/5; ProtectionBonus += 5 + (level-20)/5; m_Protection[ATTR_CURRENT] = min(SLAYER_MAX_PROTECTION, m_Protection[ATTR_CURRENT] + ProtectionBonus); m_Protection[ATTR_MAX] = min(SLAYER_MAX_PROTECTION, m_Protection[ATTR_MAX] + ProtectionBonus); } } /////////////////////////////////////////////////////////////////////////////// // 拌鞭 焊呈胶甫 拌魂茄促. /////////////////////////////////////////////////////////////////////////////// if ( hasRankBonus( RankBonus::RANK_BONUS_DEADLY_SPEAR ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_DEADLY_SPEAR ); Assert( pRankBonus != NULL ); int CriticalRatioBonus = pRankBonus->getPoint(); m_CriticalRatio[ATTR_CURRENT] = m_CriticalRatio[ATTR_CURRENT] + CriticalRatioBonus; m_CriticalRatio[ATTR_MAX] = m_CriticalRatio[ATTR_MAX] + CriticalRatioBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_BEHEMOTH_ARMOR ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_BEHEMOTH_ARMOR ); Assert( pRankBonus != NULL ); Defense_t DefenseBonus = pRankBonus->getPoint(); m_Defense[ATTR_CURRENT] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_CURRENT] + DefenseBonus); m_Defense[ATTR_MAX] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_MAX] + DefenseBonus); } if ( hasRankBonus( RankBonus::RANK_BONUS_DRAGON_EYE ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_DRAGON_EYE ); Assert( pRankBonus != NULL ); int ToHitBonus = pRankBonus->getPoint(); m_ToHit[ATTR_CURRENT] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + ToHitBonus); m_ToHit[ATTR_MAX] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_MAX] + ToHitBonus); } if ( hasRankBonus( RankBonus::RANK_BONUS_IMMORTAL_HEART ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_IMMORTAL_HEART ); Assert( pRankBonus != NULL ); int HPBonus = pRankBonus->getPoint(); m_HP[ATTR_MAX] = m_HP[ATTR_MAX] + HPBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_RELIANCE_BRAIN ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_RELIANCE_BRAIN ); Assert( pRankBonus != NULL ); int MPBonus = pRankBonus->getPoint(); m_MP[ATTR_MAX] = min(SLAYER_MAX_MP, m_MP[ATTR_MAX] + MPBonus); } if ( hasRankBonus( RankBonus::RANK_BONUS_SLAYING_KNIFE ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_SLAYING_KNIFE ); Assert( pRankBonus != NULL ); int DamageBonus = pRankBonus->getPoint(); m_Damage[ATTR_CURRENT] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_CURRENT] + DamageBonus); m_Damage[ATTR_MAX] = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_MAX] + DamageBonus); } if ( hasRankBonus( RankBonus::RANK_BONUS_HAWK_WING ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_HAWK_WING ); Assert( pRankBonus != NULL ); int AttackSpeedBonus = pRankBonus->getPoint(); m_AttackSpeed[ATTR_CURRENT] += AttackSpeedBonus; m_AttackSpeed[ATTR_MAX] += AttackSpeedBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_SAPPHIRE_BLESS ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_SAPPHIRE_BLESS ); Assert( pRankBonus != NULL ); int ResistBonus = pRankBonus->getPoint(); m_Resist[MAGIC_DOMAIN_ACID] += ResistBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_RUBY_BLESS ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_RUBY_BLESS ); Assert( pRankBonus != NULL ); int ResistBonus = pRankBonus->getPoint(); m_Resist[MAGIC_DOMAIN_BLOOD] += ResistBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_DIAMOND_BLESS ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_DIAMOND_BLESS ); Assert( pRankBonus != NULL ); int ResistBonus = pRankBonus->getPoint(); m_Resist[MAGIC_DOMAIN_CURSE] += ResistBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_EMERALD_BLESS ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_EMERALD_BLESS ); Assert( pRankBonus != NULL ); int ResistBonus = pRankBonus->getPoint(); m_Resist[MAGIC_DOMAIN_POISON] += ResistBonus; } if ( hasRankBonus( RankBonus::RANK_BONUS_FORTUNE_HAND ) ) { RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_FORTUNE_HAND );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -