#define SPELL_KARIN ((unsigned short) (0x0001))
#define SPELL_AL ((unsigned short) (0x0002))
#define SPELL_ARIS ((unsigned short) (0x0004))
#define SPELL_SARAH ((unsigned short) (0x0008))
#define SPELL_RADITSU ((unsigned short) (0x0010))
#define SPELL_SOPHIA ((unsigned short) (0x0020))
#define SPELL_RURU ((unsigned short) (0x0040))
#define SPELL_SON ((unsigned short) (0x0080))
#define SPELL_ENEMY ((unsigned short) (0x0100))
// 공격 대상
enum MagicTarget {
MagicTargetEnemy=0, // 적에게 적용
MagicTargetTeam, // 같은 팀
MagicTargetAll // 사일런스와 같은 마법
};
// 공격 범위
enum MagicRangeType {
MagicRangeTypeSingle=0, // 단일 타겟
MagicRangeTypeLevel, // 레벨에 따라 범위 증가
MagicRangeTypeLine, // 일직선
MagicRangeTypeCenter, // 전체마법 (자신을 중심으로)
MagicRangeTypeAll // 사일런스와 같은 모든 케릭터를 타겟
};
#pragma pack(1)
typedef struct _FT2MAGIC
{
char Name[20]; // 마법 명칭
unsigned short Level; // 사용 레벨
short Mp; // 소모 MP
// 속성 (음수는 반대속성)
short Fire;
short Wind;
short Light;
// 마법 범위
unsigned short MinRange; // 최소 마법 범위
// (0: 자신, 1: 자기 제외, 2: 자기로부터 한칸 ...)
unsigned short MaxRange; // 최대 범위 (중심기준 공격인 경우 피해범위가 됨)
// 마법 이펙트 관련
char EffectName[12]; // 이펙트 명칭(APD 파일)
unsigned short EffectSound; // 이펙트 소리 번호
unsigned short Target; // 0:적, 1:아군, 2:전체
unsigned short RangeType; // MagicRangeType 참고
unsigned short SpellUser; // 스펠 사용자
char Description[10]; // 마법 설명
} FT2MAGIC, *PFT2MAGIC;
#pragma pack()
※ 주의 : 전체마법과 같은 초기 특수효과가 들어가는 마법은 충돌이 있음