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:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,200 @@
//--------------------------------------------------------------------------------------------------------------------------
// File Name: WorldWeapon.cpp
//
// Programmer: Zergra( Park Jongtae ) in GamaSoft corp.
//
// File Desciption: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
// Date: 2004. 12. 14. (ȭ)
//--------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------
// Headers
//--------------------------------------------------------------------------------------------------------------------------
#include "WorldWeapon.h"
#include <Creature/Siege/SiegeObjectMgr.h>
#include <Community/Guild/Guild.h>
#include <Community/Guild/GuildMgr.h>
#include <Network/Stream/SendStream.h>
#include <Network/Packet/WrapPacket.h>
#include <Network/Packet/PacketCommand.h>
#include <Network/Packet/PacketStruct/CastlePacket.h>
#include <Network/Dispatch/DBAgent/DBAgentDispatch.h>
#include <Network/Dispatch/DBAgent/DBAgentRequest.h>
#include <Network/Dispatch/GameClient/SendCharCastle.h>
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
// class CWorldWeapon
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
//--------------------------------------------------------------------------------------------------------------------------
// Constrcutor, Destructor
//--------------------------------------------------------------------------------------------------------------------------
CWorldWeapon::CWorldWeapon(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, const CampRight& campRight, bool bFullHP)
: CCamp(MonsterCreate, dwCampID, dwGID, dwHP, wObjectType, cState, cSubState, cUpgradeStep, cMaterial, cSiegeCount, campRight, bFullHP),
m_iFireX(0), m_iFireZ(0)
{
}
CWorldWeapon::~CWorldWeapon()
{
}
//--------------------------------------------------------------------------------------------------------------------------
// Member Functions
//--------------------------------------------------------------------------------------------------------------------------
bool CWorldWeapon::Build(unsigned char cUpgradeStep)
{
CCamp::Build(cUpgradeStep);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>æƮ <20><><EFBFBD><EFBFBD>
unsigned char cNation = Creature::STATELESS;
switch (m_wObjectType)
{
case Siege::KARTERANT_WEAPON: cNation = Creature::KARTERANT; break;
case Siege::MERKADIA_WEAPON: cNation = Creature::MERKADIA; break;
}
CCreatureManager::GetInstance().AddWorldWeaponEnchant(reinterpret_cast<CAggresiveCreature*>(this), cNation);
return true;
}
bool CWorldWeapon::Destroy(unsigned long dwOffencerGID)
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ı<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if (Siege::KARTERANT_WEAPON == m_wObjectType)
{
CSiegeObjectMgr::GetInstance().UpdateWorldWeaponInfo(Creature::KARTERANT, Siege::WEAPON_REBUILD_SIEGE_TIME_COUNT);
}
else if (Siege::MERKADIA_WEAPON == m_wObjectType)
{
CSiegeObjectMgr::GetInstance().UpdateWorldWeaponInfo(Creature::MERKADIA, Siege::WEAPON_REBUILD_SIEGE_TIME_COUNT);
}
return CCamp::Destroy(dwOffencerGID);
}
bool CWorldWeapon::UpdateWeaponState(unsigned char cWeaponState, int iX, int iZ)
{
m_iFireX = iX;
m_iFireZ = iZ;
m_cSubState = cWeaponState;
m_iWorldWeaponCount = Siege::WEAPON_FIRE_WARNING_COUNT;
// <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>ݰ<EFBFBD> 5<><35> <20>̳<EFBFBD><CCB3><EFBFBD> <20><><EFBFBD><EFBFBD>
PktCampCmd pktCC;
pktCC.m_dwCID = m_dwCID;
pktCC.m_dwCampID = GetCampID();
pktCC.m_cState = m_cState;
pktCC.m_dwValue1 = iX;
pktCC.m_dwValue2 = iZ;
pktCC.m_cSubCmd = 0;
switch (cWeaponState)
{
case Siege::WEAPON_CHARGE:
{
pktCC.m_cSubCmd = PktCampCmd::WORLDWEAPON_CHARGE;
pktCC.m_dwValue1 = m_cMaterial;
pktCC.m_dwValue2 = 0;
}
break;
case Siege::WEAPON_READY: pktCC.m_cSubCmd = PktCampCmd::WORLDWEAPON_CHARGE_COMPLETE; break;
case Siege::WEAPON_FIRE: pktCC.m_cSubCmd = PktCampCmd::WORLDWEAPON_FIRE; break;
}
char* szPacket = reinterpret_cast<char *>(&pktCC);
if (PacketWrap::WrapCrypt(szPacket, sizeof(PktCampCmd), CmdCampCmd, 0, 0))
{
// Vincent - <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20>׽<EFBFBD>Ʈ <20>ڵ<EFBFBD>
//SendToRadiusCell(szPacket, sizeof(PktCampCmd), CmdCampCmd);
SendToRange(Siege::BROADCAST_RADIUS, szPacket, sizeof(PktCampCmd), CmdCampCmd);
}
return true;
}
bool CWorldWeapon::FireWarning()
{
// <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD><DEBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><><EFBFBD><EFBFBD>
PktCampMessage pktCampMessage;
memset(&pktCampMessage, 0, sizeof(PktCampMessage));
pktCampMessage.m_dwCampID = GetCampID();
pktCampMessage.m_dwGID = GetGID();
pktCampMessage.m_cZone = CServerSetup::GetInstance().GetServerZone();
pktCampMessage.m_cMsgCmd = PktCampMessage::MSGCMD_WEAPON_FIRE_WARNING;
pktCampMessage.m_cRemainTime = static_cast<unsigned char>(m_iWorldWeaponCount);
pktCampMessage.m_cNation = GetNation();
pktCampMessage.m_bNotify = true;
pktCampMessage.m_nValue1 = m_iFireX;
pktCampMessage.m_nValue2 = m_iFireZ;
Guild::CGuild* lpGuild = Guild::CGuildMgr::GetInstance().GetGuild(m_dwGID);
if (NULL != lpGuild)
{
strcpy(pktCampMessage.m_szGuildName, lpGuild->GetName());
}
char* szPacket = reinterpret_cast<char* >(&pktCampMessage);
if (PacketWrap::WrapCrypt(szPacket, sizeof(PktCampMessage), CmdCampMessage, 0, 0))
{
CCreatureManager::GetInstance().SendAllCharacter(szPacket, sizeof(PktCampMessage), CmdCampMessage);
}
--m_iWorldWeaponCount;
return true;
}
bool CWorldWeapon::Fire()
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ı<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if (Siege::KARTERANT_WEAPON == m_wObjectType)
{
CSiegeObjectMgr::GetInstance().UpdateWorldWeaponInfo(Creature::KARTERANT, Siege::WEAPON_REBUILD_SIEGE_TIME_COUNT);
}
else if (Siege::MERKADIA_WEAPON == m_wObjectType)
{
CSiegeObjectMgr::GetInstance().UpdateWorldWeaponInfo(Creature::MERKADIA, Siege::WEAPON_REBUILD_SIEGE_TIME_COUNT);
}
// DB <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>߻<EFBFBD> <20>Ϸ<EFBFBD>, <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>)
// <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD>
GET_SINGLE_DISPATCH(lpDBAgentDispatch, CDBAgentDispatch, CDBAgentDispatch::GetDispatchTable());
if (NULL != lpDBAgentDispatch)
{
GameClientSendPacket::SendCharCampCmdToDBAgent(lpDBAgentDispatch->GetSendStream(), 0, GetCampID(),
0, 0, PktCampCmd::WORLDWEAPON_FIRE_COMPLETE, PktBase::NO_SERVER_ERR);
}
// <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>Ʈ ó<><C3B3> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
PktCampCmd pktCampCmd;
pktCampCmd.m_dwCID = m_dwCID;
pktCampCmd.m_dwCampID = GetCampID();
pktCampCmd.m_cState = GetState();
pktCampCmd.m_dwValue1 = m_iFireX;
pktCampCmd.m_dwValue2 = m_iFireZ;
pktCampCmd.m_cSubCmd = PktCampCmd::WORLDWEAPON_FIRE_COMPLETE;
char* szPacket = reinterpret_cast<char *>(&pktCampCmd);
if (PacketWrap::WrapCrypt(szPacket, sizeof(PktCampCmd), CmdCampCmd, 0, 0))
{
CCreatureManager::GetInstance().SendAllCharacter(szPacket, sizeof(PktCampCmd), CmdCampCmd);
}
// <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
CCreatureManager::GetInstance().ProcessWorldWeaponDamage(m_iFireX, m_iFireZ, m_cUpgradeStep);
// <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>æƮ <20><><EFBFBD><EFBFBD>
CCreatureManager::GetInstance().ClearWorldWeaponEnchant();
return true;
}