//===== rAthena Documentation ================================
//= Status Change Database Structure
//===== By: ==================================================
//= rAthena Dev Team
//===== Last Updated: ========================================
//= 20221216
//===== Description: =========================================
//= Explanation of the status.yml file and structure.
//============================================================

---------------------------------------

Status: Status change name.

See src/map/script_constants.hpp for SC_ constants.

---------------------------------------

Icon: Status change icon or client effect that will be displayed client-side.

See src/map/script_constants.hpp for EFST_ constants.

---------------------------------------

DurationLookup: Used for default duration lookup in skill_db.yml. The lookup is used for some item bonuses as default duration.

---------------------------------------

States: Specified states given when the SC is active.

	None               - No special state. (Default)
	NoMove             - Cannot move.
	NoMoveCond         - Condition check for SCS_NOMOVE.
	NoPickItem         - Cannot pick item.
	NoPickItemCond     - Condition check for SCS_NOPICKITEM.
	NoDropItem         - Cannot drop item.
	NoDropItemCond     - Condition check for SCS_NODROPITEM.
	NoCast             - Cannot cast a skill.
	NoCastCond         - Condition check for SCS_NOCAST.
	NoChat             - Cannot chat and open chat room.
	NoChatCond         - Condition check for SCS_NOCHATCOND.
	NoEquipItem        - Cannot put on equipment.
	NoEquipItemCond    - Condition check for SCS_NOEQUIPITEM.
	NoUnEquipItem      - Cannot put off equipment.
	NoUnEquipItemCond  - Condition check for SCS_NOUNEQUIPITEM.
	NoConsumeItem      - Cannot consume item.
	NoConsumeItemCond  - Condition check for SCS_NOCONSUMEITEM.
	NoAttack           - Cannot attack.
	NoAttackCond       - Condition check for SCS_NOATTACK.
	NoWarp             - Cannot warp.
	NoWarpCond         - Condition check for SCS_NOWARP.
	NoDeathPenalty     - Cannot lose experience on death.
	NoDeathPenaltyCond - Condition check for SCS_NODEATHPENALTY.
	NoInteract         - Cannot interact with client (sit/stand or talk with NPC).
	NoInteractCond     - Condition check for SCS_NOINTERACT.

States that have a suffix of "Cond" means the State has hard coded conditions in status.cpp::status_calc_state

---------------------------------------

CalcFlags: Flag that indicates which status calculation needs to be performed. Even if the value is changed in the status_db.yml the SC must have the respective bonus defined in source.

	None    - Calculates nothing. (Default)
	Base    - Base status
	MaxHp   - Maximum HP
	MaxSp   - Maximum SP
	Str     - STR
	Agi     - AGI
	Vit     - VIT
	Int     - INT
	Dex     - DEX
	Luk     - LUK
	Batk    - Base Attack
	Watk    - Weapon Attack
	Matk    - Magic Attack
	Hit     - Hit/accuracy rate
	Flee    - Flee/dodge rate
	Def     - Equipment Defense
	Def2    - Defense
	Mdef    - Equipment Magic Defense
	Mdef2   - Magic Defense
	Speed   - Walk speed
	Aspd    - Attack speed
	Dspd    - Damage delay speed
	Cri     - Critical rate
	Flee2   - Perfect dodge rate
	Atk_Ele - Attack Element
	Def_Ele - Defense Element
	Mode    - Mode
	Size    - Size
	Race    - Race
	Range   - Range
	Regen   - Regeneration
	MaxAp   - Maximum AP
	Pow     - POW
	Sta     - STA
	Wis     - WIS
	Spl     - SPL
	Con     - CON
	Crt     - CRT
	Patk    - Physical Power
	Smatk   - Spell Magic Attack
	Res     - Physical Resistance
	Mres    - Magic Resistance
	Hplus   - Heal Plus
	Crate   - Critical Rate
	Dye     - Dye
	All     - Calculates all CalcFlags

---------------------------------------

Opt1: Special effect when status is active (Aegis: BODYSTATE_*). This option is not stackable. These effects also apply their special behaviors.

	None         - No effect (Default)
	Stone        - Stone curse effect
	StoneWait    - Stone curse incubation effect
	Freeze       - Freeze effect
	Stun         - Stun effect
	Sleep        - Sleep effect
	StoneWait    - Effect before Stone is really applied
	Burning      - Burning effect
	Imprison     - Imprison effect
	Crystalize   - Crystalize effect

---------------------------------------

Opt2: Special option/client effect when status is active (Aegis: HEALTHSTATE_*).

	None           - No effect (Default)
	Poison         - Posioned effect
	Curse          - Cursed effect
	Silence        - Silenced effect
	SignumCrucis   - Signum Crucis effect
	Blind          - Blind effect
	Angelus        - Angelus effect
	Bleeding       - Bleeding effect
	Dpoison        - Heavy Poisoned effect
	Fear           - Fear effect

---------------------------------------

Opt3: Special option/client effect when status is active (Aegis: SHOW_EFST_*)

	Normal            - No effect (Default)
	Quicken           - Quicken effect
	OverThrust        - Overthrust effect
	EnergyCoat        - Energy Coat effect
	ExplosionSpirits  - Explosion Spirits effect
	SteelBody         - Steel Body effect
	BladeStop         - Blade Stop effect
	AuraBlade         - Aura Blade effect
	Berserk           - Berserk effect
	LightBlade        - Light Blade effect
	Moonlit           - Moonlit effect
	Marionette        - Marionette effect
	Assumptio         - Assumptio effect
	Warm              - Warm effect
	Kaite             - Kaite effect
	Bunsin            - Bunshin effect
	SoulLink          - Soul Link effect
	Undead            - Undead effect
	Contract          - Contract effect

---------------------------------------

Options: Special option/client effect state when status is active.

	Nothing        - No effect (Default)
	Sight          - Sight effect
	Hide           - Hide effect
	Cloak          - Cloaking effect
	Falcon         - Falcon effect
	Riding         - Riding effect
	Invisible      - Invisible effect
	Orcish         - Orcish effect, the ugly face!
	Wedding        - Wedding costume
	Ruwach         - Ruwach effect
	ChaseWalk      - Chasewalk effect
	Flying         - Flying effect (Star Gladiator's Union)
	Xmas           - Christmas costume
	Transform      - Transformation
	Summer         - Summer costume
	Dragon1        - Dragon
	Dragon2        - Dragon
	Dragon3        - Dragon
	Dragon4        - Dragon
	Dragon5        - Dragon
	Wug            - Wug
	WugRider       - Riding a Wug
	Madogear       - Madogear
	Hanbok         - Hanbok costume
	Oktoberfest    - Oktoberfest costume

---------------------------------------

Flags: Various status flags for specific status change events.

	None                  - No special flag. (Default)
	BlEffect              - Status should have BL_SCEFFECT as relevant effect, must have an EFST (displays on BL_PC, BL_HOM, BL_MER, BL_MOB, BL_ELEM). BL_PC is the default value.
	DisplayPc             - Displays status effect when player logs in.
	DislpayNpc            - Displays status effect on a NPC.
	Debuff                - Status is considered a debuff. Used in combination with 'battle_config.debuff_on_logout'.
	SetStand              - Sets player to standing state.
	OverlapIgnoreLevel    - The status will successfully activate for any level if the status is already active.
	FailedMado            - Cannot be applied if Madogear is active.
	MadoCancel            - Cancels the status when mounting Madogear.
	MadoEndCancel         - Cancels the status when unmounting Madogear.
	MobLoseTarget         - When active on a monster it will lose the target.
	RestartOnMapWarp      - Restarts the timer of a status when warping to another map.
	SpreadEffect          - Passes the status onto a target when SC_DEADLYINFECT is active.
	SendVal1              - Notifies the client of a status change (val1).
	SendVal2              - Notifies the client of a status change (val2).
	SendVal3              - Notifies the client of a status change (val3).

	NoClearbuff           - Cannot be removed by 'status_change_clear_buffs()', 'sc_end SC_ALL', 'status_change_clear(3)', etc.
	NoForcedEnd           - Cannot be removed by sc_end.
	NoRemoveOnDead        - Cannot be removed when a player dies.
	NoDispell             - Cannot be removed by SA_DISPELL.
	NoClearance           - Cannot be removed by AB_CLEARANCE.
	NoBanishingBuster     - Cannot be removed by RL_BANISHING_BUSTER.
	NoSave                - Won't be saved when player logs out.
	NoSaveInfinite        - Infinite duration status won't be saved when player logs out.
	NoWarning             - Ignores the status_change_start check for statuses that have no defining features associated to them in the status database.

	RemoveOnDamaged       - Removed when receiving damage.
	RemoveOnRefresh       - Removed by RK_REFRESH.
	RemoveOnLuxAnima      - Removed by RK_LUXANIMA.
	RemoveOnMapWarp       - Removed when warping to another map.
	RemoveOnChangeMap     - Removed when changing map-server.
	RemoveChemicalProtect - Removed by AM_CP_ARMOR/AM_CP_HELM/AM_CP_SHIELD/AM_CP_WEAPON.
	RemoveElementalOption - Removed by elemental changing modes/quitting/EL_TIDAL_WEAPON/EL_WATER_SCREEN on the master and elemental.
	RemoveOnUnequip       - Removed when unequipping any type of equipment.
	RemoveOnUnequipWeapon - Removed when unequipping a weapon.
	RemoveOnUnequipArmor  - Removed when unequipping an armor.
	RemoveOnHermode       - Removed by CG_HERMODE.

	StopAttacking         - Makes the unit stop attacking.
	StopCasting           - Makes the unit stop casting skills.
	StopWalking           - Makes the unit stop walking.

	BossResist            - Cannot be applied to Boss Monster (Mob has mode MD_STATUS_IMMUNE).
	MvpResist             - Cannot be applied to MvP (Mob has mode MD_MVP).

	SendOption            - Sends the STATE_CHANGE packet. For statuses that have Opt1, Opt2, or Opt3 values.
	SendLook              - Sends the STATE_CHANGE packet. For statuses that have body/look changes through 'Option' flags (only for players).
	OnTouch               - Triggers OnTouch_ NPC events. For statuses that have an invisible effect.
	UnitMove              - Triggers when the player has moved location and invokes the skill unit on place.
	NonPlayer             - Sends the NPC_SHOWEFST_UPDATE packet. Used to send effects to NPC/monsters.

	RequireWeapon         - Status requires a weapon to be equipped.
	RequireNoWeapon       - Status requires that no weapons be equipped.
	RequireShield         - Status requires a shield to be equipped.

	SuperNoviceAngel      - Status that is given from Super Novice Angel.
	TaekwonAngel          - Status that is given from Taekwon Angel.

	RemoveFromHomOnWarp    - Removes the status from the Homunculus when teleporting or warping to another map.
	RemoveFromHomOnMapWarp - Removes the status from the Homunculus when warping to another map.

---------------------------------------

MinDuration: Minimum duration, in milliseconds, after reduction calculation for status resistance.

---------------------------------------

MinRate: Minimum success rate, at n/10000, after reduction calculation for status resistance.

---------------------------------------

Fail: List of status that causes the status to fail to activate.

---------------------------------------

EndOnStart: List of status that will end if the status activates.

---------------------------------------

EndReturn: List of status that will end if the status activates and it won't give its effect.
           The statuses checked in this list are done at the beginning of status_change_start(). If at least 1 status from this list
		   is removed then it will return back and not check anything else.

---------------------------------------

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'.

The NoClearbuff flag prevents some permanent and non-permanent statuses that cannot be removed by 'status_change_clear', 'status_change_clear_buffs', 'map_quit', or other
clearing means.
The function 'status_change_clear_buffs' is called by CG_TAROTCARD, RK_REFRESH, RK_LUXANIMA, CG_HERMODE, PA_GOSPEL, and LG_INSPIRATION.

CG_TAROTCARD and CG_HERMODE only remove buffs while PA_GOSPEL and LG_INSPIRATION remove buffs and debuffs.

RK_REFRESH and RK_LUXANIMA only remove statuses that have the Rem_On_Rerfresh or RemoveOnLuxAnima flag. Works just like SA_DISPELL, AB_CLEARANCE, RL_BANISHING_BUSTER that has the
effect to remove buffs or debuffs.

---- Removed comments from source ----
- Mado is immune to increase agi, wind walk, cart boost, etc (others above) [Ind]
- Cart Boost cannot be affected by Slow grace. Assumed if player got Slow Grace first, Cart Boost is failed since Cart Boost doesn't cancel Slow Grace effect
  http://irowiki.org/wiki/Cart_Boost_%28Genetic%29 (view date: 2014-01-26)
  http://irowiki.org/wiki/Cart_Boost (view date: 2014-01-26)
- kRO Update 2014-02-12: Cannot be stacked with Platinum Alter and Madness Canceler (and otherwise?) [Cydh]
- SC_BERSERK, SC_SATURDAYNIGHTFEVER, and SC__BLOODYLUST are all like berserk, do not everlap each other.
- SC_STONE, SC_FREEZE, SC_DEEPSLEEP, SC_SLEEP, SC_STUN, SC_FREEZING, and SC_CRYSTALIZE cannot override other opt1 status changes. [Skotlex]
  TODO: SC that has OPT1: SC_STONE, SC_FREEZE, SC_STUN, SC_SLEEP, SC_BURNING, SC_WHITEIMPRISON, SC_CRYSTALIZE
- Immune to Frozen and Freezing status if under Warmer status. [Jobbie]
- SC_ONEHAND removes the Aspd potion effect, as reported by Vicious. [Skotlex]
- SC_ALL_RIDING. Already mounted, just dismount.
- SC_GN_CARTBOOST andSC_CARTBOOST cancel Decrease Agi, but take no further effect [Skotlex]
