Corrected some Summoner skills (#3719)
* Fixes #3706. * Resolved Blessing of Shrimp not boosting SP recovery properly. * Resolved Tasty Shrimp Party not accounting for Fresh Shrimp level learned. * Resolved Lope not placing the caster at the selected target location. Thanks to @Everade and @exneval!
This commit is contained in:
parent
742232d575
commit
570c07d50c
@ -10946,7 +10946,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
case SU_BUNCHOFSHRIMP:
|
||||
case SU_HISS:
|
||||
case SU_PURRING:
|
||||
case SU_SHRIMPARTY:
|
||||
case SU_MEOWMEOW:
|
||||
if (sd == NULL || sd->status.party_id == 0 || flag&1) {
|
||||
int duration = skill_get_time(skill_id, skill_lv);
|
||||
@ -10955,12 +10954,21 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
duration += skill_get_time2(SU_BUNCHOFSHRIMP, skill_lv);
|
||||
clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, duration));
|
||||
} else if (sd) {
|
||||
if (skill_id == SU_SHRIMPARTY)
|
||||
sc_start(src, bl, SC_SHRIMPBLESSING, 100, skill_lv, skill_get_time2(skill_id, skill_lv));
|
||||
party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case SU_SHRIMPARTY:
|
||||
if (sd == NULL || sd->status.party_id == 0 || flag&1) {
|
||||
sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||
if (sd && (i = pc_checkskill(sd, SU_FRESHSHRIMP)) > 0) {
|
||||
clif_skill_nodamage(bl, bl, SU_FRESHSHRIMP, i, 1);
|
||||
sc_start(src, bl, SC_FRESHSHRIMP, 100, i, skill_get_time(SU_FRESHSHRIMP, i));
|
||||
}
|
||||
} else if (sd)
|
||||
party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
|
||||
break;
|
||||
|
||||
case SU_POWEROFFLOCK:
|
||||
if (flag&1) {
|
||||
sc_start(src, bl, SC_FEAR, 100, skill_lv, skill_get_time(skill_id, skill_lv));
|
||||
@ -12479,12 +12487,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
|
||||
if (map_getmapflag(src->m, MF_NOTELEPORT) && !(map_getmapflag(src->m, MF_BATTLEGROUND) || map_flag_gvg2(src->m))) {
|
||||
x = src->x;
|
||||
y = src->y;
|
||||
} else if (dir%2) { // Diagonal
|
||||
x += dirx[dir] * (skill_lv * 4) / 3;
|
||||
y += diry[dir] * (skill_lv * 4) / 3;
|
||||
} else {
|
||||
x += dirx[dir] * skill_lv * 2;
|
||||
y += diry[dir] * skill_lv * 2;
|
||||
}
|
||||
|
||||
clif_skill_nodamage(src, src, skill_id, skill_lv, 1);
|
||||
|
@ -893,7 +893,7 @@ void initChangeTables(void)
|
||||
set_sc( SU_NYANGGRASS , SC_NYANGGRASS , EFST_NYANGGRASS , SCB_DEF|SCB_MDEF );
|
||||
set_sc( SU_GROOMING , SC_GROOMING , EFST_GROOMING , SCB_FLEE );
|
||||
add_sc( SU_PURRING , SC_GROOMING );
|
||||
add_sc( SU_SHRIMPARTY , SC_FRESHSHRIMP );
|
||||
set_sc( SU_SHRIMPARTY , SC_SHRIMPBLESSING , EFST_PROTECTIONOFSHRIMP , SCB_REGEN );
|
||||
add_sc( SU_MEOWMEOW , SC_CHATTERING );
|
||||
set_sc( SU_CHATTERING , SC_CHATTERING , EFST_CHATTERING , SCB_WATK|SCB_MATK );
|
||||
|
||||
@ -1118,7 +1118,6 @@ void initChangeTables(void)
|
||||
|
||||
/* Summoners status icons */
|
||||
StatusIconChangeTable[SC_SPRITEMABLE] = EFST_SPRITEMABLE;
|
||||
StatusIconChangeTable[SC_SHRIMPBLESSING] = EFST_PROTECTIONOFSHRIMP;
|
||||
StatusIconChangeTable[SC_DORAM_BUF_01] = EFST_DORAM_BUF_01;
|
||||
StatusIconChangeTable[SC_DORAM_BUF_02] = EFST_DORAM_BUF_02;
|
||||
|
||||
@ -1331,7 +1330,6 @@ void initChangeTables(void)
|
||||
StatusChangeFlagTable[SC_GLASTHEIM_HPSP] |= SCB_MAXHP|SCB_MAXSP;
|
||||
|
||||
// Summoner
|
||||
StatusChangeFlagTable[SC_SHRIMPBLESSING] |= SCB_REGEN;
|
||||
StatusChangeFlagTable[SC_DORAM_WALKSPEED] |= SCB_SPEED;
|
||||
StatusChangeFlagTable[SC_DORAM_MATK] |= SCB_MATK;
|
||||
StatusChangeFlagTable[SC_DORAM_FLEE2] |= SCB_FLEE2;
|
||||
@ -4589,7 +4587,7 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
|
||||
|
||||
if (sc && sc->count) {
|
||||
if (sc->data[SC_SHRIMPBLESSING])
|
||||
val += 150 / 100;
|
||||
val *= 150 / 100;
|
||||
if (sc->data[SC_ANCILLA])
|
||||
val += sc->data[SC_ANCILLA]->val2 / 100;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user