Exemple #1
0
 public void ApplyAbilityEffect()
 {
     foreach (var item in SkillConfigObject.Effects)
     {
         if (item is DamageEffect damageEffect)
         {
             var operation = CombatActionManager.CreateAction <DamageAction>(this.SpellCaster);
             operation.Target       = SkillTarget;
             operation.DamageSource = DamageSource.Skill;
             operation.DamageEffect = damageEffect;
             operation.ApplyDamage();
         }
         else if (item is CureEffect cureEffect)
         {
             var operation = CombatActionManager.CreateAction <CureAction>(this.SpellCaster);
             operation.Target     = SkillTarget;
             operation.CureEffect = cureEffect;
             operation.ApplyCure();
         }
         else
         {
             var operation = CombatActionManager.CreateAction <AssignEffectAction>(this.SpellCaster);
             operation.Target = SkillTarget;
             operation.Effect = item;
             if (item is AddStatusEffect addStatusEffect)
             {
                 addStatusEffect.AddStatus.Duration = addStatusEffect.Duration;
             }
             operation.ApplyAssignEffect();
         }
     }
 }
Exemple #2
0
    //生命回复
    private void ReplyHealth()
    {
        var action = CombatActionManager.CreateAction <CureAction>(AbilityOwner);

        action.Target    = AbilityOwner;
        action.CureValue = AbilityOwner.CurrentHealth.PercentHealth(1);
        action.ApplyCure();
    }
Exemple #3
0
    private void OnInputPoint(Vector3 point)
    {
        var action = CombatActionManager.CreateAction <SpellSkillAction>(GetEntity <CombatEntity>());

        action.SkillAbility                     = PreviewingSkill;
        action.SkillAbilityExecution            = PreviewingSkill.CreateAbilityExecution() as SkillAbilityExecution;
        action.SkillAbilityExecution.InputPoint = point;
        action.SpellSkill();
    }
Exemple #4
0
    private void OnInputTarget(CombatEntity combatEntity)
    {
        var action = CombatActionManager.CreateAction <SpellSkillAction>(GetEntity <CombatEntity>());

        action.SkillAbility          = PreviewingSkill;
        action.SkillAbilityExecution = PreviewingSkill.CreateAbilityExecution() as SkillAbilityExecution;
        action.SkillAbilityExecution.InputCombatEntity = combatEntity;
        action.SpellSkill();
    }
Exemple #5
0
    private void OnInputDirect(float direction)
    {
        var action = CombatActionManager.CreateAction <SpellSkillAction>(GetEntity <CombatEntity>());

        action.SkillAbility          = PreviewingSkill;
        action.SkillAbilityExecution = PreviewingSkill.CreateAbilityExecution() as SkillAbilityExecution;
        action.SkillAbilityExecution.InputDirection = direction;
        action.SpellSkill();
    }
Exemple #6
0
 public void ApplyEffect()
 {
     //Log.Debug("LogicEntity ApplyEffect");
     if (Effect is DamageEffect damageEffect)
     {
         var damageAction = CombatActionManager.CreateAction <DamageAction>(GetParent <StatusAbilityEntity>().Caster);
         damageAction.DamageEffect = damageEffect;
         damageAction.Target       = GetParent <StatusAbilityEntity>().GetParent <CombatEntity>();
         damageAction.DamageSource = DamageSource.Buff;
         damageAction.ApplyDamage();
     }
 }
Exemple #7
0
        public void ApplyEffect()
        {
            var combatEntity = Parent as CombatEntity;

            if (Effect is DamageEffect damageEffect)
            {
                var damageAction = CombatActionManager.CreateAction <DamageAction>(Caster);
                damageAction.DamageEffect = damageEffect;
                damageAction.Target       = combatEntity;;
                damageAction.DamageSource = DamageSource.Buff;
                damageAction.ApplyDamage();
            }
        }
Exemple #8
0
    public void Attack()
    {
        var monster = GameObject.Find("/Monster");

        SpawnLineEffect(AttackPrefab, transform.position, monster.transform.position);
        SpawnHitEffect(transform.position, monster.transform.position);

        var action = CombatActionManager.CreateAction <DamageAction>(CombatEntity);

        action.Target       = monster.GetComponent <Monster>().CombatEntity;
        action.DamageSource = DamageSource.Attack;
        CombatEntity.NumericBox.PhysicAttack_I.SetBase(RandomHelper.RandomNumber(600, 999));
        action.ApplyDamage();
    }
        private void TriggerEffect()
        {
            var status       = Master as StatusEntity;
            var combatEntity = status.Parent as CombatEntity;

            if (Effects[0] is DamageEffect damageEffect)
            {
                var damageAction = CombatActionManager.CreateAction <DamageAction>(status.Caster);
                damageAction.DamageEffect = damageEffect;
                damageAction.Target       = combatEntity;;
                damageAction.DamageSource = DamageSource.Buff;
                damageAction.ApplyDamage();
            }
        }
Exemple #10
0
    public void Attack()
    {
        PlayThenIdleAsync(AttackAnimation).Coroutine();

        var monster = GameObject.Find("/Monster");

        SpawnLineEffect(AttackPrefab, transform.position, monster.transform.position);
        SpawnHitEffect(transform.position, monster.transform.position);

        var action = CombatActionManager.CreateAction <DamageAction>(CombatEntity);

        action.Target       = monster.GetComponent <Monster>().CombatEntity;
        action.DamageSource = DamageSource.Attack;
        CombatEntity.AttributeComponent.AttackPower.SetBase(ET.RandomHelper.RandomNumber(600, 999));
        action.ApplyDamage();
    }
Exemple #11
0
 public void Update()
 {
     if (SkillEntity.SkillConfigObject.TargetSelectType == SkillTargetSelectType.AreaSelect)
     {
         if (CastMapPoint(out var point))
         {
             SkillGuideTrm.position = point;
         }
         if (Input.GetMouseButtonDown((int)MouseButton.LeftMouse))
         {
             //SkillEntity.EndListen();
             var operation = CombatActionManager.CreateAction <SpellSkillAction>(SkillEntity.SpellCaster);
             operation.SpellSkill();
         }
     }
 }
Exemple #12
0
    public void SpellSkillA()
    {
        var monster = GameObject.Find("/Monster");

        SpawnLineEffect(SkillEffectPrefab, transform.position, monster.transform.position);
        SpawnHitEffect(transform.position, monster.transform.position);

        var action = CombatActionManager.CreateAction <SpellSkillAction>(this.CombatEntity);

        action.Target = monster.GetComponent <Monster>().CombatEntity;
        var skill = CombatSkillManager.CreateSkill <Skill_1001>();

        skill.SpellCaster       = this.CombatEntity;
        skill.SkillConfigObject = Resources.Load <SkillConfigObject>("SkillConfigs/Skill_1001_黑火球术");
        action.SkillEntity      = skill;
        action.SpellSkill();
    }
Exemple #13
0
        public virtual void ApplyAbilityEffect(CombatEntity targetEntity)
        {
            List <Effect> Effects = null;

            if (ConfigObject is SkillConfigObject skillConfigObject)
            {
                Effects = skillConfigObject.Effects;
            }
            if (ConfigObject is StatusConfigObject statusConfigObject)
            {
                Effects = statusConfigObject.Effects;
            }
            foreach (var item in Effects)
            {
                if (item is DamageEffect damageEffect)
                {
                    var operation = CombatActionManager.CreateAction <DamageAction>(this.AbilityOwner);
                    operation.Target       = targetEntity;
                    operation.DamageSource = DamageSource.Skill;
                    operation.DamageEffect = damageEffect;
                    operation.ApplyDamage();
                }
                else if (item is CureEffect cureEffect)
                {
                    var operation = CombatActionManager.CreateAction <CureAction>(this.AbilityOwner);
                    operation.Target     = targetEntity;
                    operation.CureEffect = cureEffect;
                    operation.ApplyCure();
                }
                else
                {
                    var operation = CombatActionManager.CreateAction <AssignEffectAction>(this.AbilityOwner);
                    operation.Target = targetEntity;
                    operation.Effect = item;
                    if (item is AddStatusEffect addStatusEffect)
                    {
                        addStatusEffect.AddStatus.Duration = addStatusEffect.Duration;
                    }
                    operation.ApplyAssignEffect();
                }
            }
        }
Exemple #14
0
    // Update is called once per frame
    void Update()
    {
        AnimTimer.UpdateAsFinish(Time.deltaTime);
        if (!AnimTimer.IsFinished)
        {
            //return;
        }

        var h = Input.GetAxis("Horizontal") * MoveSpeed;
        var v = Input.GetAxis("Vertical") * MoveSpeed;
        var p = transform.position;

        transform.position = new Vector3(p.x + h, 0, p.z + v);

        if (Input.GetMouseButtonDown((int)MouseButton.LeftMouse))
        {
            AnimTimer.Reset();
            var monster      = GameObject.Find("/Monster");
            var attackEffect = GameObject.Instantiate(AttackPrefab);
            attackEffect.transform.position = Vector3.up;
            attackEffect.GetComponent <LineRenderer>().SetPosition(0, transform.position);
            attackEffect.GetComponent <LineRenderer>().SetPosition(1, monster.transform.position);
            GameObject.Destroy(attackEffect, 0.05f);

            var vec      = transform.position - monster.transform.position;
            var hitPoint = monster.transform.position + vec.normalized * .6f;
            hitPoint += Vector3.up;
            var hitEffect = GameObject.Instantiate(HitEffectPrefab);
            hitEffect.transform.position = hitPoint;
            GameObject.Destroy(hitEffect, 0.2f);


            var DamageAction = CombatActionManager.CreateDamageAction(CombatEntity);
            DamageAction.Target = monster.GetComponent <Monster>().CombatEntity;
            CombatEntity.NumericBox.PhysicAttack_I.SetBase(RandomHelper.RandomNumber(600, 999));
            DamageAction.ApplyDamage();
        }
    }
Exemple #15
0
        //应用能力效果
        public virtual void ApplyAbilityEffect(CombatEntity targetEntity)
        {
            List <Effect> Effects = null;

            if (ConfigObject is SkillConfigObject skillConfigObject)
            {
                Effects = skillConfigObject.Effects;
            }
            if (ConfigObject is StatusConfigObject statusConfigObject)
            {
                if (statusConfigObject.EnabledLogicTrigger)
                {
                    Effects = statusConfigObject.Effects;
                }
            }
            if (Effects == null)
            {
                return;
            }
            foreach (var item in Effects)
            {
                if (item is DamageEffect damageEffect)
                {
                    var action = CombatActionManager.CreateAction <DamageAction>(this.AbilityOwner);
                    action.Target       = targetEntity;
                    action.DamageSource = DamageSource.Skill;
                    action.DamageEffect = damageEffect;
                    action.ApplyDamage();
                }
                else if (item is CureEffect cureEffect)
                {
                    var action = CombatActionManager.CreateAction <CureAction>(this.AbilityOwner);
                    action.Target     = targetEntity;
                    action.CureEffect = cureEffect;
                    action.ApplyCure();
                }
                else
                {
                    var action = CombatActionManager.CreateAction <AssignEffectAction>(this.AbilityOwner);
                    action.Target = targetEntity;
                    action.Effect = item;
                    if (item is AddStatusEffect addStatusEffect)
                    {
                        var statusConfig = addStatusEffect.AddStatus;
                        statusConfig.Duration = addStatusEffect.Duration;
                        if (addStatusEffect.Params != null && statusConfig.Effects != null)
                        {
                            if (statusConfig.EnabledAttributeModify)
                            {
                                foreach (var item3 in addStatusEffect.Params)
                                {
                                    if (statusConfig.NumericValue != null)
                                    {
                                        statusConfig.NumericValue = statusConfig.NumericValue.Replace(item3.Key, item3.Value);
                                    }
                                }
                            }
                            if (statusConfig.EnabledLogicTrigger)
                            {
                                foreach (var item6 in statusConfig.Effects)
                                {
                                    foreach (var item3 in addStatusEffect.Params)
                                    {
                                        if (item6.Interval != null)
                                        {
                                            item6.Interval = item6.Interval.Replace(item3.Key, item3.Value);
                                        }
                                        if (item6.ConditionParam != null)
                                        {
                                            item6.ConditionParam = item6.ConditionParam.Replace(item3.Key, item3.Value);
                                        }
                                    }
                                    if (item6 is DamageEffect damage)
                                    {
                                        foreach (var item4 in addStatusEffect.Params)
                                        {
                                            if (damage.DamageValueFormula != null)
                                            {
                                                damage.DamageValueFormula = damage.DamageValueFormula.Replace(item4.Key, item4.Value);
                                            }
                                        }
                                    }
                                    else if (item6 is CureEffect cure)
                                    {
                                        foreach (var item5 in addStatusEffect.Params)
                                        {
                                            if (cure.CureValueFormula != null)
                                            {
                                                cure.CureValueFormula = cure.CureValueFormula.Replace(item5.Key, item5.Value);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    action.ApplyAssignEffect();
                }
            }
        }