فهرست منبع

Adjusted NPC casted skill cast times
* Fixes #2045.
* NPC's that cast skills through script commands unitskilluseid or unitskillusepos with a given cast time will no longer be instant cast.

aleos89 8 سال پیش
والد
کامیت
2a6277a3dc
2فایلهای تغییر یافته به همراه2 افزوده شده و 8 حذف شده
  1. 2 2
      src/map/skill.c
  2. 0 6
      src/map/unit.c

+ 2 - 2
src/map/skill.c

@@ -16269,7 +16269,7 @@ int skill_castfix_sc(struct block_list *bl, double time, uint8 flag)
 	if (time < 0)
 		return 0;
 
-	if (bl->type == BL_MOB)
+	if (bl->type == BL_MOB || bl->type == BL_NPC)
 		return (int)time;
 
 	if (sc && sc->count) {
@@ -16322,7 +16322,7 @@ int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16
 	if (time < 0)
 		return 0;
 
-	if (bl->type == BL_MOB)
+	if (bl->type == BL_MOB || bl->type == BL_NPC)
 		return (int)time;
 
 	if (fixed < 0 || !battle_config.default_fixed_castrate) // no fixed cast time

+ 0 - 6
src/map/unit.c

@@ -1819,9 +1819,6 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
 	casttime = skill_vfcastfix(src, casttime, skill_id, skill_lv);
 #endif
 
-	if (src->type == BL_NPC) // NPC-objects do not have cast time
-		casttime = 0;
-
 	if(!ud->state.running) // Need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026
 		unit_stop_walking(src, 1); // Even though this is not how official works but this will do the trick. bugreport:6829
 
@@ -2034,9 +2031,6 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
 	casttime = skill_vfcastfix(src, casttime, skill_id, skill_lv );
 #endif
 
-	if (src->type == BL_NPC) // NPC-objects do not have cast time
-		casttime = 0;
-
 	ud->state.skillcastcancel = castcancel&&casttime>0?1:0;
 	if (!sd || sd->skillitem != skill_id || skill_get_cast(skill_id, skill_lv))
 		ud->canact_tick = tick + max(casttime, max(status_get_amotion(src), battle_config.min_skill_delay_limit)) + SECURITY_CASTTIME;