From 33b41fe00a47510ed6b84e04fc9e9a222b053130 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 16 Apr 2015 12:40:08 +0300 Subject: Apply WalkSpeed attribute from job_db.conf. --- src/map/init.c | 2 ++ src/map/pc.c | 16 ++++++++++++++++ src/map/pc.h | 4 ++++ src/map/status.c | 16 ++++++++++++++++ src/map/status.h | 1 + 5 files changed, 39 insertions(+) (limited to 'src') diff --git a/src/map/init.c b/src/map/init.c index 572b5e8..7eb1035 100644 --- a/src/map/init.c +++ b/src/map/init.c @@ -156,6 +156,7 @@ HPExport void plugin_init (void) addHookPost("clif->set_unit_idle", eclif_set_unit_idle_post); addHookPost("status->set_viewdata", estatus_set_viewdata_post); addHookPost("status->read_job_db_sub", estatus_read_job_db_sub); + addHookPost("status->calc_pc_", estatus_calc_pc_); addHookPost("clif->set_unit_walking", eclif_set_unit_walking); addHookPost("clif->move", eclif_move); addHookPost("map->addflooritem", emap_addflooritem_post); @@ -165,6 +166,7 @@ HPExport void plugin_init (void) addHookPost("pc->useitem", epc_useitem_post); addHookPost("pc->equipitem", epc_equipitem_post); addHookPost("pc->unequipitem", epc_unequipitem_post); + addHookPost("pc->setnewpc", epc_setnewpc); langScriptId = script->add_str("Lang"); } diff --git a/src/map/pc.c b/src/map/pc.c index 2bc8d79..c24c758 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -291,3 +291,19 @@ int epc_check_job_name(const char *name) hookStop(); return -1; } + +int epc_setnewpc(int retVal, struct map_session_data *sd, + int *account_id __attribute__ ((unused)), + int *char_id __attribute__ ((unused)), + int *login_id1 __attribute__ ((unused)), + unsigned int *client_tick __attribute__ ((unused)), + int *sex __attribute__ ((unused)), + int *fd __attribute__ ((unused))) +{ + if (sd) + { + sd->battle_status.speed = 150; + sd->base_status.speed = 150; + } + return retVal; +} diff --git a/src/map/pc.h b/src/map/pc.h index 459d836..e850b81 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -35,4 +35,8 @@ int epc_unequipitem_post(int retVal, struct map_session_data *sd, int epc_check_job_name(const char *name); +int epc_setnewpc(int retVal, struct map_session_data *sd, + int *account_id, int *char_id, int *login_id1, + unsigned int *client_tick, int *sex, int *fd); + #endif // EVOL_MAP_PC diff --git a/src/map/status.c b/src/map/status.c index 2961646..916ee78 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -13,6 +13,7 @@ #include "../../../map/itemdb.h" #include "../../../map/map.h" #include "../../../map/npc.h" +#include "../../../map/pc.h" #include "../../../map/status.h" #include "map/data/npcd.h" @@ -52,3 +53,18 @@ void estatus_read_job_db_sub(int *idxPtr, if (itemdb->lookup_const(jdb, "MoveSpeed", &i32)) class_move_speed[idx] = i32; } + +int estatus_calc_pc_(int retVal, + struct map_session_data *sd, + enum e_status_calc_opt *opt __attribute__ ((unused))) +{ + if (!sd) + return retVal; + + if (!sd->state.permanent_speed) + { + const int idx = pc->class2idx(sd->status.class_); + sd->base_status.speed = class_move_speed[idx]; + } + return retVal; +} diff --git a/src/map/status.h b/src/map/status.h index 414ad7c..fb0198b 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -7,5 +7,6 @@ void status_init(void); void estatus_set_viewdata_post(struct block_list *bl, int *class_); void estatus_read_job_db_sub(int *idxPtr, const char *name, config_setting_t *jdb); +int estatus_calc_pc_(int retVal, struct map_session_data* sd, enum e_status_calc_opt *opt); #endif // EVOL_MAP_STATUS -- cgit v1.2.3-70-g09d2