#pragma once //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // class BattleRecord; class Player; class Character; class NPC; class GameField; class Item; struct DistributeExpOprArgs; struct DistributeExpOprResult; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // class ItemExpDistributor { public: ItemExpDistributor() {} ~ItemExpDistributor() {} // ¼ÒÀ¯±Ç °áÁ¤ Character* DecideExpOwnership( NPC *pNPC ); Player* DecideItemOwnership( NPC *pNPC ); // °æÇèÄ¡ ºÐ¹è VOID DistributeExp( NPC *pNPC, Character *pExpOwner ); BOOLEAN GetCalcedExpValue( Player* const pPlayer , const DistributeExpOprArgs* const pArgs , DistributeExpOprResult* OUT pResult ); // ¾ÆÀÌÅÛ, µ· ºÐ¹è VOID DistributeItem( Item * pItem, Player * pItemOwner ); VOID DistributeMoney( MONEY Money, DWORD dwMonsterKey, Player * pItemOwner ); }; extern ItemExpDistributor g_ItemExpDistributor; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // struct DistributeExpOprArgs { GameZone* const pGameZone; GameField* const pGameField; const eZONETYPE zoneType; const BYTE roomBonusType; const BYTE radius; const WORD memberNum; const LEVELTYPE totalLevel; const FLOAT fRadius_Q2; // radius*radius const DWORD npc_key; const WzVector* const pwvNpcPos; const FLOAT fNpcExpRatio; const DWORD npcMaxHP; const LEVELTYPE npcLevel; DistributeExpOprArgs( GameZone* const _pGameZone , GameField* const _pGameField , const eZONETYPE _zoneType , const BYTE _roomBonusType , const BYTE _radius , const WORD _memberNum , const LEVELTYPE _totalLevel , const FLOAT _fRadius_Q2 , const DWORD _npc_key , const WzVector* const _pwvNpcPos , const FLOAT _fNpcExpRatio , const DWORD _npcMaxHP , const LEVELTYPE _npcLevel ) : pGameZone ( _pGameZone ) , pGameField ( _pGameField ) , zoneType ( _zoneType ) , roomBonusType ( _roomBonusType ) , radius ( _radius ) , memberNum ( _memberNum ) , totalLevel ( _totalLevel ) , fRadius_Q2 ( _fRadius_Q2 ) , npc_key ( _npc_key ) , pwvNpcPos ( _pwvNpcPos ) , fNpcExpRatio ( _fNpcExpRatio ) , npcMaxHP ( _npcMaxHP ) , npcLevel ( _npcLevel ) {} __DISABLE_COPY(DistributeExpOprArgs); }; struct DistributeExpOprResult { EXPTYPE TotalExp; // Àüü °æÇèÄ¡ INT BonusExp; // TotalExp = calced_value + BonusExp };