Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
#ifndef _SIEGE_OBJECT_H_
|
||||
#define _SIEGE_OBJECT_H_
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <Creature/Monster/PatternMonster.h>
|
||||
#include <Creature/Siege/SiegeConstants.h>
|
||||
#include <Creature/Character/SphereTree/CharSphereTree.h>
|
||||
#include <Creature/Siege/SerializeSiegeObjectData.h>
|
||||
#include <Network/Packet/PacketStruct/CastlePacket.h>
|
||||
|
||||
using namespace Siege;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class CCharacter;
|
||||
|
||||
namespace BroadCastSiege
|
||||
{
|
||||
class CSerializeSiegeObjectData;
|
||||
}
|
||||
|
||||
class CSiegeObject : public CSkillMonster, public ICharSphereTreeCallBack
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::set<unsigned long> BroadCastSet;
|
||||
|
||||
virtual ~CSiegeObject();
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// CSkillMonster <20>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD> <20>Լ<EFBFBD>
|
||||
|
||||
// <20><><EFBFBD>Ʊ<EFBFBD> <20>ĺ<EFBFBD>
|
||||
virtual EnemyCheck::EnemyType IsEnemy(CCreature* lpTarget, unsigned char* cResult = NULL);
|
||||
|
||||
// <20><>ü <20><><EFBFBD><EFBFBD> <20>ɷ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
|
||||
virtual void NormalBehavior(unsigned long dwTick) { }
|
||||
virtual void AttackBehavior(unsigned long dwTick) { }
|
||||
virtual void SearchPlayer(void) { }
|
||||
bool SkillAttack(void);
|
||||
|
||||
virtual bool Dead(CAggresiveCreature* pOffencer) { return false; }
|
||||
virtual void MoveTo(const Position& NewPosition);
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Attack Packet ó<><C3B3> <20>Լ<EFBFBD>
|
||||
|
||||
virtual bool AttackCID(CCharacter* lpRideChar, AtType attackType, AtNode& attackNode, unsigned short& wError) { return false; }
|
||||
virtual bool Attack(AtType attackType, unsigned char cDefenderNum, CAggresiveCreature** ppDefenders,
|
||||
unsigned char* cDefenserJudges, unsigned short* wDefenserMPHeal) { return false; }
|
||||
virtual bool MissileAttack(AtType attackType, float fDir, float nRange, float fAngle, char cTargetType) { return false; }
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// SiegeObject ó<><C3B3> <20>Լ<EFBFBD>
|
||||
|
||||
virtual bool Build(unsigned char cUpgradeStep = 0) { return false; } // <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3>
|
||||
virtual bool Cancel() { return false; } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD>
|
||||
virtual bool Upgrade(unsigned char cUpgradeStep) { return false; } // <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3>
|
||||
virtual bool Repair(unsigned short wRepairHP) { return false; } // <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3>
|
||||
virtual bool Restore() { return false; } // <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3>
|
||||
virtual bool Destroy(unsigned char cOffencerNation, bool bTakeGold) { return false; } // <20>ı<EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3> (<28><>ü <20>ı<EFBFBD>, <20>ı<EFBFBD><C4B1><EFBFBD>)
|
||||
virtual bool Destroy(unsigned long dwOffencerGID) { return false; } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ı<EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3> (<28><>ü <20>ı<EFBFBD>, <20>ı<EFBFBD><C4B1><EFBFBD>)
|
||||
virtual bool Update(unsigned char cState, unsigned long dwValue1, unsigned long dwValue2, unsigned long dwOwnerID, unsigned char cSubCmd) { return false; } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
virtual bool ChangeType(unsigned short wChangeType) { return false; } // <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> ó<><C3B3>
|
||||
|
||||
// <20><>Ÿ<EFBFBD><C5B8>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ (bFullMaterial <20><> true <20≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 90%<25><> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.)
|
||||
virtual bool ToStarterKit(bool bFullMaterial=false) { return false; }
|
||||
|
||||
virtual unsigned long GetRepairGold() const { return Siege::MAX_REPAIR_GOLD; }
|
||||
unsigned long GetRepairHP();
|
||||
|
||||
// Rider <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
virtual unsigned char IsRider(unsigned long dwCID) const; // <20>ش<EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD> <20><><EFBFBD> ž<><C5BE><EFBFBD><EFBFBD> <20>ִ°<D6B4>?
|
||||
virtual bool Ride(unsigned long dwCID) { return false; } // <20><><EFBFBD><EFBFBD> ž<><C5BE>
|
||||
virtual bool GetOff(unsigned long dwCID) { return false; } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
virtual void AllGetOff() { GetOff(m_dwRiderCID); } // <20><><EFBFBD><EFBFBD><E2BFA1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>õ<EFBFBD> <20>Լ<EFBFBD> (<28><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD><D7B7>̵忡 <20><><EFBFBD><EFBFBD> ȿ<><C8BF>)
|
||||
void UpgradeByEmblem(unsigned char cUpgradeType, unsigned char cUpgradeStep);
|
||||
void DegradeByEmblem(unsigned char cUpgradeType, unsigned char cUpgradeStep);
|
||||
unsigned short GetDefaultNowHP(); // <20><>¡<EFBFBD><C2A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> HP <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
// <20>ݰ<EFBFBD> 5<><35><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>Լ<EFBFBD>
|
||||
void SendHPUpdateToDBAgent(bool bForce=false);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3>Ʈ <20>Լ<EFBFBD>
|
||||
// void SendToRadiusCell(const char* szPacket, unsigned long dwPacketSize, unsigned char cCMD_In);
|
||||
// bool SerializeOut(char* szBuffer_In, unsigned short& wDataLen);
|
||||
|
||||
void RangeTest();
|
||||
virtual void RangeTestCallBack( const Position& centerPos, float fDistance, CCharSphereNode* pNode );
|
||||
void SendToRange( float fRadius, const char* szPacket, unsigned long dwPacketSize, unsigned char cCMD_In );
|
||||
|
||||
BroadCastSiege::CSerializeSiegeObjectData& GetSerializeData(void) { return m_SerializeSiegeObjectData; }
|
||||
|
||||
|
||||
|
||||
// Get / Set <20>Լ<EFBFBD>
|
||||
bool IsEmblem() const { return (Siege::EMBLEM == m_wObjectType); }
|
||||
bool IsCamp() const;
|
||||
bool IsGate() const { return (Siege::GATE == m_wObjectType); }
|
||||
bool IsGuard() const { return (Siege::GUARD == m_wObjectType); }
|
||||
bool IsCastleObject() const;
|
||||
bool IsCastleArms() const;
|
||||
bool IsSiegeArms() const;
|
||||
bool IsRidable() const; // Ż<><C5BB> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD>ΰ<EFBFBD>?
|
||||
bool IsCastleNPC() const { return (m_wObjectType == Siege::BACKDOOR || m_wObjectType == Siege::CASTLE_ARMS_NPC); }
|
||||
bool IsMaxHP() const { return (m_CreatureStatus.m_nNowHP == m_CreatureStatus.m_StatusInfo.m_nMaxHP); }
|
||||
bool IsPeaceMode();
|
||||
bool IsRideArms(void) const { return false; }
|
||||
bool IsWorldWeapon() const;
|
||||
|
||||
unsigned short GetObjectType() const { return m_wObjectType; }
|
||||
|
||||
unsigned long GetCID() const { return m_dwCID; }
|
||||
unsigned long GetNowHP() const { return m_CreatureStatus.m_nNowHP; }
|
||||
unsigned long GetMaxHP() const { return m_CreatureStatus.m_StatusInfo.m_nMaxHP; }
|
||||
unsigned char GetState() const { return m_cState; }
|
||||
unsigned char GetSubState() const { return m_cSubState; }
|
||||
unsigned char GetUpgradeStep() const { return m_cUpgradeStep; }
|
||||
unsigned char GetUpgradeType() const { return m_cUpgradeType; }
|
||||
const Position& GetPosition() const { return m_CurrentPos; }
|
||||
unsigned char GetMaterialNum() const { return m_cMaterial; }
|
||||
unsigned char GetSiegeCount() const { return m_cSiegeCount; }
|
||||
float GetDefaultDir() const { return m_fDefaultDir; }
|
||||
unsigned long GetRiderCID() const { return m_dwRiderCID; }
|
||||
virtual void GetRiders( unsigned long* pRiders ) const;
|
||||
virtual unsigned char GetRiderNum() const;
|
||||
|
||||
unsigned long GetDevelopGold(unsigned short wDefaultObjectType=Siege::DEFAULT_TYPE) const;
|
||||
unsigned char GetDevelopSpeed(unsigned short wDefaultObjectType=Siege::DEFAULT_TYPE) const;
|
||||
unsigned long GetUpgradeGold() const;
|
||||
unsigned char GetUpgradeSpeed(unsigned char cDefaultUpgradeType=Siege::NO_JEWEL) const;
|
||||
float GetBonusRate() const;
|
||||
|
||||
int GetKID() const;
|
||||
unsigned char GetNation() const;
|
||||
unsigned long GetGID() const;
|
||||
CAggresiveCreature* GetDuelOpponent(void) const;
|
||||
|
||||
char GetConsumeMPCount(void) { return m_cConsumeMPCount; }
|
||||
|
||||
unsigned long GetCastleID() const { return m_dwCampOrCastleID; }
|
||||
unsigned long GetCampID() const { return m_dwCampOrCastleID; }
|
||||
unsigned long GetOwnerID() const { return m_dwOwnerID; }
|
||||
|
||||
void SetGID(unsigned long dwGID) { m_dwGID = dwGID; }
|
||||
void SetFullMP() { m_CreatureStatus.m_nNowMP = m_CreatureStatus.m_StatusInfo.m_nMaxMP; }
|
||||
void SetState(unsigned char cState) { m_cState = cState; }
|
||||
void SetSubState(unsigned char cSubState) { m_cSubState = cSubState; }
|
||||
void SetMaterialNum(unsigned char cMaterial);
|
||||
void SetSiegeCount(unsigned char cSiegeCount) { m_cSiegeCount = cSiegeCount; }
|
||||
void SetNation(unsigned char cNation);
|
||||
|
||||
protected:
|
||||
|
||||
CSiegeObject(MonsterCreateInfo& MonsterCreate, const CastleObjectInfo& CastleObject);
|
||||
CSiegeObject(MonsterCreateInfo& MonsterCreate, unsigned long dwCampID, unsigned long dwGID,
|
||||
unsigned long dwHP, unsigned short wObjectType, unsigned char cState, unsigned char cSubState,
|
||||
unsigned char cUpgradeStep, unsigned char cMaterial, unsigned char cSiegeCount, bool bFullHP);
|
||||
CSiegeObject(MonsterCreateInfo& MonsterCreate, unsigned long dwOwnerID, unsigned char cNation,
|
||||
unsigned long dwHP, unsigned short wObjectType, unsigned char cState, unsigned char cUpgradeStep);
|
||||
|
||||
void UpdateObjectInfo(unsigned char cHPType=Siege::NOW_HP, unsigned short wRepairHP=0); // <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20><>ȭ<EFBFBD>ÿ<EFBFBD> <20><><EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long m_dwCampOrCastleID; // CastleID : <20><> <20><>¡<EFBFBD><C2A1>, <20><><EFBFBD><EFBFBD>, <20><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20>ٰŸ<D9B0>/<2F><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// CampID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>¡<EFBFBD><C2A1>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwOwnerID; // CID : <20>ٰŸ<D9B0>/<2F><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>ٰŸ<D9B0>/<2F><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long m_dwGID; // GID : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ID
|
||||
// <20><><EFBFBD><EFBFBD>!! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> GID <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>!!
|
||||
unsigned char m_cNation; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned short m_wObjectType; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ Ÿ<><C5B8>
|
||||
unsigned char m_cState; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cSubState; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Use EMBLEM & GATE)
|
||||
unsigned char m_cUpgradeStep; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> <20>ܰ<EFBFBD>
|
||||
unsigned char m_cUpgradeType; // <20><> <20><>¡<EFBFBD><C2A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD> Ÿ<><C5B8> (Only EMBLEM)
|
||||
unsigned char m_cMaterial; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned char m_cSiegeCount; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD>
|
||||
float m_fDefaultDir; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⺻ <20><><EFBFBD><EFBFBD>
|
||||
unsigned long m_dwRiderCID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> ž<><C5BE><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CID
|
||||
|
||||
unsigned char m_cHPUpdateCount; // HP <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ ī<><C4AB>Ʈ
|
||||
|
||||
// Rider <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// 1. <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> Ÿ<><C5B8> <20>ִ<EFBFBD><D6B4><EFBFBD> <20>˼<EFBFBD><CBBC><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
// 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD> <20>˼<EFBFBD><CBBC><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
//
|
||||
// * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>üũ<C3BC><C5A9> <20>ϸ<EFBFBD> <20>ȵȴ<C8B5>.
|
||||
|
||||
// ----------------------------------------------------------------------------------------
|
||||
// New BroadCast Data
|
||||
BroadCastSiege::CSerializeSiegeObjectData m_SerializeSiegeObjectData; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
char m_szBroadCastBuffer[ BroadCastSiege::MAX_SIEGEBROADCAST_BUFFER_SIZE ];
|
||||
char m_szDeltaBuffer[ BroadCastSiege::MAX_SIEGEBROADCAST_BUFFER_SIZE ];
|
||||
unsigned long m_dwBroadCastSize;
|
||||
unsigned long m_dwDeltaSize;
|
||||
|
||||
BroadCastSet m_BroadCastSet;
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
friend class CSiegeObjectMgr;
|
||||
};
|
||||
|
||||
#endif // _SIEGE_OBJECT_H_
|
||||
Reference in New Issue
Block a user