📄 pcmanager.cpp
字号:
// 见绢乐菌阑 版快 磷阑锭 脾绢唱柯促. // 2003. 1. 17. Sequoia, DEW if( pVampire->isFlag( Effect::EFFECT_CLASS_HIDE ) ) { if( canUnburrow( pZone, pVampire->getX(), pVampire->getY() ) ) { addUnburrowCreature( pZone, pVampire, pVampire->getX(), pVampire->getY(), pVampire->getDir() ); } } // 冠零唱 戳措 惑怕牢 轨颇捞绢绰 磷阑 锭 盔贰措肺 倒酒埃促. if ( pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_BAT ) || pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_WOLF ) || pVampire->isFlag( Effect::EFFECT_CLASS_TRANSFORM_TO_WERWOLF ) ) { Zone* pZone = pVampire->getZone(); Assert(pZone != NULL); addUntransformCreature(pZone, pVampire, true); } // 包 救俊 乐带 轨颇捞绢绰 磷阑 锭 包捞 绝绢柳促./* if ( pVampire->isFlag( Effect::EFFECT_CLASS_CASKET ) ) { EffectSummonCasket* pEffect = dynamic_cast<EffectSummonCasket*>( pVampire->findEffect( Effect::EFFECT_CLASS_CASKET ) ); Assert( pEffect != NULL ); pEffect->setDeadline(0); }*/ // 己氢俊 蝶扼辑 捣苞 酒捞袍阑 冻绢飘赴促. if (pVampire->getLevel() > 10 && pVampire->getCompetence() == 3) { Alignment_t alignment = pVampire->getAlignment(); ItemNum_t DropItemNum = g_pAlignmentManager->getDropItemNum(alignment, pVampire->isPK()); // DropItemNum俺鳖瘤父 // 馒侩茄 蜡聪农 酒捞袍阑 冻绢哆赴促. for(int i = 0; DropItemNum>0 && i<Vampire::VAMPIRE_WEAR_MAX; i++) { Item* pItem = pVampire->getWearItem( (Vampire::WearPart)i ); if (pItem != NULL && pItem->isUnique() && !pItem->isTimeLimitItem() ) { // by sigi. 2002.11.7 pVampire->removeShape( pItem->getItemClass(), true ); /* GCRemoveFromGear gcRemoveFromGear; gcRemoveFromGear.setSlotID(i); gcRemoveFromGear.setDestroy(false); pVampire->getPlayer()->sendPacket(&gcRemoveFromGear); */ if (isTwohandWeapon(pItem)) { pVampire->deleteWearItem(Vampire::WEAR_LEFTHAND); pVampire->deleteWearItem(Vampire::WEAR_RIGHTHAND); } else { pVampire->deleteWearItem((Vampire::WearPart)i); } // 粮栏肺 谎赴促. TPOINT pt = pZone->addItem(pItem, pVampire->getX(), pVampire->getY()); if (pt.x != -1) { filelog("uniqueItem.txt", "DropByKilled: %s %s", pVampire->getName().c_str(), pItem->toString().c_str()); pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y); // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y); remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP); } } else { // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP); } pItem->destroy(); SAFE_DELETE(pItem); } log(LOG_DROP_ITEM_DIE, pVampire->getName(), ""); // 冻绢哆副 俺荐甫 临咯霖促. DropItemNum--; // 蜡聪农绰 公炼扒 茄俺父 冻绢哆赴促. break; } } for(int i = 0; i < DropItemNum; i++) { int RandomValue = Random(0, (int)Vampire::VAMPIRE_WEAR_MAX - 1); Item* pItem = pVampire->getWearItem(Vampire::WearPart(RandomValue)); // 目敲傅阑 冻绢哆妨急 救等促 ぬ.ば // 2003.3.14 if (pItem != NULL && !isCoupleRing(pItem) && !pItem->isTimeLimitItem() ) { // by sigi. 2002.11.7 pVampire->removeShape( pItem->getItemClass(), true ); /* GCRemoveFromGear gcRemoveFromGear; gcRemoveFromGear.setSlotID(i); gcRemoveFromGear.setDestroy(false); pVampire->getPlayer()->sendPacket(&gcRemoveFromGear); */ if (isTwohandWeapon(pItem)) { pVampire->deleteWearItem(Vampire::WEAR_LEFTHAND); pVampire->deleteWearItem(Vampire::WEAR_RIGHTHAND); } else { pVampire->deleteWearItem(Vampire::WearPart(RandomValue)); } //pItem->destroy(); //pCorpse->addTreasure(pItem); // 粮栏肺 谎赴促. TPOINT pt = pZone->addItem(pItem, pVampire->getX(), pVampire->getY()); if (pt.x != -1) { filelog("dropItem.txt", "DropByKilled: %s %s", pVampire->getName().c_str(), pItem->toString().c_str()); pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y); // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y); remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP); } } else { // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP); } pItem->destroy(); SAFE_DELETE(pItem); } log(LOG_DROP_ITEM_DIE, pVampire->getName(), ""); } } } SkillHandler * pSkillHandler = g_pSkillHandlerManager->getSkillHandler(SKILL_EXTREME); Assert( pSkillHandler != NULL ); // 劳胶飘覆 吧绢林扁~ 盒畴~~ pSkillHandler->execute( pVampire ); // PK 寸茄巴阑 犁 悸泼 秦 拎具 茄促. pVampire->setPK(false); } else if (CClass == Creature::CREATURE_CLASS_OUSTERS) { pOusters = dynamic_cast<Ousters*>(pCreature); // 己氢俊 蝶扼辑 捣苞 酒捞袍阑 冻绢飘赴促. if (pOusters->getLevel() > 10 && pOusters->getCompetence() == 3) { Alignment_t alignment = pOusters->getAlignment(); ItemNum_t DropItemNum = g_pAlignmentManager->getDropItemNum(alignment, pOusters->isPK()); // DropItemNum俺鳖瘤父 // 馒侩茄 蜡聪农 酒捞袍阑 冻绢哆赴促. for(int i = 0; DropItemNum>0 && i<Ousters::OUSTERS_WEAR_MAX; i++) { Item* pItem = pOusters->getWearItem( (Ousters::WearPart)i ); if (pItem != NULL && pItem->isUnique() && !pItem->isTimeLimitItem() ) { // by sigi. 2002.11.7 pOusters->removeShape( pItem->getItemClass(), true ); /* GCRemoveFromGear gcRemoveFromGear; gcRemoveFromGear.setSlotID(i); gcRemoveFromGear.setDestroy(false); pOusters->getPlayer()->sendPacket(&gcRemoveFromGear); */ if (isTwohandWeapon(pItem)) { pOusters->deleteWearItem(Ousters::WEAR_LEFTHAND); pOusters->deleteWearItem(Ousters::WEAR_RIGHTHAND); } else { pOusters->deleteWearItem((Ousters::WearPart)i); } // 粮栏肺 谎赴促. TPOINT pt = pZone->addItem(pItem, pOusters->getX(), pOusters->getY()); if (pt.x != -1) { filelog("uniqueItem.txt", "DropByKilled: %s %s", pOusters->getName().c_str(), pItem->toString().c_str()); pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y); // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y); remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP); } } else { // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP); } pItem->destroy(); SAFE_DELETE(pItem); } log(LOG_DROP_ITEM_DIE, pOusters->getName(), ""); // 冻绢哆副 俺荐甫 临咯霖促. DropItemNum--; // 蜡聪农绰 公炼扒 茄俺父 冻绢哆赴促. break; } } for(int i = 0; i < DropItemNum; i++) { int RandomValue = Random(0, (int)Ousters::OUSTERS_WEAR_MAX - 1); Item* pItem = pOusters->getWearItem(Ousters::WearPart(RandomValue)); // 目敲傅阑 冻绢哆妨急 救等促 ぬ.ば // 2003.3.14 if (pItem != NULL && !isCoupleRing(pItem) && !pItem->isTimeLimitItem() ) { // by sigi. 2002.11.7 pOusters->removeShape( pItem->getItemClass(), true ); /* GCRemoveFromGear gcRemoveFromGear; gcRemoveFromGear.setSlotID(i); gcRemoveFromGear.setDestroy(false); pOusters->getPlayer()->sendPacket(&gcRemoveFromGear); */ if (isTwohandWeapon(pItem)) { pOusters->deleteWearItem(Ousters::WEAR_LEFTHAND); pOusters->deleteWearItem(Ousters::WEAR_RIGHTHAND); } else { pOusters->deleteWearItem(Ousters::WearPart(RandomValue)); } //pItem->destroy(); //pCorpse->addTreasure(pItem); // 粮栏肺 谎赴促. TPOINT pt = pZone->addItem(pItem, pOusters->getX(), pOusters->getY()); if (pt.x != -1) { filelog("dropItem.txt", "DropByKilled: %s %s", pOusters->getName().c_str(), pItem->toString().c_str()); pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x , pt.y); // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), pt.x, pt.y); remainTraceLog( pItem, pCreature->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP); } } else { // ItemTraceLog 甫 巢变促 if ( pItem != NULL && pItem->isTraceItem() ) { remainTraceLog( pItem, pCreature->getName(), "GOD", ITEM_LOG_DELETE, DETAIL_DROP); } pItem->destroy(); SAFE_DELETE(pItem); } log(LOG_DROP_ITEM_DIE, pOusters->getName(), ""); } } } // PK 寸茄巴阑 犁 悸泼 秦 拎具 茄促. pOusters->setPK(false); } else { throw Error("invalid creature class"); } // 力老 贸澜俊 磷阑 锭俊绰 COMA啊 吧妨 乐瘤 臼栏骨肺, // 捞 何盒俊 吧妨辑 COMA啊 吧府霸 等促. EffectComa* pEffectComa = new EffectComa(pCreature); pEffectComa->setStartTime(); if ( pTryingTile != NULL ) pEffectComa->setDeadline(0); else pEffectComa->setDeadline(600); EffectManager* pEffectManager = pCreature->getEffectManager(); Assert(pEffectManager != NULL); pEffectManager->addEffect(pEffectComa); pCreature->setFlag(Effect::EFFECT_CLASS_COMA); PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature); Assert(pPlayerCreature!=NULL); //Inventory* pInventory = pPlayerCreature->getInventory(); if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); // 葛磐荤捞努阑 鸥绊 乐促搁, 葛磐荤捞努俊辑 郴赴促. if (pSlayer->hasRideMotorcycle()) { Zone* pZone = pCreature->getZone(); Assert(pZone!=NULL); pSlayer->getOffMotorcycle(); GCGetOffMotorCycle _GCGetOffMotorCycle; _GCGetOffMotorCycle.setObjectID(pSlayer->getObjectID()); pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &_GCGetOffMotorCycle); } // 泅犁 秋扁甫 何弗 惑怕扼搁 秋扁甫 馋促. if (pSlayer->isFlag(Effect::EFFECT_CLASS_SLAYER_PORTAL)) { pSlayer->removeFlag(Effect::EFFECT_CLASS_SLAYER_PORTAL); // 秋扁甫 力芭窍扼绊 谎妨拎具 窍绰单...? //GCAddHelicopter gcAddHelicopter; //gcAddHelicopter.setObjectID(pSlayer->getObjectID()); //gcAddHelicopter.setCode(1); //pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcAddHelicopter); } } else if (pCreature->isVampire()) { //Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); // 包 加俊辑 唱啊扁 if (pCreature->isFlag(Effect::EFFECT_CLASS_CASKET)) { Effect* pEffectCasket = pCreature->findEffect(Effect::EFFECT_CLASS_CASKET); if (pEffectCasket!=NULL) { //cout << "Coma --> casket unaffect" << endl; pEffectCasket->unaffect(); } pCreature->deleteEffect(Effect::EFFECT_CLASS_CASKET); pCreature->removeFlag(Effect::EFFECT_CLASS_CASKET); } } if ( pCreature->isFlag( Effect::EFFECT_CLASS_DIVINE_GUIDANCE ) ) { Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_DIVINE_GUIDANCE); if ( pEffect != NULL ) pEffect->unaffect(); pCreature->removeFlag( Effect::EFFECT_CLASS_DIVINE_GUIDANCE ); pCreature->deleteEffect( Effect::EFFECT_CLASS_DIVINE_GUIDANCE ); } if ( pCreature->isFlag( Effect::EFFECT_CLASS_ACID_ERUPTION ) ) { Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_ACID_ERUPTION); if ( pEffect != NULL ) pEffect->unaffect(); pCreature->removeFlag( Effect::EFFECT_CLASS_ACID_ERUPTION ); pCreature->deleteEffect( Effect::EFFECT_CLASS_ACID_ERUPTION ); } if ( pCreature->isFlag( Effect::EFFECT_CLASS_FADE_OUT ) ) { pCreature->removeFlag( Effect::EFFECT_CLASS_FADE_OUT ); pCreature->deleteEffect( Effect::EFFECT_CLASS_FADE_OUT ); // unaffect 甫 秦林搁 胶唱捞俏捞唱 牢厚瘤啊 吧府扁 锭巩俊 秦林搁 救 等促. } if ( pCreature->isFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET ) ) { pCreature->removeFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET ); pCreature->deleteEffect( Effect::EFFECT_CLASS_REFINIUM_TICKET ); } if (pCreature->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH)) { Effect* pEffect = pCreature->findEffect(Effect::EFFECT_CLASS_SUMMON_SYLPH);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -