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:
Aleos 2018-12-17 21:51:50 -05:00 committed by GitHub
parent 742232d575
commit 570c07d50c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 13 deletions

View File

@ -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);

View File

@ -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;
}