📄 eventregeneration.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : EventRegeneration.cpp// Written by : elca// Description : //////////////////////////////////////////////////////////////////////////////#include "EventRegeneration.h"#include "GamePlayer.h"#include "Creature.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Item.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCStatusCurrentHP.h"//////////////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////////////EventRegeneration::EventRegeneration (GamePlayer* pGamePlayer) throw (Error): Event(pGamePlayer){}//////////////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////////////EventRegeneration::~EventRegeneration () throw (){} //////////////////////////////////////////////////////////////////////////////// activate//////////////////////////////////////////////////////////////////////////////void EventRegeneration::activate () throw (Error){ __BEGIN_TRY if (m_pGamePlayer->getPlayerStatus() == GPS_NORMAL) { Assert(m_pGamePlayer != NULL); Creature* pCreature = m_pGamePlayer->getCreature(); Assert(pCreature != NULL); Assert(pCreature->isPC()); Zone* pZone = pCreature->getZone(); if (pCreature->isAlive()) { if (pCreature->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); HP_t oldHP = pSlayer->getHP(ATTR_CURRENT); // 泅犁 HP MP_t oldMP = pSlayer->getMP(ATTR_CURRENT); // 泅犁 MP HP_t maxHP = pSlayer->getHP(ATTR_MAX); // 泅犁 钙胶 HP MP_t maxMP = pSlayer->getMP(ATTR_MAX); // 泅犁 钙胶 MP // 府哩啦俊 蝶扼 雀汗矫懦 HP客 MP狼 剧阑 拌魂茄促. //HP_t regenHP = getPercentValue(maxHP, pSlayer->getHPRegen()); //MP_t regenMP = getPercentValue(maxMP, pSlayer->getMPRegen()); HP_t regenHP = pSlayer->getHPRegen() * 2; MP_t regenMP = pSlayer->getMPRegen() * 2; // MAX甫 逞绢啊搁 帮鄂窍促. HP_t newHP = min((int)(oldHP + regenHP), (int)maxHP); MP_t newMP = min((int)(oldMP + regenMP), (int)maxMP); pSlayer->setHP(newHP, ATTR_CURRENT); pSlayer->setMP(newMP, ATTR_CURRENT); GCModifyInformation GCMI; // HP啊 函版登菌栏聪 宏肺靛某胶泼秦霖促. if (oldHP != newHP) { GCMI.addShortData(MODIFY_CURRENT_HP, newHP); GCStatusCurrentHP gcStatusCurrentHP; gcStatusCurrentHP.setObjectID(pSlayer->getObjectID()); gcStatusCurrentHP.setCurrentHP(newHP); pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcStatusCurrentHP, pSlayer); } if (oldMP != newMP) { GCMI.addShortData(MODIFY_CURRENT_MP, newMP); } // HP唱 MP啊 函版登菌促搁, 函版登菌促绰 荤角阑 夯牢俊霸 舅妨霖促. if (GCMI.getShortCount() != 0 || GCMI.getLongCount() != 0) m_pGamePlayer->sendPacket(&GCMI); } else if (pCreature->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); HP_t oldHP = pVampire->getHP(ATTR_CURRENT); HP_t maxHP = pVampire->getHP(ATTR_MAX) - pVampire->getSilverDamage(); HP_t regenHP = 0; HP_t newHP = 0; /* if (pVampire->isFlag(Effect::EFFECT_CLASS_HIDE)) { // 窍捞靛窍绊 乐阑 锭绰 乞惑矫焊促 HP啊 弧府 瞒霸 等促. regenHP = getPercentValue(maxHP, 15 + pVampire->getHPRegen() + pVampire->getINT(ATTR_CURRENT)/60); newHP = min((int)(oldHP + regenHP), (int)maxHP); } else { // 乞惑矫俊绰... regenHP = getPercentValue(maxHP, 10 + pVampire->getHPRegen() + pVampire->getINT(ATTR_CURRENT)/60); newHP = min((int)(oldHP + regenHP), (int)maxHP); } */ // 冠零 惑怕牢啊 酒囱啊父阑 八荤茄促. // 窍捞靛唱 包俊 甸绢啊 乐绰 惑怕 八荤啊 绝绰 捞蜡绰, // 捞甸 惑怕俊 狼茄 HP 雀汗 风凭篮 Vampire::heartbeat()俊 甸绢啊 乐扁 锭巩捞促. if (pVampire->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT)) { // 冠零 惑怕俊辑绰 HP啊 雀汗登瘤 臼绰促. regenHP = 0; } else { // 乞惑矫俊绰... regenHP = pVampire->getHPRegen() * 2; } newHP = min((int)(oldHP + regenHP), (int)maxHP); pVampire->setHP(newHP, ATTR_CURRENT); GCModifyInformation GCMI; // HP啊 函版登菌栏聪 宏肺靛某胶泼秦霖促. if (oldHP != newHP) { GCMI.addShortData(MODIFY_CURRENT_HP, newHP); GCStatusCurrentHP gcStatusCurrentHP; gcStatusCurrentHP.setObjectID(pVampire->getObjectID()); gcStatusCurrentHP.setCurrentHP(newHP); pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcStatusCurrentHP, pVampire); } // HP啊 函版登菌促绰 荤角阑 夯牢俊霸 舅妨霖促. if (GCMI.getShortCount() != 0 || GCMI.getLongCount() != 0) m_pGamePlayer->sendPacket(&GCMI); } else if (pCreature->isOusters()) { Ousters* pOusters = dynamic_cast<Ousters*>(pCreature); HP_t oldHP = pOusters->getHP(ATTR_CURRENT); // 泅犁 HP MP_t oldMP = pOusters->getMP(ATTR_CURRENT); // 泅犁 MP HP_t maxHP = pOusters->getHP(ATTR_MAX); // 泅犁 钙胶 HP MP_t maxMP = pOusters->getMP(ATTR_MAX); // 泅犁 钙胶 MP // 府哩啦俊 蝶扼 雀汗矫懦 HP客 MP狼 剧阑 拌魂茄促. //HP_t regenHP = getPercentValue(maxHP, pOusters->getHPRegen()); //MP_t regenMP = getPercentValue(maxMP, pOusters->getMPRegen()); HP_t regenHP = pOusters->getHPRegen() * 2; MP_t regenMP = pOusters->getMPRegen() * 2; // MAX甫 逞绢啊搁 帮鄂窍促. HP_t newHP = min((int)(oldHP + regenHP), (int)maxHP); MP_t newMP = min((int)(oldMP + regenMP), (int)maxMP); pOusters->setHP(newHP, ATTR_CURRENT); pOusters->setMP(newMP, ATTR_CURRENT); GCModifyInformation GCMI; // HP啊 函版登菌栏聪 宏肺靛某胶泼秦霖促. if (oldHP != newHP) { GCMI.addShortData(MODIFY_CURRENT_HP, newHP); GCStatusCurrentHP gcStatusCurrentHP; gcStatusCurrentHP.setObjectID(pOusters->getObjectID()); gcStatusCurrentHP.setCurrentHP(newHP); pZone->broadcastPacket(pOusters->getX(), pOusters->getY(), &gcStatusCurrentHP, pOusters); } if (oldMP != newMP) { GCMI.addShortData(MODIFY_CURRENT_MP, newMP); } // HP唱 MP啊 函版登菌促搁, 函版登菌促绰 荤角阑 夯牢俊霸 舅妨霖促. if (GCMI.getShortCount() != 0 || GCMI.getLongCount() != 0) m_pGamePlayer->sendPacket(&GCMI); } } // 10 檬付促 雀汗矫难 林扁 困秦辑绰 deadline 阑 刘啊矫难 拎具 茄促. Timeval delay; delay.tv_sec = 10; delay.tv_usec = 0; m_Deadline = m_Deadline + delay; } else { Timeval delay; delay.tv_sec = 10; delay.tv_usec = 0; m_Deadline = m_Deadline + delay; } __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -