Fixed some status related issues (#6702)
Fixed stone curse not ending Fixed SR_GENTLETOUCH_CURE not being able to cure poison, silence and blind Cleaned up SR_GENTLETOUCH_CURE formula Fixed casting SR_GENTLETOUCH_CURE on self during status change Added missing NoMove state to PF_SPIDERWEB Fixed GN_HELLS_PLANT being removed on mapchange Fixes #6701 Thanks to @mazvi
This commit is contained in:
parent
79d978e010
commit
5193fd6c92
@ -1287,6 +1287,8 @@ Body:
|
|||||||
- Status: Spiderweb
|
- Status: Spiderweb
|
||||||
Icon: EFST_SPIDERWEB
|
Icon: EFST_SPIDERWEB
|
||||||
DurationLookup: PF_SPIDERWEB
|
DurationLookup: PF_SPIDERWEB
|
||||||
|
States:
|
||||||
|
NoMove: true
|
||||||
CalcFlags:
|
CalcFlags:
|
||||||
Flee: true
|
Flee: true
|
||||||
Flags:
|
Flags:
|
||||||
@ -6791,7 +6793,6 @@ Body:
|
|||||||
DurationLookup: GN_HELLS_PLANT
|
DurationLookup: GN_HELLS_PLANT
|
||||||
Flags:
|
Flags:
|
||||||
NoSave: true
|
NoSave: true
|
||||||
RemoveOnChangeMap: true
|
|
||||||
DisplayPc: true
|
DisplayPc: true
|
||||||
BlEffect: true
|
BlEffect: true
|
||||||
- Status: Increase_Maxhp
|
- Status: Increase_Maxhp
|
||||||
|
@ -1300,6 +1300,8 @@ Body:
|
|||||||
- Status: Spiderweb
|
- Status: Spiderweb
|
||||||
Icon: EFST_SPIDERWEB
|
Icon: EFST_SPIDERWEB
|
||||||
DurationLookup: PF_SPIDERWEB
|
DurationLookup: PF_SPIDERWEB
|
||||||
|
States:
|
||||||
|
NoMove: true
|
||||||
CalcFlags:
|
CalcFlags:
|
||||||
Flee: true
|
Flee: true
|
||||||
Flags:
|
Flags:
|
||||||
@ -7068,7 +7070,6 @@ Body:
|
|||||||
DurationLookup: GN_HELLS_PLANT
|
DurationLookup: GN_HELLS_PLANT
|
||||||
Flags:
|
Flags:
|
||||||
NoSave: true
|
NoSave: true
|
||||||
RemoveOnChangeMap: true
|
|
||||||
DisplayPc: true
|
DisplayPc: true
|
||||||
BlEffect: true
|
BlEffect: true
|
||||||
- Status: Increase_Maxhp
|
- Status: Increase_Maxhp
|
||||||
|
@ -11179,7 +11179,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
status_heal(bl, heal, 0, 0);
|
status_heal(bl, heal, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (tsc && tsc->opt1) && (rnd()%100 < ((skill_lv * 5) + (status_get_dex(src) + status_get_lv(src)) / 4) - (1 + (rnd() % 10))) ) {
|
if( tsc && tsc->count && rnd_chance( ( skill_lv * 5 + ( status_get_dex( src ) + status_get_lv( src ) ) / 4 ) - rnd_value( 1, 10 ), 100 ) ){
|
||||||
status_change_end(bl, SC_STONE, INVALID_TIMER);
|
status_change_end(bl, SC_STONE, INVALID_TIMER);
|
||||||
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
|
status_change_end(bl, SC_FREEZE, INVALID_TIMER);
|
||||||
status_change_end(bl, SC_STUN, INVALID_TIMER);
|
status_change_end(bl, SC_STUN, INVALID_TIMER);
|
||||||
|
@ -1557,7 +1557,7 @@ bool status_check_skilluse(struct block_list *src, struct block_list *target, ui
|
|||||||
(src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_id)
|
(src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_id)
|
||||||
) { // Skills blocked through status changes...
|
) { // Skills blocked through status changes...
|
||||||
if (!flag && ( // Blocked only from using the skill (stuff like autospell may still go through
|
if (!flag && ( // Blocked only from using the skill (stuff like autospell may still go through
|
||||||
sc->cant.cast ||
|
( sc->cant.cast && skill_id != RK_REFRESH && skill_id != SU_GROOMING && skill_id != SR_GENTLETOUCH_CURE ) ||
|
||||||
#ifndef RENEWAL
|
#ifndef RENEWAL
|
||||||
(sc->data[SC_BASILICA] && (sc->data[SC_BASILICA]->val4 != src->id || skill_id != HP_BASILICA)) || // Only Basilica caster that can cast, and only Basilica to cancel it
|
(sc->data[SC_BASILICA] && (sc->data[SC_BASILICA]->val4 != src->id || skill_id != HP_BASILICA)) || // Only Basilica caster that can cast, and only Basilica to cancel it
|
||||||
#endif
|
#endif
|
||||||
@ -12888,6 +12888,9 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
|
|||||||
bool disable_opt_flag = false;
|
bool disable_opt_flag = false;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
case SC_STONE:
|
||||||
|
sc->opt1 = OPT1_NONE;
|
||||||
|
break;
|
||||||
case SC_DANCING:
|
case SC_DANCING:
|
||||||
if ((sce->val1&0xFFFF) == CG_MOONLIT)
|
if ((sce->val1&0xFFFF) == CG_MOONLIT)
|
||||||
sc->opt3 &= ~OPT3_MOONLIT;
|
sc->opt3 &= ~OPT3_MOONLIT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user