📄 effectdecayitem.cpp
字号:
//----------------------------------------------------------------------//// Filename : EffectDecayItem.cpp// Written by : Reiot////----------------------------------------------------------------------// include files#include "Assert.h"#include "EffectDecayItem.h"#include "Gpackets/GCDeleteObject.h"#include "Tile.h"#include "Zone.h"#include "Item.h"#include "Money.h"#include "ItemUtil.h"#include "ZoneUtil.h"#include "UniqueItemManager.h"#include "VariableManager.h"#include <stdio.h>//----------------------------------------------------------------------// constructor//----------------------------------------------------------------------EffectDecayItem::EffectDecayItem (Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Item* pItem , Turn_t delay, bool bDeleteFromDB) throw (Error): Effect(pZone,x,y,pItem,delay) { __BEGIN_TRY Assert(getZone() != NULL); Assert(getTarget() != NULL); //m_ObjectID = pItem->getObjectID(); m_ObjectID = pItem->getObjectID(); m_bDeleteFromDB = bDeleteFromDB; // 辑滚 傈侩 Effect捞促. by sigi. 2002.11.14 m_bBroadcastingEffect = false; __END_CATCH}//----------------------------------------------------------------------// destructor//----------------------------------------------------------------------EffectDecayItem::~EffectDecayItem () throw (Error){ __BEGIN_TRY unaffect(m_pZone , m_X , m_Y , m_pTarget); __END_CATCH} //----------------------------------------------------------------------// affect to target// 捞 捞棋飘绰 鸥老俊 辆加登瘤 臼栏骨肺, affect()绰 龋免登瘤 臼绰促.// 恐衬窍搁, target篮 积己磊俊辑 瘤沥登哥, 酒公繁 老档 窍瘤 臼扁 锭巩捞促.//----------------------------------------------------------------------void EffectDecayItem::affect (Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pTarget) throw (Error){ __BEGIN_TRY// throw UnsupportedError(); __END_CATCH}//----------------------------------------------------------------------// remove effect from target//----------------------------------------------------------------------void EffectDecayItem::unaffect (Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pTarget) throw (Error){ __BEGIN_TRY // 棵官弗 谅钎捞绢具 茄促. Assert(isValidZoneCoord(pZone, x, y)); // TempItem 函荐甫 棱绰促. Item* pTempItem = NULL; // 咯扁辑绰 瘤沥 酒捞袍捞 绝阑 荐 乐栏哥, 肚 促弗 酒捞袍捞 初咯 乐阑 荐档 乐促. // 捞 版快绰 坷府瘤澄 酒捞袍苞 瘤陛 泅犁 官蹿俊 乐绰 酒捞袍阑 厚背窍咯 昏力秦具 茄促. // 绝阑 版快绰 公矫窍搁 等促. Tile & tile = pZone->getTile(x, y); if (tile.hasItem()) { pTempItem = tile.getItem(); if (pTempItem != NULL) { // ObjectID啊 鞍促绰 富篮 鞍篮 酒捞袍捞鄂 富捞促. //if (pTempItem->getObjectID() == m_ObjectID) { if (pTempItem->getObjectID() == m_ObjectID) { pZone->deleteItem(pTempItem , x, y); // 酒捞袍捞 荤扼脸促绰 菩哦阑 朝赴促. GCDeleteObject gcDeleteObject; gcDeleteObject.setObjectID(m_ObjectID); pZone->broadcastPacket(x, y , &gcDeleteObject); if (m_bDeleteFromDB) { //ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo( pTempItem->getItemClass(), pTempItem->getItemType() ); //Assert(pItemInfo!=NULL); // 蜡聪农 酒捞袍牢 版快 俺荐甫 临牢促. if (pTempItem->isUnique()) { // create茄 酒捞袍捞 酒囱 版快父 瘤况霖促. if (pTempItem->getCreateType()!=Item::CREATE_TYPE_CREATE) UniqueItemManager::deleteItem( pTempItem->getItemClass(), pTempItem->getItemType() ); filelog("uniqueItem.txt", "[EffectDecayItem] %s", pTempItem->toString().c_str()); } // ItemTraceLog 甫 巢变促 if ( pTempItem != NULL && pTempItem->isTraceItem() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), x, y); remainTraceLog( pTempItem, zoneName, "GOD", ITEM_LOG_DELETE, DETAIL_TIMEOUT); } // 捣 肺弊 巢扁磊 if ( pTempItem->getItemClass() == Item::ITEM_CLASS_MONEY ) { Money* pMoney = dynamic_cast<Money*>(pTempItem); if ( pMoney->getAmount() >= g_pVariableManager->getMoneyTraceLogLimit() ) { char zoneName[15]; sprintf( zoneName, "%4d%3d%3d", pZone->getZoneID(), x, y); remainMoneyTraceLog( zoneName, "GOD", ITEM_LOG_DELETE, DETAIL_TIMEOUT, pMoney->getAmount() ); } } pTempItem->destroy(); } SAFE_DELETE(pTempItem); } } } pTarget = NULL; __END_CATCH}//----------------------------------------------------------------------// unaffect()//----------------------------------------------------------------------void EffectDecayItem::unaffect () throw (Error){ __BEGIN_TRY __END_CATCH}//----------------------------------------------------------------------// unaffect()//----------------------------------------------------------------------void EffectDecayItem::unaffect (Creature* pCreature) throw (Error){ __BEGIN_TRY __END_CATCH}//----------------------------------------------------------------------// get debug string//----------------------------------------------------------------------string EffectDecayItem::toString () const throw (){ StringStream msg; msg << "EffectDecayItem(" << "ZoneID:" << (int)m_pZone->getZoneID() << ",X:" << (int)getX() << ",Y:" << (int)getY(); if (m_pTarget) msg << ",Target:" << m_pTarget->toString(); else msg << ",Target:NULL"; msg << ",Deadline:" << (int)m_Deadline.tv_sec << "." << (int)m_Deadline.tv_usec; msg << ")"; return msg.toString();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -