📄 hide.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : Hide.cpp// Written by : elca@ewestsoft.com// Description : //////////////////////////////////////////////////////////////////////////////#include "Hide.h"#include "Gpackets/GCSkillToSelfOK1.h"#include "Gpackets/GCSkillToSelfOK3.h"#include "Gpackets/GCDeleteObject.h"#include "ZoneUtil.h"#include "RankBonus.h"//////////////////////////////////////////////////////////////////////////////// 轨颇捞绢 伎橇 勤甸矾//////////////////////////////////////////////////////////////////////////////void Hide::execute(Vampire* pVampire, VampireSkillSlot* pSkillSlot, CEffectID_t CEffectID) throw(Error){ __BEGIN_TRY //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " Begin" << endl; Assert(pVampire != NULL); Assert(pSkillSlot != NULL); try { Player* pPlayer = pVampire->getPlayer(); Zone* pZone = pVampire->getZone(); Assert(pPlayer != NULL); Assert(pZone != NULL); GCSkillToSelfOK1 _GCSkillToSelfOK1; GCSkillToSelfOK3 _GCSkillToSelfOK3; SkillType_t SkillType = pSkillSlot->getSkillType(); SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); ZoneCoord_t x = pVampire->getX(); ZoneCoord_t y = pVampire->getY(); // Knowledge of Innate 啊 乐促搁 hit bonus 10 int HitBonus = 0; if ( pVampire->hasRankBonus( RankBonus::RANK_BONUS_KNOWLEDGE_OF_INNATE ) ) { RankBonus* pRankBonus = pVampire->getRankBonus( RankBonus::RANK_BONUS_KNOWLEDGE_OF_INNATE ); Assert( pRankBonus != NULL ); HitBonus = pRankBonus->getPoint(); } Tile& rTile = pZone->getTile( pVampire->getX(), pVampire->getY() ); int RequiredMP = decreaseConsumeMP(pVampire, pSkillInfo); bool bManaCheck = hasEnoughMana(pVampire, RequiredMP); bool bTimeCheck = verifyRunTime(pSkillSlot); bool bRangeCheck = checkZoneLevelToUseSkill(pVampire); bool bHitRoll = HitRoll::isSuccessMagic(pVampire, pSkillInfo, pSkillSlot, HitBonus); bool bTileCheck = canBurrow(pZone, x, y); bool bMoveModeCheck = pVampire->isWalking(); bool bEffected = pVampire->isFlag(Effect::EFFECT_CLASS_HIDE) || pVampire->hasRelicItem() || pVampire->isFlag(Effect::EFFECT_CLASS_HAS_FLAG) || pVampire->isFlag(Effect::EFFECT_CLASS_HAS_SWEEPER) || rTile.getEffect(Effect::EFFECT_CLASS_TRYING_POSITION) != NULL; if (bManaCheck && bTimeCheck && bRangeCheck && bHitRoll && bTileCheck && bMoveModeCheck && !bEffected) { decreaseMana(pVampire, RequiredMP, _GCSkillToSelfOK1); // 轨颇捞绢甫 顶 困俊辑 昏力窍扁 捞傈俊 扁贱 菩哦甸阑 朝赴促. _GCSkillToSelfOK1.setSkillType(SkillType); _GCSkillToSelfOK1.setCEffectID(CEffectID); _GCSkillToSelfOK1.setDuration(0); _GCSkillToSelfOK3.setXY(x, y); _GCSkillToSelfOK3.setSkillType(SkillType); _GCSkillToSelfOK3.setDuration(0); pPlayer->sendPacket(&_GCSkillToSelfOK1); pZone->broadcastPacket(x, y, &_GCSkillToSelfOK3, pVampire); // 顶 困俊 唱客乐绰 轨颇捞绢 昏力窍扼绊 舅赴促. GCDeleteObject gcDO; gcDO.setObjectID(pVampire->getObjectID()); pZone->broadcastPacket(x, y, &gcDO, pVampire); // 顶 加俊促啊 轨颇捞绢甫 眠啊茄促. addBurrowingCreature(pZone, pVampire, x, y); pSkillSlot->setRunTime(); } else { executeSkillFailNormal(pVampire, getSkillType(), NULL); } } catch(Throwable & t) { executeSkillFailException(pVampire, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End" << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 伎橇 勤甸矾//////////////////////////////////////////////////////////////////////////////void Hide::execute(Monster* pMonster) throw(Error){ __BEGIN_TRY //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " Begin" << endl; Assert(pMonster != NULL); try { Zone* pZone = pMonster->getZone(); Assert(pZone != NULL); if (pMonster->isFlag(Effect::EFFECT_CLASS_HIDE)) { //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End" << endl; return; } if (pMonster->isFlag(Effect::EFFECT_CLASS_INVISIBILITY)) { addVisibleCreature(pZone, pMonster, true); } GCSkillToSelfOK3 _GCSkillToSelfOK3; SkillType_t SkillType = SKILL_HIDE; SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); ZoneCoord_t x = pMonster->getX(); ZoneCoord_t y = pMonster->getY(); bool bRangeCheck = checkZoneLevelToUseSkill(pMonster); bool bHitRoll = HitRoll::isSuccessMagic(pMonster, pSkillInfo); bool bTileCheck = canBurrow(pZone, x, y); bool bMoveModeCheck = pMonster->isWalking(); bool bEffected = pMonster->isFlag(Effect::EFFECT_CLASS_HIDE); if (bRangeCheck && bHitRoll && bTileCheck && bMoveModeCheck && !bEffected) { // 阁胶磐甫 顶 困俊辑 昏力窍扁 捞傈俊 扁贱 菩哦甸阑 朝赴促. _GCSkillToSelfOK3.setXY(x, y); _GCSkillToSelfOK3.setDuration(0); _GCSkillToSelfOK3.setSkillType(SkillType); pZone->broadcastPacket(x, y, &_GCSkillToSelfOK3); // 顶 困俊 唱客乐绰 阁胶磐 昏力窍扼绊 舅赴促. GCDeleteObject gcDO; gcDO.setObjectID(pMonster->getObjectID()); pZone->broadcastPacket(x, y, &gcDO); // 顶 加俊促啊 阁胶磐甫 眠啊茄促. addBurrowingCreature(pZone, pMonster, x, y); } else { executeSkillFailNormal(pMonster, getSkillType(), NULL); } } catch(Throwable & t) { executeSkillFailException(pMonster, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End" << endl; __END_CATCH}Hide g_Hide;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -