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(); } } }
//生命回复 private void ReplyHealth() { var action = CombatActionManager.CreateAction <CureAction>(AbilityOwner); action.Target = AbilityOwner; action.CureValue = AbilityOwner.CurrentHealth.PercentHealth(1); action.ApplyCure(); }
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(); }
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(); }
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(); }
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(); } }
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(); } }
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(); } }
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(); }
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(); } } }
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(); }
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(); } } }
// 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(); } }
//应用能力效果 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(); } } }