From b5fd69b64d6456df04f14930a022f712be460488 Mon Sep 17 00:00:00 2001 From: Playtester Date: Thu, 4 Dec 2014 18:32:50 +0100 Subject: [PATCH] Spiritual Bestowment fixed - Fixed Spiritual Bestowment working on Gunslinger and consuming a Spirit Sphere even when no Spirit Sphere was transferred (bugreport:4340) --- src/map/skill.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/map/skill.c b/src/map/skill.c index 947a3a8f16..9b50acee3f 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6430,8 +6430,18 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case MO_KITRANSLATION: - if(dstsd && ((dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER || (dstsd->class_&MAPID_UPPERMASK) != MAPID_REBELLION)) { - pc_addspiritball(dstsd,skill_get_time(skill_id,skill_lv),5); + if(dstsd && ((dstsd->class_&MAPID_BASEMASK) != MAPID_GUNSLINGER && (dstsd->class_&MAPID_UPPERMASK) != MAPID_REBELLION) && dstsd->spiritball < 5) { + //Require will define how many spiritballs will be transferred + struct skill_condition require; + require = skill_get_requirement(sd,skill_id,skill_lv); + pc_delspiritball(sd,require.spiritball,0); + for (i = 0; i < require.spiritball; i++) + pc_addspiritball(dstsd,skill_get_time(skill_id,skill_lv),5); + } else { + if(sd) + clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); + map_freeblock_unlock(); + return 0; } break; @@ -15040,6 +15050,10 @@ void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uin if (sd->skill_id_old == RL_FALLEN_ANGEL) //Don't consume SP if triggered by Fallen Angel require.sp = 0; break; + case MO_KITRANSLATION: + //Spiritual Bestowment only uses spirit sphere when giving it to someone + require.spiritball = 0; + //Fall through default: if(sd->state.autocast) require.sp = 0;