public void OnHitDamage(BaseNpc Attacker, string SourceName, float Damage) { if (Actor.IsFsmState(FsmStateName.Die)) { return; } var RealDamage = AddAttr(NpcAttrIndex.Hp, -Damage); EventManager.Send(new NpcDamageEvent(this, Attacker?.ID ?? 0, SourceName, Mathf.Abs(RealDamage), Mathf.Abs(Damage))); }
public NpcBar(BaseNpc Master, Vector2 Position, float Scale = 1.0f) { Master_ = Master; Root_ = new GameObject("Bar").transform; Root_.transform.SetParent(Master.FrontLayer, false); Root_.transform.localPosition = Position; Root_.transform.localScale = new Vector3(Scale, Scale, Scale); HpBarObj_ = AssetManager.CreatePrefabSync(new AssetUri("prefabs/hpbar.prefab")); HpBarObj_.transform.SetParent(Root_, false); MpBarObj_ = AssetManager.CreatePrefabSync(new AssetUri("prefabs/mpbar.prefab")); MpBarObj_.transform.SetParent(Root_, false); MpBarObj_.transform.localPosition = new Vector3(0, -12, 0); HpBar_ = HpBarObj_.GetComponent <Slider>(); HpBar_.minValue = 0; MpBar_ = MpBarObj_.GetComponent <Slider>(); MpBar_.minValue = 0; }
public NpcAttribute(BaseNpc Master, float[] Attrs) { Master_ = Master; Value_ = new float[(int)NpcAttrIndex.Count]; Percent_ = new float[(int)NpcAttrIndex.Count]; Base_ = new float[(int)NpcAttrIndex.Count]; for (var Index = 0; Index < Value_.Length; ++Index) { if (Index >= Attrs.Length) { Value_[Index] = 0; } else { Value_[Index] = Attrs[Index]; } Percent_[Index] = 1; Base_[Index] = 0; } }