From 6eb915c129fc90c6f4c82ae097dd6ffad5239efc Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 25 Jan 2021 14:28:30 +0800 Subject: +scripts --- .../Scripts/XMainClient/AttackApplyCritical.cs | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Client/Assets/Scripts/XMainClient/AttackApplyCritical.cs (limited to 'Client/Assets/Scripts/XMainClient/AttackApplyCritical.cs') diff --git a/Client/Assets/Scripts/XMainClient/AttackApplyCritical.cs b/Client/Assets/Scripts/XMainClient/AttackApplyCritical.cs new file mode 100644 index 00000000..0f3062c4 --- /dev/null +++ b/Client/Assets/Scripts/XMainClient/AttackApplyCritical.cs @@ -0,0 +1,46 @@ +using System; +using XUtliPoolLib; + +namespace XMainClient +{ + internal class AttackApplyCritical : AttackApplyState + { + public override int GetStateMask() + { + return XFastEnumIntEqualityComparer.ToInt(DamageFlag.DMGFLAG_CRITICAL); + } + + public override bool IsApplyState(XEntity entity) + { + double num = XSingleton.singleton.GetBaseCriticalProb(entity.Attributes, entity.Attributes.GetAttr(XAttributeDefine.XAttr_Critical_Total)); + bool flag = num > XSingleton.singleton.CriticalLimit; + if (flag) + { + num = XSingleton.singleton.CriticalLimit; + } + float num2 = XSingleton.singleton.RandomFloat(0f, 1f); + return (double)num2 < num; + } + + public override bool IsDefenseState(XEntity entity) + { + XAttributes attributes = entity.Attributes; + double attr = attributes.GetAttr(XAttributeDefine.XAttr_CritResist_Total); + CombatParamTable.RowData combatParam = XSingleton.singleton.GetCombatParam(attributes.Level); + double num = attr / (attr + (double)combatParam.CritResistBase); + bool flag = num > XSingleton.singleton.CritResistLimit; + if (flag) + { + num = XSingleton.singleton.CritResistLimit; + } + float num2 = XSingleton.singleton.RandomFloat(0f, 1f); + return (double)num2 < num; + } + + public override void ApplyState(XEntity caster, ProjectDamageResult result) + { + base.ApplyState(caster, result); + result.Value *= XSingleton.singleton.GetCritialRatio(caster.Attributes); + } + } +} -- cgit v1.1-26-g67d0