2241 lines
53 KiB
C++
2241 lines
53 KiB
C++
// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
|
|
// For more information, see LICENCE in the main folder
|
|
|
|
#ifndef SKILL_HPP
|
|
#define SKILL_HPP
|
|
|
|
#include "../common/cbasetypes.hpp"
|
|
#include "../common/db.hpp"
|
|
#include "../common/mmo.hpp" // MAX_SKILL, struct square
|
|
#include "../common/timer.hpp"
|
|
|
|
#include "map.hpp" // struct block_list
|
|
|
|
enum damage_lv : uint8;
|
|
enum sc_type : int16;
|
|
enum send_target : uint8;
|
|
enum e_damage_type : uint8;
|
|
struct map_session_data;
|
|
struct homun_data;
|
|
struct skill_unit;
|
|
struct skill_unit_group;
|
|
struct status_change_entry;
|
|
|
|
#define MAX_SKILL_PRODUCE_DB 280 /// Max Produce DB
|
|
#define MAX_PRODUCE_RESOURCE 12 /// Max Produce requirements
|
|
#define MAX_SKILL_ARROW_DB 150 /// Max Arrow Creation DB
|
|
#define MAX_ARROW_RESULT 5 /// Max Arrow results/created
|
|
#define MAX_SKILL_ABRA_DB 160 /// Max Skill list of Abracadabra DB
|
|
#define MAX_SKILL_IMPROVISE_DB 30 /// Max Skill for Improvise
|
|
#define MAX_SKILL_LEVEL 13 /// Max Skill Level (for skill_db storage)
|
|
#define MAX_MOBSKILL_LEVEL 100 /// Max monster skill level (on skill usage)
|
|
#define MAX_SKILL_CRIMSON_MARKER 3 /// Max Crimson Marker targets (RL_C_MARKER)
|
|
#define SKILL_NAME_LENGTH 31 /// Max Skill Name length
|
|
#define SKILL_DESC_LENGTH 31 /// Max Skill Desc length
|
|
|
|
extern DBMap* skilldb_name2id;
|
|
|
|
/// Constants to identify a skill's nk value (damage properties)
|
|
/// The NK value applies only to non INF_GROUND_SKILL skills
|
|
/// when determining skill castend function to invoke.
|
|
enum e_skill_nk : uint16 {
|
|
NK_NO_DAMAGE = 0x01,
|
|
NK_SPLASH = 0x02|0x04, // 0x4 = splash & split
|
|
NK_SPLASHSPLIT = 0x04,
|
|
NK_NO_CARDFIX_ATK = 0x08,
|
|
NK_NO_ELEFIX = 0x10,
|
|
NK_IGNORE_DEF = 0x20,
|
|
NK_IGNORE_FLEE = 0x40,
|
|
NK_NO_CARDFIX_DEF = 0x80,
|
|
NK_CRITICAL = 0x100,
|
|
};
|
|
|
|
/// Constants to identify the skill's inf value:
|
|
enum e_skill_inf {
|
|
INF_ATTACK_SKILL = 0x01,
|
|
INF_GROUND_SKILL = 0x02,
|
|
INF_SELF_SKILL = 0x04, // Skills casted on self where target is automatically chosen
|
|
// 0x08 not assigned
|
|
INF_SUPPORT_SKILL = 0x10,
|
|
INF_TARGET_TRAP = 0x20,
|
|
};
|
|
|
|
/// A skill with 3 would be no damage + splash: area of effect.
|
|
/// Constants to identify a skill's inf2 value.
|
|
enum e_skill_inf2 {
|
|
INF2_QUEST_SKILL = 0x00001,
|
|
INF2_NPC_SKILL = 0x00002, //NPC skills are those that players can't have in their skill tree.
|
|
INF2_WEDDING_SKILL = 0x00004,
|
|
INF2_SPIRIT_SKILL = 0x00008,
|
|
INF2_GUILD_SKILL = 0x00010,
|
|
INF2_SONG_DANCE = 0x00020,
|
|
INF2_ENSEMBLE_SKILL = 0x00040,
|
|
INF2_TRAP = 0x00080,
|
|
INF2_TARGET_SELF = 0x00100, //Refers to ground placed skills that will target the caster as well (like Grandcross)
|
|
INF2_NO_TARGET_SELF = 0x00200,
|
|
INF2_PARTY_ONLY = 0x00400,
|
|
INF2_GUILD_ONLY = 0x00800,
|
|
INF2_NO_ENEMY = 0x01000,
|
|
INF2_AUTOSHADOWSPELL = 0x02000, // Skill that available for SC_AUTOSHADOWSPELL
|
|
INF2_CHORUS_SKILL = 0x04000, // Chorus skill
|
|
INF2_NO_BG_DMG = 0x08000, // Skill that ignore bg reduction
|
|
INF2_NO_GVG_DMG = 0x10000, // Skill that ignore gvg reduction
|
|
INF2_NO_NEARNPC = 0x20000, // disable to cast skill if near with NPC [Cydh]
|
|
INF2_HIT_TRAP = 0x40000, // can hit trap-type skill (INF2_TRAP) [Cydh]
|
|
};
|
|
|
|
/// Skill info type 3
|
|
enum e_skill_inf3 {
|
|
INF3_NOLP = 0x000001, // Skill that can ignore Land Protector
|
|
INF3_FREE = 0x000002, // Free
|
|
INF3_USABLE_HIDING = 0x000004, // Skill that can be use in hiding
|
|
INF3_USABLE_DANCE = 0x000008, // Skill that can be use while in dancing state
|
|
INF3_HIT_EMP = 0x000010, // Skill that could hit emperium
|
|
INF3_STASIS_BL = 0x000020, // Skill that can ignore SC_STASIS
|
|
INF3_KAGEHUMI_BL = 0x000040, // Skill blocked by kagehumi
|
|
INF3_EFF_VULTURE = 0x000080, // Skill range affected by AC_VULTURE
|
|
INF3_EFF_SNAKEEYE = 0x000100, // Skill range affected by GS_SNAKEEYE
|
|
INF3_EFF_SHADOWJUMP = 0x000200, // Skill range affected by NJ_SHADOWJUMP
|
|
INF3_EFF_RADIUS = 0x000400, // Skill range affected by WL_RADIUS
|
|
INF3_EFF_RESEARCHTRAP = 0x000800, // Skill range affected by RA_RESEARCHTRAP
|
|
INF3_NO_EFF_HOVERING = 0x001000, // Skill that does not affect user that has SC_HOVERING active
|
|
INF3_USABLE_WARG = 0x002000, // Skill that can be use while riding warg
|
|
INF3_USABLE_MADO = 0x004000, // Skill that can be used while on Madogear
|
|
INF3_USABLE_MANHOLE = 0x008000, // Skill that can be used to target while under SC__MANHOLE effect
|
|
INF3_HIT_HIDING = 0x010000, // Skill that affects hidden targets
|
|
INF3_SC_GLOOMYDAY_SK = 0x020000, // Skill that affects SC_GLOOMYDAY_SK
|
|
INF3_SC_DANCEWITHWUG = 0x040000, // Skill that is affected by SC_DANCEWITHWUG
|
|
INF3_BITE_BLOCK = 0x080000, // Skill blocked by RA_WUGBITE
|
|
INF3_NO_EFF_AUTOGUARD = 0x100000, // Skill is not blocked by SC_AUTOGUARD (physical-skill only)
|
|
INF3_NO_EFF_CICADA = 0x200000, // Skill is not blocked by SC_UTSUSEMI or SC_BUNSINJYUTSU (physical-skill only)
|
|
};
|
|
|
|
/// Walk intervals at which chase-skills are attempted to be triggered.
|
|
/// If you change this, make sure it's an odd value (for icewall block behavior).
|
|
#define WALK_SKILL_INTERVAL 5
|
|
|
|
/// Time that's added to canact delay on castbegin and substracted on castend
|
|
/// This is to prevent hackers from sending a skill packet after cast but before a timer triggers castend
|
|
const t_tick SECURITY_CASTTIME = 100;
|
|
|
|
/// Flags passed to skill_attack/skill_area_sub
|
|
enum e_skill_display {
|
|
SD_LEVEL = 0x1000, // skill_attack will send -1 instead of skill level (affects display of some skills)
|
|
SD_ANIMATION = 0x2000, // skill_attack will use '5' instead of the skill's 'type' (this makes skills show an animation). Also being used in skill_attack for splash skill (NK_SPLASH) to check status_check_skilluse
|
|
SD_SPLASH = 0x4000, // skill_area_sub will count targets in skill_area_temp[2]
|
|
SD_PREAMBLE = 0x8000, // skill_area_sub will transmit a 'magic' damage packet (-30000 dmg) for the first target selected
|
|
};
|
|
|
|
#define MAX_SKILL_ITEM_REQUIRE 10 /// Maximum required items
|
|
#define MAX_SKILL_STATUS_REQUIRE 3 /// Maximum required statuses
|
|
#define MAX_SKILL_EQUIP_REQUIRE 10 /// Maximum required equipped item
|
|
|
|
/// Single skill requirement. !TODO: Cleanup the variable types
|
|
struct skill_condition {
|
|
int32 hp; ///< HP cost
|
|
int32 mhp; ///< Max HP to trigger
|
|
int32 sp; /// SP cost
|
|
int16 hp_rate; /// HP cost (%)
|
|
int16 sp_rate; /// SP cost (%)
|
|
uint32 zeny; /// Zeny cost
|
|
uint32 weapon; /// Weapon type. Combined bitmask of enum weapon_type (1<<weapon)
|
|
uint16 ammo; /// Ammo type. Combine bitmask of enum ammo_type (1<<ammo)
|
|
int8 ammo_qty; /// Amount of ammo
|
|
uint8 state; /// State/condition. @see enum e_require_state
|
|
int8 spiritball; /// Spiritball cost
|
|
uint16 itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item
|
|
uint16 amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item
|
|
uint16 *eqItem; /// List of equipped item
|
|
enum sc_type *status; /// List of Status required (SC)
|
|
uint8 status_count, /// Count of SC
|
|
eqItem_count; /// Count of equipped item
|
|
};
|
|
|
|
/// Skill requirement structure. !TODO: Cleanup the variable types that use array [MAX_SKILL_LEVEL]
|
|
struct s_skill_require {
|
|
int hp[MAX_SKILL_LEVEL]; ///< HP cost
|
|
int mhp[MAX_SKILL_LEVEL]; ///< Max HP to trigger
|
|
int sp[MAX_SKILL_LEVEL]; /// SP cost
|
|
int hp_rate[MAX_SKILL_LEVEL]; /// HP cost (%)
|
|
int sp_rate[MAX_SKILL_LEVEL]; /// SP cost (%)
|
|
int zeny[MAX_SKILL_LEVEL]; /// Zeny cost
|
|
uint32 weapon; /// Weapon type. Combined bitmask of enum weapon_type (1<<weapon)
|
|
uint16 ammo; /// Ammo type. Combine bitmask of enum ammo_type (1<<ammo)
|
|
int ammo_qty[MAX_SKILL_LEVEL]; /// Amount of ammo
|
|
uint8 state; /// State/condition. @see enum e_require_state
|
|
int spiritball[MAX_SKILL_LEVEL]; /// Spiritball cost
|
|
uint16 itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item
|
|
uint16 amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item
|
|
uint16 *eqItem; /// List of equipped item
|
|
enum sc_type *status; /// List of Status required (SC)
|
|
uint8 status_count, /// Count of SC
|
|
eqItem_count; /// Count of equipped item
|
|
};
|
|
|
|
/// Database skills. !TODO: Cleanup the variable types that use array [MAX_SKILL_LEVEL]
|
|
struct s_skill_db {
|
|
// skill_db.txt
|
|
uint16 nameid; ///< Skill ID
|
|
char name[SKILL_NAME_LENGTH]; ///< AEGIS_Name
|
|
char desc[SKILL_DESC_LENGTH]; ///< English Name
|
|
int range[MAX_SKILL_LEVEL]; ///< Range
|
|
int8 hit; ///< Hit type
|
|
uint8 inf; ///< Inf: 0- passive, 1- enemy, 2- place, 4- self, 16- friend, 32- trap
|
|
int element[MAX_SKILL_LEVEL]; ///< Element
|
|
uint16 nk; ///< Damage properties
|
|
int splash[MAX_SKILL_LEVEL]; ///< Splash effect
|
|
uint8 max; ///< Max level
|
|
int num[MAX_SKILL_LEVEL]; ///< Number of hit
|
|
bool castcancel; ///< Cancel cast when being hit
|
|
int16 cast_def_rate; ///< Def rate during cast a skill
|
|
uint16 skill_type; ///< Skill type
|
|
int blewcount[MAX_SKILL_LEVEL]; ///< Blew count
|
|
uint32 inf2; ///< Skill flags @see enum e_skill_inf2
|
|
uint32 inf3; ///< Skill flags @see enum e_skill_inf3
|
|
int maxcount[MAX_SKILL_LEVEL]; ///< Max number skill can be casted in same map
|
|
|
|
// skill_castnodex_db.txt
|
|
uint8 castnodex; ///< 1 - Not affected by dex, 2 - Not affected by SC, 4 - Not affected by item
|
|
uint8 delaynodex; ///< 1 - Not affected by dex, 2 - Not affected by SC, 4 - Not affected by item
|
|
|
|
// skill_nocast_db.txt
|
|
uint32 nocast; ///< Skill cannot be casted at this zone
|
|
|
|
// skill_unit_db.txt
|
|
uint16 unit_id[2]; ///< Unit ID. @see enum s_skill_unit_id
|
|
int unit_layout_type[MAX_SKILL_LEVEL]; ///< Layout type. -1 is special layout, others are square with lenght*width: (val*2+1)^2
|
|
int unit_range[MAX_SKILL_LEVEL]; ///< Unit cell effect range
|
|
int16 unit_interval; ///< Interval
|
|
uint32 unit_target; ///< Unit target. @see enum e_battle_check_target
|
|
uint32 unit_flag; ///< Unit flags. @see enum e_skill_unit_flag
|
|
|
|
// skill_cast_db.txt
|
|
int cast[MAX_SKILL_LEVEL]; ///< Variable casttime
|
|
#ifdef RENEWAL_CAST
|
|
int fixed_cast[MAX_SKILL_LEVEL]; ///< If -1 means 20% than 'cast'
|
|
#endif
|
|
int walkdelay[MAX_SKILL_LEVEL]; ///< Delay to walk after casting
|
|
int delay[MAX_SKILL_LEVEL]; ///< Global delay (delay before reusing all skills)
|
|
int cooldown[MAX_SKILL_LEVEL]; ///< Cooldown (delay before reusing same skill)
|
|
int upkeep_time[MAX_SKILL_LEVEL]; ///< Duration
|
|
int upkeep_time2[MAX_SKILL_LEVEL]; ///< Duration2
|
|
|
|
// skill_require_db.txt
|
|
struct s_skill_require require; ///< Skill requirement
|
|
|
|
// skill_nonearnpc_db.txt
|
|
uint8 unit_nonearnpc_range; //additional range for UF_NONEARNPC or INF2_NO_NEARNPC [Cydh]
|
|
uint8 unit_nonearnpc_type; //type of NPC [Cydh]
|
|
|
|
// skill_damage_db.txt
|
|
struct s_skill_damage damage;
|
|
|
|
// skill_copyable_db.txt
|
|
struct s_copyable { // [Cydh]
|
|
uint8 option;
|
|
uint16 joballowed, req_opt;
|
|
} copyable;
|
|
};
|
|
extern struct s_skill_db **skill_db;
|
|
|
|
#define MAX_SQUARE_LAYOUT 7 // 15*15 unit placement maximum
|
|
#define MAX_SKILL_UNIT_LAYOUT (48+MAX_SQUARE_LAYOUT) // 47 special ones + the square ones
|
|
#define MAX_SKILL_UNIT_LAYOUT2 17
|
|
#define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1))
|
|
struct s_skill_unit_layout {
|
|
int count;
|
|
int dx[MAX_SKILL_UNIT_COUNT];
|
|
int dy[MAX_SKILL_UNIT_COUNT];
|
|
};
|
|
|
|
struct s_skill_nounit_layout {
|
|
int count;
|
|
int dx[MAX_SKILL_UNIT_COUNT];
|
|
int dy[MAX_SKILL_UNIT_COUNT];
|
|
};
|
|
|
|
#define MAX_SKILLTIMERSKILL 50
|
|
struct skill_timerskill {
|
|
int timer;
|
|
int src_id;
|
|
int target_id;
|
|
int map;
|
|
short x,y;
|
|
uint16 skill_id,skill_lv;
|
|
int type; // a BF_ type (NOTE: some places use this as general-purpose storage...)
|
|
int flag;
|
|
};
|
|
|
|
#define MAX_SKILLUNITGROUP 25 /// Maximum skill unit group (for same skill each source)
|
|
/// Skill unit group
|
|
struct skill_unit_group {
|
|
int src_id; /// Caster ID/RID, if player is account_id
|
|
int party_id; /// Party ID
|
|
int guild_id; /// Guild ID
|
|
int bg_id; /// Battleground ID
|
|
int map; /// Map
|
|
int target_flag; /// Holds BCT_* flag for battle_check_target
|
|
int bl_flag; /// Holds BL_* flag for map_foreachin* functions
|
|
t_tick tick; /// Tick when skill unit initialized
|
|
t_tick limit; /// Life time
|
|
int interval; /// Timer interval
|
|
uint16 skill_id, /// Skill ID
|
|
skill_lv; /// Skill level
|
|
int val1, val2, val3; /// Values
|
|
char *valstr; /// String value, used for HT_TALKIEBOX & RG_GRAFFITI
|
|
int unit_id; /// Unit ID (for client effect)
|
|
int group_id; /// Skill Group ID
|
|
int link_group_id; /// Linked group that should be deleted if this one is deleted
|
|
int unit_count, /// Number of unit at this group
|
|
alive_count; /// Number of alive unit
|
|
int item_id; /// Store item used.
|
|
struct skill_unit *unit; /// Skill Unit
|
|
struct {
|
|
unsigned ammo_consume : 1; // Need to consume ammo
|
|
unsigned song_dance : 2; //0x1 Song/Dance, 0x2 Ensemble
|
|
unsigned guildaura : 1; // Guild Aura
|
|
} state;
|
|
};
|
|
|
|
/// Skill unit
|
|
struct skill_unit {
|
|
struct block_list bl;
|
|
struct skill_unit_group *group; /// Skill group reference
|
|
t_tick limit;
|
|
int val1, val2;
|
|
short range;
|
|
unsigned alive : 1;
|
|
unsigned hidden : 1;
|
|
};
|
|
|
|
#define MAX_SKILLUNITGROUPTICKSET 25
|
|
struct skill_unit_group_tickset {
|
|
t_tick tick;
|
|
int id;
|
|
};
|
|
|
|
|
|
enum e_skill_unit_flag {
|
|
UF_DEFNOTENEMY = 0x00001, // If 'defunit_not_enemy' is set, the target is changed to 'friend'
|
|
UF_NOREITERATION = 0x00002, // Spell cannot be stacked
|
|
UF_NOFOOTSET = 0x00004, // Spell cannot be cast near/on targets
|
|
UF_NOOVERLAP = 0x00008, // Spell effects do not overlap
|
|
UF_PATHCHECK = 0x00010, // Only cells with a shootable path will be placed
|
|
UF_NOPC = 0x00020, // May not target players
|
|
UF_NOMOB = 0x00040, // May not target mobs
|
|
UF_SKILL = 0x00080, // May target skills
|
|
UF_DANCE = 0x00100, // Dance
|
|
UF_ENSEMBLE = 0x00200, // Duet
|
|
UF_SONG = 0x00400, // Song
|
|
UF_DUALMODE = 0x00800, // Spells should trigger both ontimer and onplace/onout/onleft effects.
|
|
UF_NOKNOCKBACK = 0x01000, // Skill unit cannot be knocked back
|
|
UF_RANGEDSINGLEUNIT = 0x02000, // hack for ranged layout, only display center
|
|
UF_CRAZYWEED_IMMUNE = 0x04000, // Immune to Crazy Weed removal
|
|
UF_REM_FIRERAIN = 0x08000, // removed by Fire Rain
|
|
UF_KNOCKBACK_GROUP = 0x10000, // knockback skill unit with its group instead of single unit
|
|
UF_HIDDEN_TRAP = 0x20000, // Hidden trap [Cydh]
|
|
};
|
|
|
|
/// Enum for skill_blown
|
|
enum e_skill_blown {
|
|
BLOWN_NONE = 0x00,
|
|
BLOWN_DONT_SEND_PACKET = 0x01, // Position update packets must not be sent to the client
|
|
BLOWN_IGNORE_NO_KNOCKBACK = 0x02, // Ignores players' special_state.no_knockback
|
|
// These flags return 'count' instead of 0 if target is cannot be knocked back
|
|
BLOWN_NO_KNOCKBACK_MAP = 0x04, // On a WoE/BG map
|
|
BLOWN_MD_KNOCKBACK_IMMUNE = 0x08, // If target is MD_KNOCKBACK_IMMUNE
|
|
BLOWN_TARGET_NO_KNOCKBACK = 0x10, // If target has 'special_state.no_knockback'
|
|
BLOWN_TARGET_BASILICA = 0x20, // If target is in Basilica area
|
|
};
|
|
|
|
/// Create Database item
|
|
struct s_skill_produce_db {
|
|
unsigned short nameid; /// Product ID
|
|
unsigned short req_skill; /// Required Skill
|
|
unsigned char req_skill_lv, /// Required Skill Level
|
|
itemlv; /// Item Level
|
|
unsigned short mat_id[MAX_PRODUCE_RESOURCE], /// Materials needed
|
|
mat_amount[MAX_PRODUCE_RESOURCE]; /// Amount of each materials
|
|
};
|
|
extern struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB];
|
|
|
|
/// Creating database arrow
|
|
struct s_skill_arrow_db {
|
|
unsigned short nameid, /// Material ID
|
|
cre_id[MAX_ARROW_RESULT], /// Arrow created
|
|
cre_amount[MAX_ARROW_RESULT]; /// Amount of each arrow created
|
|
};
|
|
extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB];
|
|
|
|
/// Abracadabra database
|
|
struct s_skill_abra_db {
|
|
uint16 skill_id; /// Skill ID
|
|
char name[SKILL_NAME_LENGTH]; /// Shouted skill name
|
|
int per[MAX_SKILL_LEVEL]; /// Probability summoned
|
|
};
|
|
extern struct s_skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB];
|
|
extern unsigned short skill_abra_count;
|
|
|
|
void do_init_skill(void);
|
|
void do_final_skill(void);
|
|
|
|
/// Cast type
|
|
enum { CAST_GROUND, CAST_DAMAGE, CAST_NODAMAGE };
|
|
/// Returns the cast type of the skill: ground cast, castend damage, castend no damage
|
|
int skill_get_casttype(uint16 skill_id); //[Skotlex]
|
|
const char* skill_get_name( uint16 skill_id ); // [Skotlex]
|
|
const char* skill_get_desc( uint16 skill_id ); // [Skotlex]
|
|
int skill_tree_get_max( uint16 skill_id, int b_class ); // Celest
|
|
|
|
// Accessor to the skills database
|
|
int skill_get_index_( uint16 skill_id, bool silent, const char *func, const char *file, int line );
|
|
#define skill_get_index(skill_id) skill_get_index_((skill_id), false, __FUNCTION__, __FILE__, __LINE__) /// Get skill index from skill_id (common usage on source)
|
|
#define skill_get_index2(skill_id) skill_get_index_((skill_id), true, __FUNCTION__, __FILE__, __LINE__) /// Get skill index from skill_id (used when reading skill_db files)
|
|
int skill_get_type( uint16 skill_id );
|
|
enum e_damage_type skill_get_hit( uint16 skill_id );
|
|
int skill_get_inf( uint16 skill_id );
|
|
int skill_get_ele( uint16 skill_id , uint16 skill_lv );
|
|
int skill_get_nk( uint16 skill_id );
|
|
int skill_get_max( uint16 skill_id );
|
|
int skill_get_range( uint16 skill_id , uint16 skill_lv );
|
|
int skill_get_range2(struct block_list *bl, uint16 skill_id, uint16 skill_lv, bool isServer);
|
|
int skill_get_splash( uint16 skill_id , uint16 skill_lv );
|
|
int skill_get_num( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_cast( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_delay( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_walkdelay( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_time( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_time2( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_castnodex( uint16 skill_id );
|
|
int skill_get_castdef( uint16 skill_id );
|
|
int skill_get_nocast( uint16 skill_id );
|
|
int skill_get_unit_id(uint16 skill_id,int flag);
|
|
int skill_get_inf2( uint16 skill_id );
|
|
int skill_get_castcancel( uint16 skill_id );
|
|
int skill_get_maxcount( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_blewcount( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_unit_flag( uint16 skill_id );
|
|
int skill_get_cooldown( uint16 skill_id, uint16 skill_lv );
|
|
int skill_get_unit_target( uint16 skill_id );
|
|
int skill_get_inf3( uint16 skill_id );
|
|
// Accessor for skill requirements
|
|
int skill_get_hp( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_mhp( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_sp( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_status_count( uint16 skill_id );
|
|
int skill_get_hp_rate( uint16 skill_id, uint16 skill_lv );
|
|
int skill_get_sp_rate( uint16 skill_id, uint16 skill_lv );
|
|
int skill_get_zeny( uint16 skill_id ,uint16 skill_lv );
|
|
int skill_get_weapontype( uint16 skill_id );
|
|
int skill_get_ammotype( uint16 skill_id );
|
|
int skill_get_ammo_qty( uint16 skill_id, uint16 skill_lv );
|
|
int skill_get_state(uint16 skill_id);
|
|
//int skill_get_status( uint16 skill_id, int idx );
|
|
int skill_get_status_count( uint16 skill_id );
|
|
int skill_get_spiritball( uint16 skill_id, uint16 skill_lv );
|
|
int skill_get_itemid( uint16 skill_id, int idx );
|
|
int skill_get_itemqty( uint16 skill_id, int idx );
|
|
unsigned short skill_dummy2skill_id(unsigned short skill_id);
|
|
|
|
int skill_name2id(const char* name);
|
|
uint16 skill_idx2id(uint16 idx);
|
|
|
|
uint16 SKILL_MAX_DB(void);
|
|
|
|
int skill_isammotype(struct map_session_data *sd, unsigned short skill_id);
|
|
TIMER_FUNC(skill_castend_id);
|
|
TIMER_FUNC(skill_castend_pos);
|
|
int skill_castend_map( struct map_session_data *sd,uint16 skill_id, const char *map);
|
|
|
|
int skill_cleartimerskill(struct block_list *src);
|
|
int skill_addtimerskill(struct block_list *src,t_tick tick,int target,int x,int y,uint16 skill_id,uint16 skill_lv,int type,int flag);
|
|
|
|
// Results? Added
|
|
int skill_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,enum damage_lv dmg_lv,t_tick tick);
|
|
int skill_counter_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,t_tick tick);
|
|
short skill_blown(struct block_list* src, struct block_list* target, char count, int8 dir, enum e_skill_blown flag);
|
|
int skill_break_equip(struct block_list *src,struct block_list *bl, unsigned short where, int rate, int flag);
|
|
int skill_strip_equip(struct block_list *src,struct block_list *bl, unsigned short where, int rate, int lv, int time);
|
|
// Skills unit
|
|
struct skill_unit_group *skill_id2group(int group_id);
|
|
struct skill_unit_group *skill_unitsetting(struct block_list* src, uint16 skill_id, uint16 skill_lv, int16 x, int16 y, int flag);
|
|
struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2, bool hidden);
|
|
int skill_delunit(struct skill_unit *unit);
|
|
struct skill_unit_group *skill_initunitgroup(struct block_list* src, int count, uint16 skill_id, uint16 skill_lv, int unit_id, t_tick limit, int interval);
|
|
int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int line, const char* func);
|
|
#define skill_delunitgroup(group) skill_delunitgroup_(group,__FILE__,__LINE__,__func__)
|
|
void skill_clear_unitgroup(struct block_list *src);
|
|
int skill_clear_group(struct block_list *bl, int flag);
|
|
void ext_skill_unit_onplace(struct skill_unit *unit, struct block_list *bl, t_tick tick);
|
|
int64 skill_unit_ondamaged(struct skill_unit *unit,int64 damage);
|
|
|
|
// Skill unit visibility [Cydh]
|
|
void skill_getareachar_skillunit_visibilty(struct skill_unit *su, enum send_target target);
|
|
void skill_getareachar_skillunit_visibilty_single(struct skill_unit *su, struct block_list *bl);
|
|
|
|
int skill_castfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv);
|
|
int skill_castfix_sc(struct block_list *bl, double time, uint8 flag);
|
|
#ifdef RENEWAL_CAST
|
|
int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv);
|
|
#endif
|
|
int skill_delayfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv);
|
|
void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id);
|
|
|
|
// Skill conditions check and remove [Inkfish]
|
|
bool skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
|
|
bool skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
|
|
int skill_check_condition_char_sub (struct block_list *bl, va_list ap);
|
|
void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, short type);
|
|
struct skill_condition skill_get_requirement(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);
|
|
int skill_disable_check(struct status_change *sc, uint16 skill_id);
|
|
bool skill_pos_maxcount_check(struct block_list *src, int16 x, int16 y, uint16 skill_id, uint16 skill_lv, enum bl_type type, bool display_failure);
|
|
|
|
int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag);
|
|
int skill_unit_move(struct block_list *bl,t_tick tick,int flag);
|
|
void skill_unit_move_unit_group( struct skill_unit_group *group, int16 m,int16 dx,int16 dy);
|
|
void skill_unit_move_unit(struct block_list *bl, int dx, int dy);
|
|
|
|
int skill_sit(struct map_session_data *sd, bool sitting);
|
|
void skill_repairweapon(struct map_session_data *sd, int idx);
|
|
void skill_identify(struct map_session_data *sd,int idx);
|
|
void skill_weaponrefine(struct map_session_data *sd,int idx); // [Celest]
|
|
int skill_autospell(struct map_session_data *md,uint16 skill_id);
|
|
|
|
int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal);
|
|
|
|
bool skill_check_cloaking(struct block_list *bl, struct status_change_entry *sce);
|
|
|
|
// Abnormal status
|
|
void skill_enchant_elemental_end(struct block_list *bl, int type);
|
|
bool skill_isNotOk(uint16 skill_id, struct map_session_data *sd);
|
|
bool skill_isNotOk_hom(struct homun_data *hd, uint16 skill_id, uint16 skill_lv);
|
|
bool skill_isNotOk_mercenary(uint16 skill_id, struct mercenary_data *md);
|
|
|
|
bool skill_isNotOk_npcRange(struct block_list *src, uint16 skill_id, uint16 skill_lv, int pos_x, int pos_y);
|
|
|
|
// Item creation
|
|
short skill_can_produce_mix( struct map_session_data *sd, unsigned short nameid, int trigger, int qty);
|
|
bool skill_produce_mix( struct map_session_data *sd, uint16 skill_id, unsigned short nameid, int slot1, int slot2, int slot3, int qty, short produce_idx );
|
|
|
|
bool skill_arrow_create( struct map_session_data *sd, unsigned short nameid);
|
|
|
|
// skills for the mob
|
|
int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag );
|
|
int skill_castend_damage_id( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag );
|
|
int skill_castend_pos2( struct block_list *src, int x,int y,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag);
|
|
|
|
int skill_blockpc_start(struct map_session_data*, int, t_tick);
|
|
int skill_blockpc_get(struct map_session_data *sd, int skillid);
|
|
int skill_blockpc_clear(struct map_session_data *sd);
|
|
TIMER_FUNC(skill_blockpc_end);
|
|
int skill_blockhomun_start (struct homun_data*,uint16 skill_id,int);
|
|
int skill_blockmerc_start (struct mercenary_data*,uint16 skill_id,int);
|
|
|
|
|
|
// (Epoque:) To-do: replace this macro with some sort of skill tree check (rather than hard-coded skill names)
|
|
#define skill_ischangesex(id) ( \
|
|
((id) >= BD_ADAPTATION && (id) <= DC_SERVICEFORYOU) || ((id) >= CG_ARROWVULCAN && (id) <= CG_MARIONETTE) || \
|
|
((id) >= CG_LONGINGFREEDOM && (id) <= CG_TAROTCARD) || ((id) >= WA_SWING_DANCE && (id) <= WM_UNLIMITED_HUMMING_VOICE))
|
|
|
|
// Skill action, (return dmg,heal)
|
|
int64 skill_attack( int attack_type, struct block_list* src, struct block_list *dsrc,struct block_list *bl,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag );
|
|
|
|
void skill_reload(void);
|
|
|
|
/// List of State Requirements
|
|
enum e_require_state {
|
|
ST_NONE,
|
|
ST_HIDDEN,
|
|
ST_RIDING,
|
|
ST_FALCON,
|
|
ST_CART,
|
|
ST_SHIELD,
|
|
ST_RECOV_WEIGHT_RATE,
|
|
ST_MOVE_ENABLE,
|
|
ST_WATER,
|
|
ST_RIDINGDRAGON,
|
|
ST_WUG,
|
|
ST_RIDINGWUG,
|
|
ST_MADO,
|
|
ST_ELEMENTALSPIRIT,
|
|
ST_ELEMENTALSPIRIT2,
|
|
ST_PECO,
|
|
};
|
|
|
|
/// List of Skills
|
|
enum e_skill {
|
|
NV_BASIC = 1,
|
|
|
|
SM_SWORD,
|
|
SM_TWOHAND,
|
|
SM_RECOVERY,
|
|
SM_BASH,
|
|
SM_PROVOKE,
|
|
SM_MAGNUM,
|
|
SM_ENDURE,
|
|
|
|
MG_SRECOVERY,
|
|
MG_SIGHT,
|
|
MG_NAPALMBEAT,
|
|
MG_SAFETYWALL,
|
|
MG_SOULSTRIKE,
|
|
MG_COLDBOLT,
|
|
MG_FROSTDIVER,
|
|
MG_STONECURSE,
|
|
MG_FIREBALL,
|
|
MG_FIREWALL,
|
|
MG_FIREBOLT,
|
|
MG_LIGHTNINGBOLT,
|
|
MG_THUNDERSTORM,
|
|
|
|
AL_DP,
|
|
AL_DEMONBANE,
|
|
AL_RUWACH,
|
|
AL_PNEUMA,
|
|
AL_TELEPORT,
|
|
AL_WARP,
|
|
AL_HEAL,
|
|
AL_INCAGI,
|
|
AL_DECAGI,
|
|
AL_HOLYWATER,
|
|
AL_CRUCIS,
|
|
AL_ANGELUS,
|
|
AL_BLESSING,
|
|
AL_CURE,
|
|
|
|
MC_INCCARRY,
|
|
MC_DISCOUNT,
|
|
MC_OVERCHARGE,
|
|
MC_PUSHCART,
|
|
MC_IDENTIFY,
|
|
MC_VENDING,
|
|
MC_MAMMONITE,
|
|
|
|
AC_OWL,
|
|
AC_VULTURE,
|
|
AC_CONCENTRATION,
|
|
AC_DOUBLE,
|
|
AC_SHOWER,
|
|
|
|
TF_DOUBLE,
|
|
TF_MISS,
|
|
TF_STEAL,
|
|
TF_HIDING,
|
|
TF_POISON,
|
|
TF_DETOXIFY,
|
|
|
|
ALL_RESURRECTION,
|
|
|
|
KN_SPEARMASTERY,
|
|
KN_PIERCE,
|
|
KN_BRANDISHSPEAR,
|
|
KN_SPEARSTAB,
|
|
KN_SPEARBOOMERANG,
|
|
KN_TWOHANDQUICKEN,
|
|
KN_AUTOCOUNTER,
|
|
KN_BOWLINGBASH,
|
|
KN_RIDING,
|
|
KN_CAVALIERMASTERY,
|
|
|
|
PR_MACEMASTERY,
|
|
PR_IMPOSITIO,
|
|
PR_SUFFRAGIUM,
|
|
PR_ASPERSIO,
|
|
PR_BENEDICTIO,
|
|
PR_SANCTUARY,
|
|
PR_SLOWPOISON,
|
|
PR_STRECOVERY,
|
|
PR_KYRIE,
|
|
PR_MAGNIFICAT,
|
|
PR_GLORIA,
|
|
PR_LEXDIVINA,
|
|
PR_TURNUNDEAD,
|
|
PR_LEXAETERNA,
|
|
PR_MAGNUS,
|
|
|
|
WZ_FIREPILLAR,
|
|
WZ_SIGHTRASHER,
|
|
WZ_FIREIVY,
|
|
WZ_METEOR,
|
|
WZ_JUPITEL,
|
|
WZ_VERMILION,
|
|
WZ_WATERBALL,
|
|
WZ_ICEWALL,
|
|
WZ_FROSTNOVA,
|
|
WZ_STORMGUST,
|
|
WZ_EARTHSPIKE,
|
|
WZ_HEAVENDRIVE,
|
|
WZ_QUAGMIRE,
|
|
WZ_ESTIMATION,
|
|
|
|
BS_IRON,
|
|
BS_STEEL,
|
|
BS_ENCHANTEDSTONE,
|
|
BS_ORIDEOCON,
|
|
BS_DAGGER,
|
|
BS_SWORD,
|
|
BS_TWOHANDSWORD,
|
|
BS_AXE,
|
|
BS_MACE,
|
|
BS_KNUCKLE,
|
|
BS_SPEAR,
|
|
BS_HILTBINDING,
|
|
BS_FINDINGORE,
|
|
BS_WEAPONRESEARCH,
|
|
BS_REPAIRWEAPON,
|
|
BS_SKINTEMPER,
|
|
BS_HAMMERFALL,
|
|
BS_ADRENALINE,
|
|
BS_WEAPONPERFECT,
|
|
BS_OVERTHRUST,
|
|
BS_MAXIMIZE,
|
|
|
|
HT_SKIDTRAP,
|
|
HT_LANDMINE,
|
|
HT_ANKLESNARE,
|
|
HT_SHOCKWAVE,
|
|
HT_SANDMAN,
|
|
HT_FLASHER,
|
|
HT_FREEZINGTRAP,
|
|
HT_BLASTMINE,
|
|
HT_CLAYMORETRAP,
|
|
HT_REMOVETRAP,
|
|
HT_TALKIEBOX,
|
|
HT_BEASTBANE,
|
|
HT_FALCON,
|
|
HT_STEELCROW,
|
|
HT_BLITZBEAT,
|
|
HT_DETECTING,
|
|
HT_SPRINGTRAP,
|
|
|
|
AS_RIGHT,
|
|
AS_LEFT,
|
|
AS_KATAR,
|
|
AS_CLOAKING,
|
|
AS_SONICBLOW,
|
|
AS_GRIMTOOTH,
|
|
AS_ENCHANTPOISON,
|
|
AS_POISONREACT,
|
|
AS_VENOMDUST,
|
|
AS_SPLASHER,
|
|
|
|
NV_FIRSTAID,
|
|
NV_TRICKDEAD,
|
|
SM_MOVINGRECOVERY,
|
|
SM_FATALBLOW,
|
|
SM_AUTOBERSERK,
|
|
AC_MAKINGARROW,
|
|
AC_CHARGEARROW,
|
|
TF_SPRINKLESAND,
|
|
TF_BACKSLIDING,
|
|
TF_PICKSTONE,
|
|
TF_THROWSTONE,
|
|
MC_CARTREVOLUTION,
|
|
MC_CHANGECART,
|
|
MC_LOUD,
|
|
AL_HOLYLIGHT,
|
|
MG_ENERGYCOAT,
|
|
|
|
NPC_PIERCINGATT,
|
|
NPC_MENTALBREAKER,
|
|
NPC_RANGEATTACK,
|
|
NPC_ATTRICHANGE,
|
|
NPC_CHANGEWATER,
|
|
NPC_CHANGEGROUND,
|
|
NPC_CHANGEFIRE,
|
|
NPC_CHANGEWIND,
|
|
NPC_CHANGEPOISON,
|
|
NPC_CHANGEHOLY,
|
|
NPC_CHANGEDARKNESS,
|
|
NPC_CHANGETELEKINESIS,
|
|
NPC_CRITICALSLASH,
|
|
NPC_COMBOATTACK,
|
|
NPC_GUIDEDATTACK,
|
|
NPC_SELFDESTRUCTION,
|
|
NPC_SPLASHATTACK,
|
|
NPC_SUICIDE,
|
|
NPC_POISON,
|
|
NPC_BLINDATTACK,
|
|
NPC_SILENCEATTACK,
|
|
NPC_STUNATTACK,
|
|
NPC_PETRIFYATTACK,
|
|
NPC_CURSEATTACK,
|
|
NPC_SLEEPATTACK,
|
|
NPC_RANDOMATTACK,
|
|
NPC_WATERATTACK,
|
|
NPC_GROUNDATTACK,
|
|
NPC_FIREATTACK,
|
|
NPC_WINDATTACK,
|
|
NPC_POISONATTACK,
|
|
NPC_HOLYATTACK,
|
|
NPC_DARKNESSATTACK,
|
|
NPC_TELEKINESISATTACK,
|
|
NPC_MAGICALATTACK,
|
|
NPC_METAMORPHOSIS,
|
|
NPC_PROVOCATION,
|
|
NPC_SMOKING,
|
|
NPC_SUMMONSLAVE,
|
|
NPC_EMOTION,
|
|
NPC_TRANSFORMATION,
|
|
NPC_BLOODDRAIN,
|
|
NPC_ENERGYDRAIN,
|
|
NPC_KEEPING,
|
|
NPC_DARKBREATH,
|
|
NPC_DARKBLESSING,
|
|
NPC_BARRIER,
|
|
NPC_DEFENDER,
|
|
NPC_LICK,
|
|
NPC_HALLUCINATION,
|
|
NPC_REBIRTH,
|
|
NPC_SUMMONMONSTER,
|
|
|
|
RG_SNATCHER,
|
|
RG_STEALCOIN,
|
|
RG_BACKSTAP,
|
|
RG_TUNNELDRIVE,
|
|
RG_RAID,
|
|
RG_STRIPWEAPON,
|
|
RG_STRIPSHIELD,
|
|
RG_STRIPARMOR,
|
|
RG_STRIPHELM,
|
|
RG_INTIMIDATE,
|
|
RG_GRAFFITI,
|
|
RG_FLAGGRAFFITI,
|
|
RG_CLEANER,
|
|
RG_GANGSTER,
|
|
RG_COMPULSION,
|
|
RG_PLAGIARISM,
|
|
|
|
AM_AXEMASTERY,
|
|
AM_LEARNINGPOTION,
|
|
AM_PHARMACY,
|
|
AM_DEMONSTRATION,
|
|
AM_ACIDTERROR,
|
|
AM_POTIONPITCHER,
|
|
AM_CANNIBALIZE,
|
|
AM_SPHEREMINE,
|
|
AM_CP_WEAPON,
|
|
AM_CP_SHIELD,
|
|
AM_CP_ARMOR,
|
|
AM_CP_HELM,
|
|
AM_BIOETHICS,
|
|
AM_BIOTECHNOLOGY,
|
|
AM_CREATECREATURE,
|
|
AM_CULTIVATION,
|
|
AM_FLAMECONTROL,
|
|
AM_CALLHOMUN,
|
|
AM_REST,
|
|
AM_DRILLMASTER,
|
|
AM_HEALHOMUN,
|
|
AM_RESURRECTHOMUN,
|
|
|
|
CR_TRUST,
|
|
CR_AUTOGUARD,
|
|
CR_SHIELDCHARGE,
|
|
CR_SHIELDBOOMERANG,
|
|
CR_REFLECTSHIELD,
|
|
CR_HOLYCROSS,
|
|
CR_GRANDCROSS,
|
|
CR_DEVOTION,
|
|
CR_PROVIDENCE,
|
|
CR_DEFENDER,
|
|
CR_SPEARQUICKEN,
|
|
|
|
MO_IRONHAND,
|
|
MO_SPIRITSRECOVERY,
|
|
MO_CALLSPIRITS,
|
|
MO_ABSORBSPIRITS,
|
|
MO_TRIPLEATTACK,
|
|
MO_BODYRELOCATION,
|
|
MO_DODGE,
|
|
MO_INVESTIGATE,
|
|
MO_FINGEROFFENSIVE,
|
|
MO_STEELBODY,
|
|
MO_BLADESTOP,
|
|
MO_EXPLOSIONSPIRITS,
|
|
MO_EXTREMITYFIST,
|
|
MO_CHAINCOMBO,
|
|
MO_COMBOFINISH,
|
|
|
|
SA_ADVANCEDBOOK,
|
|
SA_CASTCANCEL,
|
|
SA_MAGICROD,
|
|
SA_SPELLBREAKER,
|
|
SA_FREECAST,
|
|
SA_AUTOSPELL,
|
|
SA_FLAMELAUNCHER,
|
|
SA_FROSTWEAPON,
|
|
SA_LIGHTNINGLOADER,
|
|
SA_SEISMICWEAPON,
|
|
SA_DRAGONOLOGY,
|
|
SA_VOLCANO,
|
|
SA_DELUGE,
|
|
SA_VIOLENTGALE,
|
|
SA_LANDPROTECTOR,
|
|
SA_DISPELL,
|
|
SA_ABRACADABRA,
|
|
SA_MONOCELL,
|
|
SA_CLASSCHANGE,
|
|
SA_SUMMONMONSTER,
|
|
SA_REVERSEORCISH,
|
|
SA_DEATH,
|
|
SA_FORTUNE,
|
|
SA_TAMINGMONSTER,
|
|
SA_QUESTION,
|
|
SA_GRAVITY,
|
|
SA_LEVELUP,
|
|
SA_INSTANTDEATH,
|
|
SA_FULLRECOVERY,
|
|
SA_COMA,
|
|
|
|
BD_ADAPTATION,
|
|
BD_ENCORE,
|
|
BD_LULLABY,
|
|
BD_RICHMANKIM,
|
|
BD_ETERNALCHAOS,
|
|
BD_DRUMBATTLEFIELD,
|
|
BD_RINGNIBELUNGEN,
|
|
BD_ROKISWEIL,
|
|
BD_INTOABYSS,
|
|
BD_SIEGFRIED,
|
|
BD_RAGNAROK,
|
|
|
|
BA_MUSICALLESSON,
|
|
BA_MUSICALSTRIKE,
|
|
BA_DISSONANCE,
|
|
BA_FROSTJOKER,
|
|
BA_WHISTLE,
|
|
BA_ASSASSINCROSS,
|
|
BA_POEMBRAGI,
|
|
BA_APPLEIDUN,
|
|
|
|
DC_DANCINGLESSON,
|
|
DC_THROWARROW,
|
|
DC_UGLYDANCE,
|
|
DC_SCREAM,
|
|
DC_HUMMING,
|
|
DC_DONTFORGETME,
|
|
DC_FORTUNEKISS,
|
|
DC_SERVICEFORYOU,
|
|
|
|
NPC_RANDOMMOVE,
|
|
NPC_SPEEDUP,
|
|
NPC_REVENGE,
|
|
|
|
WE_MALE,
|
|
WE_FEMALE,
|
|
WE_CALLPARTNER,
|
|
|
|
ITM_TOMAHAWK,
|
|
|
|
NPC_DARKCROSS,
|
|
NPC_GRANDDARKNESS,
|
|
NPC_DARKSTRIKE,
|
|
NPC_DARKTHUNDER,
|
|
NPC_STOP,
|
|
NPC_WEAPONBRAKER,
|
|
NPC_ARMORBRAKE,
|
|
NPC_HELMBRAKE,
|
|
NPC_SHIELDBRAKE,
|
|
NPC_UNDEADATTACK,
|
|
NPC_CHANGEUNDEAD,
|
|
NPC_POWERUP,
|
|
NPC_AGIUP,
|
|
NPC_SIEGEMODE,
|
|
NPC_CALLSLAVE,
|
|
NPC_INVISIBLE,
|
|
NPC_RUN,
|
|
|
|
LK_AURABLADE,
|
|
LK_PARRYING,
|
|
LK_CONCENTRATION,
|
|
LK_TENSIONRELAX,
|
|
LK_BERSERK,
|
|
LK_FURY,
|
|
HP_ASSUMPTIO,
|
|
HP_BASILICA,
|
|
HP_MEDITATIO,
|
|
HW_SOULDRAIN,
|
|
HW_MAGICCRASHER,
|
|
HW_MAGICPOWER,
|
|
PA_PRESSURE,
|
|
PA_SACRIFICE,
|
|
PA_GOSPEL,
|
|
CH_PALMSTRIKE,
|
|
CH_TIGERFIST,
|
|
CH_CHAINCRUSH,
|
|
PF_HPCONVERSION,
|
|
PF_SOULCHANGE,
|
|
PF_SOULBURN,
|
|
ASC_KATAR,
|
|
ASC_HALLUCINATION,
|
|
ASC_EDP,
|
|
ASC_BREAKER,
|
|
SN_SIGHT,
|
|
SN_FALCONASSAULT,
|
|
SN_SHARPSHOOTING,
|
|
SN_WINDWALK,
|
|
WS_MELTDOWN,
|
|
WS_CREATECOIN,
|
|
WS_CREATENUGGET,
|
|
WS_CARTBOOST,
|
|
WS_SYSTEMCREATE,
|
|
ST_CHASEWALK,
|
|
ST_REJECTSWORD,
|
|
ST_STEALBACKPACK,
|
|
CR_ALCHEMY,
|
|
CR_SYNTHESISPOTION,
|
|
CG_ARROWVULCAN,
|
|
CG_MOONLIT,
|
|
CG_MARIONETTE,
|
|
LK_SPIRALPIERCE,
|
|
LK_HEADCRUSH,
|
|
LK_JOINTBEAT,
|
|
HW_NAPALMVULCAN,
|
|
CH_SOULCOLLECT,
|
|
PF_MINDBREAKER,
|
|
PF_MEMORIZE,
|
|
PF_FOGWALL,
|
|
PF_SPIDERWEB,
|
|
ASC_METEORASSAULT,
|
|
ASC_CDP,
|
|
WE_BABY,
|
|
WE_CALLPARENT,
|
|
WE_CALLBABY,
|
|
|
|
TK_RUN,
|
|
TK_READYSTORM,
|
|
TK_STORMKICK,
|
|
TK_READYDOWN,
|
|
TK_DOWNKICK,
|
|
TK_READYTURN,
|
|
TK_TURNKICK,
|
|
TK_READYCOUNTER,
|
|
TK_COUNTER,
|
|
TK_DODGE,
|
|
TK_JUMPKICK,
|
|
TK_HPTIME,
|
|
TK_SPTIME,
|
|
TK_POWER,
|
|
TK_SEVENWIND,
|
|
TK_HIGHJUMP,
|
|
|
|
SG_FEEL,
|
|
SG_SUN_WARM,
|
|
SG_MOON_WARM,
|
|
SG_STAR_WARM,
|
|
SG_SUN_COMFORT,
|
|
SG_MOON_COMFORT,
|
|
SG_STAR_COMFORT,
|
|
SG_HATE,
|
|
SG_SUN_ANGER,
|
|
SG_MOON_ANGER,
|
|
SG_STAR_ANGER,
|
|
SG_SUN_BLESS,
|
|
SG_MOON_BLESS,
|
|
SG_STAR_BLESS,
|
|
SG_DEVIL,
|
|
SG_FRIEND,
|
|
SG_KNOWLEDGE,
|
|
SG_FUSION,
|
|
|
|
SL_ALCHEMIST,
|
|
AM_BERSERKPITCHER,
|
|
SL_MONK,
|
|
SL_STAR,
|
|
SL_SAGE,
|
|
SL_CRUSADER,
|
|
SL_SUPERNOVICE,
|
|
SL_KNIGHT,
|
|
SL_WIZARD,
|
|
SL_PRIEST,
|
|
SL_BARDDANCER,
|
|
SL_ROGUE,
|
|
SL_ASSASIN,
|
|
SL_BLACKSMITH,
|
|
BS_ADRENALINE2,
|
|
SL_HUNTER,
|
|
SL_SOULLINKER,
|
|
SL_KAIZEL,
|
|
SL_KAAHI,
|
|
SL_KAUPE,
|
|
SL_KAITE,
|
|
SL_KAINA,
|
|
SL_STIN,
|
|
SL_STUN,
|
|
SL_SMA,
|
|
SL_SWOO,
|
|
SL_SKE,
|
|
SL_SKA,
|
|
|
|
SM_SELFPROVOKE,
|
|
NPC_EMOTION_ON,
|
|
ST_PRESERVE,
|
|
ST_FULLSTRIP,
|
|
WS_WEAPONREFINE,
|
|
CR_SLIMPITCHER,
|
|
CR_FULLPROTECTION,
|
|
PA_SHIELDCHAIN,
|
|
HP_MANARECHARGE,
|
|
PF_DOUBLECASTING,
|
|
HW_GANBANTEIN,
|
|
HW_GRAVITATION,
|
|
WS_CARTTERMINATION,
|
|
WS_OVERTHRUSTMAX,
|
|
CG_LONGINGFREEDOM,
|
|
CG_HERMODE,
|
|
CG_TAROTCARD,
|
|
CR_ACIDDEMONSTRATION,
|
|
CR_CULTIVATION,
|
|
ITEM_ENCHANTARMS,
|
|
TK_MISSION,
|
|
SL_HIGH,
|
|
KN_ONEHAND,
|
|
AM_TWILIGHT1,
|
|
AM_TWILIGHT2,
|
|
AM_TWILIGHT3,
|
|
HT_POWER,
|
|
|
|
GS_GLITTERING,
|
|
GS_FLING,
|
|
GS_TRIPLEACTION,
|
|
GS_BULLSEYE,
|
|
GS_MADNESSCANCEL,
|
|
GS_ADJUSTMENT,
|
|
GS_INCREASING,
|
|
GS_MAGICALBULLET,
|
|
GS_CRACKER,
|
|
GS_SINGLEACTION,
|
|
GS_SNAKEEYE,
|
|
GS_CHAINACTION,
|
|
GS_TRACKING,
|
|
GS_DISARM,
|
|
GS_PIERCINGSHOT,
|
|
GS_RAPIDSHOWER,
|
|
GS_DESPERADO,
|
|
GS_GATLINGFEVER,
|
|
GS_DUST,
|
|
GS_FULLBUSTER,
|
|
GS_SPREADATTACK,
|
|
GS_GROUNDDRIFT,
|
|
|
|
NJ_TOBIDOUGU,
|
|
NJ_SYURIKEN,
|
|
NJ_KUNAI,
|
|
NJ_HUUMA,
|
|
NJ_ZENYNAGE,
|
|
NJ_TATAMIGAESHI,
|
|
NJ_KASUMIKIRI,
|
|
NJ_SHADOWJUMP,
|
|
NJ_KIRIKAGE,
|
|
NJ_UTSUSEMI,
|
|
NJ_BUNSINJYUTSU,
|
|
NJ_NINPOU,
|
|
NJ_KOUENKA,
|
|
NJ_KAENSIN,
|
|
NJ_BAKUENRYU,
|
|
NJ_HYOUSENSOU,
|
|
NJ_SUITON,
|
|
NJ_HYOUSYOURAKU,
|
|
NJ_HUUJIN,
|
|
NJ_RAIGEKISAI,
|
|
NJ_KAMAITACHI,
|
|
NJ_NEN,
|
|
NJ_ISSEN,
|
|
|
|
MB_FIGHTING,
|
|
MB_NEUTRAL,
|
|
MB_TAIMING_PUTI,
|
|
MB_WHITEPOTION,
|
|
MB_MENTAL,
|
|
MB_CARDPITCHER,
|
|
MB_PETPITCHER,
|
|
MB_BODYSTUDY,
|
|
MB_BODYALTER,
|
|
MB_PETMEMORY,
|
|
MB_M_TELEPORT,
|
|
MB_B_GAIN,
|
|
MB_M_GAIN,
|
|
MB_MISSION,
|
|
MB_MUNAKKNOWLEDGE,
|
|
MB_MUNAKBALL,
|
|
MB_SCROLL,
|
|
MB_B_GATHERING,
|
|
MB_M_GATHERING,
|
|
MB_B_EXCLUDE,
|
|
MB_B_DRIFT,
|
|
MB_B_WALLRUSH,
|
|
MB_M_WALLRUSH,
|
|
MB_B_WALLSHIFT,
|
|
MB_M_WALLCRASH,
|
|
MB_M_REINCARNATION,
|
|
MB_B_EQUIP,
|
|
|
|
SL_DEATHKNIGHT,
|
|
SL_COLLECTOR,
|
|
SL_NINJA,
|
|
SL_GUNNER,
|
|
AM_TWILIGHT4,
|
|
DA_RESET,
|
|
DE_BERSERKAIZER,
|
|
DA_DARKPOWER,
|
|
|
|
DE_PASSIVE,
|
|
DE_PATTACK,
|
|
DE_PSPEED,
|
|
DE_PDEFENSE,
|
|
DE_PCRITICAL,
|
|
DE_PHP,
|
|
DE_PSP,
|
|
DE_RESET,
|
|
DE_RANKING,
|
|
DE_PTRIPLE,
|
|
DE_ENERGY,
|
|
DE_NIGHTMARE,
|
|
DE_SLASH,
|
|
DE_COIL,
|
|
DE_WAVE,
|
|
DE_REBIRTH,
|
|
DE_AURA,
|
|
DE_FREEZER,
|
|
DE_CHANGEATTACK,
|
|
DE_PUNISH,
|
|
DE_POISON,
|
|
DE_INSTANT,
|
|
DE_WARNING,
|
|
DE_RANKEDKNIFE,
|
|
DE_RANKEDGRADIUS,
|
|
DE_GAUGE,
|
|
DE_GTIME,
|
|
DE_GPAIN,
|
|
DE_GSKILL,
|
|
DE_GKILL,
|
|
DE_ACCEL,
|
|
DE_BLOCKDOUBLE,
|
|
DE_BLOCKMELEE,
|
|
DE_BLOCKFAR,
|
|
DE_FRONTATTACK,
|
|
DE_DANGERATTACK,
|
|
DE_TWINATTACK,
|
|
DE_WINDATTACK,
|
|
DE_WATERATTACK,
|
|
|
|
DA_ENERGY,
|
|
DA_CLOUD,
|
|
DA_FIRSTSLOT,
|
|
DA_HEADDEF,
|
|
DA_SPACE,
|
|
DA_TRANSFORM,
|
|
DA_EXPLOSION,
|
|
DA_REWARD,
|
|
DA_CRUSH,
|
|
DA_ITEMREBUILD,
|
|
DA_ILLUSION,
|
|
DA_NUETRALIZE,
|
|
DA_RUNNER,
|
|
DA_TRANSFER,
|
|
DA_WALL,
|
|
DA_ZENY,
|
|
DA_REVENGE,
|
|
DA_EARPLUG,
|
|
DA_CONTRACT,
|
|
DA_BLACK,
|
|
DA_DREAM,
|
|
DA_MAGICCART,
|
|
DA_COPY,
|
|
DA_CRYSTAL,
|
|
DA_EXP,
|
|
DA_CARTSWING,
|
|
DA_REBUILD,
|
|
DA_JOBCHANGE,
|
|
DA_EDARKNESS,
|
|
DA_EGUARDIAN,
|
|
DA_TIMEOUT,
|
|
ALL_TIMEIN,
|
|
DA_ZENYRANK,
|
|
DA_ACCESSORYMIX,
|
|
|
|
NPC_EARTHQUAKE,
|
|
NPC_FIREBREATH,
|
|
NPC_ICEBREATH,
|
|
NPC_THUNDERBREATH,
|
|
NPC_ACIDBREATH,
|
|
NPC_DARKNESSBREATH,
|
|
NPC_DRAGONFEAR,
|
|
NPC_BLEEDING,
|
|
NPC_PULSESTRIKE,
|
|
NPC_HELLJUDGEMENT,
|
|
NPC_WIDESILENCE,
|
|
NPC_WIDEFREEZE,
|
|
NPC_WIDEBLEEDING,
|
|
NPC_WIDESTONE,
|
|
NPC_WIDECONFUSE,
|
|
NPC_WIDESLEEP,
|
|
NPC_WIDESIGHT,
|
|
NPC_EVILLAND,
|
|
NPC_MAGICMIRROR,
|
|
NPC_SLOWCAST,
|
|
NPC_CRITICALWOUND,
|
|
NPC_EXPULSION,
|
|
NPC_STONESKIN,
|
|
NPC_ANTIMAGIC,
|
|
NPC_WIDECURSE,
|
|
NPC_WIDESTUN,
|
|
NPC_VAMPIRE_GIFT,
|
|
NPC_WIDESOULDRAIN,
|
|
|
|
ALL_INCCARRY,
|
|
NPC_TALK,
|
|
NPC_HELLPOWER,
|
|
NPC_WIDEHELLDIGNITY,
|
|
NPC_INVINCIBLE,
|
|
NPC_INVINCIBLEOFF,
|
|
NPC_ALLHEAL,
|
|
GM_SANDMAN,
|
|
CASH_BLESSING,
|
|
CASH_INCAGI,
|
|
CASH_ASSUMPTIO,
|
|
ALL_CATCRY,
|
|
ALL_PARTYFLEE,
|
|
ALL_ANGEL_PROTECT,
|
|
ALL_DREAM_SUMMERNIGHT,
|
|
NPC_CHANGEUNDEAD2,
|
|
ALL_REVERSEORCISH,
|
|
ALL_WEWISH,
|
|
ALL_SONKRAN,
|
|
NPC_WIDEHEALTHFEAR,
|
|
NPC_WIDEBODYBURNNING,
|
|
NPC_WIDEFROSTMISTY,
|
|
NPC_WIDECOLD,
|
|
NPC_WIDE_DEEP_SLEEP,
|
|
NPC_WIDESIREN,
|
|
NPC_VENOMFOG,
|
|
NPC_MILLENNIUMSHIELD,
|
|
NPC_COMET,
|
|
NPC_ICEMINE,
|
|
NPC_ICEEXPLO,
|
|
NPC_FLAMECROSS,
|
|
NPC_PULSESTRIKE2,
|
|
NPC_DANCINGBLADE,
|
|
NPC_DANCINGBLADE_ATK,
|
|
NPC_DARKPIERCING,
|
|
NPC_MAXPAIN,
|
|
NPC_MAXPAIN_ATK,
|
|
NPC_DEATHSUMMON,
|
|
NPC_HELLBURNING,
|
|
NPC_JACKFROST,
|
|
NPC_WIDEWEB,
|
|
NPC_WIDESUCK,
|
|
NPC_STORMGUST2,
|
|
NPC_FIRESTORM,
|
|
NPC_REVERBERATION,
|
|
NPC_REVERBERATION_ATK,
|
|
NPC_LEX_AETERNA,
|
|
NPC_ARROWSTORM,
|
|
NPC_CHEAL,
|
|
NPC_SR_CURSEDCIRCLE,
|
|
NPC_DRAGONBREATH,
|
|
NPC_FATALMENACE,
|
|
NPC_MAGMA_ERUPTION,
|
|
NPC_MAGMA_ERUPTION_DOTDAMAGE,
|
|
NPC_MANDRAGORA,
|
|
NPC_PSYCHIC_WAVE,
|
|
NPC_RAYOFGENESIS,
|
|
NPC_VENOMIMPRESS,
|
|
NPC_CLOUD_KILL,
|
|
NPC_IGNITIONBREAK,
|
|
NPC_PHANTOMTHRUST,
|
|
NPC_POISON_BUSTER,
|
|
NPC_HALLUCINATIONWALK,
|
|
NPC_ELECTRICWALK,
|
|
NPC_FIREWALK,
|
|
NPC_WIDEDISPEL,
|
|
NPC_LEASH,
|
|
NPC_WIDELEASH,
|
|
NPC_WIDECRITICALWOUND,
|
|
NPC_EARTHQUAKE_K,
|
|
NPC_ALL_STAT_DOWN,
|
|
NPC_GRADUAL_GRAVITY,
|
|
NPC_DAMAGE_HEAL,
|
|
NPC_IMMUNE_PROPERTY,
|
|
NPC_MOVE_COORDINATE,
|
|
|
|
KN_CHARGEATK = 1001,
|
|
CR_SHRINK,
|
|
AS_SONICACCEL,
|
|
AS_VENOMKNIFE,
|
|
RG_CLOSECONFINE,
|
|
WZ_SIGHTBLASTER,
|
|
SA_CREATECON,
|
|
SA_ELEMENTWATER,
|
|
HT_PHANTASMIC,
|
|
BA_PANGVOICE,
|
|
DC_WINKCHARM,
|
|
BS_UNFAIRLYTRICK,
|
|
BS_GREED,
|
|
PR_REDEMPTIO,
|
|
MO_KITRANSLATION,
|
|
MO_BALKYOUNG,
|
|
SA_ELEMENTGROUND,
|
|
SA_ELEMENTFIRE,
|
|
SA_ELEMENTWIND,
|
|
|
|
RK_ENCHANTBLADE = 2001,
|
|
RK_SONICWAVE,
|
|
RK_DEATHBOUND,
|
|
RK_HUNDREDSPEAR,
|
|
RK_WINDCUTTER,
|
|
RK_IGNITIONBREAK,
|
|
RK_DRAGONTRAINING,
|
|
RK_DRAGONBREATH,
|
|
RK_DRAGONHOWLING,
|
|
RK_RUNEMASTERY,
|
|
RK_MILLENNIUMSHIELD,
|
|
RK_CRUSHSTRIKE,
|
|
RK_REFRESH,
|
|
RK_GIANTGROWTH,
|
|
RK_STONEHARDSKIN,
|
|
RK_VITALITYACTIVATION,
|
|
RK_STORMBLAST,
|
|
RK_FIGHTINGSPIRIT,
|
|
RK_ABUNDANCE,
|
|
RK_PHANTOMTHRUST,
|
|
|
|
GC_VENOMIMPRESS,
|
|
GC_CROSSIMPACT,
|
|
GC_DARKILLUSION,
|
|
GC_RESEARCHNEWPOISON,
|
|
GC_CREATENEWPOISON,
|
|
GC_ANTIDOTE,
|
|
GC_POISONINGWEAPON,
|
|
GC_WEAPONBLOCKING,
|
|
GC_COUNTERSLASH,
|
|
GC_WEAPONCRUSH,
|
|
GC_VENOMPRESSURE,
|
|
GC_POISONSMOKE,
|
|
GC_CLOAKINGEXCEED,
|
|
GC_PHANTOMMENACE,
|
|
GC_HALLUCINATIONWALK,
|
|
GC_ROLLINGCUTTER,
|
|
GC_CROSSRIPPERSLASHER,
|
|
|
|
AB_JUDEX,
|
|
AB_ANCILLA,
|
|
AB_ADORAMUS,
|
|
AB_CLEMENTIA,
|
|
AB_CANTO,
|
|
AB_CHEAL,
|
|
AB_EPICLESIS,
|
|
AB_PRAEFATIO,
|
|
AB_ORATIO,
|
|
AB_LAUDAAGNUS,
|
|
AB_LAUDARAMUS,
|
|
AB_EUCHARISTICA, // Removed on kRO
|
|
AB_RENOVATIO,
|
|
AB_HIGHNESSHEAL,
|
|
AB_CLEARANCE,
|
|
AB_EXPIATIO,
|
|
AB_DUPLELIGHT,
|
|
AB_DUPLELIGHT_MELEE,
|
|
AB_DUPLELIGHT_MAGIC,
|
|
AB_SILENTIUM,
|
|
|
|
WL_WHITEIMPRISON = 2201,
|
|
WL_SOULEXPANSION,
|
|
WL_FROSTMISTY,
|
|
WL_JACKFROST,
|
|
WL_MARSHOFABYSS,
|
|
WL_RECOGNIZEDSPELL,
|
|
WL_SIENNAEXECRATE,
|
|
WL_RADIUS,
|
|
WL_STASIS,
|
|
WL_DRAINLIFE,
|
|
WL_CRIMSONROCK,
|
|
WL_HELLINFERNO,
|
|
WL_COMET,
|
|
WL_CHAINLIGHTNING,
|
|
WL_CHAINLIGHTNING_ATK,
|
|
WL_EARTHSTRAIN,
|
|
WL_TETRAVORTEX,
|
|
WL_TETRAVORTEX_FIRE,
|
|
WL_TETRAVORTEX_WATER,
|
|
WL_TETRAVORTEX_WIND,
|
|
WL_TETRAVORTEX_GROUND,
|
|
WL_SUMMONFB,
|
|
WL_SUMMONBL,
|
|
WL_SUMMONWB,
|
|
WL_SUMMON_ATK_FIRE,
|
|
WL_SUMMON_ATK_WIND,
|
|
WL_SUMMON_ATK_WATER,
|
|
WL_SUMMON_ATK_GROUND,
|
|
WL_SUMMONSTONE,
|
|
WL_RELEASE,
|
|
WL_READING_SB,
|
|
WL_FREEZE_SP,
|
|
|
|
RA_ARROWSTORM,
|
|
RA_FEARBREEZE,
|
|
RA_RANGERMAIN,
|
|
RA_AIMEDBOLT,
|
|
RA_DETONATOR,
|
|
RA_ELECTRICSHOCKER,
|
|
RA_CLUSTERBOMB,
|
|
RA_WUGMASTERY,
|
|
RA_WUGRIDER,
|
|
RA_WUGDASH,
|
|
RA_WUGSTRIKE,
|
|
RA_WUGBITE,
|
|
RA_TOOTHOFWUG,
|
|
RA_SENSITIVEKEEN,
|
|
RA_CAMOUFLAGE,
|
|
RA_RESEARCHTRAP,
|
|
RA_MAGENTATRAP,
|
|
RA_COBALTTRAP,
|
|
RA_MAIZETRAP,
|
|
RA_VERDURETRAP,
|
|
RA_FIRINGTRAP,
|
|
RA_ICEBOUNDTRAP,
|
|
|
|
NC_MADOLICENCE,
|
|
NC_BOOSTKNUCKLE,
|
|
NC_PILEBUNKER,
|
|
NC_VULCANARM,
|
|
NC_FLAMELAUNCHER,
|
|
NC_COLDSLOWER,
|
|
NC_ARMSCANNON,
|
|
NC_ACCELERATION,
|
|
NC_HOVERING,
|
|
NC_F_SIDESLIDE,
|
|
NC_B_SIDESLIDE,
|
|
NC_MAINFRAME,
|
|
NC_SELFDESTRUCTION,
|
|
NC_SHAPESHIFT,
|
|
NC_EMERGENCYCOOL,
|
|
NC_INFRAREDSCAN,
|
|
NC_ANALYZE,
|
|
NC_MAGNETICFIELD,
|
|
NC_NEUTRALBARRIER,
|
|
NC_STEALTHFIELD,
|
|
NC_REPAIR,
|
|
NC_TRAININGAXE,
|
|
NC_RESEARCHFE,
|
|
NC_AXEBOOMERANG,
|
|
NC_POWERSWING,
|
|
NC_AXETORNADO,
|
|
NC_SILVERSNIPER,
|
|
NC_MAGICDECOY,
|
|
NC_DISJOINT,
|
|
|
|
SC_FATALMENACE,
|
|
SC_REPRODUCE,
|
|
SC_AUTOSHADOWSPELL,
|
|
SC_SHADOWFORM,
|
|
SC_TRIANGLESHOT,
|
|
SC_BODYPAINT,
|
|
SC_INVISIBILITY,
|
|
SC_DEADLYINFECT,
|
|
SC_ENERVATION,
|
|
SC_GROOMY,
|
|
SC_IGNORANCE,
|
|
SC_LAZINESS,
|
|
SC_UNLUCKY,
|
|
SC_WEAKNESS,
|
|
SC_STRIPACCESSARY,
|
|
SC_MANHOLE,
|
|
SC_DIMENSIONDOOR,
|
|
SC_CHAOSPANIC,
|
|
SC_MAELSTROM,
|
|
SC_BLOODYLUST,
|
|
SC_FEINTBOMB,
|
|
|
|
LG_CANNONSPEAR = 2307,
|
|
LG_BANISHINGPOINT,
|
|
LG_TRAMPLE,
|
|
LG_SHIELDPRESS,
|
|
LG_REFLECTDAMAGE,
|
|
LG_PINPOINTATTACK,
|
|
LG_FORCEOFVANGUARD,
|
|
LG_RAGEBURST,
|
|
LG_SHIELDSPELL,
|
|
LG_EXEEDBREAK,
|
|
LG_OVERBRAND,
|
|
LG_PRESTIGE,
|
|
LG_BANDING,
|
|
LG_MOONSLASHER,
|
|
LG_RAYOFGENESIS,
|
|
LG_PIETY,
|
|
LG_EARTHDRIVE,
|
|
LG_HESPERUSLIT,
|
|
LG_INSPIRATION,
|
|
|
|
SR_DRAGONCOMBO,
|
|
SR_SKYNETBLOW,
|
|
SR_EARTHSHAKER,
|
|
SR_FALLENEMPIRE,
|
|
SR_TIGERCANNON,
|
|
SR_HELLGATE,
|
|
SR_RAMPAGEBLASTER,
|
|
SR_CRESCENTELBOW,
|
|
SR_CURSEDCIRCLE,
|
|
SR_LIGHTNINGWALK,
|
|
SR_KNUCKLEARROW,
|
|
SR_WINDMILL,
|
|
SR_RAISINGDRAGON,
|
|
SR_GENTLETOUCH,
|
|
SR_ASSIMILATEPOWER,
|
|
SR_POWERVELOCITY,
|
|
SR_CRESCENTELBOW_AUTOSPELL,
|
|
SR_GATEOFHELL,
|
|
SR_GENTLETOUCH_QUIET,
|
|
SR_GENTLETOUCH_CURE,
|
|
SR_GENTLETOUCH_ENERGYGAIN,
|
|
SR_GENTLETOUCH_CHANGE,
|
|
SR_GENTLETOUCH_REVITALIZE,
|
|
|
|
WA_SWING_DANCE = 2350,
|
|
WA_SYMPHONY_OF_LOVER,
|
|
WA_MOONLIT_SERENADE,
|
|
|
|
MI_RUSH_WINDMILL = 2381,
|
|
MI_ECHOSONG,
|
|
MI_HARMONIZE,
|
|
|
|
WM_LESSON = 2412,
|
|
WM_METALICSOUND,
|
|
WM_REVERBERATION,
|
|
WM_REVERBERATION_MELEE,
|
|
WM_REVERBERATION_MAGIC,
|
|
WM_DOMINION_IMPULSE,
|
|
WM_SEVERE_RAINSTORM,
|
|
WM_POEMOFNETHERWORLD,
|
|
WM_VOICEOFSIREN,
|
|
WM_DEADHILLHERE,
|
|
WM_LULLABY_DEEPSLEEP,
|
|
WM_SIRCLEOFNATURE,
|
|
WM_RANDOMIZESPELL,
|
|
WM_GLOOMYDAY,
|
|
WM_GREAT_ECHO,
|
|
WM_SONG_OF_MANA,
|
|
WM_DANCE_WITH_WUG,
|
|
WM_SOUND_OF_DESTRUCTION,
|
|
WM_SATURDAY_NIGHT_FEVER,
|
|
WM_LERADS_DEW,
|
|
WM_MELODYOFSINK,
|
|
WM_BEYOND_OF_WARCRY,
|
|
WM_UNLIMITED_HUMMING_VOICE,
|
|
|
|
SO_FIREWALK = 2443,
|
|
SO_ELECTRICWALK,
|
|
SO_SPELLFIST,
|
|
SO_EARTHGRAVE,
|
|
SO_DIAMONDDUST,
|
|
SO_POISON_BUSTER,
|
|
SO_PSYCHIC_WAVE,
|
|
SO_CLOUD_KILL,
|
|
SO_STRIKING,
|
|
SO_WARMER,
|
|
SO_VACUUM_EXTREME,
|
|
SO_VARETYR_SPEAR,
|
|
SO_ARRULLO,
|
|
SO_EL_CONTROL,
|
|
SO_SUMMON_AGNI,
|
|
SO_SUMMON_AQUA,
|
|
SO_SUMMON_VENTUS,
|
|
SO_SUMMON_TERA,
|
|
SO_EL_ACTION,
|
|
SO_EL_ANALYSIS,
|
|
SO_EL_SYMPATHY,
|
|
SO_EL_CURE,
|
|
SO_FIRE_INSIGNIA,
|
|
SO_WATER_INSIGNIA,
|
|
SO_WIND_INSIGNIA,
|
|
SO_EARTH_INSIGNIA,
|
|
|
|
GN_TRAINING_SWORD = 2474,
|
|
GN_REMODELING_CART,
|
|
GN_CART_TORNADO,
|
|
GN_CARTCANNON,
|
|
GN_CARTBOOST,
|
|
GN_THORNS_TRAP,
|
|
GN_BLOOD_SUCKER,
|
|
GN_SPORE_EXPLOSION,
|
|
GN_WALLOFTHORN,
|
|
GN_CRAZYWEED,
|
|
GN_CRAZYWEED_ATK,
|
|
GN_DEMONIC_FIRE,
|
|
GN_FIRE_EXPANSION,
|
|
GN_FIRE_EXPANSION_SMOKE_POWDER,
|
|
GN_FIRE_EXPANSION_TEAR_GAS,
|
|
GN_FIRE_EXPANSION_ACID,
|
|
GN_HELLS_PLANT,
|
|
GN_HELLS_PLANT_ATK,
|
|
GN_MANDRAGORA,
|
|
GN_SLINGITEM,
|
|
GN_CHANGEMATERIAL,
|
|
GN_MIX_COOKING,
|
|
GN_MAKEBOMB,
|
|
GN_S_PHARMACY,
|
|
GN_SLINGITEM_RANGEMELEEATK,
|
|
|
|
AB_SECRAMENT = 2515,
|
|
WM_SEVERE_RAINSTORM_MELEE,
|
|
SR_HOWLINGOFLION,
|
|
SR_RIDEINLIGHTNING,
|
|
LG_OVERBRAND_BRANDISH,
|
|
LG_OVERBRAND_PLUSATK,
|
|
|
|
ALL_ODINS_RECALL = 2533,
|
|
RETURN_TO_ELDICASTES,
|
|
ALL_BUYING_STORE,
|
|
ALL_GUARDIAN_RECALL,
|
|
ALL_ODINS_POWER,
|
|
ALL_BEER_BOTTLE_CAP,
|
|
NPC_ASSASSINCROSS,
|
|
NPC_DISSONANCE,
|
|
NPC_UGLYDANCE,
|
|
ALL_TETANY,
|
|
ALL_RAY_OF_PROTECTION,
|
|
MC_CARTDECORATE,
|
|
GM_ITEM_ATKMAX,
|
|
GM_ITEM_ATKMIN,
|
|
GM_ITEM_MATKMAX,
|
|
GM_ITEM_MATKMIN,
|
|
|
|
RL_GLITTERING_GREED = 2551,
|
|
RL_RICHS_COIN,
|
|
RL_MASS_SPIRAL,
|
|
RL_BANISHING_BUSTER,
|
|
RL_B_TRAP,
|
|
RL_FLICKER,
|
|
RL_S_STORM,
|
|
RL_E_CHAIN,
|
|
RL_QD_SHOT,
|
|
RL_C_MARKER,
|
|
RL_FIREDANCE,
|
|
RL_H_MINE,
|
|
RL_P_ALTER,
|
|
RL_FALLEN_ANGEL,
|
|
RL_R_TRIP,
|
|
RL_D_TAIL,
|
|
RL_FIRE_RAIN,
|
|
RL_HEAT_BARREL,
|
|
RL_AM_BLAST,
|
|
RL_SLUGSHOT,
|
|
RL_HAMMER_OF_GOD,
|
|
RL_R_TRIP_PLUSATK,
|
|
RL_B_FLICKER_ATK,
|
|
// RL_GLITTERING_GREED_ATK,
|
|
SJ_LIGHTOFMOON,
|
|
SJ_LUNARSTANCE,
|
|
SJ_FULLMOONKICK,
|
|
SJ_LIGHTOFSTAR,
|
|
SJ_STARSTANCE,
|
|
SJ_NEWMOONKICK,
|
|
SJ_FLASHKICK,
|
|
SJ_STAREMPEROR,
|
|
SJ_NOVAEXPLOSING,
|
|
SJ_UNIVERSESTANCE,
|
|
SJ_FALLINGSTAR,
|
|
SJ_GRAVITYCONTROL,
|
|
SJ_BOOKOFDIMENSION,
|
|
SJ_BOOKOFCREATINGSTAR,
|
|
SJ_DOCUMENT,
|
|
SJ_PURIFY,
|
|
SJ_LIGHTOFSUN,
|
|
SJ_SUNSTANCE,
|
|
SJ_SOLARBURST,
|
|
SJ_PROMINENCEKICK,
|
|
SJ_FALLINGSTAR_ATK,
|
|
SJ_FALLINGSTAR_ATK2,
|
|
SP_SOULGOLEM,
|
|
SP_SOULSHADOW,
|
|
SP_SOULFALCON,
|
|
SP_SOULFAIRY,
|
|
SP_CURSEEXPLOSION,
|
|
SP_SOULCURSE,
|
|
SP_SPA,
|
|
SP_SHA,
|
|
SP_SWHOO,
|
|
SP_SOULUNITY,
|
|
SP_SOULDIVISION,
|
|
SP_SOULREAPER,
|
|
SP_SOULREVOLVE,
|
|
SP_SOULCOLLECT,
|
|
SP_SOULEXPLOSION,
|
|
SP_SOULENERGY,
|
|
SP_KAUTE,
|
|
|
|
KO_YAMIKUMO = 3001,
|
|
KO_RIGHT,
|
|
KO_LEFT,
|
|
KO_JYUMONJIKIRI,
|
|
KO_SETSUDAN,
|
|
KO_BAKURETSU,
|
|
KO_HAPPOKUNAI,
|
|
KO_MUCHANAGE,
|
|
KO_HUUMARANKA,
|
|
KO_MAKIBISHI,
|
|
KO_MEIKYOUSISUI,
|
|
KO_ZANZOU,
|
|
KO_KYOUGAKU,
|
|
KO_JYUSATSU,
|
|
KO_KAHU_ENTEN,
|
|
KO_HYOUHU_HUBUKI,
|
|
KO_KAZEHU_SEIRAN,
|
|
KO_DOHU_KOUKAI,
|
|
KO_KAIHOU,
|
|
KO_ZENKAI,
|
|
KO_GENWAKU,
|
|
KO_IZAYOI,
|
|
KG_KAGEHUMI,
|
|
KG_KYOMU,
|
|
KG_KAGEMUSYA,
|
|
OB_ZANGETSU,
|
|
OB_OBOROGENSOU,
|
|
OB_OBOROGENSOU_TRANSITION_ATK,
|
|
OB_AKAITSUKI,
|
|
|
|
ECL_SNOWFLIP = 3031,
|
|
ECL_PEONYMAMY,
|
|
ECL_SADAGUI,
|
|
ECL_SEQUOIADUST,
|
|
ECLAGE_RECALL,
|
|
|
|
GC_DARKCROW = 5001,
|
|
RA_UNLIMIT,
|
|
GN_ILLUSIONDOPING,
|
|
RK_DRAGONBREATH_WATER,
|
|
RK_LUXANIMA,
|
|
NC_MAGMA_ERUPTION,
|
|
WM_FRIGG_SONG,
|
|
SO_ELEMENTAL_SHIELD,
|
|
SR_FLASHCOMBO,
|
|
SC_ESCAPE,
|
|
AB_OFFERTORIUM,
|
|
WL_TELEKINESIS_INTENSE,
|
|
LG_KINGS_GRACE,
|
|
ALL_FULL_THROTTLE,
|
|
NC_MAGMA_ERUPTION_DOTDAMAGE,
|
|
|
|
SU_BASIC_SKILL = 5018,
|
|
SU_BITE,
|
|
SU_HIDE,
|
|
SU_SCRATCH,
|
|
SU_STOOP,
|
|
SU_LOPE,
|
|
SU_SPRITEMABLE,
|
|
SU_POWEROFLAND,
|
|
SU_SV_STEMSPEAR,
|
|
SU_CN_POWDERING,
|
|
SU_CN_METEOR,
|
|
SU_SV_ROOTTWIST,
|
|
SU_SV_ROOTTWIST_ATK,
|
|
SU_POWEROFLIFE,
|
|
SU_SCAROFTAROU,
|
|
SU_PICKYPECK,
|
|
SU_PICKYPECK_DOUBLE_ATK,
|
|
SU_ARCLOUSEDASH,
|
|
SU_LUNATICCARROTBEAT,
|
|
SU_POWEROFSEA,
|
|
SU_TUNABELLY,
|
|
SU_TUNAPARTY,
|
|
SU_BUNCHOFSHRIMP,
|
|
SU_FRESHSHRIMP,
|
|
SU_CN_METEOR2,
|
|
SU_LUNATICCARROTBEAT2,
|
|
SU_SOULATTACK,
|
|
SU_POWEROFFLOCK,
|
|
SU_SVG_SPIRIT,
|
|
SU_HISS,
|
|
SU_NYANGGRASS,
|
|
SU_GROOMING,
|
|
SU_PURRING,
|
|
SU_SHRIMPARTY,
|
|
SU_SPIRITOFLIFE,
|
|
SU_MEOWMEOW,
|
|
SU_SPIRITOFLAND,
|
|
SU_CHATTERING,
|
|
SU_SPIRITOFSEA,
|
|
|
|
WE_CALLALLFAMILY = 5063,
|
|
WE_ONEFOREVER,
|
|
WE_CHEERUP,
|
|
|
|
ALL_EQSWITCH = 5067,
|
|
|
|
AB_VITUPERATUM = 5072,
|
|
AB_CONVENIO,
|
|
|
|
HLIF_HEAL = 8001,
|
|
HLIF_AVOID,
|
|
HLIF_BRAIN,
|
|
HLIF_CHANGE,
|
|
HAMI_CASTLE,
|
|
HAMI_DEFENCE,
|
|
HAMI_SKIN,
|
|
HAMI_BLOODLUST,
|
|
HFLI_MOON,
|
|
HFLI_FLEET,
|
|
HFLI_SPEED,
|
|
HFLI_SBR44,
|
|
HVAN_CAPRICE,
|
|
HVAN_CHAOTIC,
|
|
HVAN_INSTRUCT,
|
|
HVAN_EXPLOSION,
|
|
MUTATION_BASEJOB,
|
|
MH_SUMMON_LEGION,
|
|
MH_NEEDLE_OF_PARALYZE,
|
|
MH_POISON_MIST,
|
|
MH_PAIN_KILLER,
|
|
MH_LIGHT_OF_REGENE,
|
|
MH_OVERED_BOOST,
|
|
MH_ERASER_CUTTER,
|
|
MH_XENO_SLASHER,
|
|
MH_SILENT_BREEZE,
|
|
MH_STYLE_CHANGE,
|
|
MH_SONIC_CRAW,
|
|
MH_SILVERVEIN_RUSH,
|
|
MH_MIDNIGHT_FRENZY,
|
|
MH_STAHL_HORN,
|
|
MH_GOLDENE_FERSE,
|
|
MH_STEINWAND,
|
|
MH_HEILIGE_STANGE,
|
|
MH_ANGRIFFS_MODUS,
|
|
MH_TINDER_BREAKER,
|
|
MH_CBC,
|
|
MH_EQC,
|
|
MH_MAGMA_FLOW,
|
|
MH_GRANITIC_ARMOR,
|
|
MH_LAVA_SLIDE,
|
|
MH_PYROCLASTIC,
|
|
MH_VOLCANIC_ASH,
|
|
|
|
MS_BASH = 8201,
|
|
MS_MAGNUM,
|
|
MS_BOWLINGBASH,
|
|
MS_PARRYING,
|
|
MS_REFLECTSHIELD,
|
|
MS_BERSERK,
|
|
MA_DOUBLE,
|
|
MA_SHOWER,
|
|
MA_SKIDTRAP,
|
|
MA_LANDMINE,
|
|
MA_SANDMAN,
|
|
MA_FREEZINGTRAP,
|
|
MA_REMOVETRAP,
|
|
MA_CHARGEARROW,
|
|
MA_SHARPSHOOTING,
|
|
ML_PIERCE,
|
|
ML_BRANDISH,
|
|
ML_SPIRALPIERCE,
|
|
ML_DEFENDER,
|
|
ML_AUTOGUARD,
|
|
ML_DEVOTION,
|
|
MER_MAGNIFICAT,
|
|
MER_QUICKEN,
|
|
MER_SIGHT,
|
|
MER_CRASH,
|
|
MER_REGAIN,
|
|
MER_TENDER,
|
|
MER_BENEDICTION,
|
|
MER_RECUPERATE,
|
|
MER_MENTALCURE,
|
|
MER_COMPRESS,
|
|
MER_PROVOKE,
|
|
MER_AUTOBERSERK,
|
|
MER_DECAGI,
|
|
MER_SCAPEGOAT,
|
|
MER_LEXDIVINA,
|
|
MER_ESTIMATION,
|
|
MER_KYRIE,
|
|
MER_BLESSING,
|
|
MER_INCAGI,
|
|
MER_INVINCIBLEOFF2,
|
|
|
|
EL_CIRCLE_OF_FIRE = 8401,
|
|
EL_FIRE_CLOAK,
|
|
EL_FIRE_MANTLE,
|
|
EL_WATER_SCREEN,
|
|
EL_WATER_DROP,
|
|
EL_WATER_BARRIER,
|
|
EL_WIND_STEP,
|
|
EL_WIND_CURTAIN,
|
|
EL_ZEPHYR,
|
|
EL_SOLID_SKIN,
|
|
EL_STONE_SHIELD,
|
|
EL_POWER_OF_GAIA,
|
|
EL_PYROTECHNIC,
|
|
EL_HEATER,
|
|
EL_TROPIC,
|
|
EL_AQUAPLAY,
|
|
EL_COOLER,
|
|
EL_CHILLY_AIR,
|
|
EL_GUST,
|
|
EL_BLAST,
|
|
EL_WILD_STORM,
|
|
EL_PETROLOGY,
|
|
EL_CURSED_SOIL,
|
|
EL_UPHEAVAL,
|
|
EL_FIRE_ARROW,
|
|
EL_FIRE_BOMB,
|
|
EL_FIRE_BOMB_ATK,
|
|
EL_FIRE_WAVE,
|
|
EL_FIRE_WAVE_ATK,
|
|
EL_ICE_NEEDLE,
|
|
EL_WATER_SCREW,
|
|
EL_WATER_SCREW_ATK,
|
|
EL_TIDAL_WEAPON,
|
|
EL_WIND_SLASH,
|
|
EL_HURRICANE,
|
|
EL_HURRICANE_ATK,
|
|
EL_TYPOON_MIS,
|
|
EL_TYPOON_MIS_ATK,
|
|
EL_STONE_HAMMER,
|
|
EL_ROCK_CRUSHER,
|
|
EL_ROCK_CRUSHER_ATK,
|
|
EL_STONE_RAIN,
|
|
};
|
|
|
|
/// The client view ids for land skills.
|
|
enum s_skill_unit_id {
|
|
UNT_SAFETYWALL = 0x7e,
|
|
UNT_FIREWALL,
|
|
UNT_WARP_WAITING,
|
|
UNT_WARP_ACTIVE,
|
|
UNT_BENEDICTIO, //TODO
|
|
UNT_SANCTUARY,
|
|
UNT_MAGNUS,
|
|
UNT_PNEUMA,
|
|
UNT_DUMMYSKILL, //These show no effect on the client
|
|
UNT_FIREPILLAR_WAITING,
|
|
UNT_FIREPILLAR_ACTIVE,
|
|
UNT_HIDDEN_TRAP, //TODO
|
|
UNT_TRAP, //TODO
|
|
UNT_HIDDEN_WARP_NPC, //TODO
|
|
UNT_USED_TRAPS,
|
|
UNT_ICEWALL,
|
|
UNT_QUAGMIRE,
|
|
UNT_BLASTMINE,
|
|
UNT_SKIDTRAP,
|
|
UNT_ANKLESNARE,
|
|
UNT_VENOMDUST,
|
|
UNT_LANDMINE,
|
|
UNT_SHOCKWAVE,
|
|
UNT_SANDMAN,
|
|
UNT_FLASHER,
|
|
UNT_FREEZINGTRAP,
|
|
UNT_CLAYMORETRAP,
|
|
UNT_TALKIEBOX,
|
|
UNT_VOLCANO,
|
|
UNT_DELUGE,
|
|
UNT_VIOLENTGALE,
|
|
UNT_LANDPROTECTOR,
|
|
UNT_LULLABY,
|
|
UNT_RICHMANKIM,
|
|
UNT_ETERNALCHAOS,
|
|
UNT_DRUMBATTLEFIELD,
|
|
UNT_RINGNIBELUNGEN,
|
|
UNT_ROKISWEIL,
|
|
UNT_INTOABYSS,
|
|
UNT_SIEGFRIED,
|
|
UNT_DISSONANCE,
|
|
UNT_WHISTLE,
|
|
UNT_ASSASSINCROSS,
|
|
UNT_POEMBRAGI,
|
|
UNT_APPLEIDUN,
|
|
UNT_UGLYDANCE,
|
|
UNT_HUMMING,
|
|
UNT_DONTFORGETME,
|
|
UNT_FORTUNEKISS,
|
|
UNT_SERVICEFORYOU,
|
|
UNT_GRAFFITI,
|
|
UNT_DEMONSTRATION,
|
|
UNT_CALLFAMILY,
|
|
UNT_GOSPEL,
|
|
UNT_BASILICA,
|
|
UNT_MOONLIT,
|
|
UNT_FOGWALL,
|
|
UNT_SPIDERWEB,
|
|
UNT_GRAVITATION,
|
|
UNT_HERMODE,
|
|
UNT_KAENSIN, //TODO
|
|
UNT_SUITON,
|
|
UNT_TATAMIGAESHI,
|
|
UNT_KAEN,
|
|
UNT_GROUNDDRIFT_WIND,
|
|
UNT_GROUNDDRIFT_DARK,
|
|
UNT_GROUNDDRIFT_POISON,
|
|
UNT_GROUNDDRIFT_WATER,
|
|
UNT_GROUNDDRIFT_FIRE,
|
|
UNT_DEATHWAVE, //TODO
|
|
UNT_WATERATTACK, //TODO
|
|
UNT_WINDATTACK, //TODO
|
|
UNT_EARTHQUAKE, //TODO
|
|
UNT_EVILLAND,
|
|
UNT_DARK_RUNNER, //TODO
|
|
UNT_DARK_TRANSFER, //TODO
|
|
UNT_EPICLESIS,
|
|
UNT_EARTHSTRAIN,
|
|
UNT_MANHOLE,
|
|
UNT_DIMENSIONDOOR,
|
|
UNT_CHAOSPANIC,
|
|
UNT_MAELSTROM,
|
|
UNT_BLOODYLUST,
|
|
UNT_FEINTBOMB,
|
|
UNT_MAGENTATRAP,
|
|
UNT_COBALTTRAP,
|
|
UNT_MAIZETRAP,
|
|
UNT_VERDURETRAP,
|
|
UNT_FIRINGTRAP,
|
|
UNT_ICEBOUNDTRAP,
|
|
UNT_ELECTRICSHOCKER,
|
|
UNT_CLUSTERBOMB,
|
|
UNT_REVERBERATION,
|
|
UNT_SEVERE_RAINSTORM,
|
|
UNT_FIREWALK,
|
|
UNT_ELECTRICWALK,
|
|
UNT_NETHERWORLD,
|
|
UNT_PSYCHIC_WAVE,
|
|
UNT_CLOUD_KILL,
|
|
UNT_POISONSMOKE,
|
|
UNT_NEUTRALBARRIER,
|
|
UNT_STEALTHFIELD,
|
|
UNT_WARMER,
|
|
UNT_THORNS_TRAP,
|
|
UNT_WALLOFTHORN,
|
|
UNT_DEMONIC_FIRE,
|
|
UNT_FIRE_EXPANSION_SMOKE_POWDER,
|
|
UNT_FIRE_EXPANSION_TEAR_GAS,
|
|
UNT_HELLS_PLANT,
|
|
UNT_VACUUM_EXTREME,
|
|
UNT_BANDING,
|
|
UNT_FIRE_MANTLE,
|
|
UNT_WATER_BARRIER,
|
|
UNT_ZEPHYR,
|
|
UNT_POWER_OF_GAIA,
|
|
UNT_FIRE_INSIGNIA,
|
|
UNT_WATER_INSIGNIA,
|
|
UNT_WIND_INSIGNIA,
|
|
UNT_EARTH_INSIGNIA,
|
|
UNT_POISON_MIST,
|
|
UNT_LAVA_SLIDE,
|
|
UNT_VOLCANIC_ASH,
|
|
UNT_ZENKAI_WATER,
|
|
UNT_ZENKAI_LAND,
|
|
UNT_ZENKAI_FIRE,
|
|
UNT_ZENKAI_WIND,
|
|
UNT_MAKIBISHI,
|
|
UNT_VENOMFOG,
|
|
UNT_ICEMINE,
|
|
UNT_FLAMECROSS,
|
|
UNT_HELLBURNING,
|
|
UNT_MAGMA_ERUPTION,
|
|
UNT_KINGS_GRACE,
|
|
|
|
UNT_GLITTERING_GREED,
|
|
UNT_B_TRAP,
|
|
UNT_FIRE_RAIN,
|
|
|
|
UNT_CATNIPPOWDER,
|
|
UNT_NYANGGRASS,
|
|
|
|
/**
|
|
* Guild Auras
|
|
**/
|
|
UNT_GD_LEADERSHIP = 0xc1,
|
|
UNT_GD_GLORYWOUNDS = 0xc2,
|
|
UNT_GD_SOULCOLD = 0xc3,
|
|
UNT_GD_HAWKEYES = 0xc4,
|
|
|
|
UNT_MAX = 0x190
|
|
};
|
|
|
|
/**
|
|
* Skill Unit Save
|
|
**/
|
|
void skill_usave_add(struct map_session_data * sd, uint16 skill_id, uint16 skill_lv);
|
|
void skill_usave_trigger(struct map_session_data *sd);
|
|
|
|
/**
|
|
* Warlock
|
|
**/
|
|
#define MAX_SKILL_SPELLBOOK_DB 17
|
|
enum wl_spheres {
|
|
WLS_FIRE = 0x44,
|
|
WLS_WIND,
|
|
WLS_WATER,
|
|
WLS_STONE,
|
|
};
|
|
struct s_skill_spellbook_db {
|
|
unsigned short nameid;
|
|
unsigned short skill_id;
|
|
unsigned short point;
|
|
};
|
|
extern struct s_skill_spellbook_db skill_spellbook_db[MAX_SKILL_SPELLBOOK_DB];
|
|
extern unsigned short skill_spellbook_count;
|
|
void skill_spellbook(struct map_session_data *sd, unsigned short nameid);
|
|
int skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_id);
|
|
|
|
/**
|
|
* Guilottine Cross
|
|
**/
|
|
#define MAX_SKILL_MAGICMUSHROOM_DB 25
|
|
struct s_skill_magicmushroom_db {
|
|
uint16 skill_id;
|
|
};
|
|
extern struct s_skill_magicmushroom_db skill_magicmushroom_db[MAX_SKILL_MAGICMUSHROOM_DB];
|
|
extern unsigned short skill_magicmushroom_count;
|
|
int skill_maelstrom_suction(struct block_list *bl, va_list ap);
|
|
bool skill_check_shadowform(struct block_list *bl, int64 damage, int hit);
|
|
|
|
/**
|
|
* Ranger
|
|
**/
|
|
int skill_detonator(struct block_list *bl, va_list ap);
|
|
bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *sce);
|
|
|
|
/**
|
|
* Mechanic
|
|
**/
|
|
int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid);
|
|
|
|
/**
|
|
* Guiltoine Cross
|
|
**/
|
|
int skill_poisoningweapon( struct map_session_data *sd, unsigned short nameid);
|
|
|
|
/**
|
|
* Auto Shadow Spell (Shadow Chaser)
|
|
**/
|
|
int skill_select_menu(struct map_session_data *sd,uint16 skill_id);
|
|
|
|
int skill_elementalanalysis(struct map_session_data *sd, int n, uint16 skill_lv, unsigned short *item_list); // Sorcerer Four Elemental Analisys.
|
|
int skill_changematerial(struct map_session_data *sd, int n, unsigned short *item_list); // Genetic Change Material.
|
|
int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv);
|
|
|
|
int skill_banding_count(struct map_session_data *sd);
|
|
|
|
int skill_is_combo(uint16 skill_id);
|
|
void skill_combo_toggle_inf(struct block_list* bl, uint16 skill_id, int inf);
|
|
void skill_combo(struct block_list* src,struct block_list *dsrc, struct block_list *bl, uint16 skill_id, uint16 skill_lv, t_tick tick);
|
|
|
|
void skill_reveal_trap_inarea(struct block_list *src, int range, int x, int y);
|
|
int skill_get_time3(struct map_data *mapdata, uint16 skill_id, uint16 skill_lv);
|
|
|
|
/// Variable name of copied skill by Plagiarism
|
|
#define SKILL_VAR_PLAGIARISM "CLONE_SKILL"
|
|
/// Variable name of copied skill level by Plagiarism
|
|
#define SKILL_VAR_PLAGIARISM_LV "CLONE_SKILL_LV"
|
|
|
|
/// Variable name of copied skill by Reproduce
|
|
#define SKILL_VAR_REPRODUCE "REPRODUCE_SKILL"
|
|
/// Variable name of copied skill level by Reproduce
|
|
#define SKILL_VAR_REPRODUCE_LV "REPRODUCE_SKILL_LV"
|
|
|
|
#define SKILL_CHK_HOMUN(skill_id) ( (skill_id) >= HM_SKILLBASE && (skill_id) < HM_SKILLBASE+MAX_HOMUNSKILL )
|
|
#define SKILL_CHK_MERC(skill_id) ( (skill_id) >= MC_SKILLBASE && (skill_id) < MC_SKILLBASE+MAX_MERCSKILL )
|
|
#define SKILL_CHK_ELEM(skill_id) ( (skill_id) >= EL_SKILLBASE && (skill_id) < EL_SKILLBASE+MAX_ELEMENTALSKILL )
|
|
#define SKILL_CHK_GUILD(skill_id) ( (skill_id) >= GD_SKILLBASE && (skill_id) < GD_SKILLBASE+MAX_GUILDSKILL )
|
|
|
|
#endif /* SKILL_HPP */
|