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>
87 lines
3.1 KiB
C++
87 lines
3.1 KiB
C++
#include "stdafx.h"
|
|
#include <algorithm>
|
|
#include "SkillStructure.h"
|
|
|
|
|
|
const CTypeName Skill::Type::SkillTypes[MAX_SKILL_TYPE] =
|
|
{
|
|
CTypeName(Skill::Type::NONE, "NONE"),
|
|
CTypeName(Skill::Type::PASSIVE, "PASSIVE"),
|
|
CTypeName(Skill::Type::INSTANCE, "INSTANCE"),
|
|
CTypeName(Skill::Type::CAST, "CAST"),
|
|
CTypeName(Skill::Type::CHANT, "CHANT"),
|
|
CTypeName(Skill::Type::ENCHANT, "ENCHANT")
|
|
};
|
|
|
|
|
|
const CTypeName Skill::UseLimit::UseLimits[MAX_USE_LIMIT] =
|
|
{
|
|
CTypeName(Skill::UseLimit::NONE, "NONE"),
|
|
CTypeName(Skill::UseLimit::FOR_FIGHTER, "FORFIGHTER"),
|
|
CTypeName(Skill::UseLimit::WITH_SHIELD, "WITHSHIELD"),
|
|
CTypeName(Skill::UseLimit::FOR_FIGHTER_TWOHANDED, "FORFIGHTERTWOHAND"),
|
|
CTypeName(Skill::UseLimit::FOR_ALL_ONEHAND, "FORALLONEHAND"),
|
|
CTypeName(Skill::UseLimit::WITH_DAGGER, "WITHDAGGER"),
|
|
CTypeName(Skill::UseLimit::WITH_THROWING_DAGGER, "WITHTHROWINGDAGGER"),
|
|
CTypeName(Skill::UseLimit::RANGED, "RANGED"),
|
|
CTypeName(Skill::UseLimit::LEFT_ARM, "LEFTARM"),
|
|
CTypeName(Skill::UseLimit::GUARD_ARM, "GUARDARM"),
|
|
CTypeName(Skill::UseLimit::WITH_WEAPON, "WITHWEAPON"),
|
|
CTypeName(Skill::UseLimit::ATTACK_ARM, "ATTACKARM"),
|
|
CTypeName(Skill::UseLimit::GUN_ARM, "GUNARM"),
|
|
CTypeName(Skill::UseLimit::KNIFE_ARM, "KNIFEARM"),
|
|
CTypeName(Skill::UseLimit::WITH_CLOW, "WITHCLOW")
|
|
};
|
|
|
|
|
|
const CTypeName Skill::StatusLimit::StatusLimits[MAX_STATUS_LIMIT] =
|
|
{
|
|
CTypeName(Skill::StatusLimit::NONE, "NONE"),
|
|
CTypeName(Skill::StatusLimit::STR, "STR"),
|
|
CTypeName(Skill::StatusLimit::DEX, "DEX"),
|
|
CTypeName(Skill::StatusLimit::CON, "CON"),
|
|
CTypeName(Skill::StatusLimit::INT, "INT"),
|
|
CTypeName(Skill::StatusLimit::WIS, "WIS")
|
|
};
|
|
|
|
|
|
const CTypeName Skill::Target::TargetTypes[MAX_TARGET_TYPE] =
|
|
{
|
|
CTypeName(Skill::Target::NONE, "NONE"),
|
|
CTypeName(Skill::Target::MELEE, "MELEE"),
|
|
CTypeName(Skill::Target::FRIEND, "FRIEND"),
|
|
CTypeName(Skill::Target::ENEMY, "ENEMY"),
|
|
CTypeName(Skill::Target::DEAD_FRIEND, "FRDEAD"),
|
|
CTypeName(Skill::Target::DEAD_ENEMY, "ENDEAD"),
|
|
CTypeName(Skill::Target::FRIEND_OBJECT, "FROBJ"),
|
|
CTypeName(Skill::Target::ENEMY_OBJECT, "ENOBJ"),
|
|
CTypeName(Skill::Target::PARTY, "PARTY"),
|
|
CTypeName(Skill::Target::FRIEND_EXCEPT_SELF, "FREXME"),
|
|
CTypeName(Skill::Target::LINE_ENEMY, "ENLINE")
|
|
};
|
|
|
|
|
|
Skill::ProtoType::ProtoType() { Initialize(); }
|
|
|
|
void Skill::ProtoType::Initialize()
|
|
{
|
|
m_eSkillType = Type::NONE;
|
|
m_eUseLimit = UseLimit::NONE;
|
|
m_eTargetType = Target::NONE;
|
|
|
|
m_EffectDistance = m_EffectExtent = 0.0f;
|
|
|
|
m_bInterrupt = m_bProtection = m_bGauge = m_bIsClassSkill = false;
|
|
m_cStrikeNum = m_cSpell_LockCount = m_cEndScript = m_cEndCoolDown = m_cMinRange = m_cMaxRange = 0;
|
|
m_usSkill_ID = m_StartMP = m_LevelMP = m_StartTick = m_LevelTick = m_usCoolDownTime = 0;
|
|
|
|
m_SpriteInfo.Initialize();
|
|
|
|
std::fill_n(&m_StatusLimitType[0], int(MAX_LIMIT_NUM), 0);
|
|
std::fill_n(&m_StatusLimitValue[0], int(MAX_LIMIT_NUM), 0);
|
|
|
|
std::fill_n(&m_szEffectFileName[0], int(MAX_FILE_NAME), 0);
|
|
std::fill_n(&m_szHitFileName[0], int(MAX_FILE_NAME), 0);
|
|
std::fill_n(&m_szCastingFileName[0], int(MAX_FILE_NAME), 0);
|
|
}
|