public override void Apply() { Entity owner = GetOwnerEntity(); ManaComponent mana_component = owner.GetComponent(ManaComponent.ID) as ManaComponent; if (mana_component == null) { return; } FixPoint amount = m_mana_amount.Evaluate(this); mana_component.ChangeMana(m_mana_type, amount); }
bool PostActivate(FixPoint start_time) { if (m_definition_component.NeedGatherTargets) { BuildSkillTargets(); if (!CheckTargetRange()) { Deactivate(false); return(false); } } FixPoint mana_cost = m_definition_component.ManaCost; if (mana_cost > FixPoint.Zero) { if (!m_mana_component.ChangeMana(m_definition_component.ManaType, -mana_cost)) { Deactivate(false); return(false); } } var enumerator = m_components.GetEnumerator(); while (enumerator.MoveNext()) { SkillComponent cmp = enumerator.Current.Value as SkillComponent; if (cmp != null) { cmp.PostActivate(start_time); } } m_definition_component.StartCooldownTimer(start_time, m_owner_component); if (m_definition_component.InflictTime > FixPoint.Zero) { m_definition_component.StartInflictingTimer(start_time, m_owner_component); } else { Inflict(start_time); } if (m_definition_component.NormalAttack) { GetOwnerEntity().SendSignal(SignalType.CastNormalAttack); } else if (!m_definition_component.StartsActive) { GetOwnerEntity().SendSignal(SignalType.CastSkill); } string main_animation = m_definition_component.GenerateMainActionNameLogicly(); #if COMBAT_CLIENT if (main_animation != null) { PlayAnimationRenderMessage msg = RenderMessage.Create <PlayAnimationRenderMessage>(); FixPoint speed = m_definition_component.NormalAttack ? m_owner_component.AttackSpeedRate : FixPoint.One; if (m_definition_component.m_expiration_animation == null) { msg.Construct(GetOwnerEntityID(), main_animation, AnimationName.IDLE, true, speed); } else { msg.Construct(GetOwnerEntityID(), main_animation, m_definition_component.m_expiration_animation, true, speed); } GetLogicWorld().AddRenderMessage(msg); } int render_effect_cfgid = m_definition_component.GetMainRenderEffectConfigID(); if (render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsPlay(GetOwnerEntityID(), render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } if (m_definition_component.m_main_sound > 0) { PlaySoundMessage msg = RenderMessage.Create <PlaySoundMessage>(); msg.Construct(GetOwnerEntityID(), m_definition_component.m_main_sound, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(msg); } #endif return(true); }