📄 corpseitemposition.cpp
字号:
///////////////////////////////////////////////////////////////////// CorpseItemPosition 努贰胶 备泅///////////////////////////////////////////////////////////////////#include "Assert.h"#include "Zone.h"#include "ZoneGroup.h"#include "Tile.h"#include "Item.h"#include "Corpse.h"#include "MonsterCorpse.h"#include "ZoneUtil.h"#include "ItemUtil.h"#include "RelicUtil.h"#include "Utility.h"#include "ItemFactoryManager.h"#include "CorpseItemPosition.h"#include "RelicUtil.h"#include "Gpackets/GCAddEffectToTile.h"#include "ctf/FlagManager.h"#include <list>Item* CorpseItemPosition::popItem( bool bLock ) throw(Error){ __BEGIN_TRY m_pZone = NULL; if ( bLock ) return getItem_UNLOCKED(true); return getItem_LOCKED(true); __END_CATCH}Item* CorpseItemPosition::getItem_LOCKED( bool isDel ) throw(Error){ __BEGIN_TRY Zone* pZone = getZoneByZoneID( m_ZoneID ); m_pZone = pZone; if( pZone == NULL ) { filelog( "ItemError.log", "CorpseItemPosition:getItem() : ZoneID啊 肋给登菌嚼聪促."); return NULL; } return getItem_CORE( pZone, isDel ); __END_CATCH}Item* CorpseItemPosition::getItem_UNLOCKED( bool isDel ) throw(Error){ __BEGIN_TRY Zone* pZone = getZoneByZoneID( m_ZoneID ); m_pZone = pZone; if( pZone == NULL ) { filelog( "ItemError.log", "CorpseItemPosition:getItem() : ZoneID啊 肋给登菌嚼聪促."); return NULL; } Item* pItem; __ENTER_CRITICAL_SECTION( (*pZone) ) pItem = getItem_CORE( pZone, isDel ); __LEAVE_CRITICAL_SECTION( (*pZone) ) return pItem; __END_CATCH}Item* CorpseItemPosition::getItem_CORE(Zone* pZone, bool isDel) throw(Error){ __BEGIN_TRY Corpse* pCorpse = dynamic_cast<Corpse*>(pZone->getItem( m_CorpseObjectID )); Item* pRet = NULL; if( pCorpse == NULL || pCorpse->getItemClass() != Item::ITEM_CLASS_CORPSE ) { filelog( "ItemError.log", "CorpseItemPosition::getItem() : 秦寸窍绰 矫眉啊 绝嚼聪促."); return NULL; } if ( isDel ) { pRet = pCorpse->popTreasure( m_ObjectID ); if( pRet == NULL ) { filelog( "ItemError.log", "CorpseItemPosition::getItem() : 秦寸 酒捞袍捞 矫眉 救俊 绝嚼聪促."); return NULL; } deleteFlagEffect( pCorpse, pRet ); deleteRelicEffect( pCorpse, pRet ); sendRelicWarpEffect( pCorpse ); if ( pCorpse->getItemType() == MONSTER_CORPSE ) { MonsterCorpse* pMonsterCorpse = dynamic_cast<MonsterCorpse*>(pCorpse); if ( pMonsterCorpse != NULL ) { if ( g_pFlagManager->isFlagPole( pMonsterCorpse ) && g_pFlagManager->getFlagPoleRace( pMonsterCorpse ) == g_pFlagManager->getWinnerRace() ) { Item* pGemStone = g_pItemFactoryManager->createItem( Item::ITEM_CLASS_QUEST_ITEM, 4, list<OptionType_t>() ); pZone->registerObject( pGemStone ); TPOINT tp = pZone->addItem( pGemStone, pMonsterCorpse->getX(), pMonsterCorpse->getY() ); pGemStone->create( "", STORAGE_ZONE, pZone->getZoneID(), tp.x, tp.y );// pGemStone->setFlag( Effect::EFFECT_CLASS_DROP_FORCE ); pGemStone->setFlag( (Effect::EffectClass)(Effect::EFFECT_CLASS_SLAYER_ONLY + (int)g_pFlagManager->getWinnerRace()) ); EffectID_t effectClass = Effect::EFFECT_CLASS_FIRE_CRACKER_VOLLEY_1 + (rand()&0x3); GCAddEffectToTile gcAddEffectToTile; gcAddEffectToTile.setObjectID( pMonsterCorpse->getObjectID() ); gcAddEffectToTile.setEffectID( effectClass ); gcAddEffectToTile.setXY( pMonsterCorpse->getX(), pMonsterCorpse->getY() ); gcAddEffectToTile.setDuration( 10 ); // 喊 狼固 绝促 弊成 1檬 pZone->broadcastPacket( pMonsterCorpse->getX(), pMonsterCorpse->getY(), &gcAddEffectToTile ); } } } } else pRet = pCorpse->getTreasure( m_ObjectID ); if( pRet == NULL ) { filelog( "ItemError.log", "CorpseItemPosition::getItem() : 秦寸 酒捞袍捞 矫眉 救俊 绝嚼聪促."); return NULL; } return pRet; __END_CATCH}string CorpseItemPosition::toString() const throw(Error){ return "CorpseItemPosition";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -