Ejemplo n.º 1
0
        public void CheckSkillCondition(TURN_STATES state, FightDataFormat selfFightData, FightDataFormat otherFightData)
        {
            if (selfFightData.OneTurnFightData.AllSkillFailed != null && selfFightData.OneTurnFightData.AllSkillFailed.Value == true)
            {
                return;
            }

            var _currentStateSkillList = selfFightData.SkillList.FindAll(skill => {
                if (skill.Level < SkillOthers.LEVEL_MIN)
                {
                    return(false);
                }

                if (skill.SkillCondition.IsActive == true)
                {
                    return(false);
                }

                return(skill.SkillCondition.CheckState(state));
            });

            if (_currentStateSkillList == null)
            {
                return;
            }

            if (state == TURN_STATES.JUDGE_INITIATIVE_SKILL)
            {
                var _initProbabilitySkillList = _currentStateSkillList.FindAll(skill => {
                    if (skill.SkillCondition.IsActive == true)
                    {
                        return(false);
                    }

                    var _targetTrigger = skill.SkillCondition.TriggerList.Find(trigger => {
                        return(trigger.Type == SKILL_TRIGGER_TYPE.PROBABILITY && skill.Type == SKILL_TYPE.INITIATIVE);
                    });

                    return(_targetTrigger != null);
                });

                if (_initProbabilitySkillList != null)
                {
                    InitiativeSkillDrawBySlot(_initProbabilitySkillList, selfFightData);
                }
            }

            _currentStateSkillList.ForEach(skill => {
                if (skill.SkillCondition.IsActive)
                {
                    return;
                }

                if (skill.SkillCondition.CheckSuccess(selfFightData, otherFightData) && skill.Type != SKILL_TYPE.BUFF)
                {
                    InfoManagerInstance.EnqueueMessage(INFO_FORMAT_LABEL.ACTIVE_SKILL, selfFightData, otherFightData, skill);
                }
            });
        }
Ejemplo n.º 2
0
        public void ActiveSkill(TURN_STATES state, FightDataFormat selfFightData, FightDataFormat otherFightData = null, Queue <AbsCharacterController> targetQueue = null)
        {
            if (selfFightData.OneTurnFightData.AllSkillFailed != null && selfFightData.OneTurnFightData.AllSkillFailed.Value == true)
            {
                return;
            }

            CheckSkillCondition(state, selfFightData, otherFightData);
            ActiveEffect(state, selfFightData, otherFightData, targetQueue);
        }
Ejemplo n.º 3
0
        public IEnumerator ActiveSkillCoroutine(TURN_STATES state, FightDataFormat selfFightData, FightDataFormat otherFightData = null, Queue <AbsCharacterController> targetQueue = null)
        {
            if (selfFightData.OneTurnFightData.AllSkillFailed != null && selfFightData.OneTurnFightData.AllSkillFailed.Value == true)
            {
                yield break;
            }

            CheckSkillCondition(state, selfFightData, otherFightData);
            ActiveEffect(state, selfFightData, otherFightData, targetQueue);
            yield break;
        }
Ejemplo n.º 4
0
        public StatesFormat(ICommonSkill skill, TriggerTypeIDMapFormat triggerMap) : base(skill, triggerMap)
        {
            if (triggerMap.TriggerID < 0)
            {
                return;
            }

            var _triggerStateRow = StatesTableReader.Instance.FindDefaultFirst((ushort)triggerMap.TriggerID);

            this.SelfActiveState       = _triggerStateRow.SelfState;
            this.OtherActiveState      = _triggerStateRow.OtherState;
            this.InterruptCoditionList = null ?? new List <EXCEPTION_TYPE>();
            this.CurrentExceptionList  = null ?? new List <EXCEPTION_TYPE> ();
        }
Ejemplo n.º 5
0
        public bool ActiveEffect(TURN_STATES state, FightDataFormat selfFightData, FightDataFormat otherFightData, Queue <AbsCharacterController> targetQueue)
        {
            bool _success = false;

            if (selfFightData.OneTurnFightData.AllSkillFailed != null && selfFightData.OneTurnFightData.AllSkillFailed.Value == true)
            {
                return(_success);
            }

            selfFightData.SkillList.ForEach(skill => {
                if (skill.SkillCondition.IsActive == false)
                {
                    return;
                }

                // Not active yet & state
                var _targetList = skill.EffectList.FindAll(effect => {
                    if (effect.EffectCondition.IsActive)
                    {
                        return(false);
                    }

                    return(effect.EffectCondition.CheckState(state));
                });

                if (_targetList == null)
                {
                    return;
                }

                // Check condition & active effect
                _targetList.ForEach(effect => {
                    effect.EffectCondition.CheckSuccess(selfFightData, otherFightData);

                    if (effect.EffectCondition.IsActive)
                    {
                        effect.Active(selfFightData, otherFightData, targetQueue);
                        _success = true;
                    }
                    else
                    {
//            Debug.LogFormat("Effect [{0}] didn't active",effect);
                    }
                });
            });

            return(_success);
        }
Ejemplo n.º 6
0
 public override void Reset()
 {
     this.CurrentTurnState = TURN_STATES.NONE;
 }