Implemented Star Emperor and Soul Reaper classes (#4386)
* Initial implementation of these two classes skills. * Includes kRO balancing patch: http://ro.gnjoy.com/news/devnote/View.asp?category=1&seq=3921697 Thanks to @Rytech2, @Mateuus, @nubspixel, @exneval, @idamonli, @hotspicy945, @admkakaroto, @cahya1992 and @RagnaWay!
This commit is contained in:
@@ -1924,6 +1924,10 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
|
||||
|
||||
if (!src->prev)
|
||||
return 0;
|
||||
} else if (sc->data[SC_NEWMOON] && skill_id != SJ_NEWMOONKICK) {
|
||||
status_change_end(src, SC_NEWMOON, INVALID_TIMER);
|
||||
if (!src->prev)
|
||||
return 0; // Warped away!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2097,6 +2101,11 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, ui
|
||||
} else if (sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&4)) {
|
||||
status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER);
|
||||
|
||||
if (!src->prev)
|
||||
return 0;
|
||||
} else if (sc->data[SC_NEWMOON]) {
|
||||
status_change_end(src, SC_NEWMOON, INVALID_TIMER);
|
||||
|
||||
if (!src->prev)
|
||||
return 0;
|
||||
}
|
||||
@@ -2904,6 +2913,8 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
|
||||
status_change_end(bl, SC_CLOSECONFINE2, INVALID_TIMER);
|
||||
status_change_end(bl, SC_TINDER_BREAKER, INVALID_TIMER);
|
||||
status_change_end(bl, SC_TINDER_BREAKER2, INVALID_TIMER);
|
||||
status_change_end(bl, SC_FLASHKICK, INVALID_TIMER);
|
||||
status_change_end(bl, SC_SOULUNITY, INVALID_TIMER);
|
||||
status_change_end(bl, SC_HIDING, INVALID_TIMER);
|
||||
// Ensure the bl is a PC; if so, we'll handle the removal of cloaking and cloaking exceed later
|
||||
if ( bl->type != BL_PC ) {
|
||||
@@ -2924,6 +2935,7 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
|
||||
status_change_end(bl, SC__SHADOWFORM, INVALID_TIMER);
|
||||
status_change_end(bl, SC__MANHOLE, INVALID_TIMER);
|
||||
status_change_end(bl, SC_VACUUM_EXTREME, INVALID_TIMER);
|
||||
status_change_end(bl, SC_NEWMOON, INVALID_TIMER);
|
||||
status_change_end(bl, SC_CURSEDCIRCLE_ATKER, INVALID_TIMER); // callme before warp
|
||||
status_change_end(bl, SC_SUHIDE, INVALID_TIMER);
|
||||
}
|
||||
@@ -3262,6 +3274,7 @@ int unit_free(struct block_list *bl, clr_type clrtype)
|
||||
pc_inventory_rental_clear(sd);
|
||||
pc_delspiritball(sd, sd->spiritball, 1);
|
||||
pc_delspiritcharm(sd, sd->spiritcharm, sd->spiritcharm_type);
|
||||
pc_delsoulball(sd,sd->soulball, 1);
|
||||
|
||||
if( sd->st && sd->st->state != RUN ) {// free attached scripts that are waiting
|
||||
script_free_state(sd->st);
|
||||
|
||||
Reference in New Issue
Block a user