- Moved the configuration setting "icewall_walk_block" to monster.conf - Split the configuration into mob_icewall_walk_block and boss_icewall_walk_block so it can be configured for bosses separately - Expanded the configuration * If the value is set to 1, monsters on an ice wall cell will behave like trapped monsters, that means they won't be able to move at all, they will use idle skills and if they are attacked while nobody is in their attack range, they will use their rudeattacked skills; this is equal to official behavior of bosses * If the value is set to 2-255, it will behave as before but monsters in the AI loop now use both idle and chase skills, but will no longer use their rudeattacked skills even if attacked from range; this is equal to official behavior of normal monsters * Official values would be "220" for normal monsters (loop until Icewall expiration) and "1" for bosses (behave like trapped monster) on most official servers, but as some official servers have a less exploitable implementation (from looping AI only a limited amount of times up to outright blocking Icewall on all maps with bosses), we decided for less exploitable default values for now which are 75 for normal monsters (loop 15-35 seconds) and 0 for bosses (impossible to trap in Icewall) - Cleaned up the rudeattacked code a little so it's easier to read
2057 lines
46 KiB
C
2057 lines
46 KiB
C
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
|
|
// For more information, see LICENCE in the main folder
|
|
|
|
#ifndef _SKILL_H_
|
|
#define _SKILL_H_
|
|
|
|
#include "../common/mmo.h" // MAX_SKILL, struct square
|
|
#include "../common/db.h"
|
|
#include "map.h" // struct block_list
|
|
struct map_session_data;
|
|
struct homun_data;
|
|
struct skill_unit;
|
|
struct skill_unit_group;
|
|
struct status_change_entry;
|
|
|
|
#define MAX_SKILL_DB MAX_SKILL /// Max Skill DB
|
|
#define MAX_SKILL_PRODUCE_DB 270 /// 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 100 /// Max Skill Level
|
|
#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
|
|
|
|
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 {
|
|
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,
|
|
};
|
|
|
|
/// 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]
|
|
};
|
|
|
|
/// Skill info type 3
|
|
enum e_skill_inf3 {
|
|
INF3_NOLP = 0x00001, // Skill that can ignore Land Protector
|
|
INF3_NOENDCAMOUFLAGE = 0x00002, // Skill that doesn't end camouflage
|
|
INF3_USABLE_HIDING = 0x00004, // Skill that can be use in hiding
|
|
INF3_USABLE_DANCE = 0x00008, // Skill that can be use while in dancing state
|
|
INF3_HIT_EMP = 0x00010, // Skill that could hit emperium
|
|
INF3_STATIS_BL = 0x00020, // Skill blocked by statis
|
|
INF3_KAGEHUMI_BL = 0x00040, // Skill blocked by kagehumi
|
|
INF3_EFF_VULTURE = 0x00080, // Skill range affected by AC_VULTURE
|
|
INF3_EFF_SNAKEEYE = 0x00100, // Skill range affected by GS_SNAKEEYE
|
|
INF3_EFF_SHADOWJUMP = 0x00200, // Skill range affected by NJ_SHADOWJUMP
|
|
INF3_EFF_RADIUS = 0x00400, // Skill range affected by WL_RADIUS
|
|
INF3_EFF_RESEARCHTRAP = 0x00800, // Skill range affected by RA_RESEARCHTRAP
|
|
INF3_NO_EFF_HOVERING = 0x01000, // Skill that does not affect user that has SC_HOVERING active
|
|
INF3_USABLE_WARG = 0x02000, // Skill that can be use while riding warg
|
|
INF3_DIS_MADO = 0x04000, // Skill that can't be used while in mado
|
|
INF3_USABLE_MANHOLE = 0x08000, // Skill that can be used to target while under SC__MANHOLE effect
|
|
INF3_HIT_HIDING = 0x10000, // Skill that affects hidden targets
|
|
};
|
|
|
|
/// 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
|
|
|
|
/// 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
|
|
struct skill_condition {
|
|
int hp, /// HP cost
|
|
mhp, /// Max HP to trigger
|
|
sp, /// SP cost
|
|
hp_rate, /// HP cost (%)
|
|
sp_rate, /// SP cost (%)
|
|
ammo, /// Ammo type
|
|
ammo_qty, /// Amount of ammo
|
|
weapon, /// Weapon type
|
|
zeny, /// Zeny cost
|
|
state, /// State/condition
|
|
spiritball, /// Spiritball cost
|
|
itemid[MAX_SKILL_ITEM_REQUIRE], /// Required item
|
|
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
|
|
};
|
|
|
|
struct s_skill_require {
|
|
int hp[MAX_SKILL_LEVEL], /// HP cost
|
|
mhp[MAX_SKILL_LEVEL], /// Max HP to trigger
|
|
sp[MAX_SKILL_LEVEL], /// SP cost
|
|
hp_rate[MAX_SKILL_LEVEL], /// HP cost (%)
|
|
sp_rate[MAX_SKILL_LEVEL], /// SP cost (%)
|
|
zeny[MAX_SKILL_LEVEL], /// Zeny cost
|
|
weapon, /// Weapon type
|
|
ammo, /// Ammo type
|
|
ammo_qty[MAX_SKILL_LEVEL], /// Amount of ammo
|
|
state, /// State/condition
|
|
spiritball[MAX_SKILL_LEVEL], /// Spiritball cost
|
|
itemid[MAX_SKILL_ITEM_REQUIRE], /// Required item
|
|
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
|
|
struct s_skill_db {
|
|
char name[SKILL_NAME_LENGTH];
|
|
char desc[SKILL_DESC_LENGTH];
|
|
int range[MAX_SKILL_LEVEL],hit,inf,element[MAX_SKILL_LEVEL],nk,splash[MAX_SKILL_LEVEL],max;
|
|
int num[MAX_SKILL_LEVEL];
|
|
int cast[MAX_SKILL_LEVEL],walkdelay[MAX_SKILL_LEVEL],delay[MAX_SKILL_LEVEL];
|
|
#ifdef RENEWAL_CAST
|
|
int fixed_cast[MAX_SKILL_LEVEL];
|
|
#endif
|
|
int upkeep_time[MAX_SKILL_LEVEL],upkeep_time2[MAX_SKILL_LEVEL],cooldown[MAX_SKILL_LEVEL];
|
|
int castcancel,cast_def_rate;
|
|
int inf2,maxcount[MAX_SKILL_LEVEL],skill_type,inf3;
|
|
int blewcount[MAX_SKILL_LEVEL];
|
|
struct s_skill_require require;
|
|
int castnodex[MAX_SKILL_LEVEL], delaynodex[MAX_SKILL_LEVEL];
|
|
int32 nocast;
|
|
int unit_id[2];
|
|
int unit_layout_type[MAX_SKILL_LEVEL];
|
|
int unit_range[MAX_SKILL_LEVEL];
|
|
int unit_interval;
|
|
int unit_target;
|
|
int unit_flag;
|
|
uint8 unit_nonearnpc_range; //additional range for UF_NONEARNPC or INF2_NO_NEARNPC [Cydh]
|
|
uint8 unit_nonearnpc_type; //type of NPC [Cydh]
|
|
#ifdef ADJUST_SKILL_DAMAGE
|
|
struct s_skill_damage damage;
|
|
#endif
|
|
struct s_copyable { // [Cydh]
|
|
uint8 option;
|
|
uint16 joballowed, req_opt;
|
|
} copyable;
|
|
};
|
|
extern struct s_skill_db skill_db[MAX_SKILL_DB];
|
|
|
|
#define MAX_SKILL_UNIT_LAYOUT 52
|
|
#define MAX_SKILL_UNIT_LAYOUT2 17
|
|
#define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit
|
|
#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 15
|
|
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
|
|
unsigned int tick; /// Tick when skill unit initialized
|
|
int limit, /// Life time
|
|
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 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
|
|
int limit;
|
|
int val1, val2;
|
|
short alive, range;
|
|
};
|
|
|
|
#define MAX_SKILLUNITGROUPTICKSET 25
|
|
struct skill_unit_group_tickset {
|
|
unsigned int tick;
|
|
int id;
|
|
};
|
|
|
|
|
|
enum {
|
|
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_REM_CRAZYWEED = 0x04000, // removed by Crazyweed
|
|
UF_REM_FIRERAIN = 0x08000, // removed by Fire Rain
|
|
UF_KNOCKBACK_GROUP = 0x10000, // knockback skill unit with its group instead of single unit
|
|
};
|
|
|
|
/// 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 );
|
|
int skill_get_type( uint16 skill_id );
|
|
int 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);
|
|
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 ,uint16 skill_lv );
|
|
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_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 );
|
|
|
|
int skill_name2id(const char* name);
|
|
|
|
int skill_isammotype(struct map_session_data *sd, unsigned short skill_id);
|
|
int skill_castend_id(int tid, unsigned int tick, int id, intptr_t data);
|
|
int skill_castend_pos(int tid, unsigned int tick, int id, intptr_t data);
|
|
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,unsigned int 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,int dmg_lv,unsigned int tick);
|
|
int skill_counter_additional_effect( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,int attack_type,unsigned int tick);
|
|
short skill_blown(struct block_list* src, struct block_list* target, char count, int8 dir, unsigned char 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, short x, short y, int flag);
|
|
struct skill_unit *skill_initunit (struct skill_unit_group *group, int idx, int x, int y, int val1, int val2);
|
|
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, int 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, unsigned int tick);
|
|
int64 skill_unit_ondamaged(struct skill_unit *unit,int64 damage);
|
|
|
|
int skill_castfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);
|
|
int skill_castfix_sc( struct block_list *bl, int time);
|
|
#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);
|
|
|
|
// 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);
|
|
|
|
int skill_check_pc_partner(struct map_session_data *sd, uint16 skill_id, uint16 *skill_lv, int range, int cast_flag);
|
|
// -- moonsoul (added skill_check_unit_cell)
|
|
int skill_check_unit_cell(uint16 skill_id,int16 m,int16 x,int16 y,int unit_id);
|
|
int skill_unit_out_all( struct block_list *bl,unsigned int tick,int range);
|
|
int skill_unit_move(struct block_list *bl,unsigned int 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);
|
|
|
|
struct skill_unit_group *skill_check_dancing( struct block_list *src );
|
|
|
|
// Chant canceled
|
|
int skill_castcancel(struct block_list *bl,int type);
|
|
|
|
int skill_sit (struct map_session_data *sd, int type);
|
|
void skill_brandishspear(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, unsigned int tick, int flag);
|
|
void skill_overbrand(struct block_list* src, uint16 skill_id, uint16 skill_lv, uint16 x, uint16 y, unsigned int tick, int flag);
|
|
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(uint16 skill_id, struct homun_data *hd);
|
|
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);
|
|
|
|
int skill_changetarget(struct block_list *bl,va_list ap);
|
|
|
|
// 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 );
|
|
|
|
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,unsigned int tick,int flag );
|
|
int skill_castend_damage_id( struct block_list* src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag );
|
|
int skill_castend_pos2( struct block_list *src, int x,int y,uint16 skill_id,uint16 skill_lv,unsigned int tick,int flag);
|
|
|
|
int skill_blockpc_start(struct map_session_data*, int, int);
|
|
int skill_blockpc_get(struct map_session_data *sd, int skillid);
|
|
int skill_blockpc_clear(struct map_session_data *sd);
|
|
int skill_blockpc_end(int tid, unsigned int tick, int id, intptr_t data);
|
|
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,unsigned int 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_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,
|
|
|
|
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,
|
|
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,
|
|
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,
|
|
|
|
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,
|
|
SR_FLASHCOMBO_ATK_STEP1,
|
|
SR_FLASHCOMBO_ATK_STEP2,
|
|
SR_FLASHCOMBO_ATK_STEP3,
|
|
SR_FLASHCOMBO_ATK_STEP4,
|
|
|
|
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 {
|
|
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,
|
|
|
|
/**
|
|
* 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);
|
|
|
|
bool skill_is_combo(uint16 skill_id);
|
|
void skill_combo_toogle_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, int tick);
|
|
|
|
#ifdef ADJUST_SKILL_DAMAGE
|
|
/// Skill Damage target
|
|
enum e_skill_damage_caster {
|
|
SDC_PC = 0x01,
|
|
SDC_MOB = 0x02,
|
|
SDC_PET = 0x04,
|
|
SDC_HOM = 0x08,
|
|
SDC_MER = 0x10,
|
|
SDC_ELEM = 0x20,
|
|
SDC_ALL = SDC_PC|SDC_MOB|SDC_PET|SDC_HOM|SDC_MER|SDC_ELEM,
|
|
};
|
|
#endif
|
|
|
|
/// 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"
|
|
|
|
#endif /* _SKILL_H_ */
|