diff --git a/db/import-tmpl/status.yml b/db/import-tmpl/status.yml index afcb6721a0..cef4c18247 100644 --- a/db/import-tmpl/status.yml +++ b/db/import-tmpl/status.yml @@ -35,10 +35,11 @@ # MinRate Minimum rate after status change reduction (10000 = 100%). (Default: 0) # MinDuration Minimum duration in milliseconds after status change reduction. (Default: 1) # Fail: List of Status Changes that causes the status to fail to activate. (Optional) -# End: List of Status Changes that will end when the status activates. (Optional) +# EndOnStart: List of Status Changes that will end when the status activates. (Optional) # EndReturn: List of Status Changes that will end when the status activates and won't give its effect. (Optional) +# EndOnEnd: List of Status Changes that will end when the status becomes inactive. (Optional) ########################################################################### Header: Type: STATUS_DB - Version: 2 + Version: 3 diff --git a/db/pre-re/status.yml b/db/pre-re/status.yml index ab627d986c..f58e6ebd7f 100644 --- a/db/pre-re/status.yml +++ b/db/pre-re/status.yml @@ -35,13 +35,14 @@ # MinRate Minimum rate after status change reduction (10000 = 100%). (Default: 0) # MinDuration Minimum duration in milliseconds after status change reduction. (Default: 1) # Fail: List of Status Changes that causes the status to fail to activate. (Optional) -# End: List of Status Changes that will end when the status activates. (Optional) +# EndOnStart: List of Status Changes that will end when the status activates. (Optional) # EndReturn: List of Status Changes that will end when the status activates and won't give its effect. (Optional) +# EndOnEnd: List of Status Changes that will end when the status becomes inactive. (Optional) ########################################################################### Header: Type: STATUS_DB - Version: 2 + Version: 3 Body: - Status: Stone @@ -70,7 +71,7 @@ Body: Stun: true Sleep: true Burning: true - End: + EndOnStart: Aeterna: true EndReturn: StoneWait: true @@ -121,7 +122,7 @@ Body: Stun: true Sleep: true Burning: true - End: + EndOnStart: Aeterna: true - Status: Stun DurationLookup: NPC_STUNATTACK @@ -272,7 +273,7 @@ Body: BossResist: true Debuff: true NoSaveInfinite: true - End: + EndOnStart: Freeze: true Stone: true Sleep: true @@ -327,7 +328,7 @@ Body: NoBanishingBuster: true NoDispell: true NoClearance: true - End: + EndOnStart: Closeconfine: true Closeconfine2: true - Status: Cloaking @@ -355,7 +356,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Aspersio: true Fireweapon: true Waterweapon: true @@ -381,7 +382,7 @@ Body: Debuff: true Fail: Speedup1: true - End: + EndOnStart: Loud: true Concentrate: true Truesight: true @@ -437,7 +438,7 @@ Body: TaekwonAngel: true Fail: Quagmire: true - End: + EndOnStart: Decreaseagi: true Adoramus: true - Status: Decreaseagi @@ -452,7 +453,7 @@ Body: Debuff: true Fail: Speedup1: true - End: + EndOnStart: Cartboost: true Gn_Cartboost: true Increaseagi: true @@ -475,7 +476,7 @@ Body: Watk: true Flags: SuperNoviceAngel: true - End: + EndOnStart: Impositio: true - Status: Suffragium Icon: EFST_SUFFRAGIUM @@ -489,7 +490,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Fireweapon: true Waterweapon: true @@ -512,7 +513,7 @@ Body: DurationLookup: PR_KYRIE Flags: SuperNoviceAngel: true - End: + EndOnStart: Assumptio: true - Status: Magnificat Icon: EFST_MAGNIFICAT @@ -589,7 +590,7 @@ Body: NoSave: true NoClearance: true RemoveOnChangeMap: true - End: + EndOnStart: Dancing: true - Status: Loud Icon: EFST_SHOUT @@ -838,7 +839,7 @@ Body: Flags: NoClearance: true RequireShield: true - End: + EndOnStart: Reflectdamage: true - Status: Splasher Icon: EFST_SPLASHER @@ -987,7 +988,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Waterweapon: true @@ -1002,7 +1003,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1017,7 +1018,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1032,7 +1033,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1180,7 +1181,7 @@ Body: DurationLookup: HP_ASSUMPTIO Opt3: Assumptio: true - End: + EndOnStart: Kyrie: true Kaite: true - Status: Basilica @@ -1205,7 +1206,7 @@ Body: Matk: true Flags: NoSave: true - End: + EndOnStart: Magicpower: true - Status: Edp Icon: EFST_EDP @@ -1334,7 +1335,7 @@ Body: Debuff: true NoClearance: true NoSave: true - End: + EndOnStart: Blessing: true Increaseagi: true - Status: Jointbeat @@ -1358,7 +1359,7 @@ Body: Flags: NoSave: true Debuff: true - End: + EndOnStart: Freeze: true Stone: true Sleep: true @@ -1396,6 +1397,11 @@ Body: NoSave: true RemoveOnChangeMap: true OverlapIgnoreLevel: true + EndOnEnd: + Autoguard: true + Defender: true + ReflectShield: true + Endure: true - Status: Sacrifice DurationLookup: PA_SACRIFICE - Status: Steelbody @@ -1482,7 +1488,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1510,7 +1516,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1527,7 +1533,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Kaahi: true - Status: Kaupe Icon: EFST_KAUPE @@ -1548,7 +1554,7 @@ Body: RequireWeapon: true Fail: Decreaseagi: true - End: + EndOnStart: Aspdpotion0: true Aspdpotion1: true Aspdpotion2: true @@ -1603,7 +1609,7 @@ Body: Flags: MadoCancel: true NoSave: true - End: + EndOnStart: Overthrust: true - Status: Longing Icon: EFST_LONGING @@ -1684,6 +1690,8 @@ Body: RemoveOnChangeMap: true RequireWeapon: true OverlapIgnoreLevel: true + EndOnEnd: + Longing: true - Status: Elementalchange Icon: EFST_ARMOR_PROPERTY DurationLookup: NPC_ATTRICHANGE @@ -1811,7 +1819,7 @@ Body: NoClearance: true Fail: Speedup1: true - End: + EndOnStart: Increaseagi: true Adrenaline: true Adrenaline2: true @@ -2040,7 +2048,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Str_Cash: true - Status: Agifood Icon: EFST_FOOD_AGI @@ -2051,7 +2059,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Agi_Cash: true - Status: Vitfood Icon: EFST_FOOD_VIT @@ -2062,7 +2070,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Vit_Cash: true - Status: Intfood Icon: EFST_FOOD_INT @@ -2073,7 +2081,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Int_Cash: true - Status: Dexfood Icon: EFST_FOOD_DEX @@ -2084,7 +2092,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Dex_Cash: true - Status: Lukfood Icon: EFST_FOOD_LUK @@ -2095,7 +2103,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Luk_Cash: true - Status: Hitfood Icon: EFST_FOOD_BASICHIT @@ -2194,7 +2202,7 @@ Body: Flags: SendOption: true NoRemoveOnDead: true - End: + EndOnStart: Spirit: true - Status: Skillrate_Up DurationLookup: SG_FRIEND @@ -2215,7 +2223,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Assumptio: true - Status: Swoo Icon: EFST_SWOO @@ -2268,7 +2276,7 @@ Body: Fail: P_Alter: true Heat_Barrel: true - End: + EndOnStart: Adjustment: true - Status: Adjustment Icon: EFST_GS_ADJUSTMENT @@ -2279,8 +2287,8 @@ Body: Flags: NoDispell: true NoBanishingBuster: true - End: - Madnesscancel: true + EndOnStart: + MadnessCancel: true - Status: Increasing Icon: EFST_GS_ACCURACY DurationLookup: GS_INCREASING @@ -2438,7 +2446,7 @@ Body: SendVal1: true OverlapIgnoreLevel: true RemoveOnUnequipWeapon: true - End: + EndOnStart: Enchantarms: true Aspersio: true - Status: Magicalattack @@ -2718,7 +2726,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Invincibleoff: true - Status: Invincibleoff DurationLookup: NPC_INVINCIBLEOFF @@ -2728,7 +2736,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Invincible: true - Status: Manu_Atk Icon: EFST_MANU_ATK @@ -2782,7 +2790,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Strfood: true - Status: Food_Agi_Cash Icon: EFST_FOOD_AGI_CASH @@ -2794,7 +2802,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Agifood: true - Status: Food_Vit_Cash Icon: EFST_FOOD_VIT_CASH @@ -2806,7 +2814,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Vitfood: true - Status: Food_Dex_Cash Icon: EFST_FOOD_DEX_CASH @@ -2818,7 +2826,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Intfood: true - Status: Food_Int_Cash Icon: EFST_FOOD_INT_CASH @@ -2830,7 +2838,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Dexfood: true - Status: Food_Luk_Cash Icon: EFST_FOOD_LUK_CASH @@ -2842,7 +2850,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Lukfood: true - Status: Fear DurationLookup: RK_WINDCUTTER @@ -2858,7 +2866,7 @@ Body: Debuff: true Fail: Inspiration: true - End: + EndOnStart: Blind: true - Status: Burning Icon: EFST_BURNT @@ -2897,7 +2905,7 @@ Body: Refresh: true Inspiration: true Warmer: true - End: + EndOnStart: Burning: true - Status: Enchantblade Icon: EFST_ENCHANTBLADE @@ -2992,7 +3000,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Fightingspirit: true - Status: Abundance Icon: EFST_ABUNDANCE @@ -3011,7 +3019,7 @@ Body: Flags: BossResist: true Debuff: true - End: + EndOnStart: Decreaseagi: true - Status: Epiclesis Icon: EFST_EPICLESIS @@ -3086,7 +3094,7 @@ Body: SetStand: true StopWalking: true StopAttacking: true - End: + EndOnStart: Freezing: true - Status: Marshofabyss Icon: EFST_MARSHOFABYSS @@ -3105,7 +3113,7 @@ Body: MinDuration: 5000 Fail: Refresh: true - End: + EndOnStart: Increaseagi: true Windwalk: true Aspdpotion0: true @@ -3452,7 +3460,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Venombleed Icon: EFST_VENOMBLEED CalcFlags: @@ -3474,7 +3482,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Magicmushroom Icon: EFST_MAGICMUSHROOM CalcFlags: @@ -3496,7 +3504,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Deathhurt Icon: EFST_DEATHHURT CalcFlags: @@ -3518,7 +3526,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Pyrexia Icon: EFST_PYREXIA CalcFlags: @@ -3540,7 +3548,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Oblivioncurse Icon: EFST_OBLIVIONCURSE States: @@ -3565,7 +3573,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Leechesend Icon: EFST_LEECHESEND Flags: @@ -3585,7 +3593,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Reflectdamage Icon: EFST_LG_REFLECTDAMAGE DurationLookup: LG_REFLECTDAMAGE @@ -3593,7 +3601,7 @@ Body: NoDispell: true NoBanishingBuster: true RequireShield: true - End: + EndOnStart: Reflectshield: true - Status: Forceofvanguard Icon: EFST_FORCEOFVANGUARD @@ -3607,13 +3615,13 @@ Body: - Status: Shieldspell_Hp Icon: EFST_SHIELDSPELL_DEF DurationLookup: LG_SHIELDSPELL - End: + EndOnStart: Shieldspell_Sp: true Shieldspell_Atk: true - Status: Shieldspell_Sp Icon: EFST_SHIELDSPELL_MDEF DurationLookup: LG_SHIELDSPELL - End: + EndOnStart: Shieldspell_Hp: true Shieldspell_Atk: true - Status: Shieldspell_Atk @@ -3622,7 +3630,7 @@ Body: CalcFlags: Watk: true Matk: true - End: + EndOnStart: Shieldspell_Hp: true Shieldspell_Sp: true - Status: Exeedbreak @@ -3649,7 +3657,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Prestige: true - Status: Banding_Defence Icon: EFST_BANDING_DEFENCE @@ -3723,7 +3731,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Crystalize: true Freezing: true Freeze: true @@ -3760,7 +3768,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Symphonyoflover: true Moonlitserenade: true Rushwindmill: true @@ -3775,7 +3783,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Moonlitserenade: true Rushwindmill: true @@ -3790,7 +3798,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Rushwindmill: true @@ -3806,7 +3814,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -3821,7 +3829,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -3837,7 +3845,7 @@ Body: Int: true Dex: true Luk: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -3851,7 +3859,7 @@ Body: DisplayPc: true StopAttacking: true MinDuration: 10000 - End: + EndOnStart: Deepsleep: true Gloomyday: true Gloomyday_Sk: true @@ -3889,7 +3897,7 @@ Body: Fail: Refresh: true Inspiration: true - End: + EndOnStart: Dancing: true Voiceofsiren: true Gloomyday: true @@ -3905,7 +3913,7 @@ Body: - Status: Sircleofnature Icon: EFST_SIRCLEOFNATURE DurationLookup: WM_SIRCLEOFNATURE - End: + EndOnStart: Deepsleep: true Gloomyday: true Gloomyday_Sk: true @@ -3926,7 +3934,7 @@ Body: Flee: true Speed: true Aspd: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Songofmana: true @@ -3941,7 +3949,7 @@ Body: - Status: Songofmana Icon: EFST_SONG_OF_MANA DurationLookup: WM_SONG_OF_MANA - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -3960,7 +3968,7 @@ Body: DurationLookup: WM_DANCE_WITH_WUG CalcFlags: Aspd: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -3990,7 +3998,7 @@ Body: Fail: Berserk: true Inspiration: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4011,7 +4019,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4033,7 +4041,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4055,7 +4063,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4074,7 +4082,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4178,7 +4186,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Gt_Revitalize: true - Status: Gt_Revitalize Icon: EFST_GENTLETOUCH_REVITALIZE @@ -4190,7 +4198,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Gt_Change: true - Status: Gn_Cartboost Icon: EFST_GN_CARTBOOST @@ -5221,7 +5229,7 @@ Body: MaxHp: true Flags: NoSave: true - End: + EndOnStart: Tinder_Breaker2: true - Status: Goldene_Ferse Icon: EFST_GOLDENE_FERSE @@ -5260,7 +5268,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Overed_Boost: true - Status: Light_Of_Regene Icon: EFST_LIGHT_OF_REGENE @@ -5388,7 +5396,7 @@ Body: NoConsumeItem: true Flags: StopAttacking: true - End: + EndOnStart: Poison: true Blind: true Freeze: true @@ -5423,7 +5431,7 @@ Body: DisplayPc: true Fail: Magnificat: true - End: + EndOnStart: Magnificat: true Blind: true Curse: true @@ -5437,7 +5445,7 @@ Body: Paralyse: true Pyrexia: true Deathhurt: true - Leechesend: true + LeechesEnd: true Venombleed: true Toxin: true Magicmushroom: true @@ -5510,7 +5518,7 @@ Body: NoClearance: true Fail: P_Alter: true - Madnesscancel: true + MadnessCancel: true - Status: P_Alter Icon: EFST_P_ALTER DurationLookup: RL_P_ALTER @@ -5521,7 +5529,7 @@ Body: NoClearance: true Fail: Heat_Barrel: true - Madnesscancel: true + MadnessCancel: true - Status: E_Chain Icon: EFST_E_CHAIN DurationLookup: RL_E_CHAIN @@ -5793,7 +5801,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Str_Cash: true Food_Agi_Cash: true Food_Vit_Cash: true @@ -6223,31 +6231,31 @@ Body: Icon: EFST_GVG_GOLEM - Status: Gvg_Stun Icon: EFST_GVG_STUN - End: + EndOnStart: Gvg_Stun: true - Status: Gvg_Stone Icon: EFST_GVG_STONE - End: + EndOnStart: Stone: true - Status: Gvg_Freez Icon: EFST_GVG_FREEZ - End: + EndOnStart: Freeze: true - Status: Gvg_Sleep Icon: EFST_GVG_SLEEP - End: + EndOnStart: Sleep: true - Status: Gvg_Curse Icon: EFST_GVG_CURSE - End: + EndOnStart: Curse: true - Status: Gvg_Silence Icon: EFST_GVG_SILENCE - End: + EndOnStart: Silence: true - Status: Gvg_Blind Icon: EFST_GVG_BLIND - End: + EndOnStart: Blind: true - Status: Clan_Info Icon: EFST_CLAN_INFO @@ -6272,6 +6280,8 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true + EndOnEnd: + Clan_Info: true - Status: Arcwandclan Icon: EFST_ARCWANDCLAN CalcFlags: @@ -6285,6 +6295,8 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true + EndOnEnd: + Clan_Info: true - Status: Goldenmaceclan Icon: EFST_GOLDENMACECLAN CalcFlags: @@ -6298,6 +6310,8 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true + EndOnEnd: + Clan_Info: true - Status: Crossbowclan Icon: EFST_CROSSBOWCLAN CalcFlags: @@ -6311,6 +6325,8 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true + EndOnEnd: + Clan_Info: true - Status: Jumpingclan Icon: EFST_JUMPINGCLAN CalcFlags: @@ -6326,6 +6342,8 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true + EndOnEnd: + Clan_Info: true - Status: Tarotcard Icon: EFST_TAROTCARD DurationLookup: CG_TAROTCARD @@ -6426,7 +6444,7 @@ Body: Flee: true Flags: NoRemoveOnDead: true - End: + EndOnStart: Stun: true Freeze: true Stone: true @@ -6620,19 +6638,19 @@ Body: - Status: Lightofmoon Icon: EFST_LIGHTOFMOON DurationLookup: SJ_LIGHTOFMOON - End: + EndOnStart: Lunarstance: true Universestance: true - Status: Lightofsun Icon: EFST_LIGHTOFSUN DurationLookup: SJ_LIGHTOFSUN - End: + EndOnStart: Lightofsun: true Universestance: true - Status: Lightofstar Icon: EFST_LIGHTOFSTAR DurationLookup: SJ_LIGHTOFSTAR - End: + EndOnStart: Starstance: true Universestance: true - Status: Lunarstance @@ -6640,7 +6658,7 @@ Body: DurationLookup: SJ_LUNARSTANCE CalcFlags: MaxHp: true - End: + EndOnStart: Sunstance: true Starstance: true Universestance: true @@ -6654,7 +6672,7 @@ Body: Int: true Dex: true Luk: true - End: + EndOnStart: Sunstance: true Lunarstance: true Starstance: true @@ -6664,7 +6682,7 @@ Body: CalcFlags: Batk: true Watk: true - End: + EndOnStart: Lunarstance: true Starstance: true Universestance: true @@ -6697,7 +6715,7 @@ Body: DurationLookup: SJ_STARSTANCE CalcFlags: Aspd: true - End: + EndOnStart: Sunstance: true Lunarstance: true Universestance: true @@ -6766,7 +6784,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Spirit: true Soulgolem: true Soulfalcon: true @@ -6781,7 +6799,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Spirit: true Soulgolem: true Soulshadow: true @@ -6797,7 +6815,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Spirit: true Soulgolem: true Soulshadow: true @@ -6813,7 +6831,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Spirit: true Soulshadow: true Soulfalcon: true diff --git a/db/re/status.yml b/db/re/status.yml index 81d564e809..0afe3c74dd 100644 --- a/db/re/status.yml +++ b/db/re/status.yml @@ -35,13 +35,14 @@ # MinRate Minimum rate after status change reduction (10000 = 100%). (Default: 0) # MinDuration Minimum duration in milliseconds after status change reduction. (Default: 1) # Fail: List of Status Changes that causes the status to fail to activate. (Optional) -# End: List of Status Changes that will end when the status activates. (Optional) +# EndOnStart: List of Status Changes that will end when the status activates. (Optional) # EndReturn: List of Status Changes that will end when the status activates and won't give its effect. (Optional) +# EndOnEnd: List of Status Changes that will end when the status becomes inactive. (Optional) ########################################################################### Header: Type: STATUS_DB - Version: 2 + Version: 3 Body: - Status: Stone @@ -71,7 +72,7 @@ Body: Stun: true Sleep: true Burning: true - End: + EndOnStart: Aeterna: true EndReturn: StoneWait: true @@ -124,7 +125,7 @@ Body: Stun: true Sleep: true Burning: true - End: + EndOnStart: Aeterna: true - Status: Stun DurationLookup: NPC_STUNATTACK @@ -281,7 +282,7 @@ Body: BossResist: true Debuff: true NoSaveInfinite: true - End: + EndOnStart: Freeze: true Stone: true Sleep: true @@ -338,7 +339,7 @@ Body: NoBanishingBuster: true NoDispell: true NoClearance: true - End: + EndOnStart: Closeconfine: true Closeconfine2: true - Status: Cloaking @@ -366,7 +367,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Aspersio: true Fireweapon: true Waterweapon: true @@ -391,7 +392,7 @@ Body: Debuff: true Fail: Speedup1: true - End: + EndOnStart: Loud: true Concentrate: true Truesight: true @@ -450,7 +451,7 @@ Body: TaekwonAngel: true Fail: Quagmire: true - End: + EndOnStart: Decreaseagi: true Adoramus: true - Status: Decreaseagi @@ -465,7 +466,7 @@ Body: Debuff: true Fail: Speedup1: true - End: + EndOnStart: Cartboost: true Gn_Cartboost: true Increaseagi: true @@ -489,7 +490,7 @@ Body: Matk: true Flags: SuperNoviceAngel: true - End: + EndOnStart: Impositio: true - Status: Suffragium Icon: EFST_SUFFRAGIUM @@ -503,7 +504,7 @@ Body: Atk_Ele: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Fireweapon: true Waterweapon: true @@ -535,7 +536,7 @@ Body: FailedMado: true NoSave: true SuperNoviceAngel: true - End: + EndOnStart: Offertorium: true - Status: Gloria Icon: EFST_GLORIA @@ -604,7 +605,7 @@ Body: NoSave: true NoClearance: true RemoveOnChangeMap: true - End: + EndOnStart: Dancing: true - Status: Loud Icon: EFST_SHOUT @@ -855,7 +856,7 @@ Body: Flags: NoClearance: true RequireShield: true - End: + EndOnStart: Reflectdamage: true - Status: Splasher Icon: EFST_SPLASHER @@ -1004,7 +1005,7 @@ Body: All: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Waterweapon: true @@ -1019,7 +1020,7 @@ Body: All: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1034,7 +1035,7 @@ Body: All: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1049,7 +1050,7 @@ Body: All: true Flags: RemoveOnUnequipWeapon: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1197,7 +1198,7 @@ Body: Def: true Opt3: Assumptio: true - End: + EndOnStart: Kaite: true - Status: Basilica Icon: EFST_BASILICA_BUFF @@ -1221,7 +1222,7 @@ Body: Matk: true Flags: NoSave: true - End: + EndOnStart: Magicpower: true - Status: Edp Icon: EFST_EDP @@ -1351,7 +1352,7 @@ Body: Debuff: true NoClearance: true NoSave: true - End: + EndOnStart: Blessing: true Increaseagi: true - Status: Jointbeat @@ -1375,7 +1376,7 @@ Body: Flags: NoSave: true Debuff: true - End: + EndOnStart: Freeze: true Stone: true Sleep: true @@ -1413,6 +1414,11 @@ Body: NoSave: true RemoveOnChangeMap: true OverlapIgnoreLevel: true + EndOnEnd: + Autoguard: true + Defender: true + ReflectShield: true + Endure: true - Status: Sacrifice DurationLookup: PA_SACRIFICE - Status: Steelbody @@ -1499,7 +1505,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1527,7 +1533,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Encpoison: true Aspersio: true Fireweapon: true @@ -1544,7 +1550,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Kaahi: true - Status: Kaupe Icon: EFST_KAUPE @@ -1565,7 +1571,7 @@ Body: RequireWeapon: true Fail: Decreaseagi: true - End: + EndOnStart: Aspdpotion0: true Aspdpotion1: true Aspdpotion2: true @@ -1607,7 +1613,7 @@ Body: MadoCancel: true NoSave: true RemoveOnUnequipWeapon: true - End: + EndOnStart: Overthrust: true - Status: Hermode Icon: EFST_HERMODE @@ -1682,6 +1688,8 @@ Body: RemoveOnChangeMap: true RequireWeapon: true OverlapIgnoreLevel: true + EndOnEnd: + EnsembleFatigue: true - Status: Elementalchange Icon: EFST_ARMOR_PROPERTY DurationLookup: NPC_ATTRICHANGE @@ -1700,7 +1708,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1717,7 +1725,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1734,7 +1742,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1751,7 +1759,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1769,7 +1777,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1784,7 +1792,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1801,7 +1809,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Richmankim: true Eternalchaos: true Drumbattle: true @@ -1820,7 +1828,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Whistle: true Assncros: true Poembragi: true @@ -1838,7 +1846,7 @@ Body: NoClearance: true Fail: Quagmire: true - End: + EndOnStart: Whistle: true Assncros: true Poembragi: true @@ -1851,7 +1859,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Whistle: true Assncros: true Poembragi: true @@ -1866,7 +1874,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Whistle: true Assncros: true Poembragi: true @@ -1885,7 +1893,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Dontforgetme: true Humming: true Fortune: true @@ -1903,7 +1911,7 @@ Body: NoClearance: true Fail: Speedup1: true - End: + EndOnStart: Increaseagi: true Adrenaline: true Adrenaline2: true @@ -1926,7 +1934,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Dontforgetme: true Humming: true Fortune: true @@ -1941,7 +1949,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Dontforgetme: true Humming: true Fortune: true @@ -2155,7 +2163,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Str_Cash: true - Status: Agifood Icon: EFST_FOOD_AGI @@ -2166,7 +2174,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Agi_Cash: true - Status: Vitfood Icon: EFST_FOOD_VIT @@ -2177,7 +2185,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Vit_Cash: true - Status: Intfood Icon: EFST_FOOD_INT @@ -2188,7 +2196,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Int_Cash: true - Status: Dexfood Icon: EFST_FOOD_DEX @@ -2199,7 +2207,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Dex_Cash: true - Status: Lukfood Icon: EFST_FOOD_LUK @@ -2210,7 +2218,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Luk_Cash: true - Status: Hitfood Icon: EFST_FOOD_BASICHIT @@ -2309,7 +2317,7 @@ Body: Flags: SendOption: true NoRemoveOnDead: true - End: + EndOnStart: Spirit: true - Status: Skillrate_Up DurationLookup: SG_FRIEND @@ -2330,7 +2338,7 @@ Body: Flags: NoSave: true NoClearance: true - End: + EndOnStart: Assumptio: true - Status: Swoo Icon: EFST_SWOO @@ -2382,7 +2390,7 @@ Body: Fail: P_Alter: true Heat_Barrel: true - End: + EndOnStart: Adjustment: true - Status: Adjustment Icon: EFST_GS_ADJUSTMENT @@ -2393,8 +2401,8 @@ Body: Flags: NoDispell: true NoBanishingBuster: true - End: - Madnesscancel: true + EndOnStart: + MadnessCancel: true - Status: Increasing Icon: EFST_GS_ACCURACY DurationLookup: GS_INCREASING @@ -2551,7 +2559,7 @@ Body: SendVal1: true OverlapIgnoreLevel: true RemoveOnUnequipWeapon: true - End: + EndOnStart: Enchantarms: true Aspersio: true - Status: Magicalattack @@ -2791,7 +2799,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: L_Lifepotion: true M_Lifepotion: true Fail: @@ -2802,7 +2810,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: S_Lifepotion: true M_Lifepotion: true Fail: @@ -2834,7 +2842,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Invincibleoff: true - Status: Invincibleoff DurationLookup: NPC_INVINCIBLEOFF @@ -2844,7 +2852,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Invincible: true - Status: Manu_Atk Icon: EFST_MANU_ATK @@ -2898,7 +2906,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Strfood: true - Status: Food_Agi_Cash Icon: EFST_FOOD_AGI_CASH @@ -2910,7 +2918,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Agifood: true - Status: Food_Vit_Cash Icon: EFST_FOOD_VIT_CASH @@ -2922,7 +2930,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Vitfood: true - Status: Food_Dex_Cash Icon: EFST_FOOD_DEX_CASH @@ -2934,7 +2942,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Intfood: true - Status: Food_Int_Cash Icon: EFST_FOOD_INT_CASH @@ -2946,7 +2954,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Dexfood: true - Status: Food_Luk_Cash Icon: EFST_FOOD_LUK_CASH @@ -2958,7 +2966,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Lukfood: true - Status: Fear DurationLookup: RK_WINDCUTTER @@ -2974,7 +2982,7 @@ Body: Debuff: true Fail: Inspiration: true - End: + EndOnStart: Blind: true - Status: Burning Icon: EFST_BURNT @@ -3111,7 +3119,7 @@ Body: NoBanishingBuster: true NoClearance: true SendVal2: true - End: + EndOnStart: Fightingspirit: true - Status: Abundance Icon: EFST_ABUNDANCE @@ -3132,7 +3140,7 @@ Body: Flags: BossResist: true Debuff: true - End: + EndOnStart: Decreaseagi: true - Status: Epiclesis Icon: EFST_EPICLESIS @@ -3208,7 +3216,7 @@ Body: StopWalking: true StopAttacking: true StopCasting: true - End: + EndOnStart: Freezing: true - Status: Marshofabyss Icon: EFST_MARSHOFABYSS @@ -3227,7 +3235,7 @@ Body: MinDuration: 5000 Fail: Refresh: true - End: + EndOnStart: Increaseagi: true Windwalk: true Aspdpotion0: true @@ -3596,7 +3604,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Venombleed Icon: EFST_VENOMBLEED CalcFlags: @@ -3619,7 +3627,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Magicmushroom Icon: EFST_MAGICMUSHROOM CalcFlags: @@ -3642,7 +3650,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Deathhurt Icon: EFST_DEATHHURT CalcFlags: @@ -3665,7 +3673,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Pyrexia Icon: EFST_PYREXIA CalcFlags: @@ -3688,7 +3696,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Oblivioncurse Icon: EFST_OBLIVIONCURSE States: @@ -3714,7 +3722,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Leechesend Icon: EFST_LEECHESEND Flags: @@ -3735,7 +3743,7 @@ Body: Deathhurt: true Pyrexia: true Oblivioncurse: true - Leechesend: true + LeechesEnd: true - Status: Reflectdamage Icon: EFST_LG_REFLECTDAMAGE DurationLookup: LG_REFLECTDAMAGE @@ -3744,7 +3752,7 @@ Body: NoBanishingBuster: true RequireShield: true NoSave: true - End: + EndOnStart: Reflectshield: true - Status: Forceofvanguard Icon: EFST_FORCEOFVANGUARD @@ -3759,13 +3767,13 @@ Body: - Status: Shieldspell_Hp Icon: EFST_SHIELDSPELL DurationLookup: LG_SHIELDSPELL - End: + EndOnStart: Shieldspell_Sp: true Shieldspell_Atk: true - Status: Shieldspell_Sp Icon: EFST_SHIELDSPELL DurationLookup: LG_SHIELDSPELL - End: + EndOnStart: Shieldspell_Hp: true Shieldspell_Atk: true - Status: Shieldspell_Atk @@ -3774,7 +3782,7 @@ Body: CalcFlags: Watk: true Matk: true - End: + EndOnStart: Shieldspell_Hp: true Shieldspell_Sp: true - Status: Exeedbreak @@ -3805,7 +3813,7 @@ Body: SendVal1: true Fail: Banding: true - End: + EndOnStart: Prestige: true - Status: Banding_Defence Icon: EFST_BANDING_DEFENCE @@ -3883,7 +3891,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Crystalize: true Freezing: true Freeze: true @@ -3924,7 +3932,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Symphonyoflover: true Moonlitserenade: true Rushwindmill: true @@ -3939,7 +3947,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Moonlitserenade: true Rushwindmill: true @@ -3954,7 +3962,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Rushwindmill: true @@ -3970,7 +3978,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -3985,7 +3993,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -4001,7 +4009,7 @@ Body: Int: true Dex: true Luk: true - End: + EndOnStart: Swingdance: true Symphonyoflover: true Moonlitserenade: true @@ -4015,7 +4023,7 @@ Body: DisplayPc: true StopAttacking: true MinDuration: 10000 - End: + EndOnStart: Deepsleep: true Gloomyday: true Gloomyday_Sk: true @@ -4055,7 +4063,7 @@ Body: Refresh: true Inspiration: true Deepsleep: true - End: + EndOnStart: Dancing: true Voiceofsiren: true Gloomyday: true @@ -4071,7 +4079,7 @@ Body: - Status: Sircleofnature Icon: EFST_SIRCLEOFNATURE DurationLookup: WM_SIRCLEOFNATURE - End: + EndOnStart: Deepsleep: true Gloomyday: true Gloomyday_Sk: true @@ -4092,7 +4100,7 @@ Body: Flee: true Speed: true Aspd: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Songofmana: true @@ -4107,7 +4115,7 @@ Body: - Status: Songofmana Icon: EFST_SONG_OF_MANA DurationLookup: WM_SONG_OF_MANA - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4126,7 +4134,7 @@ Body: DurationLookup: WM_DANCE_WITH_WUG CalcFlags: Aspd: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4156,7 +4164,7 @@ Body: Fail: Berserk: true Inspiration: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4177,7 +4185,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4199,7 +4207,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4221,7 +4229,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4240,7 +4248,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Voiceofsiren: true Deepsleep: true Gloomyday: true @@ -4350,7 +4358,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Gt_Revitalize: true - Status: Gt_Revitalize Icon: EFST_GENTLETOUCH_REVITALIZE @@ -4362,7 +4370,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Gt_Change: true - Status: Gn_Cartboost Icon: EFST_GN_CARTBOOST @@ -4419,6 +4427,8 @@ Body: NoBanishingBuster: true NoClearance: true NoSave: true + EndOnEnd: + TearGas_Sob: true - Status: Mandragora Icon: EFST_MANDRAGORA DurationLookup: GN_MANDRAGORA @@ -5489,7 +5499,7 @@ Body: MaxHp: true Flags: NoSave: true - End: + EndOnStart: Tinder_Breaker2: true - Status: Goldene_Ferse Icon: EFST_GOLDENE_FERSE @@ -5528,7 +5538,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Overed_Boost: true - Status: Light_Of_Regene Icon: EFST_LIGHT_OF_REGENE @@ -5656,7 +5666,7 @@ Body: Fail: Devotion: true Whiteimprison: true - End: + EndOnStart: Poison: true Blind: true Freeze: true @@ -5691,7 +5701,7 @@ Body: DisplayPc: true Fail: Magnificat: true - End: + EndOnStart: Magnificat: true Blind: true Curse: true @@ -5705,7 +5715,7 @@ Body: Paralyse: true Pyrexia: true Deathhurt: true - Leechesend: true + LeechesEnd: true Venombleed: true Toxin: true Magicmushroom: true @@ -5779,7 +5789,7 @@ Body: RemoveOnUnequip: true Fail: P_Alter: true - Madnesscancel: true + MadnessCancel: true - Status: Magicalbullet Icon: EFST_GS_MAGICAL_BULLET DurationLookup: GS_MAGICALBULLET @@ -5793,7 +5803,7 @@ Body: NoClearance: true Fail: Heat_Barrel: true - Madnesscancel: true + MadnessCancel: true - Status: E_Chain Icon: EFST_E_CHAIN DurationLookup: RL_E_CHAIN @@ -6531,31 +6541,31 @@ Body: Icon: EFST_GVG_GOLEM - Status: Gvg_Stun Icon: EFST_GVG_STUN - End: + EndOnStart: Gvg_Stun: true - Status: Gvg_Stone Icon: EFST_GVG_STONE - End: + EndOnStart: Stone: true - Status: Gvg_Freez Icon: EFST_GVG_FREEZ - End: + EndOnStart: Freeze: true - Status: Gvg_Sleep Icon: EFST_GVG_SLEEP - End: + EndOnStart: Sleep: true - Status: Gvg_Curse Icon: EFST_GVG_CURSE - End: + EndOnStart: Curse: true - Status: Gvg_Silence Icon: EFST_GVG_SILENCE - End: + EndOnStart: Silence: true - Status: Gvg_Blind Icon: EFST_GVG_BLIND - End: + EndOnStart: Blind: true - Status: Clan_Info Icon: EFST_CLAN_INFO @@ -6582,6 +6592,8 @@ Body: NoBanishingBuster: true NoClearance: true SendVal1: true + EndOnEnd: + Clan_Info: true - Status: Arcwandclan Icon: EFST_ARCWANDCLAN CalcFlags: @@ -6596,6 +6608,8 @@ Body: NoBanishingBuster: true NoClearance: true SendVal1: true + EndOnEnd: + Clan_Info: true - Status: Goldenmaceclan Icon: EFST_GOLDENMACECLAN CalcFlags: @@ -6610,6 +6624,8 @@ Body: NoBanishingBuster: true NoClearance: true SendVal1: true + EndOnEnd: + Clan_Info: true - Status: Crossbowclan Icon: EFST_CROSSBOWCLAN CalcFlags: @@ -6624,6 +6640,8 @@ Body: NoBanishingBuster: true NoClearance: true SendVal1: true + EndOnEnd: + Clan_Info: true - Status: Jumpingclan Icon: EFST_JUMPINGCLAN CalcFlags: @@ -6640,6 +6658,8 @@ Body: NoBanishingBuster: true NoClearance: true SendVal1: true + EndOnEnd: + Clan_Info: true - Status: Tarotcard Icon: EFST_TAROTCARD DurationLookup: CG_TAROTCARD @@ -6747,7 +6767,7 @@ Body: NoRemoveOnDead: true Fail: Grooming: true - End: + EndOnStart: Stun: true Freeze: true Stone: true @@ -6952,19 +6972,19 @@ Body: - Status: Lightofmoon Icon: EFST_LIGHTOFMOON DurationLookup: SJ_LIGHTOFMOON - End: + EndOnStart: Lunarstance: true Universestance: true - Status: Lightofsun Icon: EFST_LIGHTOFSUN DurationLookup: SJ_LIGHTOFSUN - End: + EndOnStart: Lightofsun: true Universestance: true - Status: Lightofstar Icon: EFST_LIGHTOFSTAR DurationLookup: SJ_LIGHTOFSTAR - End: + EndOnStart: Starstance: true Universestance: true - Status: Lunarstance @@ -6972,10 +6992,13 @@ Body: DurationLookup: SJ_LUNARSTANCE CalcFlags: MaxHp: true - End: + EndOnStart: Sunstance: true Starstance: true Universestance: true + EndOnEnd: + NewMoon: true + LightOfMoon: true - Status: Universestance Icon: EFST_UNIVERSESTANCE DurationLookup: SJ_UNIVERSESTANCE @@ -6986,20 +7009,29 @@ Body: Int: true Dex: true Luk: true - End: + EndOnStart: Sunstance: true Lunarstance: true Starstance: true + EndOnEnd: + LightOfSun: true + NewMoon: true + LightOfMoon: true + FallingStar: true + LightOfStar: true + Dimension: true - Status: Sunstance Icon: EFST_SUNSTANCE DurationLookup: SJ_SUNSTANCE CalcFlags: Batk: true Watk: true - End: + EndOnStart: Lunarstance: true Starstance: true Universestance: true + EndOnEnd: + LightOfSun: true - Status: Flashkick Icon: EFST_FLASHKICK DurationLookup: SJ_FLASHKICK @@ -7031,10 +7063,13 @@ Body: DurationLookup: SJ_STARSTANCE CalcFlags: Aspd: true - End: + EndOnStart: Sunstance: true Lunarstance: true Universestance: true + EndOnEnd: + FallingStar: true + LightOfStar: true - Status: Dimension Icon: EFST_DIMENSION DurationLookup: SJ_BOOKOFDIMENSION @@ -7335,7 +7370,7 @@ Body: NoClearance: true NoClearbuff: true SendVal1: true - End: + EndOnStart: Shapeshift: true Hovering: true Acceleration: true @@ -7463,7 +7498,7 @@ Body: Chill: true - Status: Chill Icon: EFST_CHILL - End: + EndOnStart: Burnt: true - Status: Handicapstate_Deepblind Icon: EFST_HANDICAPSTATE_DEEPBLIND @@ -7594,6 +7629,8 @@ Body: DurationLookup: DK_CHARGINGPIERCE Flags: SendVal1: true + EndOnEnd: + ChargingPierce_Count: true - Status: Chargingpierce_Count Icon: EFST_CHARGINGPIERCE_COUNT Flags: @@ -7784,7 +7821,7 @@ Body: NoBanishingBuster: true NoDispell: true NoClearance: true - End: + EndOnStart: Attack_Stance: true - Status: Attack_Stance Icon: EFST_ATTACK_STANCE @@ -7798,7 +7835,7 @@ Body: NoBanishingBuster: true NoDispell: true NoClearance: true - End: + EndOnStart: Guard_Stance: true - Status: Guardian_S Icon: EFST_GUARDIAN_S @@ -7902,7 +7939,7 @@ Body: CalcFlags: Watk: true Patk: true - End: + EndOnStart: Powerful_Faith: true Firm_Faith: true Sincere_Faith: true @@ -7911,7 +7948,7 @@ Body: DurationLookup: IQ_SINCERE_FAITH CalcFlags: All: true - End: + EndOnStart: Powerful_Faith: true Firm_Faith: true Sincere_Faith: true @@ -7921,7 +7958,7 @@ Body: CalcFlags: MaxHp: true Res: true - End: + EndOnStart: Powerful_Faith: true Firm_Faith: true Sincere_Faith: true @@ -7937,7 +7974,7 @@ Body: Flags: BlEffect: true DisplayPc: true - End: + EndOnStart: First_Brand: true Second_Brand: true - Status: Second_Brand @@ -7946,7 +7983,7 @@ Body: Flags: BlEffect: true DisplayPc: true - End: + EndOnStart: First_Brand: true Second_Brand: true - Status: Second_Judge @@ -7955,7 +7992,7 @@ Body: Flags: BlEffect: true DisplayPc: true - End: + EndOnStart: First_Faith_Power: true Second_Judge: true Third_Exor_Flame: true @@ -7965,7 +8002,7 @@ Body: Flags: BlEffect: true DisplayPc: true - End: + EndOnStart: First_Faith_Power: true Second_Judge: true Third_Exor_Flame: true @@ -7975,7 +8012,7 @@ Body: Flags: BlEffect: true DisplayPc: true - End: + EndOnStart: First_Faith_Power: true Second_Judge: true Third_Exor_Flame: true @@ -8142,7 +8179,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: S_Lifepotion: true L_Lifepotion: true Fail: @@ -8162,7 +8199,7 @@ Body: NoClearance: true NoRemoveOnDead: true NoClearbuff: true - End: + EndOnStart: Sub_Weaponproperty: true - Status: Almighty Icon: EFST_ALMIGHTY @@ -8181,7 +8218,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Str_Cash: true Food_Agi_Cash: true Food_Vit_Cash: true @@ -8205,7 +8242,7 @@ Body: NoDispell: true NoBanishingBuster: true NoClearance: true - End: + EndOnStart: Food_Str_Cash: true Food_Agi_Cash: true Food_Vit_Cash: true diff --git a/db/status.yml b/db/status.yml index dc2ca16715..0c506c9ed8 100644 --- a/db/status.yml +++ b/db/status.yml @@ -35,13 +35,14 @@ # MinRate Minimum rate after status change reduction (10000 = 100%). (Default: 0) # MinDuration Minimum duration in milliseconds after status change reduction. (Default: 1) # Fail: List of Status Changes that causes the status to fail to activate. (Optional) -# End: List of Status Changes that will end when the status activates. (Optional) +# EndOnStart: List of Status Changes that will end when the status activates. (Optional) # EndReturn: List of Status Changes that will end when the status activates and won't give its effect. (Optional) +# EndOnEnd: List of Status Changes that will end when the status becomes inactive. (Optional) ########################################################################### Header: Type: STATUS_DB - Version: 2 + Version: 3 Footer: Imports: diff --git a/doc/status.txt b/doc/status.txt index 791a4aed52..4805c078df 100644 --- a/doc/status.txt +++ b/doc/status.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= rAthena Dev Team //===== Last Updated: ======================================== -//= 20220421 +//= 20221013 //===== Description: ========================================= //= Explanation of the status.yml file and structure. //============================================================ @@ -266,7 +266,7 @@ Fail: List of status that causes the status to fail to activate. --------------------------------------- -End: List of status that will end if the status activates. +EndOnStart: List of status that will end if the status activates. --------------------------------------- @@ -276,6 +276,10 @@ EndReturn: List of status that will end if the status activates and it won't giv --------------------------------------- +EndOnEnd: List of status that will end when the status becomes inactive. + +--------------------------------------- + Notes: By default, statuses are 'Buff' (those that aren't explicitely given the 'Debuff' flag) which are removable by 'map_quit' in combination with 'battle_config.debuff_on_logout'. diff --git a/src/map/status.cpp b/src/map/status.cpp index fe7d0f9510..2d77a48913 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -988,14 +988,14 @@ std::bitset StatusDatabase::getCalcFlag(sc_type type) { } /** - * Get SC's END list + * Get SC's EndOnStart list * @param sc: SC type * @return End list **/ -std::vector StatusDatabase::getEnd(sc_type type) { +std::vector StatusDatabase::getEndOnStart(sc_type type) { std::shared_ptr status = status_db.find(type); - return status ? status->end : std::vector {}; + return status ? status->endonstart : std::vector {}; } /** @@ -10240,9 +10240,9 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty std::vector endlist; if (type == SC_BERSERK && val3 == SC__BLOODYLUST) //There is some reasons that using SC_BERSERK first before SC__BLOODYLUST itself on Akinari's fix - endlist = status_db.getEnd(SC__BLOODYLUST); + endlist = status_db.getEndOnStart(SC__BLOODYLUST); else - endlist = scdb->end; + endlist = scdb->endonstart; // End the SCs from the list if (!endlist.empty()) { @@ -12513,7 +12513,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty break; default: - if (calc_flag.none() && scdb->skill_id == 0 && scdb->icon == EFST_BLANK && scdb->opt1 == OPT1_NONE && scdb->opt2 == OPT2_NONE && scdb->state.none() && scdb->flag.none() && scdb->end.empty() && scdb->endreturn.empty() && scdb->fail.empty()) { + if (calc_flag.none() && scdb->skill_id == 0 && scdb->icon == EFST_BLANK && scdb->opt1 == OPT1_NONE && scdb->opt2 == OPT2_NONE && scdb->state.none() && scdb->flag.none() && scdb->endonstart.empty() && scdb->endreturn.empty() && scdb->fail.empty() && scdb->endonend.empty()) { // Status change with no calc, no icon, and no skill associated...? ShowWarning("status_change_start: Status %s (%d) is bare. Add the NoWarning flag to suppress this message.\n", script_get_constant_str("SC_", type), type); return 0; @@ -13072,11 +13072,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) ((TBL_MER*)d_bl)->devotion_flag = 0; clif_devotion(d_bl, NULL); } - - status_change_end(bl, SC_AUTOGUARD); - status_change_end(bl, SC_DEFENDER); - status_change_end(bl, SC_REFLECTSHIELD); - status_change_end(bl, SC_ENDURE); } break; @@ -13138,12 +13133,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) if((sce->val1&0xFFFF) == CG_MOONLIT) clif_status_change(bl,EFST_MOON,0,0,0,0,0); - -#ifdef RENEWAL - status_change_end(bl, SC_ENSEMBLEFATIGUE); -#else - status_change_end(bl, SC_LONGING); -#endif } break; case SC_NOCHAT: @@ -13371,9 +13360,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) } } break; - case SC_TEARGAS: - status_change_end(bl,SC_TEARGAS_SOB); - break; case SC_SITDOWN_FORCE: case SC_BANANA_BOMB_SITDOWN: if( sd && pc_issit(sd) && pc_setstand(sd, false) ) @@ -13387,25 +13373,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) calc_flag = status_db.getSCB_ALL(); // Required for overlapping break; - case SC_SUNSTANCE: - status_change_end(bl, SC_LIGHTOFSUN); - break; - case SC_LUNARSTANCE: - status_change_end(bl, SC_NEWMOON); - status_change_end(bl, SC_LIGHTOFMOON); - break; - case SC_STARSTANCE: - status_change_end(bl, SC_FALLINGSTAR); - status_change_end(bl, SC_LIGHTOFSTAR); - break; - case SC_UNIVERSESTANCE: - status_change_end(bl, SC_LIGHTOFSUN); - status_change_end(bl, SC_NEWMOON); - status_change_end(bl, SC_LIGHTOFMOON); - status_change_end(bl, SC_FALLINGSTAR); - status_change_end(bl, SC_LIGHTOFSTAR); - status_change_end(bl, SC_DIMENSION); - break; case SC_GRAVITYCONTROL: status_fix_damage(bl, bl, sce->val2, clif_damage(bl, bl, gettick(), 0, 0, sce->val2, 0, DMG_NORMAL, 0, false), 0); clif_specialeffect(bl, 223, AREA); @@ -13479,13 +13446,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) ///< !CHECKME: Seems on official, there's delay before same target can be vacuumed in same area again [Cydh] sc_start2(bl, bl, SC_VACUUM_EXTREME_POSTDELAY, 100, sce->val1, sce->val2, skill_get_time2(SO_VACUUM_EXTREME,sce->val1)); break; - case SC_SWORDCLAN: - case SC_ARCWANDCLAN: - case SC_GOLDENMACECLAN: - case SC_CROSSBOWCLAN: - case SC_JUMPINGCLAN: - status_change_end(bl,SC_CLAN_INFO); - break; case SC_DIMENSION1: case SC_DIMENSION2: if (sd) @@ -13523,9 +13483,6 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) pc_delservantball( *sd, sd->servantball ); } break; - case SC_CHARGINGPIERCE: - status_change_end(bl, SC_CHARGINGPIERCE_COUNT); - break; case SC_ABYSSFORCEWEAPON: if( sd ){ pc_delabyssball( *sd, sd->abyssball ); @@ -13533,6 +13490,13 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid) break; } + // End statuses found in the EndOnEnd list. + if (!scdb->endonend.empty()) { + for (const auto &it : scdb->endonend) { + status_change_end(bl, it); + } + } + // Reset the options as needed std::bitset opt_flag = scdb->flag; bool disable_opt_flag = false; @@ -15651,8 +15615,8 @@ uint64 StatusDatabase::parseBodyNode(const ryml::NodeRef& node) { } } - if (this->nodeExists(node, "End")) { - const ryml::NodeRef& endNode = node["End"]; + if (this->nodeExists(node, "EndOnStart")) { + const ryml::NodeRef& endNode = node["EndOnStart"]; for (const auto &it : endNode) { std::string end; @@ -15662,12 +15626,12 @@ uint64 StatusDatabase::parseBodyNode(const ryml::NodeRef& node) { int64 constant; if (!script_get_constant(end_constant.c_str(), &constant)) { - this->invalidWarning(endNode, "End status %s is invalid.\n", end.c_str()); + this->invalidWarning(endNode, "EndOnStart status %s is invalid.\n", end.c_str()); return 0; } if (!this->validateStatus(static_cast(constant))) { - this->invalidWarning(endNode, "End status %s is out of bounds.\n", end.c_str()); + this->invalidWarning(endNode, "EndOnStart status %s is out of bounds.\n", end.c_str()); return 0; } @@ -15677,9 +15641,9 @@ uint64 StatusDatabase::parseBodyNode(const ryml::NodeRef& node) { return 0; if (active) - status->end.push_back(static_cast(constant)); + status->endonstart.push_back(static_cast(constant)); else - util::vector_erase_if_exists(status->end, static_cast(constant)); + util::vector_erase_if_exists(status->endonstart, static_cast(constant)); } } @@ -15715,6 +15679,38 @@ uint64 StatusDatabase::parseBodyNode(const ryml::NodeRef& node) { } } + if (this->nodeExists(node, "EndOnEnd")) { + const ryml::NodeRef &endNode = node["EndOnEnd"]; + + for (const auto &it : endNode) { + std::string end; + c4::from_chars(it.key(), &end); + + std::string end_constant = "SC_" + end; + int64 constant; + + if (!script_get_constant(end_constant.c_str(), &constant)) { + this->invalidWarning(endNode, "EndOnEnd status %s is invalid.\n", end.c_str()); + return 0; + } + + if (!this->validateStatus(static_cast(constant))) { + this->invalidWarning(endNode, "EndOnEnd status %s is out of bounds.\n", end.c_str()); + return 0; + } + + bool active; + + if (!this->asBool(endNode, end, active)) + return 0; + + if (active) + status->endonend.push_back(static_cast(constant)); + else + util::vector_erase_if_exists(status->endonend, static_cast(constant)); + } + } + if (!exists) { this->put(status_id, status); } diff --git a/src/map/status.hpp b/src/map/status.hpp index b19590e0cb..856f5cce38 100644 --- a/src/map/status.hpp +++ b/src/map/status.hpp @@ -2940,27 +2940,28 @@ enum e_status_change_flag : uint16 { /// Struct of SC configs [Cydh] struct s_status_change_db { - sc_type type; ///< SC_ - efst_type icon; ///< EFST_ - std::bitset state; ///< SCS_ - std::bitset calc_flag; ///< SCB_ flags - uint16 opt1; ///< OPT1_ - uint16 opt2; ///< OPT2_ - uint32 opt3; ///< OPT3_ - uint32 look; ///< OPTION_ Changelook - std::bitset flag; ///< SCF_ Flags, enum e_status_change_flag - bool display; ///< Display status effect/icon (for certain state) - uint16 skill_id; ///< Associated skill for (addeff) duration lookups - std::vector end; ///< List of SC that will be ended when this SC is activated - std::vector fail; ///< List of SC that causing this SC cannot be activated - std::vector endreturn; ///< List of SC that will be ended when this SC is activated and then immediately return - t_tick min_duration; ///< Minimum duration effect (after all status reduction) - uint16 min_rate; ///< Minimum rate to be applied (after all status reduction) + sc_type type; ///< SC_ + efst_type icon; ///< EFST_ + std::bitset state; ///< SCS_ + std::bitset calc_flag; ///< SCB_ flags + uint16 opt1; ///< OPT1_ + uint16 opt2; ///< OPT2_ + uint32 opt3; ///< OPT3_ + uint32 look; ///< OPTION_ Changelook + std::bitset flag; ///< SCF_ Flags, enum e_status_change_flag + bool display; ///< Display status effect/icon (for certain state) + uint16 skill_id; ///< Associated skill for (addeff) duration lookups + std::vector endonstart; ///< List of SC that will be ended when this SC is activated + std::vector fail; ///< List of SC that causing this SC cannot be activated + std::vector endreturn; ///< List of SC that will be ended when this SC is activated and then immediately return + std::vector endonend; ///< List of SC that will be ended when this SC ends + t_tick min_duration; ///< Minimum duration effect (after all status reduction) + uint16 min_rate; ///< Minimum rate to be applied (after all status reduction) }; class StatusDatabase : public TypesafeCachedYamlDatabase { public: - StatusDatabase() : TypesafeCachedYamlDatabase("STATUS_DB", 2) { + StatusDatabase() : TypesafeCachedYamlDatabase("STATUS_DB", 3) { // All except BASE and extra flags. SCB_BATTLE.set(); SCB_BATTLE.reset(SCB_BASE); @@ -2980,7 +2981,7 @@ public: // Extras efst_type getIcon(sc_type type); std::bitset getCalcFlag(sc_type type); - std::vector getEnd(sc_type type); + std::vector getEndOnStart(sc_type type); uint16 getSkill(sc_type type); bool hasSCF(status_change *sc, e_status_change_flag flag); void removeByStatusFlag(block_list *bl, std::vector flag); diff --git a/src/tool/yamlupgrade.cpp b/src/tool/yamlupgrade.cpp index 536a221e18..135d2cd9e7 100644 --- a/src/tool/yamlupgrade.cpp +++ b/src/tool/yamlupgrade.cpp @@ -6,6 +6,7 @@ static bool upgrade_achievement_db(std::string file, const uint32 source_version); static bool upgrade_item_db(std::string file, const uint32 source_version); static bool upgrade_job_stats(std::string file, const uint32 source_version); +static bool upgrade_status_db(std::string file, const uint32 source_version); template bool process(const std::string &type, uint32 version, const std::vector &paths, const std::string &name, Func lambda) { @@ -121,6 +122,12 @@ int do_init(int argc, char** argv) { })) { return 0; } + + if (!process("STATUS_DB", 3, root_paths, "status", [](const std::string& path, const std::string& name_ext, uint32 source_version) -> bool { + return upgrade_status_db(path + name_ext, source_version); + })) { + return 0; + } return 0; } @@ -293,3 +300,25 @@ static bool upgrade_job_stats(std::string file, const uint32 source_version) { return true; } + +static bool upgrade_status_db(std::string file, const uint32 source_version) { + size_t entries = 0; + + for (auto input : inNode["Body"]) { + // If under version 3 + if (source_version < 3) { + // Rename End to EndOnStart + if (input["End"].IsDefined()) { + input["EndOnStart"] = input["End"]; + input.remove("End"); + } + } + + body << input; + entries++; + } + + ShowStatus("Done converting/upgrading '" CL_WHITE "%zu" CL_RESET "' statuses in '" CL_WHITE "%s" CL_RESET "'.\n", entries, file.c_str()); + + return true; +}