📄 effecteternity.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : EffectEternity.cpp// Written by : elca// Description : //////////////////////////////////////////////////////////////////////////////#include "EffectEternity.h"#include "Slayer.h"#include "Player.h"#include "CreatureUtil.h"#include "Gpackets/GCModifyInformation.h"#include "Gpackets/GCStatusCurrentHP.h"#include "Gpackets/GCAddEffectToTile.h"#include "Gpackets/GCRemoveEffect.h"EffectEternity::EffectEternity(Creature* pCreature) throw(Error){ __BEGIN_TRY setTarget(pCreature); m_TargetObjectID = pCreature->getObjectID(); m_pZone = pCreature->getZone(); __END_CATCH}void EffectEternity::affect(Creature* pCreature) throw(Error){ __BEGIN_TRY __END_CATCH}void EffectEternity::unaffect() throw(Error){ __BEGIN_TRY //cout << "EffectEternity " << "unaffect BEGIN" << endl; Zone* pZone = m_pZone; Assert( pZone != NULL ); Creature* pCreature = pZone->getCreature( m_TargetObjectID ); if ( pCreature == NULL ) return; unaffect(pCreature); //cout << "EffectEternity " << "unaffect END" << endl; __END_CATCH}void EffectEternity::unaffect(Creature* pCreature) throw(Error){ __BEGIN_TRY __BEGIN_DEBUG Assert(pCreature != NULL); Assert(pCreature->isSlayer()); Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); Assert( pSlayer != NULL ); Zone* pZone = pSlayer->getZone(); Assert(pZone != NULL); if ( !pSlayer->isFlag( Effect::EFFECT_CLASS_COMA ) ) return; // 鸥老俊促啊 捞棋飘甫 嘿咯霖促. GCAddEffectToTile gcAddEffect; gcAddEffect.setEffectID(Effect::EFFECT_CLASS_ETERNITY); gcAddEffect.setXY( pSlayer->getX(), pSlayer->getY() ); gcAddEffect.setDuration(31); pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcAddEffect); pSlayer->deleteEffect( Effect::EFFECT_CLASS_COMA ); pSlayer->removeFlag( Effect::EFFECT_CLASS_COMA ); HP_t NewHP = getPercentValue( pSlayer->getHP( ATTR_MAX ), 100 + m_HPPenalty ); NewHP = min(NewHP, pSlayer->getHP(ATTR_MAX)); NewHP = max((HP_t)1, NewHP); pSlayer->setHP( NewHP ); // 内付 捞棋飘啊 朝酒艾促绊 舅妨霖促. GCRemoveEffect gcRemoveEffect; gcRemoveEffect.setObjectID(pSlayer->getObjectID()); gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_COMA); pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcRemoveEffect); GCStatusCurrentHP gcHP; gcHP.setObjectID( pSlayer->getObjectID() ); gcHP.setCurrentHP( pSlayer->getHP() ); pZone->broadcastPacket(pSlayer->getX(), pSlayer->getY(), &gcHP); // 捞棋飘甸阑 促矫 焊郴霖促. pSlayer->getEffectManager()->sendEffectInfo(pSlayer, pZone, pSlayer->getX(), pSlayer->getY()); addSimpleCreatureEffect( pSlayer, Effect::EFFECT_CLASS_NO_DAMAGE, 30, false ); addSimpleCreatureEffect( pSlayer, Effect::EFFECT_CLASS_ETERNITY_PAUSE, 30 ); __END_DEBUG __END_CATCH}string EffectEternity::toString() const throw(){ __BEGIN_TRY StringStream msg; msg << "EffectEternity(" << "ObjectID:" << getObjectID() << ")"; return msg.toString(); __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -