📄 attackmelee.cpp
字号:
_GCAttackMeleeOK3.setObjectID(pVampire->getObjectID()); _GCAttackMeleeOK3.setTargetObjectID (TargetObjectID); pPlayer->sendPacket(&_GCAttackMeleeOK1); if (pTargetCreature->isPC()) { Player* pTargetPlayer = pTargetCreature->getPlayer(); if (pTargetPlayer != NULL) { _GCAttackMeleeOK2.setObjectID(pVampire->getObjectID()); pTargetPlayer->sendPacket(&_GCAttackMeleeOK2); } } else if (pTargetCreature->isMonster()) { Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature); pMonster->addEnemy(pVampire); // 付胶磐绰 掉饭捞绝促. if (!pMonster->isMaster()) { Timeval NextTurn = pMonster->getNextTurn(); Timeval DelayTurn; DelayTurn.tv_sec = 0; DelayTurn.tv_usec = 200000; Timeval NewTurn = NextTurn + DelayTurn; pMonster->setNextTurn(NewTurn); } } list<Creature *> cList; cList.push_back(pTargetCreature); cList.push_back(pVampire); pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &_GCAttackMeleeOK3 , cList); pSkillSlot->setRunTime(); } else { executeSkillFailNormal(pVampire, getSkillType(), pTargetCreature); } } catch (Throwable & t) { executeSkillFailException(pVampire, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(vampire)" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 酒快胶磐胶 坷宏璃飘//////////////////////////////////////////////////////////////////////////////void AttackMelee::execute(Ousters* pOusters, ObjectID_t TargetObjectID) throw(Error){ __BEGIN_TRY Assert(pOusters != NULL); try { Player* pPlayer = pOusters->getPlayer(); Zone* pZone = pOusters->getZone(); Assert(pPlayer != NULL); Assert(pZone != NULL); Creature* pTargetCreature = pZone->getCreature(TargetObjectID); // NoSuch力芭 锭巩俊. by sigi. 2002.5.2 if (pTargetCreature==NULL) { executeSkillFailException(pOusters, getSkillType()); return; } GCAttackMeleeOK1 _GCAttackMeleeOK1; GCAttackMeleeOK2 _GCAttackMeleeOK2; GCAttackMeleeOK3 _GCAttackMeleeOK3; // 胶懦 浇儿阑 罐酒柯促. OustersSkillSlot* pSkillSlot = pOusters->hasSkill(SKILL_ATTACK_MELEE); Assert(pSkillSlot != NULL); bool bCriticalHit = false; Damage_t Damage = computeDamage(pOusters, pTargetCreature, 0, bCriticalHit); bool bTimeCheck = verifyRunTime(pSkillSlot); bool bRangeCheck = verifyDistance(pOusters, pTargetCreature, 1); bool bHitRoll = HitRoll::isSuccess(pOusters, pTargetCreature); bool bCanHit = canHit(pOusters, pTargetCreature, SKILL_ATTACK_MELEE); bool bPK = verifyPK(pOusters, pTargetCreature); if (bTimeCheck && bRangeCheck && bHitRoll && bCanHit && bPK) { Damage += computeElementalCombatSkill( pOusters, pTargetCreature, _GCAttackMeleeOK1 ); CheckCrossCounter(pOusters, pTargetCreature, Damage); // 单固瘤甫 林绊, 郴备档甫 冻绢哆赴促. setDamage(pTargetCreature, Damage, pOusters, SKILL_ATTACK_MELEE, &_GCAttackMeleeOK2, &_GCAttackMeleeOK1); computeAlignmentChange(pTargetCreature, Damage, pOusters, &_GCAttackMeleeOK2, &_GCAttackMeleeOK1); decreaseDurability(pOusters, pTargetCreature, 1, &_GCAttackMeleeOK1, &_GCAttackMeleeOK2); // 农府萍拿 洒飘扼搁 惑措规阑 第肺 拱矾唱霸 茄促. if (bCriticalHit) { knockbackCreature(pZone, pTargetCreature, pOusters->getX(), pOusters->getY()); } increaseAlignment(pOusters, pTargetCreature, _GCAttackMeleeOK1); // 惑措啊 磷菌促搁 版氰摹甫 粱 棵妨霖促. if (pTargetCreature->isDead()) { int exp = computeCreatureExp(pTargetCreature, 100, pOusters); shareOustersExp(pOusters, exp, _GCAttackMeleeOK1); } _GCAttackMeleeOK1.setObjectID(TargetObjectID); _GCAttackMeleeOK3.setObjectID(pOusters->getObjectID()); _GCAttackMeleeOK3.setTargetObjectID (TargetObjectID); pPlayer->sendPacket(&_GCAttackMeleeOK1); if (pTargetCreature->isPC()) { Player* pTargetPlayer = pTargetCreature->getPlayer(); if (pTargetPlayer != NULL) { _GCAttackMeleeOK2.setObjectID(pOusters->getObjectID()); pTargetPlayer->sendPacket(&_GCAttackMeleeOK2); } } else if (pTargetCreature->isMonster()) { Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature); pMonster->addEnemy(pOusters); // 付胶磐绰 掉饭捞绝促. if (!pMonster->isMaster()) { Timeval NextTurn = pMonster->getNextTurn(); Timeval DelayTurn; DelayTurn.tv_sec = 0; DelayTurn.tv_usec = 200000; Timeval NewTurn = NextTurn + DelayTurn; pMonster->setNextTurn(NewTurn); } } list<Creature *> cList; cList.push_back(pTargetCreature); cList.push_back(pOusters); pZone->broadcastPacket(pOusters->getX(), pOusters->getY(), &_GCAttackMeleeOK3 , cList); pSkillSlot->setRunTime(); } else { executeSkillFailNormal(pOusters, getSkillType(), pTargetCreature); } } catch (Throwable & t) { executeSkillFailException(pOusters, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(vampire)" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 坷宏璃飘//////////////////////////////////////////////////////////////////////////////void AttackMelee::execute(Monster* pMonster, Creature* pEnemy) throw(Error){ __BEGIN_TRY //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " Begin(monster)" << endl; Assert(pMonster != NULL); Assert(pEnemy != NULL); try { Zone* pZone = pMonster->getZone(); Assert(pZone != NULL); if (pMonster->isFlag(Effect::EFFECT_CLASS_HIDE)) { //cout << "Monster cannot use skill while hiding." << endl; //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(monster)" << endl; return; } if (pMonster->isFlag(Effect::EFFECT_CLASS_INVISIBILITY)) { addVisibleCreature(pZone, pMonster, true); } GCAttackMeleeOK2 _GCAttackMeleeOK2; GCAttackMeleeOK3 _GCAttackMeleeOK3; bool bCriticalHit = false; Damage_t Damage = computeDamage(pMonster, pEnemy, 0, bCriticalHit); bool bRangeCheck = verifyDistance(pMonster, pEnemy, pMonster->getMeleeRange()); bool bHitRoll = HitRoll::isSuccess(pMonster, pEnemy); bool bCanHit = canHit(pMonster, pEnemy, SKILL_ATTACK_MELEE); if (bRangeCheck && bHitRoll && bCanHit) { CheckCrossCounter(pMonster, pEnemy, Damage); // 单固瘤甫 林绊, 郴备档甫 冻绢哆赴促. setDamage(pEnemy, Damage, pMonster, SKILL_ATTACK_MELEE, &_GCAttackMeleeOK2); decreaseDurability(pMonster, pEnemy, 1, NULL, &_GCAttackMeleeOK2); // 农府萍拿 洒飘扼搁 惑措规阑 第肺 拱矾唱霸 茄促. if (bCriticalHit) { knockbackCreature(pZone, pEnemy, pMonster->getX(), pMonster->getY()); } _GCAttackMeleeOK3.setObjectID(pMonster->getObjectID()); _GCAttackMeleeOK3.setTargetObjectID (pEnemy->getObjectID()); if (pEnemy->isPC()) { Player* pTargetPlayer = pEnemy->getPlayer(); Assert(pTargetPlayer != NULL); _GCAttackMeleeOK2.setObjectID(pMonster->getObjectID()); pTargetPlayer->sendPacket(&_GCAttackMeleeOK2); } else if (pEnemy->isMonster()) { Monster* pTargetMonster = dynamic_cast<Monster*>(pEnemy); pTargetMonster->addEnemy(pMonster); } list<Creature *> cList; cList.push_back(pEnemy); cList.push_back(pMonster); pZone->broadcastPacket(pMonster->getX(), pMonster->getY(), &_GCAttackMeleeOK3 , cList); } else { executeSkillFailNormal(pMonster, getSkillType(), pEnemy); } } catch (Throwable & t) { executeSkillFailException(pMonster, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(monster)" << endl; __END_CATCH}AttackMelee g_AttackMelee;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -