cgusepotionfromquickslothandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 684 行 · 第 1/2 页
CPP
684 行
} else { notRecoverMP = true; } if (notRecoverHP && notRecoverMP) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } else { decreaseItemNum(pBeltItem, pBeltInventory, pSlayer->getName(), STORAGE_BELT, pBelt->getItemID(), SlotID, 0); } } else if ( pCreature->isOusters() ) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); Zone* pZone = pOusters->getZone(); // SlotID甫 罐绰促. SlotID_t SlotID = pPacket->getSlotID(); Ousters::WearPart part = ( SlotID > 2 ? Ousters::WEAR_ARMSBAND2 : Ousters::WEAR_ARMSBAND1 ); if ( SlotID > 2 ) SlotID -= 3; Item* pOustersArmsband = pOusters->getWearItem(part); if (pOustersArmsband == NULL) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } // 骇飘狼 牢亥配府甫 罐酒柯促. Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pOustersArmsband)->getInventory(); // 浇儿狼 裹困甫 檬苞窍搁 荤侩且 荐 绝促. if (SlotID >= pOustersArmsbandInventory->getWidth()) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } // 骇飘狼 瘤沥 浇儿狼 酒捞袍阑 罐酒柯促. Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(SlotID, 0); // 酒捞袍捞 绝栏搁 寸楷洒 荤侩且 荐 绝促. if (pOustersArmsbandItem == NULL) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } // 浇儿俊 乐绰 酒捞袍狼 Object甫 罐绰促. ObjectID_t ItemObjectID = pOustersArmsbandItem->getObjectID(); // 单捞磐啊 老摹窍瘤 臼芭唱, 仟颇唱 霓器胶皋捞啊 酒聪扼搁 荤侩且 荐 绝促. if (ItemObjectID != pPacket->getObjectID() || ( pOustersArmsbandItem->getItemClass() != Item::ITEM_CLASS_PUPA && pOustersArmsbandItem->getItemClass() != Item::ITEM_CLASS_COMPOS_MEI ) ) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } if ( pOustersArmsbandItem->getItemClass() == Item::ITEM_CLASS_PUPA ) { HP_t MaxHP = pOusters->getHP(ATTR_MAX); HP_t CurrentHP = pOusters->getHP(ATTR_CURRENT); Pupa* pPupa = dynamic_cast<Pupa*>(pOustersArmsbandItem); // 茄畔俊 雀汗登绰 剧 int HPQuantity = pPupa->getHPQuantity(); // 茄畔捞 割檬 牢啊. int HPDelayProvider = pPupa->getHPDelay(); HP_t PupaHPAmount = 0; PupaHPAmount = pPupa->getHPAmount(); int HPAmount = min(MaxHP - CurrentHP , (int)PupaHPAmount); bool notRecoverHP = false; // HP 雀汗剧捞 粮犁茄促搁... if (HPAmount != 0 && HPQuantity != 0) { if (CurrentHP < MaxHP) { EffectManager* pEffectManager = pOusters->getEffectManager(); double temp = (double)((double)HPAmount/(double)HPQuantity); uint 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 { notRecoverHP = true; } if (notRecoverHP) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } else { decreaseItemNum(pOustersArmsbandItem, pOustersArmsbandInventory, pOusters->getName(), STORAGE_BELT, pOustersArmsband->getItemID(), SlotID, 0); } } else if ( pOustersArmsbandItem->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*>(pOustersArmsbandItem); // 茄畔俊 雀汗登绰 剧 int MPQuantity = pComposMei->getMPQuantity(); // 茄畔捞 割檬 牢啊. int MPDelayProvider = pComposMei->getMPDelay(); Attr_t INT = pOusters->getINT(); MP_t ComposMeiMPAmount = 0; ComposMeiMPAmount = pComposMei->getMPAmount(); int MPAmount = min(MaxMP - CurrentMP , (int)(pComposMei->getMPAmount()* (1 + (double)((double)INT / 300.0)))); bool notRecoverMP = false; // 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 { notRecoverMP = true; } if (notRecoverMP) { GCCannotUse _GCCannotUse; _GCCannotUse.setObjectID(pPacket->getObjectID()); pGamePlayer->sendPacket(&_GCCannotUse); return; } else { decreaseItemNum(pOustersArmsbandItem, pOustersArmsbandInventory, pOusters->getName(), STORAGE_BELT, pOustersArmsband->getItemID(), SlotID, 0); } } } } catch (Throwable & t) { //cout << t.toString(); } #endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?