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>
162 lines
4.6 KiB
C++
162 lines
4.6 KiB
C++
#ifndef _SKILL_STRUCTURE_H_
|
|
#define _SKILL_STRUCTURE_H_
|
|
|
|
#pragma once
|
|
|
|
#include "../Utility/TypeArray.h"
|
|
#include "../Item/ItemStructure.h"
|
|
|
|
#pragma pack(8)
|
|
|
|
namespace Skill
|
|
{
|
|
enum { SkillMask = 0x8000 };
|
|
|
|
namespace Type
|
|
{
|
|
enum Type
|
|
{
|
|
NONE = 0,
|
|
PASSIVE = 1,
|
|
INSTANCE = 2,
|
|
CAST = 3,
|
|
CHANT = 4,
|
|
ENCHANT = 5,
|
|
MAX_SKILL_TYPE = 6
|
|
};
|
|
|
|
extern const CTypeName SkillTypes[MAX_SKILL_TYPE];
|
|
};
|
|
|
|
namespace UseLimit
|
|
{
|
|
enum Type
|
|
{
|
|
NONE = 0,
|
|
|
|
// 인간
|
|
FOR_FIGHTER = 1, // 스탶 대거 맨손 활 석궁 사용불가
|
|
WITH_SHIELD = 2, // 방패착용 : 방패가 없으면 사용할 수 없다.
|
|
FOR_FIGHTER_TWOHANDED = 3, // 양손무기착용(스탶제외) : 양손무기 착용시에만 사용이 가능하다. 스태프일 경우에는 사용이 불가능하다.
|
|
FOR_ALL_ONEHAND = 4, // 한손무기착용 : 양손무기나 맨손으로는 사용이 불가능하다. 대거 제외
|
|
WITH_DAGGER = 5, // 대거착용 : 대거 착용시에만 사용이 가능하다.
|
|
WITH_THROWING_DAGGER = 6, // 쓰로잉대거소모 : 인벤토리에 쓰로잉 대거가 남아있을 때에만 사용이 가능하다. (손에 장착되어 있을 필요는 없다.)
|
|
RANGED = 7, // 활/석궁장착,화살소모 : 활이나 석궁이 장착되어 있고 인벤토리에 화살이 남아있을 때에만 사용이 가능하다.
|
|
|
|
// 아칸
|
|
LEFT_ARM = 8, // 왼팔장착 : 왼팔을 장착하고 있어야지만 사용이 가능하다.
|
|
GUARD_ARM = 9, // 가드암장착 : 방어용의 암을 장착하고 있어야지만 사용이 가능하다.
|
|
WITH_WEAPON = 10, // 무기장착 : 오른손이 맨손일 때에는 사용이 불가능하다.
|
|
ATTACK_ARM = 11, // 어택암장착 : 공격용의 암을 장착하고 있어야지만 사용이 가능하다.
|
|
GUN_ARM = 12, // 건암장착 탄약소모 : 장거리용의 암을 장착하고 탄약을 가지고 있어야지만 사용이 가능하다.
|
|
KNIFE_ARM = 13, // 나이프암장착 : 나이프형의 암을 장착하고 있어야지만 사용이 가능하다.
|
|
WITH_CLOW = 14, // 클로우장착 : 클로우 착용시에만 사용이 가능하다.
|
|
|
|
MAX_USE_LIMIT = 15
|
|
};
|
|
|
|
extern const CTypeName UseLimits[MAX_USE_LIMIT];
|
|
};
|
|
|
|
namespace StatusLimit // 아이템 제한
|
|
{
|
|
enum Type
|
|
{
|
|
NONE = 0, // 제한 없음
|
|
STR = 1, // STR이 일정 이상 필요
|
|
DEX = 2, // DEX가 일정 이상 필요
|
|
CON = 3, // CON이 일정 이상 필요
|
|
INT = 4, // INT가 일정 이상 필요
|
|
WIS = 5, // WIS가 일정 이상 필요
|
|
MAX_STATUS_LIMIT = 6
|
|
};
|
|
|
|
extern const CTypeName StatusLimits[MAX_STATUS_LIMIT];
|
|
};
|
|
|
|
namespace Target
|
|
{
|
|
enum Type
|
|
{
|
|
NONE = 0,
|
|
MELEE = 1,
|
|
FRIEND = 2,
|
|
ENEMY = 3,
|
|
DEAD_FRIEND = 4,
|
|
DEAD_ENEMY = 5,
|
|
FRIEND_OBJECT = 6,
|
|
ENEMY_OBJECT = 7,
|
|
PARTY = 8,
|
|
FRIEND_EXCEPT_SELF = 9,
|
|
LINE_ENEMY = 10,
|
|
MAX_TARGET_TYPE = 11
|
|
};
|
|
|
|
extern const CTypeName TargetTypes[MAX_TARGET_TYPE];
|
|
};
|
|
|
|
|
|
struct ProtoType
|
|
{
|
|
enum { MAX_LIMIT_NUM = 2, MAX_FILE_NAME = 32, MAX_SKILL_NAME = 32 };
|
|
|
|
//-----------------------------------
|
|
|
|
char m_szEffectFileName[MAX_FILE_NAME];
|
|
char m_szHitFileName[MAX_FILE_NAME];
|
|
char m_szCastingFileName[MAX_FILE_NAME];
|
|
Item::SpriteData m_SpriteInfo;
|
|
|
|
//-----------------------------------
|
|
|
|
Type::Type m_eSkillType; // See Namespace Type
|
|
Target::Type m_eTargetType; // See Namespace Target
|
|
UseLimit::Type m_eUseLimit; // See Namespace UseLimit
|
|
|
|
unsigned char m_StatusLimitType[MAX_LIMIT_NUM];
|
|
char m_StatusLimitValue[MAX_LIMIT_NUM];
|
|
|
|
//-----------------------------------
|
|
|
|
unsigned short m_usSkill_ID;
|
|
unsigned short m_StartMP;
|
|
unsigned short m_LevelMP;
|
|
unsigned short m_StartTick;
|
|
|
|
//-----------------------------------
|
|
|
|
unsigned short m_LevelTick;
|
|
unsigned short m_usCoolDownTime;
|
|
|
|
//-----------------------------------
|
|
|
|
float m_EffectDistance;
|
|
float m_EffectExtent;
|
|
|
|
//-----------------------------------
|
|
|
|
bool m_bProtection;
|
|
bool m_bGauge;
|
|
bool m_bIsClassSkill;
|
|
bool m_bInterrupt;
|
|
unsigned char m_cEndScript;
|
|
unsigned char m_cEndCoolDown;
|
|
unsigned char m_cMinRange;
|
|
unsigned char m_cMaxRange;
|
|
|
|
//-----------------------------------
|
|
|
|
unsigned char m_cStrikeNum;
|
|
unsigned char m_cSpell_LockCount;
|
|
unsigned char m_cPadding[6];
|
|
|
|
//-----------------------------------
|
|
|
|
ProtoType();
|
|
void Initialize();
|
|
};
|
|
}
|
|
|
|
#pragma pack()
|
|
|
|
#endif |