123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System;
- using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
- using Excel2Json;
- using Fort23.Core;
- using GameLogic.Combat.Hero;
- using Utility;
- namespace GameLogic.Combat.CombatTool
- {
- public class CombatCalculateTool : Singleton<CombatCalculateTool>
- {
- public Random Random = new Random();
- public CombatCalculateTool()
- {
- Random = new Random(System.DateTime.Now.Millisecond);
- }
- public int GetOdd()
- {
- return Random.Next(0, 100);
- }
- public int GetOdd(int min, int max)
- {
- return Random.Next(min, max);
- }
- public long GetVlaueRatioForLong(long value, float ration)
- {
- long v = (value * (long)(ration * 100)) / 10000;
- return v;
- }
- public HarmReturnInfo Harm(CombatHeroEntity source, CombatHeroEntity target, long att, AttType attType,
- TriggerData triggerData, HarmType harmType = HarmType.Null)
- {
- return Harm(source, target.GetMainHotPoin<CombatHeroHitPoint>(), att,
- attType, triggerData, harmType);
- }
- /// <summary>
- /// 造成伤害
- /// </summary>n
- /// <param name="source">攻击方</param>
- /// <param name="target">被攻击方</param>
- /// <param name="att">伤害值</param>
- public HarmReturnInfo Harm(CombatHeroEntity source, CombatHeroHitPoint target, long att,
- AttType attType, TriggerData triggerData,
- HarmType harmType = HarmType.Default)
- {
- HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
- harmReturnInfo.source = source;
- harmReturnInfo.target = target;
- harmReturnInfo.att = att;
- harmReturnInfo.attType = attType;
- harmReturnInfo.harmType = harmType;
- harmReturnInfo.triggerData = triggerData;
- if (target.combatHeroEntity.isDie)
- {
- return harmReturnInfo;
- }
- if (target.combatHeroEntity.CombatAIBasic.stateControl.CurrStateName.Equals(CombatHeroStateType.rolling))
- {
- harmReturnInfo.isMiss = true;
- return harmReturnInfo;
- }
- att = att - target.combatHeroEntity.CurrCombatHeroInfo.defense.Value;
- int odd = GetOdd(0, 100);
- if (odd <= source.CurrCombatHeroInfo.crit + 5)
- {
- harmReturnInfo.harmType |= HarmType.BaoJi;
- att += GetVlaueRatioForLong(att, source.CurrCombatHeroInfo.critDamage.Value);
- }
- harmReturnInfo.att = att;
- target.combatHeroEntity.HeroHurt(harmReturnInfo);
- return harmReturnInfo;
- }
- public HarmReturnInfo Recover(CombatHeroEntity source, CombatHeroHitPoint target, long att,
- AttType attType, HarmType harmType, TriggerData triggerData)
- {
- HarmReturnInfo harmReturnInfo = new HarmReturnInfo();
- harmReturnInfo.source = source;
- harmReturnInfo.target = target;
- harmReturnInfo.att = att;
- harmReturnInfo.attType = attType;
- harmReturnInfo.harmType = harmType;
- harmReturnInfo.triggerData = triggerData;
- if (target.combatHeroEntity.isDie)
- {
- return harmReturnInfo;
- }
- target.combatHeroEntity.Recover(harmReturnInfo);
- return harmReturnInfo;
- }
- }
- }
|