void SendDeath() { GameObject go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } mActorCore = go.GetComponent <ActorCore>(); if (mActorCore != null) { DamageMessage lDamage = DamageMessage.Allocate(); mActorCore.OnKilled(lDamage); lDamage.Release(); } }
/// <summary> /// Adds an effect to the game object /// </summary> /// <param name="rObject">GameObject to add the effect to</param> protected void AddEffect(GameObject rTarget) { ActorCore lActorCore = rTarget.GetComponent <ActorCore>(); if (lActorCore != null) { LifeCores.CauseDamage lEffect = lActorCore.GetActiveEffectFromSourceID <LifeCores.CauseDamage>(mNode.ID); if (lEffect != null) { lEffect.Age = 0f; } else { // Determine the damage float lDamage = UnityEngine.Random.Range(_MinDamage, _MaxDamage); if (_DamageFloatValueIndex >= 0 && _Spell.Data.FloatValues != null) { lDamage = _Spell.Data.FloatValues[_DamageFloatValueIndex]; } // Setup the message DamageMessage lMessage = DamageMessage.Allocate(); lMessage.DamageType = DamageType; lMessage.ImpactType = ImpactType; lMessage.Damage = lDamage; lMessage.AnimationEnabled = PlayAnimation; lEffect = LifeCores.CauseDamage.Allocate(); lEffect.Name = EffectName; lEffect.SourceID = mNode.ID; lEffect.ActorCore = lActorCore; lEffect.Activate(TriggerDelay, MaxAge, lMessage); lActorCore.Effects.Add(lEffect); } } }