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

📄 initallstat.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		SweeperBonusHashMapConstItor itr = sweeperBonuses.begin();		SweeperBonusHashMapConstItor endItr = sweeperBonuses.end();		for (; itr!=endItr; itr++)		{			if ( itr->second->getRace() == RACE_SLAYER && itr->second->getLevel() == g_pLevelWarZoneInfoManager->getCreatureLevelGrade( this ) )			{				OptionTypeList optionTypes = itr->second->getOptionTypeList();				OptionTypeListConstItor optionItr;								for ( optionItr = optionTypes.begin(); optionItr != optionTypes.end(); optionItr++ )				{					computeOptionStat( *optionItr );				}			}		}	}	//////////////////////////////////////////////////////////////////////////////	// 扁夯利栏肺 啊瘤绊 乐绰 可记甸阑 拌魂茄促.	//////////////////////////////////////////////////////////////////////////////	slist<DefaultOptionSetType_t>::iterator itr = m_DefaultOptionSet.begin();	for ( ; itr != m_DefaultOptionSet.end(); itr++ )	{		DefaultOptionSetInfo* pDefaultOptionSetInfo = g_pDefaultOptionSetInfoManager->getDefaultOptionSetInfo( (*itr) );		if ( pDefaultOptionSetInfo != NULL )		{			const list<OptionType_t>& optionList = pDefaultOptionSetInfo->getOptionTypeList();			list<OptionType_t>::const_iterator citr;			for ( citr = optionList.begin(); citr != optionList.end(); citr++ )			{				computeOptionStat( *citr );			}		}	}	//////////////////////////////////////////////////////////////////////////////	// 脐捞 林绰 焊呈胶甫 拌魂茄促.	//////////////////////////////////////////////////////////////////////////////	if ( m_pPetInfo != NULL )	{		if ( m_pPetInfo->getPetAttr() != 0xff ) computeOptionClassStat( (OptionClass)m_pPetInfo->getPetAttr(), (int)m_pPetInfo->getPetAttrLevel() );		if ( m_pPetInfo->getPetOption() != 0 ) computeOptionStat( m_pPetInfo->getPetOption() );	}	//////////////////////////////////////////////////////////////////////////////	// 涝绊 乐绰 酒捞袍阑 眉农茄促.	// for 啊 滴锅牢 捞蜡绰 酒捞袍栏肺 棵扼埃 瓷仿摹俊 狼秦辑	// 涝阑 荐 乐霸 登绰 酒捞袍阑 眉农窍扁 困秦辑捞促.	//////////////////////////////////////////////////////////////////////////////	for (int j=0; j<WEAR_MAX; j++)	{		int wearCount = 0;		for (int i=0; i<WEAR_MAX; i++)		{			Item* pItem = m_pWearItem[i];			// 泅犁 器牢飘俊 酒捞袍捞 乐绊			// 弊巴俊 措茄 眉农甫 酒流 窍瘤 臼疽促搁...			if (pItem != NULL && m_pRealWearingCheck[i] == false)			{				// 父老 柳楼风 涝阑 荐 乐绰 酒捞袍捞扼搁 瓷仿摹甫 棵妨霖促.				if (isRealWearing(pItem))				{					computeItemStat(pItem);					// 剧颊 公扁扼搁, 眉农甫 滴锅 窍瘤 臼档废					// 哭率, 坷弗率 葛滴 眉农 函荐甫 技泼					if (isTwohandWeapon(pItem))					{						m_pRealWearingCheck[WEAR_LEFTHAND] = true;						m_pRealWearingCheck[WEAR_RIGHTHAND] = true;					}					else m_pRealWearingCheck[i] = true;					wearCount ++;				}			}		}		if (wearCount==0)			break;	}	// by sigi. 2002.11.6	bool bSendPacket = false;	if (m_pPlayer!=NULL)	{			bSendPacket = (dynamic_cast<GamePlayer*>(m_pPlayer)->getPlayerStatus()==GPS_NORMAL);	}	// 老窜 困俊辑 促 涝菌绰单..	// 瓷仿摹俊 蝶扼辑 汗厘捞 利侩捞 救登绰 酒捞袍篮 汗厘 沥焊甫 绝矩促.	// 捞傈俊绰 给 涝菌绰单 捞力绰 涝阑 荐 乐促搁 涝洒绰 菩哦阑 焊辰促.	// by sigi. 2002.10.30	for (int i=0; i<WEAR_MAX; i++)	{		if (m_pRealWearingCheck[i])		{			// by sigi. 2002.10.31			if (pOldRealWearingCheck[i]==false)			{				Item* pItem = m_pWearItem[i];				if (pItem!=NULL)				{					Item::ItemClass IClass = pItem->getItemClass();					ItemType_t		IType  = pItem->getItemType();					Color_t color = getItemShapeColor( pItem );					addShape(IClass, IType, color);					if (bSendPacket)					{						GCChangeShape _GCChangeShape;						_GCChangeShape.setObjectID(getObjectID());						_GCChangeShape.setItemClass(IClass);						_GCChangeShape.setItemType(IType);						_GCChangeShape.setOptionType(pItem->getFirstOptionType());						_GCChangeShape.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]);						m_pZone->broadcastPacket(m_X, m_Y, &_GCChangeShape, this);					}				}			}		}		else		{			Item* pItem = m_pWearItem[i];			if (pItem!=NULL)			{				removeShape(pItem->getItemClass(), bSendPacket);			}		}	}	///////////////////////////////////////////////////////////////////////////////	// 拌鞭 焊呈胶甫 拌魂茄促.	///////////////////////////////////////////////////////////////////////////////	// 胶瓶 犬伏阑 拌魂窍扁 傈俊 固府 拌魂茄促.	///////////////////////////////////////////////////////////////////////////////	if ( hasRankBonus( RankBonus::RANK_BONUS_WIGHT_HAND ) )	{		RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_WIGHT_HAND );		Assert( pRankBonus != NULL );		int StealBonus = pRankBonus->getPoint();		m_HPStealAmount += StealBonus;	}	if ( hasRankBonus( RankBonus::RANK_BONUS_SEIREN_HAND ) )	{		RankBonus* pRankBonus = getRankBonus( RankBonus::RANK_BONUS_SEIREN_HAND );		Assert( pRankBonus != NULL );		int StealBonus = pRankBonus->getPoint();		m_MPStealAmount += StealBonus;	}	//////////////////////////////////////////////////////////////////////////////	// HP, MP 胶瓶 犬伏阑 拌魂秦 敌促.	//////////////////////////////////////////////////////////////////////////////	m_HPStealRatio = computeStealRatio(CClass, m_HPStealAmount, &attr);	m_MPStealRatio = computeStealRatio(CClass, m_MPStealAmount, &attr);	Item* pWeapon = m_pWearItem[Slayer::WEAR_RIGHTHAND];	Item* pShield = m_pWearItem[Slayer::WEAR_LEFTHAND];	//////////////////////////////////////////////////////////////////////////////	// 何啊利牢 瓷仿摹甫 流立 荐沥窍绰 捞棋飘甫 八荤茄促.	//////////////////////////////////////////////////////////////////////////////	if (isFlag(Effect::EFFECT_CLASS_STRIKING))	{		EffectStriking* pStriking = dynamic_cast<EffectStriking*>(findEffect(Effect::EFFECT_CLASS_STRIKING));		if (pStriking != NULL)		{			Damage_t   DamageBonus  = pStriking->getDamageBonus();			if (pWeapon != NULL && pStriking->isTargetItem( pWeapon ) )			{				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);				// ItemOID啊 老摹茄促绰 富篮 规陛 胶飘扼捞欧捞 吧啡芭唱,				// 促弗 公扁甫 甸菌促啊, 促矫 胶飘扼捞欧捞 吧赴 公扁甫				// 甸菌促绰 富捞促. 弊矾骨肺 捞棋飘甫 嘿捞扼绊 朝妨拎具 茄促.				GCAddEffect gcAddEffect;				gcAddEffect.setObjectID(m_ObjectID);				gcAddEffect.setEffectID(Effect::EFFECT_CLASS_STRIKING);				gcAddEffect.setDuration(pStriking->getRemainDuration());				m_pZone->broadcastPacket(m_X, m_Y, &gcAddEffect);			}			else			{				// ItemOID啊 老摹窍瘤 臼绰促绰 富篮 胶飘扼捞欧捞 吧赴 惑怕俊辑				// 促弗 公扁甫 甸菌促绰 富捞促. 弊矾骨肺 泅犁狼 浇饭捞绢俊霸绰				// 胶飘扼捞欧捞 吧妨乐促. 捞 捞棋飘甫 力芭秦拎具 窍骨肺...				GCRemoveEffect gcRemoveEffect;				gcRemoveEffect.setObjectID(m_ObjectID);				gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_STRIKING);				m_pZone->broadcastPacket(getX(), getY(), &gcRemoveEffect);			}		}	}	if (isFlag(Effect::EFFECT_CLASS_BLOOD_DRAIN))	{		int DefensePenalty    = getPercentValue(m_Defense[ATTR_CURRENT],    20);		int ToHitPenalty      = getPercentValue(m_ToHit[ATTR_CURRENT],      20);		int ProtectionPenalty = getPercentValue(m_Protection[ATTR_CURRENT], 20);		int DamagePenalty1    = getPercentValue(m_Damage[ATTR_CURRENT],     20);		int DamagePenalty2    = getPercentValue(m_Damage[ATTR_MAX],         20);		m_Defense[ATTR_CURRENT]    = max(0, m_Defense[ATTR_CURRENT]    - DefensePenalty);		m_ToHit[ATTR_CURRENT]      = max(0, m_ToHit[ATTR_CURRENT]      - ToHitPenalty);		m_Protection[ATTR_CURRENT] = max(0, m_Protection[ATTR_CURRENT] - ProtectionPenalty);		m_Damage[ATTR_CURRENT]     = max(0, m_Damage[ATTR_CURRENT]     - DamagePenalty1);		m_Damage[ATTR_MAX]         = max(0, m_Damage[ATTR_MAX]         - DamagePenalty2);	}	if (isFlag(Effect::EFFECT_CLASS_DOOM))	{		EffectDoom* pDoom = dynamic_cast<EffectDoom*>(findEffect(Effect::EFFECT_CLASS_DOOM));		if (pDoom!= NULL)		{			int DefensePenalty    = getPercentValue(m_Defense[ATTR_CURRENT], pDoom->getDefensePenalty());			int ProtectionPenalty = getPercentValue(m_Protection[ATTR_CURRENT], pDoom->getProtectionPenalty());			m_Defense[ATTR_CURRENT]    = max(0, m_Defense[ATTR_CURRENT]    - DefensePenalty);			m_Protection[ATTR_CURRENT] = max(0, m_Protection[ATTR_CURRENT] - ProtectionPenalty);		}	}	if (isFlag(Effect::EFFECT_CLASS_SEDUCTION))	{		EffectSeduction* pSeduction = dynamic_cast<EffectSeduction*>(findEffect(Effect::EFFECT_CLASS_SEDUCTION));		if (pSeduction!= NULL)		{			int ToHitPenalty   = getPercentValue(m_ToHit[ATTR_CURRENT],  pSeduction->getToHitPenalty());			int DamagePenalty1 = getPercentValue(m_Damage[ATTR_CURRENT], pSeduction->getDamagePenalty());			int DamagePenalty2 = getPercentValue(m_Damage[ATTR_MAX],     pSeduction->getDamagePenalty());			m_ToHit[ATTR_CURRENT]  = max(0, m_ToHit[ATTR_CURRENT] - ToHitPenalty);			m_Damage[ATTR_CURRENT] = max(0, m_Damage[ATTR_CURRENT] - DamagePenalty1);			m_Damage[ATTR_MAX]     = max(0, m_Damage[ATTR_MAX] - DamagePenalty2);		}	}/*	if (isFlag(Effect::EFFECT_CLASS_PARALYZE))	{		EffectParalyze* pParalyze = dynamic_cast<EffectParalyze*>(findEffect(Effect::EFFECT_CLASS_PARALYZE));		if (pParalyze != NULL)		{			int DefensePenalty = getPercentValue(m_Defense[ATTR_CURRENT], pParalyze->getDefensePenalty());			m_Defense[ATTR_CURRENT] = max(0, m_Defense[ATTR_CURRENT] - DefensePenalty);		}	}*/	if (isFlag(Effect::EFFECT_CLASS_CHARGING_POWER))	{		EffectChargingPower* pChargingPower= dynamic_cast<EffectChargingPower*>(findEffect(Effect::EFFECT_CLASS_CHARGING_POWER));		if (pChargingPower != NULL)		{			if (!isRealWearing(Slayer::WEAR_RIGHTHAND) || pWeapon == NULL || pWeapon->getItemClass() != Item::ITEM_CLASS_BLADE)			{				pChargingPower->setDeadline(0);			}			else 	//		if (pChargingPower != NULL)			{				int DamageBonus = pChargingPower->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);			}		}	}	if (isFlag(Effect::EFFECT_CLASS_DANCING_SWORD))	{		EffectDancingSword* pDancingSword = dynamic_cast<EffectDancingSword*>(findEffect(Effect::EFFECT_CLASS_DANCING_SWORD));		if (pDancingSword!= NULL)		{			m_ToHit[ATTR_CURRENT] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + pDancingSword->getToHitBonus());		}	}	if (isFlag(Effect::EFFECT_CLASS_GHOST_BLADE))	{		EffectGhostBlade* pGhostBlade = dynamic_cast<EffectGhostBlade*>(findEffect(Effect::EFFECT_CLASS_GHOST_BLADE));		if (pGhostBlade != NULL)		{			m_ToHit[ATTR_CURRENT] = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + pGhostBlade->getToHitBonus());		}	}	if (isFlag(Effect::EFFECT_CLASS_MIND_CONTROL))	{		EffectMindControl* pMindControl = dynamic_cast<EffectMindControl*>(findEffect(Effect::EFFECT_CLASS_MIND_CONTROL));		if (pMindControl != NULL)		{			m_ToHit[ATTR_CURRENT]   = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + pMindControl->getToHitBonus());			m_Defense[ATTR_CURRENT] = min(SLAYER_MAX_DEFENSE, m_Defense[ATTR_CURRENT] + pMindControl->getDefenseBonus());		}	}	if (isFlag(Effect::EFFECT_CLASS_PROTECTION_FROM_POISON))	{		EffectProtectionFromPoison* pProtectionFromPoison = dynamic_cast<EffectProtectionFromPoison*>(findEffect(Effect::EFFECT_CLASS_PROTECTION_FROM_POISON));		if (pProtectionFromPoison != NULL)		{			m_Resist[MAGIC_DOMAIN_POISON] += pProtectionFromPoison->getResist();		}	}	if (isFlag(Effect::EFFECT_CLASS_PROTECTION_FROM_CURSE))	{		EffectProtectionFromCurse* pProtectionFromCurse = dynamic_cast<EffectProtectionFromCurse*>(findEffect(Effect::EFFECT_CLASS_PROTECTION_FROM_CURSE));		if (pProtectionFromCurse != NULL)		{			m_Resist[MAGIC_DOMAIN_CURSE] += pProtectionFromCurse->getResist();		}	}	if (isFlag(Effect::EFFECT_CLASS_PROTECTION_FROM_ACID))	{		EffectProtectionFromAcid* pProtectionFromAcid = dynamic_cast<EffectProtectionFromAcid*>(findEffect(Effect::EFFECT_CLASS_PROTECTION_FROM_ACID));		if (pProtectionFromAcid != NULL)		{			m_Resist[MAGIC_DOMAIN_ACID] += pProtectionFromAcid->getResist();		}	}	if (isFlag(Effect::EFFECT_CLASS_PROTECTION_FROM_BLOOD))	{		EffectProtectionFromBlood* pProtectionFromBlood = dynamic_cast<EffectProtectionFromBlood*>(findEffect(Effect::EFFECT_CLASS_PROTECTION_FROM_BLOOD));		if (pProtectionFromBlood != NULL)		{			m_Resist[MAGIC_DOMAIN_BLOOD] += pProtectionFromBlood->getResist();		}	}	if (isFlag(Effect::EFFECT_CLASS_EXPANSION))	{		EffectExpansion* pExpansion = dynamic_cast<EffectExpansion*>(findEffect(Effect::EFFECT_CLASS_EXPANSION));		if (pExpansion != NULL)		{			int Bonus = pExpansion->getHPBonus();			// 眉仿阑 唤脾扁 秦霖促...			m_HP[ATTR_MAX] = m_HP[ATTR_MAX] + Bonus;		}	}	if (isFlag(Effect::EFFECT_CLASS_BERSERKER))	{		EffectBerserker* pBerserker= dynamic_cast<EffectBerserker*>(findEffect(Effect::EFFECT_CLASS_BERSERKER));		if (pBerserker != NULL)		{			Damage_t BladeMinDamage = 0;			Damage_t BladeMaxDamage = 0;			if ( attr.pWeapon != NULL && attr.pWeapon->getItemClass() == Item::ITEM_CLASS_BLADE )			{				BladeMinDamage = attr.pWeapon->getMinDamage();				BladeMaxDamage = attr.pWeapon->getMaxDamage();			}			// 单固瘤 棺 捧三 焊呈胶, 叼奇胶 棺 橇肺咆记 其澄萍绰 欺季飘 蔼捞促.			// 单固瘤绰 瓷仿摹俊 狼茄 单固瘤客 公扁(档) 单固瘤狼 钦俊 措茄 厚啦捞促.			// 促弗 捞棋飘俊 狼茄 眠啊 单固瘤绰 捞 拌魂俊辑 力寇茄促.			int ToHitBonus        = getPercentValue(m_ToHit[ATTR_CURRENT], pBerserker->getToHitBonus());			int MinDamageBonus    = getPercentValue(AttrMinDamage+BladeMinDamage, pBerserker->getDamageBonus());			int MaxDamageBonus    = getPercentValue(AttrMaxDamage+BladeMaxDamage, pBerserker->getDamageBonus());			int DefensePenalty    = getPercentValue(m_Defense[ATTR_CURRENT], pBerserker->getDefensePenalty());			int ProtectionPenalty = getPercentValue(m_Defense[ATTR_CURRENT], pBerserker->getProtectionPenalty());/*			cout << "Damage Bonus : " << (int)pBerserker->getDamageBonus()				 << " MinDamage : " << (int)(AttrMinDamage+BladeMinDamage)				 << " MaxDamage : " << (int)(AttrMaxDamage+BladeMaxDamage)				 << " MinDamageBonus : " << (int)MinDamageBonus				 << " MaxDamageBonus : " << (int)MaxDamageBonus				 << endl;*/			m_ToHit[ATTR_CURRENT]      = min(SLAYER_MAX_TOHIT, m_ToHit[ATTR_CURRENT] + ToHitBonus);			m_Damage[ATTR_CURRENT]     = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_CURRENT] + MinDamageBonus);			m_Damage[ATTR_MAX]         = min(SLAYER_MAX_DAMAGE, m_Damage[ATTR_MAX] + MaxDamageBonus);			m_Defense[ATTR_CURRENT]    = max(0, m_Defense[ATTR_CURRENT] - DefensePenalty);			m_Protection[ATTR_CURRENT] = max(0, m_Protection[ATTR_CURRENT] - ProtectionPenalty);		}	}	if (isFlag(Effect::EFFECT_CLASS_DEATH))	{		EffectDeath* pDeath = dynamic_cast<EffectDeath*>(findEffect(Effect::EFFECT_CLASS_DEATH));		if (pDeath != NULL)		{			for (int i=0; i<MAGIC_DOMAIN_MAX; i++)			{				m_Resist[i] -= pDeath->getResistPenalty();//				if ( m_Resist[i] < 0 ) m_Resist[i] = 0;			}		}	}	if (isFlag(Effect::EFFECT_CLASS_BLUNTING))	{		EffectBlunting* pBlunting = dynamic_cast<EffectBlunting*>(findEffect(Effect::EFFECT_CLASS_BLUNTING));		if ( pBlunting != NULL )		{			int DefensePenalty = pBlunting->getDefensePenalty();			m_Defense[ATTR_CURRENT]    = max(0, m_Defense[ATTR_CURRENT] - DefensePenalty);		}	}	if (isFlag(Effect::EFFECT_CLASS_HOLY_ARMOR))	{		EffectHolyArmor* pHolyArmor = dynamic_cast<EffectHolyArmor*>(findEffect(Effect::EFFECT_CLASS_HOLY_ARMOR));		if ( pHolyArmor != NULL )

⌨️ 快捷键说明

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