📄 poisonstorm.cpp
字号:
// 扁贱阑 荤侩茄 荤恩甸俊霸 _GCSkillToTileOK1.setSkillType(SkillType); _GCSkillToTileOK1.setCEffectID(CEffectID); _GCSkillToTileOK1.setX(X); _GCSkillToTileOK1.setY(Y); _GCSkillToTileOK1.setDuration(output.Duration); _GCSkillToTileOK1.setRange(Range); // 扁贱阑 敬 荤恩父 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK3.setSkillType(SkillType); _GCSkillToTileOK3.setX(X); _GCSkillToTileOK3.setY(Y); // 扁贱阑 寸茄 荤恩父 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK4.setSkillType(SkillType); _GCSkillToTileOK4.setX(X); _GCSkillToTileOK4.setY(Y); _GCSkillToTileOK4.setDuration(output.Duration); _GCSkillToTileOK4.setRange(Range); //扁贱阑 敬 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK5.setObjectID(pVampire->getObjectID()); _GCSkillToTileOK5.setSkillType(SkillType); _GCSkillToTileOK5.setX(X); _GCSkillToTileOK5.setY(Y); _GCSkillToTileOK5.setDuration(output.Duration); _GCSkillToTileOK5.setRange(Range); // 扁贱阑 荤侩茄 荤恩俊霸 packet 傈崔 pPlayer->sendPacket(&_GCSkillToTileOK1); // 扁贱阑 镜 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 broadcasing cList = pZone->broadcastSkillPacket(myX, myY, X, Y, &_GCSkillToTileOK5, cList); // 扁贱阑 敬 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK3, cList); // 扁贱阑 寸茄 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting pZone->broadcastPacket(X, Y, &_GCSkillToTileOK4, cList); // 扁贱 delay setting pVampireSkillSlot->setRunTime(output.Delay); } else { executeSkillFailNormal(pVampire, getSkillType(), NULL); } } catch(Throwable& t) { executeSkillFailException(pVampire, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl; __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 鸥老 勤甸矾//////////////////////////////////////////////////////////////////////////////void PoisonStorm::execute(Monster* pMonster, ZoneCoord_t X, ZoneCoord_t Y) throw(Error){ __BEGIN_TRY //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << "begin " << endl; try { Zone* pZone = pMonster->getZone(); Assert(pZone != NULL); GCSkillToTileOK1 _GCSkillToTileOK1; GCSkillToTileOK2 _GCSkillToTileOK2; GCSkillToTileOK3 _GCSkillToTileOK3; GCSkillToTileOK4 _GCSkillToTileOK4; GCSkillToTileOK5 _GCSkillToTileOK5; GCSkillToTileOK6 _GCSkillToTileOK6; SkillType_t SkillType = SKILL_POISON_STORM; SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); ZoneCoord_t myX = pMonster->getX(); ZoneCoord_t myY = pMonster->getY(); bool bRangeCheck = verifyDistance(pMonster, X, Y, pSkillInfo->getRange()); bool bHitRoll = HitRoll::isSuccessMagic(pMonster, pSkillInfo); bool bTileCheck = false; VSRect rect(0, 0, pZone->getWidth()-1, pZone->getHeight()-1); if(rect.ptInRect(X, Y)) { Tile& tile = pZone->getTile(X, Y); if (tile.canAddEffect()) bTileCheck = true; } if (bRangeCheck && bHitRoll && bTileCheck) { // calculate damage and duration time SkillInput input(pMonster); SkillOutput output; computeOutput(input, output); Range_t Range = 3; // 扁粮俊 鞍篮 捞棋飘啊 鸥老俊 乐促搁 瘤快绊 货肺 汲沥茄促. Tile& tile = pZone->getTile(X, Y); Effect* pOldEffect = tile.getEffect(Effect::EFFECT_CLASS_POISON_STORM); if(pOldEffect != NULL) { ObjectID_t effectID = pOldEffect->getObjectID(); pZone->deleteEffect(effectID); } // 捞棋飘 坷宏璃飘甫 积己秦辑 鸥老俊 嘿牢促. EffectPoisonStorm* pEffect = new EffectPoisonStorm(pZone, X, Y); pEffect->setDeadline(output.Duration); pEffect->setNextTime(0); pEffect->setTick(output.Tick); pEffect->setDamage(output.Damage); pEffect->setUserObjectID( pMonster->getObjectID() ); pEffect->setLevel(pSkillInfo->getLevel()/2); // ObjectRegistry& objectregister = pZone->getObjectRegistry(); objectregister.registerObject(pEffect); // // pZone->addEffect(pEffect); tile.addEffect(pEffect); // 捞棋飘 裹困郴狼 葛电 Creature俊霸 effect甫 嘿咯霖促. // Vampire啊 扁贱阑 荤侩茄 版快 鞍篮 Vampire俊霸绰 // 秦寸窍瘤 臼绰促. bool bEffected = false; Creature* pTargetCreature; list<Creature*> cList; cList.push_back(pMonster); int oX, oY; for(oX = -1; oX <= 1; oX++) for(oY = -1; oY <= 1; oY++) { int tileX = X+oX; int tileY = Y+oY; if(!rect.ptInRect(tileX, tileY)) continue; Tile& tile = pZone->getTile(tileX, tileY); if(!tile.canAddEffect()) continue; pTargetCreature = NULL; if(tile.hasCreature(Creature::MOVE_MODE_WALKING)) pTargetCreature = tile.getCreature(Creature::MOVE_MODE_WALKING); if(pTargetCreature != NULL && pMonster->isEnemyToAttack( pTargetCreature )) { // 2003.1.10 by Sequoia if( !checkZoneLevelToHitTarget( pTargetCreature ) ) continue; if(pTargetCreature->isPC()) { if(pEffect->affectCreature(pTargetCreature, false) == true) { Player* pTargetPlayer = pTargetCreature->getPlayer(); bEffected = true; bool bCanSee = canSee(pTargetCreature, pMonster); _GCSkillToTileOK1.addCListElement(pTargetCreature->getObjectID()); _GCSkillToTileOK4.addCListElement(pTargetCreature->getObjectID()); _GCSkillToTileOK5.addCListElement(pTargetCreature->getObjectID()); cList.push_back(pTargetCreature); if (bCanSee) { // 傍拜阑 寸茄 荤恩俊霸 _GCSkillToTileOK2.setObjectID(pMonster->getObjectID()); _GCSkillToTileOK2.setSkillType(SkillType); _GCSkillToTileOK2.setX(X); _GCSkillToTileOK2.setY(Y); _GCSkillToTileOK2.setDuration(output.Duration); _GCSkillToTileOK2.setRange(Range); pTargetPlayer->sendPacket(&_GCSkillToTileOK2); } } } else if(pTargetCreature->isMonster()) { if(pEffect->affectCreature(pTargetCreature, false) == true) { Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature); pMonster->addEnemy(pMonster); } } } // if(pTargetCreature!= NULL) } // 扁贱阑 敬 荤恩父 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK3.setSkillType(SkillType); _GCSkillToTileOK3.setX(myX); _GCSkillToTileOK3.setY(myY); // 扁贱阑 寸茄 荤恩父 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK4.setSkillType(SkillType); _GCSkillToTileOK4.setX(X); _GCSkillToTileOK4.setY(Y); _GCSkillToTileOK4.setDuration(output.Duration); _GCSkillToTileOK4.setRange(Range); //扁贱阑 敬 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 _GCSkillToTileOK5.setObjectID(pMonster->getObjectID()); _GCSkillToTileOK5.setSkillType(SkillType); _GCSkillToTileOK5.setX(X); _GCSkillToTileOK5.setY(Y); _GCSkillToTileOK5.setDuration(output.Duration); _GCSkillToTileOK5.setRange(Range); // 扁贱阑 镜 荤恩苞 寸茄 荤恩阑 葛滴 杭 荐 乐绰 荤恩甸俊霸 broadcasing cList = pZone->broadcastSkillPacket(myX, myY, X, Y, &_GCSkillToTileOK5, cList); // 扁贱阑 敬 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK3, cList); // 扁贱阑 寸茄 荤恩阑 杭 荐 乐绰 荤恩甸俊霸 broadcasting pZone->broadcastPacket(X, Y, &_GCSkillToTileOK4, cList); } else { executeSkillFailNormal(pMonster, getSkillType(), NULL); } } catch(Throwable& t) { executeSkillFailException(pMonster, getSkillType()); } //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl; //cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end " << endl; __END_CATCH}PoisonStorm g_PoisonStorm;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -