Fiber Lock vs. Land Protector (follow-up to 79e9afa)
* Fiber Lock now ends in all situations in which the unit group is removed (e.g. Land Protector)
This commit is contained in:
parent
74d577ce52
commit
d1f8c8ca6c
@ -17873,6 +17873,27 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
|
||||
}
|
||||
|
||||
switch( group->skill_id ) {
|
||||
case PF_SPIDERWEB:
|
||||
{
|
||||
struct block_list* target = map_id2bl(group->val2);
|
||||
struct status_change *sc;
|
||||
bool removed = true;
|
||||
//Clear group id from status change
|
||||
if (target && (sc = status_get_sc(target)) != NULL && sc->data[SC_SPIDERWEB]) {
|
||||
if (sc->data[SC_SPIDERWEB]->val2 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val2 = 0;
|
||||
else if (sc->data[SC_SPIDERWEB]->val3 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val3 = 0;
|
||||
else if (sc->data[SC_SPIDERWEB]->val4 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val4 = 0;
|
||||
else //Group was already removed in status_change_end, don't call it again!
|
||||
removed = false;
|
||||
|
||||
//The last group was cleared, end status change
|
||||
if(removed && sc->data[SC_SPIDERWEB]->val2 == 0 && sc->data[SC_SPIDERWEB]->val3 == 0 && sc->data[SC_SPIDERWEB]->val4 == 0)
|
||||
status_change_end(target, SC_SPIDERWEB, INVALID_TIMER);
|
||||
}
|
||||
}
|
||||
case SG_SUN_WARM:
|
||||
case SG_MOON_WARM:
|
||||
case SG_STAR_WARM:
|
||||
@ -18151,23 +18172,6 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap)
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_SPIDERWEB:
|
||||
{
|
||||
struct block_list* target = map_id2bl(group->val2);
|
||||
struct status_change *sc;
|
||||
//Clear group id from status change
|
||||
if (target && (sc = status_get_sc(target)) != NULL && sc->data[SC_SPIDERWEB]) {
|
||||
if (sc->data[SC_SPIDERWEB]->val2 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val2 = 0;
|
||||
else if (sc->data[SC_SPIDERWEB]->val3 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val3 = 0;
|
||||
else if (sc->data[SC_SPIDERWEB]->val4 == group->group_id)
|
||||
sc->data[SC_SPIDERWEB]->val4 = 0;
|
||||
}
|
||||
skill_delunit(unit);
|
||||
}
|
||||
break;
|
||||
|
||||
case UNT_REVERBERATION:
|
||||
case UNT_NETHERWORLD:
|
||||
if( unit->val1 <= 0 ) { // If it was deactivated.
|
||||
|
Loading…
x
Reference in New Issue
Block a user