Skip to content

Commit

Permalink
Rebalance of AL_ANGELUS (Angelus)
Browse files Browse the repository at this point in the history
- Now increases +50 MaxHP per SkillLevel
- The increased HP also gets healed
- 30s cooldown added

From massive skills rebalance (1st/2nd/transclass) (2018.10.31)
  • Loading branch information
guilherme-gm committed Feb 9, 2024
1 parent 4518ae7 commit 10aca69
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 3 deletions.
1 change: 1 addition & 0 deletions db/re/sc_config.conf
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ SC_ANGELUS: {
NoMagicBlocked: true
}
CalcFlags: {
Maxhp: true
Def2: true
}
Icon: "SI_ANGELUS"
Expand Down
1 change: 1 addition & 0 deletions db/re/skill_db.conf
Original file line number Diff line number Diff line change
Expand Up @@ -1557,6 +1557,7 @@ skill_db: (
InterruptCast: true
CastTime: 350
AfterCastActDelay: 3500
CoolDown: 30_000
SkillData1: {
Lv1: 30000
Lv2: 60000
Expand Down
19 changes: 17 additions & 2 deletions src/map/skill.c
Original file line number Diff line number Diff line change
Expand Up @@ -7897,8 +7897,23 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case WM_FRIGG_SONG:
if (sd == NULL || sd->status.party_id == 0 || (flag & 1) != 0) {
// Aegis: special handling, even though they aren't of magic skilltype.
if (status->isimmune(bl) == 0 || src == bl || (skill_id != AL_ANGELUS && skill_id != PR_MAGNIFICAT && skill_id != PR_GLORIA))
clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv), skill_id));
if (status->isimmune(bl) == 0 || src == bl || (skill_id != AL_ANGELUS && skill_id != PR_MAGNIFICAT && skill_id != PR_GLORIA)) {
int sc_result = sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv), skill_id);
clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_result);

#ifdef RENEWAL
if (skill_id == AL_ANGELUS && sc_result == 1) {
struct status_change *sc = status->get_sc(bl);

// Angelus should only heal when the SC is actually set in the player (starts now or was reapplied).
// Angelus may "succeed" (sc_result = 1) and not start the SC when you have the effect of a greater level.
// When this happen, we should not heal.
// Comparing val1 to skill_lv will ensure us that it has succeeded and uses the current skill_lv
if (sc->data[SC_ANGELUS] != NULL && sc->data[SC_ANGELUS]->val1 == skill_lv)
status->heal(bl, sc->data[SC_ANGELUS]->val3, 0, STATUS_HEAL_DEFAULT);
}
#endif
}
} else if (sd != NULL) {
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);
}
Expand Down
9 changes: 8 additions & 1 deletion src/map/status.c
Original file line number Diff line number Diff line change
Expand Up @@ -5766,6 +5766,10 @@ static unsigned int status_calc_maxhp(struct block_list *bl, struct status_chang
maxhp -= maxhp * sc->data[SC_GM_BATTLE2]->val1 / 100;
if (sc->data[SC_LUNARSTANCE] != NULL)
maxhp += maxhp * sc->data[SC_LUNARSTANCE]->val2 / 100;
#ifdef RENEWAL
if (sc->data[SC_ANGELUS] != NULL)
maxhp += sc->data[SC_ANGELUS]->val3;
#endif

return (unsigned int)cap_value(maxhp, 1, UINT_MAX);
}
Expand Down Expand Up @@ -8238,7 +8242,10 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
sc_start(src, bl, SC_ENDURE, 100, 1, total_tick, skill_id); // Endure effect
break;
case SC_ANGELUS:
val2 = 5*val1; //def increase
val2 = 5 * val1; // def increase
#ifdef RENEWAL
val3 = 50 * val1; // MaxHP increase
#endif
break;
case SC_IMPOSITIO:
val2 = 5*val1; //watk increase
Expand Down

0 comments on commit 10aca69

Please sign in to comment.