|
@@ -8236,8 +8236,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
break;
|
|
break;
|
|
case HLIF_AVOID:
|
|
case HLIF_AVOID:
|
|
case HAMI_DEFENCE:
|
|
case HAMI_DEFENCE:
|
|
- sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)); // Master
|
|
|
|
- clif_skill_nodamage(src,src,skill_id,skill_lv,sc_start(src,src,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); // Homunc
|
|
|
|
|
|
+ // Master
|
|
|
|
+ sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
|
|
|
+ // Homunculus
|
|
|
|
+ clif_skill_nodamage(src, src, skill_id, skill_lv, sc_start(src, src, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)));
|
|
break;
|
|
break;
|
|
case NJ_BUNSINJYUTSU:
|
|
case NJ_BUNSINJYUTSU:
|
|
status_change_end(bl, SC_BUNSINJYUTSU); // on official recasting cancels existing mirror image [helvetica]
|
|
status_change_end(bl, SC_BUNSINJYUTSU); // on official recasting cancels existing mirror image [helvetica]
|
|
@@ -10670,23 +10672,26 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
|
|
|
|
case HAMI_CASTLE: //[orn]
|
|
case HAMI_CASTLE: //[orn]
|
|
if (src != bl && rnd_chance(20 * skill_lv, 100)) {
|
|
if (src != bl && rnd_chance(20 * skill_lv, 100)) {
|
|
- int x = src->x, y = src->y;
|
|
|
|
|
|
+ // Get one of the monsters targeting the player and set the homunculus as its new target
|
|
|
|
+ if (block_list* tbl = battle_getenemy(bl, BL_MOB, AREA_SIZE); tbl != nullptr) {
|
|
|
|
+ if (unit_data* ud = unit_bl2ud(tbl); ud != nullptr)
|
|
|
|
+ unit_changetarget_sub(*ud, *src);
|
|
|
|
+ }
|
|
|
|
|
|
- // Move source
|
|
|
|
- if (unit_movepos(src,bl->x,bl->y,0,0)) {
|
|
|
|
- clif_skill_nodamage(src,src,skill_id,skill_lv,1); // Homunc
|
|
|
|
|
|
+ int16 x = src->x, y = src->y;
|
|
|
|
+ // Move homunculus
|
|
|
|
+ if (unit_movepos(src, bl->x, bl->y, 0, false)) {
|
|
clif_blown(src);
|
|
clif_blown(src);
|
|
- // Move target
|
|
|
|
- if (unit_movepos(bl,x,y,0,0)) {
|
|
|
|
- clif_skill_nodamage(bl,bl,skill_id,skill_lv,1);
|
|
|
|
|
|
+ // Move player
|
|
|
|
+ if (unit_movepos(bl, x, y, 0, false))
|
|
clif_blown(bl);
|
|
clif_blown(bl);
|
|
- }
|
|
|
|
- map_foreachinallrange(unit_changetarget,src,AREA_SIZE,BL_MOB,bl,src);
|
|
|
|
|
|
+ // Show the animation on the homunculus only
|
|
|
|
+ clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else if (hd && hd->master) // Failed
|
|
|
|
|
|
+ else if (hd != nullptr && hd->master != nullptr)
|
|
clif_skill_fail( *hd->master, skill_id );
|
|
clif_skill_fail( *hd->master, skill_id );
|
|
- else if (sd)
|
|
|
|
|
|
+ else if (sd != nullptr)
|
|
clif_skill_fail( *sd, skill_id );
|
|
clif_skill_fail( *sd, skill_id );
|
|
break;
|
|
break;
|
|
case HVAN_CHAOTIC: //[orn]
|
|
case HVAN_CHAOTIC: //[orn]
|