cgusepotionfrominventoryhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 784 行 · 第 1/2 页
CPP
784 行
Serum* pSerum = dynamic_cast<Serum*>(pItem); int RegenHP = 0; RegenHP = pSerum->getHPAmount(); int RegenPeriod = pSerum->getPeriod(); // 窜困 矫埃狼 林扁 int RegenCount = pSerum->getCount(); // 割锅 窜困 矫埃阑 馆汗且 巴牢啊? //int RegenHPUnit = (int)((float)MaxHP* (float)RegenHP*0.01); // 茄锅俊 雀汗窍绰 HP狼 剧 int RegenHPUnit = RegenHP; int HPAmount = min(MaxHP - CurrentHP , RegenHPUnit* RegenCount); // HP 雀汗剧捞 粮犁茄促搁... if (HPAmount != 0) { // 倔付究 割锅 割檬付促. if (CurrentHP < MaxHP) { EffectManager* pEffectManager = pVampire->getEffectManager(); Turn_t Period = RegenCount; // 割锅 雀汗矫虐唱? Turn_t Deadline = RegenPeriod* Period; // 攫力 场唱唱? if (pVampire->isFlag(Effect::EFFECT_CLASS_HP_RECOVERY)) { Effect* pEffect = pEffectManager->findEffect(Effect::EFFECT_CLASS_HP_RECOVERY); EffectHPRecovery* pEffectHPRecoveryEffect = dynamic_cast<EffectHPRecovery*>(pEffect); // 割锅 歹 秦具 茄促绰 巴阑 盎脚秦 霖促. Turn_t OldCount = pEffectHPRecoveryEffect->getPeriod(); Turn_t NewPeriod = OldCount + Period; pEffectHPRecoveryEffect->setPeriod(NewPeriod); pEffectHPRecoveryEffect->setDeadline(NewPeriod* RegenPeriod); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCHPRecoveryStartToSelf gcHPRecoveryStartToSelf; gcHPRecoveryStartToSelf.setPeriod(NewPeriod); // 割锅 雀汗窍唱? gcHPRecoveryStartToSelf.setDelay(RegenPeriod); // 割 檬 窜困肺 窍唱? gcHPRecoveryStartToSelf.setQuantity(RegenHPUnit); // 茄锅俊 倔付唱 雀汗窍唱? pGamePlayer->sendPacket(&gcHPRecoveryStartToSelf); // 雀汗 矫累窍扼绰 菩哦阑 促弗捞甸俊霸 焊辰促. // 雀汗 盎脚 菩哦, 矫累苞 度 鞍篮 菩哦阑 焊辰促. GCHPRecoveryStartToOthers gcHPRecoveryStartToOthers; gcHPRecoveryStartToOthers.setObjectID(pVampire->getObjectID()); gcHPRecoveryStartToOthers.setPeriod(NewPeriod); gcHPRecoveryStartToOthers.setDelay(RegenPeriod ); gcHPRecoveryStartToOthers.setQuantity(RegenHPUnit); pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcHPRecoveryStartToOthers, pVampire); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } else { EffectHPRecovery* pEffectHPRecovery = new EffectHPRecovery(); pEffectHPRecovery->setTarget(pVampire); pEffectHPRecovery->setDeadline(Deadline); pEffectHPRecovery->setDelay(RegenPeriod); pEffectHPRecovery->setNextTime(0); pEffectHPRecovery->setHPQuantity(RegenHPUnit); pEffectHPRecovery->setPeriod(Period); pEffectManager->addEffect(pEffectHPRecovery); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCHPRecoveryStartToSelf gcHPRecoveryStartToSelf; gcHPRecoveryStartToSelf.setPeriod(Period); gcHPRecoveryStartToSelf.setDelay(RegenPeriod); gcHPRecoveryStartToSelf.setQuantity(RegenHPUnit); pGamePlayer->sendPacket(&gcHPRecoveryStartToSelf); // 雀汗 矫累窍扼绰 菩哦阑 焊绰捞甸俊霸 焊辰促. GCHPRecoveryStartToOthers gcHPRecoveryStartToOthers; gcHPRecoveryStartToOthers.setObjectID(pVampire->getObjectID()); gcHPRecoveryStartToOthers.setPeriod(Period); gcHPRecoveryStartToOthers.setDelay(RegenPeriod); gcHPRecoveryStartToOthers.setQuantity(RegenHPUnit); pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcHPRecoveryStartToOthers, pVampire); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } decreaseItemNum(pItem, pInventory, pVampire->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); } else if (pCreature->isOusters()) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); Inventory* pInventory = pOusters->getInventory(); Zone* pZone = pOusters->getZone(); if (pZone == NULL || pInventory == NULL) return; CoordInven_t InvenX = pPacket->getX(); CoordInven_t InvenY = pPacket->getY(); if (InvenX >= pInventory->getWidth() || InvenY >= pInventory->getHeight()) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } Item* pItem = pInventory->getItem(InvenX, InvenY); if (pItem == NULL) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } // 牢亥配府俊 乐绰 酒捞袍狼 Object甫 罐绰促. ObjectID_t ItemObjectID = pItem->getObjectID(); if ( ItemObjectID != pPacket->getObjectID() ) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } if ( pItem->getItemClass() == Item::ITEM_CLASS_PUPA ) { HP_t MaxHP = pOusters->getHP(ATTR_MAX); HP_t CurrentHP= pOusters->getHP(ATTR_CURRENT); Pupa* pPupa = dynamic_cast<Pupa*>(pItem); // 茄畔俊 雀汗登绰 剧 int HPQuantity = pPupa->getHPQuantity(); // 茄畔捞 割檬 牢啊. int HPDelayProvider = pPupa->getHPDelay(); HP_t PupaHPAmount = pPupa->getHPAmount(); int HPAmount = min(MaxHP - CurrentHP , (int)PupaHPAmount); // HP 雀汗剧捞 粮犁茄促搁... if (HPAmount != 0 && HPQuantity != 0) { if (CurrentHP < MaxHP) { EffectManager* pEffectManager = pOusters->getEffectManager(); double temp = (double)((double)HPAmount/(double)HPQuantity); int Period = (uint)ceil(temp); Turn_t Deadline = Period* HPDelayProvider; if (pOusters->isFlag(Effect::EFFECT_CLASS_HP_RECOVERY)) { Effect* pEffect = pEffectManager->findEffect(Effect::EFFECT_CLASS_HP_RECOVERY); EffectHPRecovery* pEffectHPRecoveryEffect = dynamic_cast<EffectHPRecovery*>(pEffect); // 扁粮狼 窜困剧苞 冉荐肺 盲快绰 HP剧阑 拌魂茄促. // 弊巴阑 泅犁 雀汗剧俊 歹茄促. int PrevHPAmount = pEffectHPRecoveryEffect->getHPQuantity()* pEffectHPRecoveryEffect->getPeriod(); HPAmount = min((int)(HPAmount + PrevHPAmount), MaxHP - CurrentHP); // 笛 吝俊 奴 窜困雀汗剧苞 累篮 掉饭捞甫 掘绢辰促. HPQuantity = max(HPQuantity, (int)(pEffectHPRecoveryEffect->getHPQuantity())); HPDelayProvider = min(HPDelayProvider, (int)(pEffectHPRecoveryEffect->getDelay())); // 泅犁 雀汗剧阑 啊瘤绊, 倔付究 割锅俊 雀汗且 巴牢啊甫 搬沥茄促. temp = (double)((double)HPAmount/(double)HPQuantity); Period = (uint)ceil(temp); Deadline = Period* HPDelayProvider; // HP Recovery effect甫 盎脚茄促. pEffectHPRecoveryEffect->setDeadline(Deadline); pEffectHPRecoveryEffect->setDelay(HPDelayProvider); pEffectHPRecoveryEffect->setHPQuantity(HPQuantity); pEffectHPRecoveryEffect->setPeriod(Period); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCHPRecoveryStartToSelf gcHPRecoveryStartToSelf; gcHPRecoveryStartToSelf.setPeriod(pEffectHPRecoveryEffect->getPeriod()); gcHPRecoveryStartToSelf.setDelay(pEffectHPRecoveryEffect->getDelay()); gcHPRecoveryStartToSelf.setQuantity(pEffectHPRecoveryEffect->getHPQuantity()); pGamePlayer->sendPacket(&gcHPRecoveryStartToSelf); // 雀汗 矫累窍扼绰 菩哦阑 促弗捞甸俊霸 焊辰促. // 雀汗 盎脚 菩哦, 矫累苞 度 鞍篮 菩哦阑 焊辰促. GCHPRecoveryStartToOthers gcHPRecoveryStartToOthers; gcHPRecoveryStartToOthers.setObjectID(pOusters->getObjectID()); gcHPRecoveryStartToOthers.setPeriod(pEffectHPRecoveryEffect->getPeriod()); gcHPRecoveryStartToOthers.setDelay(pEffectHPRecoveryEffect->getDelay()); gcHPRecoveryStartToOthers.setQuantity(pEffectHPRecoveryEffect->getHPQuantity()); pZone->broadcastPacket(pOusters->getX(), pOusters->getY(), &gcHPRecoveryStartToOthers, pOusters); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } else { EffectHPRecovery* pEffectHPRecovery = new EffectHPRecovery(); pEffectHPRecovery->setTarget(pOusters); pEffectHPRecovery->setDeadline(Deadline); pEffectHPRecovery->setDelay(HPDelayProvider); pEffectHPRecovery->setNextTime(0); pEffectHPRecovery->setHPQuantity(HPQuantity); pEffectHPRecovery->setPeriod(Period); pEffectManager->addEffect(pEffectHPRecovery); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCHPRecoveryStartToSelf gcHPRecoveryStartToSelf; gcHPRecoveryStartToSelf.setPeriod(Period); gcHPRecoveryStartToSelf.setDelay(HPDelayProvider); gcHPRecoveryStartToSelf.setQuantity(HPQuantity); pGamePlayer->sendPacket(&gcHPRecoveryStartToSelf); // 雀汗 矫累窍扼绰 菩哦阑 焊绰捞甸俊霸 焊辰促. GCHPRecoveryStartToOthers gcHPRecoveryStartToOthers; gcHPRecoveryStartToOthers.setObjectID(pOusters->getObjectID()); gcHPRecoveryStartToOthers.setPeriod(Period); gcHPRecoveryStartToOthers.setDelay(HPDelayProvider); gcHPRecoveryStartToOthers.setQuantity(HPQuantity); pZone->broadcastPacket(pOusters->getX(), pOusters->getY(), &gcHPRecoveryStartToOthers, pOusters); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } decreaseItemNum(pItem, pInventory, pOusters->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); } else if ( pItem->getItemClass() == Item::ITEM_CLASS_COMPOS_MEI ) { MP_t MaxMP = pOusters->getMP(ATTR_MAX); MP_t CurrentMP= pOusters->getMP(ATTR_CURRENT); ComposMei* pComposMei = dynamic_cast<ComposMei*>(pItem); // 茄畔俊 雀汗登绰 剧 int MPQuantity = pComposMei->getMPQuantity(); // 茄畔捞 割檬 牢啊. int MPDelayProvider = pComposMei->getMPDelay(); Attr_t INT = pOusters->getINT(); MP_t ComposMeiMPAmount = pComposMei->getMPAmount(); int MPAmount = min(MaxMP - CurrentMP , (int)(ComposMeiMPAmount* (double)(1 + (double)((double)INT / 300.0)))); // MP 雀汗剧捞 粮犁茄促搁... if (MPAmount != 0 && MPQuantity != 0 ) { if (CurrentMP < MaxMP) { EffectManager* pEffectManager = pOusters->getEffectManager(); double temp = (double)((double)MPAmount/(double)MPQuantity); uint Period = (uint)ceil(temp); Turn_t Deadline = Period* MPDelayProvider; if (pOusters->isFlag(Effect::EFFECT_CLASS_MP_RECOVERY)) { Effect* pEffect = pEffectManager->findEffect(Effect::EFFECT_CLASS_MP_RECOVERY); EffectMPRecovery* pEffectMPRecoveryEffect = dynamic_cast<EffectMPRecovery*>(pEffect); // 扁粮狼 窜困剧苞 冉荐肺 盲快绰 MP剧阑 拌魂茄促. // 弊巴阑 泅犁 雀汗剧俊 歹茄促. int PrevMPAmount = pEffectMPRecoveryEffect->getMPQuantity()* pEffectMPRecoveryEffect->getPeriod(); MPAmount = min((int)(MPAmount + PrevMPAmount), MaxMP - CurrentMP); // 笛 吝俊 奴 窜困雀汗剧苞 累篮 掉饭捞甫 掘绢辰促. MPQuantity = max(MPQuantity, (int)(pEffectMPRecoveryEffect->getMPQuantity())); MPDelayProvider = min(MPDelayProvider, (int)(pEffectMPRecoveryEffect->getDelay())); // 泅犁 雀汗剧阑 啊瘤绊, 倔付究 割锅俊 雀汗且 巴牢啊甫 搬沥茄促. temp = (double)((double)MPAmount/(double)MPQuantity); Period = (uint)ceil(temp); Deadline = Period * MPDelayProvider; // MP Recovery effect甫 盎脚茄促. pEffectMPRecoveryEffect->setDeadline(Deadline); pEffectMPRecoveryEffect->setDelay(MPDelayProvider); pEffectMPRecoveryEffect->setMPQuantity(MPQuantity); pEffectMPRecoveryEffect->setPeriod(Period); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCMPRecoveryStart gcMPRecoveryStart; gcMPRecoveryStart.setPeriod(pEffectMPRecoveryEffect->getPeriod()); gcMPRecoveryStart.setDelay(pEffectMPRecoveryEffect->getDelay()); gcMPRecoveryStart.setQuantity(pEffectMPRecoveryEffect->getMPQuantity()); pGamePlayer->sendPacket(&gcMPRecoveryStart); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } else { EffectMPRecovery* pEffectMPRecovery = new EffectMPRecovery(); pEffectMPRecovery->setTarget(pOusters); pEffectMPRecovery->setDeadline(Deadline); pEffectMPRecovery->setDelay(MPDelayProvider); pEffectMPRecovery->setNextTime(0); pEffectMPRecovery->setMPQuantity(MPQuantity); pEffectMPRecovery->setPeriod(Period); pEffectManager->addEffect(pEffectMPRecovery); // 雀汗 矫累窍扼绰 菩哦阑 磊脚俊霸 焊辰促. GCMPRecoveryStart gcMPRecoveryStart; gcMPRecoveryStart.setPeriod(Period); gcMPRecoveryStart.setDelay(MPDelayProvider); gcMPRecoveryStart.setQuantity(MPQuantity); pGamePlayer->sendPacket(&gcMPRecoveryStart); GCUseOK _GCUseOK; pGamePlayer->sendPacket(&_GCUseOK); } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } decreaseItemNum(pItem, pInventory, pOusters->getName(), STORAGE_INVENTORY, 0, InvenX, InvenY); } else { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } }#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?