emulating aegis status effects is for sure quite a task.. there are so many bugs and pitfalls that are hard to work around, i am here to share information with devs/community.
hopefully, https://github.com/rathena/rathena/pull/1685 can be updated
i wanted to add the following
in aegis the status config has different special properties but a lot are hardcoded. luckily one thing that's not is what's removed by certain skills (almost..) https://paste2.org/fFA7ck03
information i dug in regards to status_change_clear. some of the uses are weird, such as how the tarot card SCC is the same as trickdead's.. and that gospel instead of clearing with dispel or debuffs, it uses the trickdead dispel. currently we have this ugly status_change_clear_buffs flags that don't match at all - but it'd be so easy to make it match!
(note that this info is from old zone so it lacks info about vanishing buster and lux anima rune.)
another issue that has come up and is unfortunately not handled properly on our side - atkPercentInfo defPercentInfo, mDefPercentInfo matkPercentInfo. on aegis, it's another stat that players have that's a bit weird.
basically it's stored as a std::map indexed by the skill id causing it, containing time left, and the actual value (in the case of curse, it'd be -25 for atkPercentInfo). a player can be tarot carded to have lowered atkPercentInfo, say -25. It can be repeated with the value of -50 with another card. since it'll find tarot card with the -25 in it before, it'll overwrite (based on the highest absolute value between the 2). but if a person receives PA_GOSPEL, whcih will SetAtkPercentInfo to -50, it adds the new entry for PA_GOSPEL an the timer for the tarot card is still ticking.
it appears to use the summation of these values. in renewal, it operates on the status m/def/m/atk, but in pre-re i'd assume it's just all at once. the difference is significant because certain skills, such as MO_EXTREMITYFIST, ignore AtkPercentInfo, which makes things like SC_CURSE or SC_PROVOKE not work on it. currently SC_INCATKRATE is used for a similar purpose, but the fact that it doesn't store all the different values and looks ugly with negatives, it'd be good to make progress on that.. ahhh!
the following are known to modify AtkPercentInfo:
LK_CONCENTRATION (5*skLevel)
SC_CURSE (-25)
SM_PROVOKE(5-32)/SELFPROVOKE(32)/MER_PROVOKE(32)
PA_GOSPEL (varies)
LK_JOINTBEAT (-25)
SN_SIGHT (25)
CG_TAROTCARD (varieS)
EL_WATERBARRIER (-3)
SC_INERVATION (-30/-40/-50)
MH_EQC (skLevel*5)
MH_VOLCANIC_ASH (-50)
RG_STRIPWEAPON (-10 against mobs)
SL_SKE (300)
GD_GUARDUP (2*skLevel+8)
NPC_INVINCIBLE (100)
NPC_POWERUP (200)
WS_MELTDOWN (-25, on mobs)
RK_STONEHARDSKIN (-25 on mobs)
HAMI_BLOODLUST (10*skLevel+2)
HFLI_FLEET (5*skLevel+1)
known to use DefPercentInfo:
Heavy Poison (-25)
LK_CONCENTRATION (-5*skLevel)
LK_JOINTBEAT (-50 or -25, depends)
BD_ETERNALCHAOS (0?)
CG_TAROTCARD (-20 on the one card)
LG_EARTHDRIVE (-25)
NC_ANALYZE (14/28/42)
NC_NEUTRALBARRIER (15/20/25)
WL_MARSHOFABYSS (either 0 or tarJOBLEVEL / 2 - tarINT / 10 - 10)
frost misty or "freezing" (-10 on NPC type, -30 on players)
LG_FORCEOFVANGUARD (sorry im lazy)
MI_ECHOSONG (6*skLevel+jLevel/4+WM_LESSON level)
WM_SATURDAY_NIGHT_FEVER (-20/-30/-40/-50/-60)
MH_NEEDLE_OF_PARALYZE (-5*skLevel)
MH_EQC (-5*skLevel)
RG_STRIPSHIELD (on mobs, -15)
SL_SKE (-50)
SM_PROVOKE/SELFPROVOKE/MER_PROVOKE
EL_WATERBARRIER (30)
...i can dig more up later! i've work to attend to Q_Q
some statuses don't get properly cancelled in pc_checkallowskill by gear switching, these are: SC_LKCONCENTRATION, tension relax, max overthrust, exeed break. attention concentrate should recalculate when a person changes gears, but i'm not sure if that's handled..
oh another thing, quagmire should removes SC_LOUD. i've checked in the code, and it's even noted on irowiki for what that's worth.
if you have anything to add about status effects with missing info, please add them here and we can work on a pr to update sc_config and fix these bugs!