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

📄 initallstat.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : InitAllStat.cpp// Written by  : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Monster.h"#include "GamePlayer.h"#include "Zone.h"#include "AbilityBalance.h"#include "Effect.h"#include "OptionInfo.h"#include "ItemUtil.h"#include "ItemInfo.h"#include "ItemInfoManager.h"#include "Player.h"#include "SkillInfo.h"#include "CombatInfoManager.h"#include "VariableManager.h"#include "RankBonus.h"#include "HolyLandRaceBonus.h"#include "BloodBibleBonus.h"#include "BloodBibleBonusManager.h"#include "WarSystem.h"#include "CastleInfoManager.h"#include "DefaultOptionSetInfo.h"#include "LevelWarZoneInfoManager.h"#include "SweeperBonus.h"#include "SweeperBonusManager.h"#include "PetInfo.h"#include "item/OustersWristlet.h"#include "item/OustersStone.h"#include "skill/CastleSkillSlot.h"#include "skill/VampireCastleSkillSlot.h"#include "skill/EffectBless.h"#include "skill/EffectDancingSword.h"#include "skill/EffectGhostBlade.h"#include "skill/EffectChargingPower.h"#include "skill/EffectPotentialExplosion.h"#include "skill/EffectParalyze.h"#include "skill/EffectDoom.h"#include "skill/EffectSeduction.h"#include "skill/EffectProtectionFromPoison.h"#include "skill/EffectProtectionFromCurse.h"#include "skill/EffectProtectionFromAcid.h"#include "skill/EffectProtectionFromBlood.h"#include "skill/EffectTransformToWolf.h"#include "skill/EffectTransformToBat.h"#include "skill/EffectMindControl.h"#include "skill/EffectExpansion.h"#include "skill/EffectBerserker.h"#include "skill/EffectStriking.h"#include "skill/EffectExtreme.h"#include "skill/EffectDeath.h"#include "skill/EffectMephisto.h"#include "skill/EffectObservingEye.h"#include "skill/EffectSummonCasket.h"#include "skill/EffectConcealment.h"#include "skill/EffectEvade.h"#include "skill/EffectCrossGuard.h"#include "skill/EffectBlunting.h"#include "skill/EffectHandsOfFire.h"#include "skill/EffectRingOfFlare.h"#include "skill/EffectWaterBarrier.h"#include "skill/EffectGnomesWhisper.h"#include "skill/EffectRediance.h"#include "skill/EffectHolyArmor.h"#include "skill/EffectTransformToWerwolf.h"#include "skill/EffectReactiveArmor.h"#include "skill/EffectGroundBless.h"#include "skill/EffectSharpChakram.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCAddEffect.h"#include "Gpackets/GCRemoveEffect.h"#include "Gpackets/GCChangeShape.h"////////////////////////////////////////////////////////////////////////////////// 浇饭捞绢////////////////////////////////////////////////////////////////////////////////void Slayer::initCastleSkill() throw(){	__BEGIN_TRY	removeAllCastleSkill();	if ( !getZone()->isHolyLand() ) return;	list<CastleInfo*> pCastleInfoList = g_pCastleInfoManager->getGuildCastleInfos( getGuildID() );	if ( pCastleInfoList.empty() ) return;	list<CastleInfo*>::iterator itr = pCastleInfoList.begin();	for ( ; itr != pCastleInfoList.end() ; itr++ )	{		SkillType_t CastleSkillType = g_pCastleInfoManager->getCastleSkillType( (*itr)->getZoneID(), getGuildID() );		if ( CastleSkillType == SKILL_MAX ) 			continue;		SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(CastleSkillType);		Assert( pSkillInfo != NULL );		Turn_t Delay = pSkillInfo->getMaxDelay();		CastleSkillSlot* pCastleSkillSlot = new CastleSkillSlot();		pCastleSkillSlot->setName( m_Name );		pCastleSkillSlot->setSkillType( CastleSkillType );		pCastleSkillSlot->setInterval(Delay);		pCastleSkillSlot->setExpLevel(0);		pCastleSkillSlot->setExp(1);		pCastleSkillSlot->setRunTime();		addSkill( pCastleSkillSlot );	}	__END_CATCH}void Slayer::initAllStat(int numPartyMember) throw(){	__BEGIN_TRY	BASIC_ATTR attr;	Creature::CreatureClass CClass = getCreatureClass();	m_Resist[MAGIC_DOMAIN_NO_DOMAIN] = 0;	m_Resist[MAGIC_DOMAIN_POISON]    = 0;	m_Resist[MAGIC_DOMAIN_ACID]      = 0;	m_Resist[MAGIC_DOMAIN_CURSE]     = 0;	m_Resist[MAGIC_DOMAIN_BLOOD]     = 0;	// BloodBible 包访 焊呈胶 荐摹甸 檬扁拳	m_ConsumeMPRatio	= 0;	m_GamblePriceRatio	= 0;	m_PotionPriceRatio	= 0;	m_MagicBonusDamage	= 0;	m_PhysicBonusDamage	= 0;	//////////////////////////////////////////////////////////////////////////////	// 力老 刚历 扁夯 瓷仿摹甫 檬扁拳矫虐绊, 	// 扁夯 瓷仿摹俊 康氢阑 林绰 捞棋飘甫 八荤茄促.	//////////////////////////////////////////////////////////////////////////////	m_STR[ATTR_CURRENT] = m_STR[ATTR_MAX] = m_STR[ATTR_BASIC] = m_pAttrs[ATTR_KIND_STR]->getLevel();	m_DEX[ATTR_CURRENT] = m_DEX[ATTR_MAX] = m_DEX[ATTR_BASIC] = m_pAttrs[ATTR_KIND_DEX]->getLevel();	m_INT[ATTR_CURRENT] = m_INT[ATTR_MAX] = m_INT[ATTR_BASIC] = m_pAttrs[ATTR_KIND_INT]->getLevel();	if (isFlag(Effect::EFFECT_CLASS_BLESS))	{		EffectBless* pBless = dynamic_cast<EffectBless*>(findEffect(Effect::EFFECT_CLASS_BLESS));		if (pBless != NULL)		{			// STR, DEX甫 棵赴促.//			m_STR[ATTR_CURRENT] += pBless->getSTRBonus();//			m_DEX[ATTR_CURRENT] += pBless->getDEXBonus();			m_STR[ATTR_CURRENT] += getPercentValue( m_STR[ATTR_CURRENT], pBless->getSTRBonus() );			m_DEX[ATTR_CURRENT] += getPercentValue( m_DEX[ATTR_CURRENT], pBless->getDEXBonus() );		}	}	if (isFlag(Effect::EFFECT_CLASS_POTENTIAL_EXPLOSION))	{		EffectPotentialExplosion* pPotentialExplosion = dynamic_cast<EffectPotentialExplosion*>(findEffect(Effect::EFFECT_CLASS_POTENTIAL_EXPLOSION));		if (pPotentialExplosion!= NULL)		{			// STR, DEX甫 棵赴促.			m_STR[ATTR_CURRENT] += pPotentialExplosion->getDiffSTR();			m_DEX[ATTR_CURRENT] += pPotentialExplosion->getDiffDEX();		}	}	if (isFlag(Effect::EFFECT_CLASS_REDIANCE))	{		EffectRediance* pRediance = dynamic_cast<EffectRediance*>(findEffect(Effect::EFFECT_CLASS_REDIANCE));		if (pRediance!= NULL)		{			Item* pWeapon = m_pWearItem[Slayer::WEAR_RIGHTHAND];			if ( pWeapon == NULL || pWeapon->getItemClass() != Item::ITEM_CLASS_SWORD || !isRealWearing( WEAR_RIGHTHAND ) )			{				pRediance->setDeadline(0);			}			else			{				m_DEX[ATTR_CURRENT] += pRediance->getDexBonus();			}		}	}	//////////////////////////////////////////////////////////////////////////////	// 瓷仿摹 拌魂阑 困茄 颇扼固磐甸阑 檬扁拳茄促.	//////////////////////////////////////////////////////////////////////////////	attr.nSTR    = m_STR[ATTR_CURRENT];	attr.nDEX    = m_DEX[ATTR_CURRENT];	attr.nINT    = m_INT[ATTR_CURRENT];	attr.pWeapon = m_pWearItem[WEAR_RIGHTHAND];	m_HPStealAmount = 0;	m_MPStealAmount = 0;	m_HPStealRatio  = 0;	m_MPStealRatio  = 0;	m_HPRegen       = 0;	m_MPRegen       = 0;	m_Luck			= 0;	for (int i=0; i<SKILL_DOMAIN_MAX; i++)		attr.pDomainLevel[i] = m_SkillDomainLevels[i];	//////////////////////////////////////////////////////////////////////////////	// 何啊利牢 瓷仿摹甸阑 拌魂茄促.	//////////////////////////////////////////////////////////////////////////////	m_HP[ATTR_MAX]                = computeHP(CClass, &attr);	m_HP[ATTR_BASIC]              = 0;	m_MP[ATTR_MAX]                = computeMP(CClass, &attr);	m_MP[ATTR_BASIC]              = 0;	m_ToHit[ATTR_CURRENT]         = computeToHit(CClass, &attr);	m_ToHit[ATTR_MAX]             = 0;	m_Defense[ATTR_CURRENT]       = computeDefense(CClass, &attr);	m_Defense[ATTR_MAX]           = 0;	m_Protection[ATTR_CURRENT]    = computeProtection(CClass, &attr);	m_Protection[ATTR_MAX]        = 0;	m_Damage[ATTR_CURRENT]        = computeMinDamage(CClass, &attr);	m_Damage[ATTR_MAX]            = computeMaxDamage(CClass, &attr);	m_Damage[ATTR_BASIC]          = 0;	m_AttackSpeed[ATTR_CURRENT]   = computeAttackSpeed(CClass, &attr);	m_AttackSpeed[ATTR_MAX]       = 0;	m_CriticalRatio[ATTR_CURRENT] = computeCriticalRatio(CClass, &attr);	m_CriticalRatio[ATTR_MAX]     = 0;	//////////////////////////////////////////////////////////////////////////////	// 瓷仿摹俊 狼茄 Damage 甫 历厘秦 敌促. BERSER 扁贱狼 焊呈胶 拌魂阑 困秦辑.	//////////////////////////////////////////////////////////////////////////////	Damage_t AttrMinDamage = m_Damage[ATTR_CURRENT];	Damage_t AttrMaxDamage = m_Damage[ATTR_MAX];	int DefBonus = 0;	int ProBonus = 0;	if ( isFlag( Effect::EFFECT_CLASS_CONCEALMENT ) )	{		EffectConcealment* pEffect = dynamic_cast<EffectConcealment*>( findEffect(Effect::EFFECT_CLASS_CONCEALMENT) );		if ( pEffect != NULL )		{			if ( attr.pWeapon == NULL || !isArmsWeapon( attr.pWeapon ) )			{				pEffect->setDeadline(0);			}			else if ( isRealWearing( WEAR_RIGHTHAND ) )			{				DefBonus = (int)( (getDEX()/20) * ( 1.0f + ((float)pEffect->getLevel()/25.0f) ) );				ProBonus = (int)( (getSTR()/10) * ( 1.0f + ((float)pEffect->getLevel()/25.0f) ) );			}		}	}	int RaceWarHPBonus = 0;	if ( m_pZone->isHolyLand() || m_pZone->isLevelWarZone() )	{		RaceWarHPBonus = getPercentValue( m_HP[ATTR_MAX], g_pVariableManager->getRaceWarHPBonus() );	}	// Passive Skill : Will of Iron (鉴荐 HP * 1.15)	SkillSlot* pFabulousSoul = getSkill(SKILL_FABULOUS_SOUL);	SkillSlot* pWillOfIron = getSkill(SKILL_WILL_OF_IRON);	int HPBonus_WillOfIron = 0;	if( (pFabulousSoul != NULL && pFabulousSoul->canUse()) ||			(pWillOfIron != NULL && pWillOfIron->canUse()) )	{		HPBonus_WillOfIron = m_HP[ATTR_MAX] * 0.15;		}	SkillSlot* pLiveness = getSkill(SKILL_LIVENESS);	int HPBonusPercent = 0,		LivenessHPBonus =0,		LivenessDefenseBonus = 0;			if(pLiveness != NULL && pLiveness->canUse())	{		int level = m_SkillDomainLevels[SKILL_DOMAIN_GUN];#ifdef __CHINA_SERVER__		switch (g_pSkillInfoManager->getGradeByDomainLevel(level))		{			case SKILL_GRADE_APPRENTICE:   HPBonusPercent = 0; 										   LivenessDefenseBonus = 0;										   break;			case SKILL_GRADE_ADEPT:        HPBonusPercent = 10;										   LivenessDefenseBonus = 10;										   break;			case SKILL_GRADE_EXPERT:       HPBonusPercent = 25;										   LivenessDefenseBonus = 35;										   break;			case SKILL_GRADE_MASTER:       HPBonusPercent = 40;										   LivenessDefenseBonus = 60;										   break;			case SKILL_GRADE_GRAND_MASTER: HPBonusPercent = 100;										   LivenessDefenseBonus = 100;										   break;			default:                       break;		}//		if ( level >= 125 ) HPBonusPercent = 50;#else		switch (g_pSkillInfoManager->getGradeByDomainLevel(level))		{			case SKILL_GRADE_APPRENTICE:   HPBonusPercent = 0; 										   LivenessDefenseBonus = 0;										   break;			case SKILL_GRADE_ADEPT:        HPBonusPercent = 10;										   LivenessDefenseBonus = 10;										   break;			case SKILL_GRADE_EXPERT:       HPBonusPercent = 20;										   LivenessDefenseBonus = 35;										   break;			case SKILL_GRADE_MASTER:       HPBonusPercent = 30;										   LivenessDefenseBonus = 60;										   break;			case SKILL_GRADE_GRAND_MASTER: HPBonusPercent = 40;										   LivenessDefenseBonus = 100;										   break;			default:                       break;		}		if ( level >= 125 ) HPBonusPercent = 50;#endif		LivenessHPBonus = getPercentValue( m_HP[ATTR_MAX], HPBonusPercent);		//m_Defense[ATTR_CURRENT]  = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_CURRENT] + LivenessDefenseBonus);	}	////	// 傈里 焊呈胶	// 瘤陛篮 傈里 铰菩俊 包拌绝捞 绢蠢率捞电 焊呈胶啊 利侩瞪 荐 乐促. by sigi	//if ( g_pCombatInfoManager->isSlayerBonus() )	int HPBonus = 0;	{		int bonusRatio = g_pVariableManager->getCombatSlayerHPBonusRatio();		//g_pCombatInfoManager->getSlayerHPModify();		if (bonusRatio > 0)		{			HPBonus = getPercentValue( m_HP[ATTR_MAX], bonusRatio);		}	}	//////////////////////////////////////////////////////////////////////////	// 老窜 扁绢 眉农 函荐甫 檬扁拳秦辑 葛电 扁绢甫 救 涝篮 巴栏肺 埃林窍绊 矫累茄促.	//////////////////////////////////////////////////////////////////////////////	bool pOldRealWearingCheck[WEAR_MAX];	// by sigi. 2002.10.31	for (int i=0; i<WEAR_MAX; i++) 	{		pOldRealWearingCheck[i] = m_pRealWearingCheck[i];		m_pRealWearingCheck[i] = false;	}	//////////////////////////////////////////////////////////////////////////////	// 己阑 家蜡茄 辆练篮 焊呈胶 可记阑 罐霸 等促	//////////////////////////////////////////////////////////////////////////////	// Blood Bible 阿阿狼 焊呈胶 可记阑 罐绰 吧肺 绊闷促./*	if (m_pZone->isHolyLand() )	{		const list<OptionType_t>& optionType = g_pHolyLandRaceBonus->getSlayerOptionTypeList();		list<OptionType_t>::const_iterator itr;		for (itr=optionType.begin(); itr!=optionType.end(); itr++)		{			computeOptionStat( *itr );		}	}*/	//////////////////////////////////////////////////////////////////////////////	// Blood Bible 阿阿狼 焊呈胶 可记阑 罐绰促.	//////////////////////////////////////////////////////////////////////////////	if ( m_pZone->isHolyLand() && !g_pWarSystem->hasActiveRaceWar() )	{		const BloodBibleBonusHashMap& bloodBibleBonus = g_pBloodBibleBonusManager->getBloodBibleBonuses();		BloodBibleBonusHashMapConstItor itr;		for (itr=bloodBibleBonus.begin(); itr!=bloodBibleBonus.end(); itr++)		{			if ( itr->second->getRace() == RACE_SLAYER )			{				OptionTypeList optionTypes = itr->second->getOptionTypeList();				OptionTypeListConstItor optionItr;								for ( optionItr = optionTypes.begin(); optionItr != optionTypes.end(); optionItr++ )				{					computeOptionStat( *optionItr );				}			}		}	}	if ( g_pSweeperBonusManager->isAble( getZoneID() ) && g_pLevelWarZoneInfoManager->isCreatureBonusZone( this, getZoneID() ))	{		const SweeperBonusHashMap& sweeperBonuses = g_pSweeperBonusManager->getSweeperBonuses();

⌨️ 快捷键说明

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