diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-04-27 01:21:42 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-04-27 01:32:31 +0300 |
commit | 1906d3327c586b72c6989f9ba4a7b95b25dc6341 (patch) | |
tree | dd8abdcbeee553c56feb62c23fa56f7cf0be009a /src/map/unit.c | |
parent | 5d7679de84fc41431b3bc7a137db83f33642779b (diff) | |
download | hercules-1906d3327c586b72c6989f9ba4a7b95b25dc6341.tar.gz hercules-1906d3327c586b72c6989f9ba4a7b95b25dc6341.tar.bz2 hercules-1906d3327c586b72c6989f9ba4a7b95b25dc6341.tar.xz hercules-1906d3327c586b72c6989f9ba4a7b95b25dc6341.zip |
Fix unit_data unitialisation.
Introduce method unit->init_ud.
Diffstat (limited to 'src/map/unit.c')
-rw-r--r-- | src/map/unit.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/map/unit.c b/src/map/unit.c index 7e4d94e0b..ac1e3e9b5 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1220,6 +1220,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui ud = unit->bl2ud(src); if(ud == NULL) return 0; + sc = status->get_sc(src); if (sc && !sc->count) sc = NULL; //Unneeded @@ -2289,11 +2290,18 @@ int unit_skillcastcancel(struct block_list *bl,int type) // unit_data initialization process void unit_dataset(struct block_list *bl) { - struct unit_data *ud; - nullpo_retv(ud = unit->bl2ud(bl)); + struct unit_data *ud = unit->bl2ud(bl); + nullpo_retv(ud); + + unit->init_ud(ud); + ud->bl = bl; +} + +void unit_init_ud(struct unit_data *ud) +{ + nullpo_retv(ud); - memset( ud, 0, sizeof( struct unit_data) ); - ud->bl = bl; + memset (ud, 0, sizeof(struct unit_data)); ud->walktimer = INVALID_TIMER; ud->skilltimer = INVALID_TIMER; ud->attacktimer = INVALID_TIMER; @@ -2895,6 +2903,7 @@ void unit_defaults(void) { /* */ unit->bl2ud = unit_bl2ud; unit->bl2ud2 = unit_bl2ud2; + unit->init_ud = unit_init_ud; unit->attack_timer = unit_attack_timer; unit->walktoxy_timer = unit_walktoxy_timer; unit->walktoxy_sub = unit_walktoxy_sub; |