diff options
-rw-r--r-- | src/emap/init.c | 1 | ||||
-rw-r--r-- | src/emap/skill.c | 20 | ||||
-rw-r--r-- | src/emap/skill.h | 4 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/emap/init.c b/src/emap/init.c index 6bfdfa7..45a44cb 100644 --- a/src/emap/init.c +++ b/src/emap/init.c @@ -341,6 +341,7 @@ HPExport void plugin_init (void) addHookPre(script, load_parameters, escript_load_parameters_pre); addHookPre(script, hardcoded_constants, escript_hardcoded_constants_pre); addHookPre(script, run_use_script, escript_run_use_script_pre); + addHookPre(skill, check_condition_castbegin, eskill_check_condition_castbegin_pre); addHookPre(status, calc_pc_additional, estatus_calc_pc_additional_pre); addHookPre(status, calc_pc_recover_hp, estatus_calc_pc_recover_hp_pre); addHookPre(homun, gainexp, ehomunculus_gainexp_pre); diff --git a/src/emap/skill.c b/src/emap/skill.c index 20e4a82..57319ea 100644 --- a/src/emap/skill.c +++ b/src/emap/skill.c @@ -259,3 +259,23 @@ void eskill_validate_additional_fields(struct config_setting_t *conf, skilld->miscEffects[1] = i32; } } +int eskill_check_condition_castbegin_pre(struct map_session_data **sd, + uint16 *skill_id, + uint16 *skill_lv __attribute__ ((unused))) +{ + ShowWarning("calling skill"); + if( pc_is90overweight(*sd) ) { + clif->skill_fail(*sd, *skill_id, USESKILL_FAIL_WEIGHTOVER, 0, 0); + return 0; + } + switch( *skill_id ) { + case GD_BATTLEORDER: + case GD_REGENERATION: + case GD_RESTORE: + ShowWarning("STOP"); + hookStop(); + return 1; + } + ShowWarning("continue"); + return 0; +} diff --git a/src/emap/skill.h b/src/emap/skill.h index 51d7224..2c924b7 100644 --- a/src/emap/skill.h +++ b/src/emap/skill.h @@ -98,4 +98,8 @@ bool eskill_lookup_const(const struct config_setting_t *it, const char *name, int *value); +int eskill_check_condition_castbegin_pre(struct map_session_data **sd, + uint16 *skill_id, + uint16 *skill_lv __attribute__ ((unused))); + #endif // EVOL_MAP_SKILL |