You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
233 lines
7.5 KiB
233 lines
7.5 KiB
1 month ago
|
//using System;
|
||
|
//using Sog;
|
||
|
//using ProtoCSStruct;
|
||
|
//using System.Linq;
|
||
|
|
||
|
//namespace Battle
|
||
|
//{
|
||
|
// public static class BattleHeroExt
|
||
|
// {
|
||
|
// // 是否可行动状态
|
||
|
// public static bool IsActiveState(this BattleHero hero)
|
||
|
// {
|
||
|
// return ! hero.isDead && ! hero.IsStun();
|
||
|
// }
|
||
|
|
||
|
// // 是否行动过
|
||
|
// public static bool IsActed(this BattleHero hero)
|
||
|
// {
|
||
|
// return hero.actionRound >= hero.Battle.round;
|
||
|
// }
|
||
|
|
||
|
// public static bool IsStun(this BattleHero hero)
|
||
|
// {
|
||
|
// return hero.stunRound > 0 && hero.stunRound >= hero.Battle.round;
|
||
|
// }
|
||
|
|
||
|
// public static int GetHpRate(this BattleHero hero)
|
||
|
// {
|
||
|
// long nowHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// long maxHp = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// return (int)(nowHp * 1000 / maxHp);
|
||
|
// }
|
||
|
|
||
|
|
||
|
// public static int GetHpLoseRate(this BattleHero hero)
|
||
|
// {
|
||
|
// long nowHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// long maxHp = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// return (int)((maxHp - nowHp) * 1000 / maxHp);
|
||
|
// }
|
||
|
|
||
|
// public static int GetDefUpRate(this BattleHero hero)
|
||
|
// {
|
||
|
// if(hero.startPropDef <= 0)
|
||
|
// {
|
||
|
// hero.Battle.Error("BattleHeroExt.GetDefUpRate error startdef {0} {1}", hero.objId, hero.DescId);
|
||
|
// return 0;
|
||
|
// }
|
||
|
// long nowDef = hero.prop.GetValueNoCheck(CSPropIDType.Def);
|
||
|
// return (int)((nowDef - hero.startPropDef) * 1000 / hero.startPropDef);
|
||
|
// }
|
||
|
|
||
|
// public static long GetHp(this BattleHero hero)
|
||
|
// {
|
||
|
// return hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// }
|
||
|
|
||
|
// public static long GetHpMax(this BattleHero hero)
|
||
|
// {
|
||
|
// return hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// }
|
||
|
|
||
|
// //获取保底的攻击力,最小为1
|
||
|
// public static long GetMinimumAtk(this BattleHero hero)
|
||
|
// {
|
||
|
// long atk = hero.prop.GetValueNoCheck(CSPropIDType.Atk);
|
||
|
// return Math.Max(1, atk);
|
||
|
// }
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// public static bool IsDead(this BattleHero hero)
|
||
|
// {
|
||
|
// return (hero.isDead || hero.prop.GetValueNoCheck(CSPropIDType.Hp) <= 0);
|
||
|
// }
|
||
|
|
||
|
// public static int GetMoveSpeed(this BattleHero hero)
|
||
|
// {
|
||
|
// return (int)hero.prop.GetValueNoCheck(CSPropIDType.Speed);
|
||
|
// }
|
||
|
|
||
|
// public static Fixed64 GetMoveSpeedFixed(this BattleHero hero)
|
||
|
// {
|
||
|
// return ((Fixed64)hero.prop.GetValueNoCheck(CSPropIDType.Speed)) / 1000;
|
||
|
// }
|
||
|
|
||
|
// public static long GetProp(this BattleHero hero, CSPropIDType id)
|
||
|
// {
|
||
|
// return hero.prop.GetValue(id);
|
||
|
// }
|
||
|
|
||
|
// public static long GetPropNoCheck(this BattleHero hero, CSPropIDType id)
|
||
|
// {
|
||
|
// return hero.prop.GetValueNoCheck(id);
|
||
|
// }
|
||
|
|
||
|
// public static bool AddProp(this BattleHero hero, BattleObj battle, CSPropIDType id, long value)
|
||
|
// {
|
||
|
// var relation = HeroProp.GetPropRelation(id);
|
||
|
// if (id == CSPropIDType.Hp)
|
||
|
// {
|
||
|
// AddHp(hero, value);
|
||
|
// return true;
|
||
|
// }
|
||
|
// if(relation != null && relation.PropFinal == (int)CSPropIDType.HpMax)
|
||
|
// {
|
||
|
// AddHpMax(hero, battle, id, value);
|
||
|
// return true;
|
||
|
// }
|
||
|
|
||
|
// if (value != 0 && hero.prop.AddValue(id, value))
|
||
|
// {
|
||
|
// return true;
|
||
|
// }
|
||
|
// return false;
|
||
|
// }
|
||
|
|
||
|
// public static bool SetProp(this BattleHero hero, CSPropIDType id, long value)
|
||
|
// {
|
||
|
// if (id == CSPropIDType.Hp)
|
||
|
// {
|
||
|
// SetHp(hero, value);
|
||
|
// return true;
|
||
|
// }
|
||
|
// if(id == CSPropIDType.HpMax)
|
||
|
// {
|
||
|
// SetHpMax(hero, value);
|
||
|
// return true;
|
||
|
// }
|
||
|
|
||
|
// long oldValue = hero.prop.GetValue(id);
|
||
|
// if (value != oldValue && hero.prop.SetValue(id, value))
|
||
|
// {
|
||
|
// return true;
|
||
|
// }
|
||
|
// return false;
|
||
|
// }
|
||
|
|
||
|
// // Hp不需要重算属性,且单独触发事件
|
||
|
// public static void SetHp(this BattleHero hero, long newHp)
|
||
|
// {
|
||
|
// if (newHp < 0)
|
||
|
// {
|
||
|
// newHp = 0;
|
||
|
// }
|
||
|
|
||
|
// long maxHp = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// if (newHp > maxHp)
|
||
|
// {
|
||
|
// newHp = maxHp;
|
||
|
// }
|
||
|
|
||
|
// long oldHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// if (oldHp != newHp)
|
||
|
// {
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, newHp, false);
|
||
|
// }
|
||
|
// }
|
||
|
|
||
|
// // Hp上限不需要重算属性,且单独触发事件
|
||
|
// public static void SetHpMax(this BattleHero hero, long newHpMax)
|
||
|
// {
|
||
|
// if (newHpMax <= 0)
|
||
|
// {
|
||
|
// newHpMax = 1;
|
||
|
// }
|
||
|
|
||
|
// long oldHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// if (oldHp > newHpMax)
|
||
|
// {
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, newHpMax, false);
|
||
|
// }
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.HpMax, newHpMax, false);
|
||
|
// }
|
||
|
|
||
|
// // Hp不需要重算属性,且单独触发事件
|
||
|
// public static void AddHp(this BattleHero hero, long value)
|
||
|
// {
|
||
|
// if (value == 0)
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
|
||
|
// long currHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// long maxHp = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// currHp += value;
|
||
|
// if (currHp < 0)
|
||
|
// {
|
||
|
// currHp = 0;
|
||
|
// }
|
||
|
// else if (currHp > maxHp)
|
||
|
// {
|
||
|
// currHp = maxHp;
|
||
|
// }
|
||
|
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, currHp, false);
|
||
|
// }
|
||
|
|
||
|
// public static void AddHpMax( this BattleHero hero, BattleObj battle, CSPropIDType propid, long value)
|
||
|
// {
|
||
|
// long oldHp = hero.prop.GetValueNoCheck(CSPropIDType.Hp);
|
||
|
// long oldHpMax = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// hero.prop.AddValue(propid, value, true);
|
||
|
// long newHpMax = hero.prop.GetValueNoCheck(CSPropIDType.HpMax);
|
||
|
// if(newHpMax <= 0)
|
||
|
// {
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, 0, false);
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.HpMax, 1, false);
|
||
|
// return;
|
||
|
// }
|
||
|
// long hpAdd = 0;
|
||
|
// if(newHpMax - oldHpMax > 0)
|
||
|
// {
|
||
|
// hpAdd = newHpMax - oldHpMax;
|
||
|
// }
|
||
|
|
||
|
// //血量大于上限,修改血量
|
||
|
// if (oldHp > newHpMax)
|
||
|
// {
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, newHpMax, false);
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// hero.prop.SetValueNoCheck(CSPropIDType.Hp, Math.Min(oldHp + hpAdd, newHpMax), false);
|
||
|
// }
|
||
|
// BattleControl.CreateBattleLog(battle, hero.objId, hero.objId, BattleEventType.SetHP, 0,
|
||
|
// hero.prop.GetValueNoCheck(CSPropIDType.Hp), hero.prop.GetValueNoCheck(CSPropIDType.HpMax));
|
||
|
// }
|
||
|
|
||
|
// }
|
||
|
//}
|