bool Deactivate(bool force) { if (!m_is_active) { return(false); } m_definition_component.ClearTimer(SkillTimer.CastingTimer); m_definition_component.ClearTimer(SkillTimer.InflictingTimer); m_definition_component.ClearTimer(SkillTimer.ExpirationTimer); var enumerator = m_components.GetEnumerator(); while (enumerator.MoveNext()) { SkillComponent cmp = enumerator.Current.Value as SkillComponent; if (cmp != null) { cmp.Deactivate(force); } } SetSkillActive(false); #if COMBAT_CLIENT int render_effect_cfgid = m_definition_component.GetMainRenderEffectConfigID(); if (render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsStop(GetOwnerEntityID(), render_effect_cfgid); GetLogicWorld().AddRenderMessage(msg); } #endif return(true); }
public override void ClearRunningTrace() { #if COMBAT_CLIENT Skill skill = GetOwnerSkill(); PlayRenderEffectMessage stop_msg = RenderMessage.Create <PlayRenderEffectMessage>(); stop_msg.ConstructAsStop(skill.GetOwnerEntityID(), m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(stop_msg); #endif }
public void Impact() { #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { if (m_remain_attack_cnt != m_combo_attack_cnt) { PlayRenderEffectMessage stop_msg = RenderMessage.Create <PlayRenderEffectMessage>(); stop_msg.ConstructAsStop(GetOwnerEntityID(), m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(stop_msg); } PlayRenderEffectMessage start_msg = RenderMessage.Create <PlayRenderEffectMessage>(); start_msg.ConstructAsPlay(GetOwnerEntityID(), m_render_effect_cfgid, FixPoint.MinusOne); GetLogicWorld().AddRenderMessage(start_msg); } #endif --m_remain_attack_cnt; if (m_remain_attack_cnt <= 0) { if (m_combo_task != null) { m_combo_task.Cancel(); } } Skill skill = GetOwnerSkill(); if (!skill.GetDefinitionComponent().NeedGatherTargets) { skill.BuildSkillTargets(); } Entity attacker = GetOwnerEntity(); List <Target> targets = skill.GetTargets(); LogicWorld logic_world = GetLogicWorld(); for (int i = 0; i < targets.Count; ++i) { m_current_target = targets[i].GetEntity(logic_world); if (m_current_target == null) { continue; } DamagableComponent damageable_component = m_current_target.GetComponent(DamagableComponent.ID) as DamagableComponent; if (damageable_component == null) { continue; } Damage damage = RecyclableObject.Create <Damage>(); damage.m_attacker_id = attacker.ID; damage.m_defender_id = m_current_target.ID; damage.m_damage_type = m_damage_type_id; damage.m_damage_amount = m_damage_amount.Evaluate(this); damage.m_damage_amount = DamageSystem.Instance.CalculateDamageAmount(m_damage_type_id, damage.m_damage_amount, attacker, m_current_target); damage.m_render_effect_cfgid = m_damage_render_effect_cfgid; damage.m_sound_cfgid = m_damage_sound_cfgid; damageable_component.TakeDamage(damage); } m_current_target = null; }
public override void Unapply() { #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { PlayRenderEffectMessage stop_msg = RenderMessage.Create <PlayRenderEffectMessage>(); stop_msg.ConstructAsStop(GetOwnerEntityID(), m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(stop_msg); } #endif }
public override void Deactivate(bool force) { m_generator.Deactivate(); #if COMBAT_CLIENT if (m_render_effect_cfgid > 0) { PlayRenderEffectMessage stop_msg = RenderMessage.Create <PlayRenderEffectMessage>(); stop_msg.ConstructAsStop(GetOwnerEntityID(), m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(stop_msg); } #endif }
void DeactivateState(StateData data) { for (int i = 0; i < data.m_disable_componnets.Count; ++i) { Component component = ParentObject.GetComponent(data.m_disable_componnets[i]); if (component != null) { component.Enable(); } } #if COMBAT_CLIENT if (data.m_render_effect_cfgid > 0) { PlayRenderEffectMessage msg = RenderMessage.Create <PlayRenderEffectMessage>(); msg.ConstructAsStop(GetOwnerEntityID(), data.m_render_effect_cfgid); GetLogicWorld().AddRenderMessage(msg); } #endif }