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

📄 holyblast.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
							}							bool bHitRoll    = HitRoll::isSuccessMagic(pSlayer, pSkillInfo, pSkillSlot);							if ( bHitRoll && bHPCheck && pTargetCreature->isAlive())							{								// 鳃 瓤苞 broadcast								_GCSkillToSelfOK1.setSkillType(SKILL_CURE_EFFECT);								_GCSkillToSelfOK1.setDuration(0);								pTargetSlayer->getPlayer()->sendPacket(&_GCSkillToSelfOK1);								_GCSkillToSelfOK2.setObjectID(pTargetSlayer->getObjectID());								_GCSkillToSelfOK2.setSkillType(SKILL_CURE_EFFECT);								_GCSkillToSelfOK2.setDuration(0);								pZone->broadcastPacket( pTargetSlayer->getX(), pTargetSlayer->getY(), &_GCSkillToSelfOK2, pTargetSlayer);								// 软趋寸茄 惑怕扼搁 软趋 惑怕甫 朝妨霖促.								if (pEffectBloodDrain != NULL && pEffectBloodDrain->getLevel() < param.Level)								{									// 软趋 酒福官捞飘甫 规瘤窍扁 困茄 饶蜡刘 捞棋飘甫 嘿咯霖促.									if (pTargetSlayer->isFlag(Effect::EFFECT_CLASS_AFTERMATH))									{										Effect* pEffect = pTargetSlayer->findEffect(Effect::EFFECT_CLASS_AFTERMATH);										EffectAftermath* pEffectAftermath = dynamic_cast<EffectAftermath*>(pEffect);										pEffectAftermath->setDeadline(5*600); // 5盒 悼救 瘤加等促.									}									else									{										EffectAftermath* pEffectAftermath = new EffectAftermath(pTargetSlayer);										pEffectAftermath->setDeadline(5*600); // 5盒 悼救 瘤加等促.										pTargetSlayer->addEffect(pEffectAftermath);										pTargetSlayer->setFlag(Effect::EFFECT_CLASS_AFTERMATH);										pEffectAftermath->create(pTargetSlayer->getName());									}									pEffectBloodDrain->destroy(pTargetSlayer->getName());									pTargetSlayer->deleteEffect(Effect::EFFECT_CLASS_BLOOD_DRAIN);									pTargetSlayer->removeFlag(Effect::EFFECT_CLASS_BLOOD_DRAIN);									SLAYER_RECORD prev;									pTargetSlayer->getSlayerRecord(prev);									pTargetSlayer->initAllStat();									pTargetSlayer->sendRealWearingInfo();									if( pTargetSlayer == pSlayer ) {										pTargetSlayer->addModifyInfo(prev, _GCSkillToTileOK1);									} else {										pTargetSlayer->addModifyInfo(prev, _GCSkillToTileOK2);									}									GCRemoveEffect gcRemoveEffect;									gcRemoveEffect.setObjectID(pTargetSlayer->getObjectID());									gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_BLOOD_DRAIN);									pZone->broadcastPacket(pTargetSlayer->getX(), pTargetSlayer->getY(), &gcRemoveEffect);								}								// HP甫 技泼茄促.								HP_t CurrentHP = pTargetSlayer->getHP(ATTR_CURRENT);								HP_t MaxHP     = pTargetSlayer->getHP(ATTR_MAX);								// 角力 雀汗 荐摹甫 拌魂茄促.								if( CurrentHP + HealPoint <= MaxHP ) {									RealHealPoint = max( 0, (int)HealPoint );								} else {									RealHealPoint = max( 0, (MaxHP - CurrentHP) );								}								CurrentHP = min((int)MaxHP, (int)(CurrentHP + HealPoint));								pTargetSlayer->setHP(CurrentHP , ATTR_CURRENT);								bHeal = true;							}						}					}					// 促弗 辆练捞搁 傍拜茄促.					else					{						bool bPK             = verifyPK(pSlayer, pTargetCreature);						bool bRaceCheck      = pTargetCreature->isVampire() || pTargetCreature->isMonster();						bool bHitRoll        = HitRoll::isSuccess( pSlayer, pTargetCreature, SkillLevel );												if (bPK && bRaceCheck && bZoneLevelCheck && bHitRoll )						{							Damage       = 0;							bCriticalHit = false;							if (param.bAdd)							{								Damage += computeDamage(pSlayer, pTargetCreature, SkillLevel/2, bCriticalHit);							}							if (param.bMagicDamage)							{								Damage += computeMagicDamage(pTargetCreature, param.SkillDamage, param.SkillType);							}							else							{								Damage += param.SkillDamage;							}							MaxDamage = max(Damage, MaxDamage);							TotalDamage += Damage;							// 其澄萍绰 扁夯利栏肺 100捞促.							Damage = getPercentValue(Damage, 100);//penalty);							// 嘎篮 局甸 瘤沥							ObjectID_t targetObjectID = pTargetCreature->getObjectID();							cList.push_back(pTargetCreature);							_GCSkillToTileOK1.addCListElement(targetObjectID);							_GCSkillToTileOK2.addCListElement(targetObjectID);							_GCSkillToTileOK5.addCListElement(targetObjectID);							// 老窜 嘎绰 仇捞 罐阑 菩哦篮 澄 惑怕肺 茄 盲肺, 单固瘤甫 霖促.							setDamage(pTargetCreature, Damage, pSlayer, param.SkillType, NULL, &_GCSkillToTileOK1);							computeAlignmentChange(pTargetCreature, Damage, pSlayer, NULL, &_GCSkillToTileOK1);							increaseAlignment(pSlayer, pTargetCreature, _GCSkillToTileOK1);							bHit = true;						}					}				}			}			if (bHit)			{				if ( bIncreaseDomainExp )				{					if (param.bExpForTotalDamage)					{						int ExpUp = max((unsigned int)TotalDamage, RealHealPoint);						shareAttrExp(pSlayer, ExpUp, param.STRMultiplier, param.DEXMultiplier, param.INTMultiplier, _GCSkillToTileOK1);					}					else					{						int ExpUp = max((unsigned int)MaxDamage, RealHealPoint);						shareAttrExp(pSlayer, ExpUp, param.STRMultiplier, param.DEXMultiplier, param.INTMultiplier, _GCSkillToTileOK1);					}					increaseDomainExp(pSlayer, DomainType, pSkillInfo->getPoint(), _GCSkillToTileOK1);					increaseSkillExp(pSlayer, DomainType, pSkillSlot, pSkillInfo, _GCSkillToTileOK1);				}			}			// 傍拜磊狼 酒捞袍 郴备己阑 冻绢哆赴促.			decreaseDurability(pSlayer, NULL, pSkillInfo->getPoint(), &_GCSkillToTileOK1, NULL);			_GCSkillToTileOK1.setSkillType(param.SkillType);			_GCSkillToTileOK1.setCEffectID(CEffectID);			_GCSkillToTileOK1.setX(X);			_GCSkillToTileOK1.setY(Y);			_GCSkillToTileOK1.setRange(dir);			_GCSkillToTileOK1.setDuration(0);			_GCSkillToTileOK2.setObjectID(pSlayer->getObjectID());			_GCSkillToTileOK2.setSkillType(param.SkillType);			_GCSkillToTileOK2.setX(X);			_GCSkillToTileOK2.setY(Y);			_GCSkillToTileOK2.setRange(dir);			_GCSkillToTileOK2.setDuration(0);			_GCSkillToTileOK5.setObjectID(pSlayer->getObjectID());			_GCSkillToTileOK5.setSkillType(param.SkillType);			_GCSkillToTileOK5.setX(X);			_GCSkillToTileOK5.setY(Y);			_GCSkillToTileOK5.setRange(dir);			_GCSkillToTileOK5.setDuration(0);			pPlayer->sendPacket(&_GCSkillToTileOK1);			// 捞 扁贱俊 狼秦 康氢阑 罐绰 仇甸俊霸 菩哦阑 焊郴拎具 茄促.			for (list<Creature*>::const_iterator itr = cList.begin(); itr != cList.end(); itr++)			{				Creature * pTargetCreature = *itr;				Assert(pTargetCreature != NULL);				if (pTargetCreature->isPC())				{					_GCSkillToTileOK2.clearList();					// HP狼 函版荤亲阑 菩哦俊促 扁废茄促.					HP_t targetHP = 0;					if (pTargetCreature->isSlayer())					{						targetHP = (dynamic_cast<Slayer*>(pTargetCreature))->getHP(ATTR_CURRENT);					}					else if (pTargetCreature->isVampire())					{						targetHP = (dynamic_cast<Vampire*>(pTargetCreature))->getHP(ATTR_CURRENT);					}					else if (pTargetCreature->isOusters())					{						targetHP = (dynamic_cast<Ousters*>(pTargetCreature))->getHP(ATTR_CURRENT);					}					_GCSkillToTileOK2.addShortData(MODIFY_CURRENT_HP, targetHP);					// 酒捞袍狼 郴备仿阑 冻绢哆赴促.					decreaseDurability(NULL, pTargetCreature, pSkillInfo->getPoint(), NULL, &_GCSkillToTileOK2);					// 菩哦阑 焊郴霖促.					pTargetCreature->getPlayer()->sendPacket(&_GCSkillToTileOK2);				}				else if (pTargetCreature->isMonster())				{					// 寸辟 利栏肺 牢侥茄促.					Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature);					pMonster->addEnemy(pSlayer);				}			}			cList.push_back(pSlayer);			pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK5 , cList);			// set Next Run Time			pSkillSlot->setRunTime(param.Delay);		}		else 		{			executeSkillFailNormal(pSlayer, param.SkillType, NULL);		}	}	catch (Throwable & t) 	{		executeSkillFailException(pSlayer, param.SkillType);	}	__END_CATCH}HolyBlast g_HolyBlast;

⌨️ 快捷键说明

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