Exemple #1
0
        private void cureCond(Unit target, EUnitCondition condition, LogMapTrick.TargetInfo log_mt_ti)
        {
            bool flag = target.IsUnitCondition(condition);

            target.CureCondEffects(condition, true, false);
            if (log_mt_ti == null || !flag || target.IsUnitCondition(condition))
            {
                return;
            }
            log_mt_ti.IsEffective    = true;
            log_mt_ti.CureCondition |= condition;
        }
Exemple #2
0
        private bool actionDamage(Unit target, LogMapTrick.TargetInfo log_mt_ti)
        {
            int num = this.calcDamage(target);

            if (num <= 0)
            {
                return(false);
            }
            target.Damage(num, true);
            if (log_mt_ti != null)
            {
                log_mt_ti.IsEffective = true;
                log_mt_ti.Damage      = num;
            }
            return(true);
        }
Exemple #3
0
        private bool actionHeal(Unit target, LogMapTrick.TargetInfo log_mt_ti)
        {
            int num = 0;

            if (!target.IsUnitCondition(EUnitCondition.DisableHeal))
            {
                num = this.calcHeal(target);
            }
            if (num < 0)
            {
                return(false);
            }
            target.Heal(num);
            if (log_mt_ti != null)
            {
                log_mt_ti.IsEffective = true;
                log_mt_ti.Heal        = num;
            }
            return(true);
        }
Exemple #4
0
        private bool actionEffectTurnEnd(List <Unit> target_lists, RandXorshift rand, LogMapTrick log_mt)
        {
            if (target_lists == null)
            {
                return(false);
            }
            bool flag = false;

            using (List <Unit> .Enumerator enumerator = target_lists.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Unit current = enumerator.Current;
                    LogMapTrick.TargetInfo log_mt_ti = (LogMapTrick.TargetInfo)null;
                    if (log_mt != null)
                    {
                        log_mt_ti        = new LogMapTrick.TargetInfo();
                        log_mt_ti.Target = current;
                    }
                    switch (this.mTrickParam.DamageType)
                    {
                    case eTrickDamageType.DAMAGE:
                        flag |= this.actionDamage(current, log_mt_ti);
                        break;

                    case eTrickDamageType.HEAL:
                        flag |= this.actionHeal(current, log_mt_ti);
                        break;
                    }
                    flag |= this.actionCond(current, rand, log_mt_ti);
                    flag |= this.actionKnockBack(current, rand, log_mt_ti);
                    if (log_mt != null)
                    {
                        log_mt.TargetInfoLists.Add(log_mt_ti);
                    }
                }
            }
            return(flag);
        }
Exemple #5
0
        private bool actionKnockBack(Unit target, RandXorshift rand, LogMapTrick.TargetInfo log_mt_ti)
        {
            if (rand == null || (int)this.mTrickParam.KnockBackRate == 0 || (int)this.mTrickParam.KnockBackVal == 0)
            {
                return(false);
            }
            SceneBattle instance = SceneBattle.Instance;

            if (!UnityEngine.Object.op_Implicit((UnityEngine.Object)instance))
            {
                return(false);
            }
            BattleCore battle = instance.Battle;

            if (battle == null)
            {
                return(false);
            }
            if (!this.checkKnockBack(target, rand))
            {
                return(true);
            }
            EUnitDirection dir           = this.reverseDirection[(int)target.Direction];
            Grid           gridKnockBack = battle.GetGridKnockBack(target, dir, (int)this.mTrickParam.KnockBackVal, (SkillData)null, 0, 0);

            if (gridKnockBack == null)
            {
                return(true);
            }
            if (log_mt_ti != null)
            {
                log_mt_ti.IsEffective   = true;
                log_mt_ti.KnockBackGrid = gridKnockBack;
            }
            target.x = gridKnockBack.x;
            target.y = gridKnockBack.y;
            return(true);
        }
Exemple #6
0
        private void failCond(Unit target, CondEffect effect, ConditionEffectTypes effect_type, EUnitCondition condition, LogMapTrick.TargetInfo log_mt_ti)
        {
            SceneBattle instance = SceneBattle.Instance;

            if (UnityEngine.Object.op_Implicit((UnityEngine.Object)instance))
            {
                BattleCore battle = instance.Battle;
                if (battle != null)
                {
                    LogFailCondition logFailCondition = battle.Log <LogFailCondition>();
                    logFailCondition.self      = target;
                    logFailCondition.source    = (Unit)null;
                    logFailCondition.condition = condition;
                    TacticsUnitController unitController = instance.FindUnitController(target);
                    if (UnityEngine.Object.op_Implicit((UnityEngine.Object)unitController))
                    {
                        unitController.LockUpdateBadStatus(condition, false);
                    }
                }
            }
            CondAttachment condAttachment = this.createCondAttachment(target, effect, effect_type, condition);

            target.SetCondAttachment(condAttachment);
            if (log_mt_ti == null || !target.IsUnitCondition(condition))
            {
                return;
            }
            log_mt_ti.IsEffective    = true;
            log_mt_ti.FailCondition |= condition;
        }
Exemple #7
0
        private bool actionCond(Unit target, RandXorshift rand, LogMapTrick.TargetInfo log_mt_ti)
        {
            CondEffect mCondEffect = this.mCondEffect;

            if (rand == null || mCondEffect == null || (mCondEffect.param == null || mCondEffect.param.conditions == null))
            {
                return(false);
            }
            ConditionEffectTypes conditionEffectTypes = ConditionEffectTypes.None;

            if (!mCondEffect.CheckEnableCondTarget(target))
            {
                return(true);
            }
            if (mCondEffect.param.type != ConditionEffectTypes.None && mCondEffect.param.conditions != null)
            {
                int rate = (int)mCondEffect.rate;
                if (0 < rate && rate < 100 && (int)(rand.Get() % 100U) > rate)
                {
                    return(true);
                }
                conditionEffectTypes = mCondEffect.param.type;
            }
            switch (conditionEffectTypes)
            {
            case ConditionEffectTypes.CureCondition:
                for (int index = 0; index < mCondEffect.param.conditions.Length; ++index)
                {
                    EUnitCondition condition = mCondEffect.param.conditions[index];
                    this.cureCond(target, condition, log_mt_ti);
                }
                break;

            case ConditionEffectTypes.FailCondition:
                if ((int)mCondEffect.value != 0)
                {
                    EnchantParam enchantResist = target.CurrentStatus.enchant_resist;
                    for (int index = 0; index < mCondEffect.param.conditions.Length; ++index)
                    {
                        EUnitCondition condition = mCondEffect.param.conditions[index];
                        if (!target.IsDisableUnitCondition(condition) && this.checkFailCond(target, (int)mCondEffect.value, (int)enchantResist[condition], condition, rand))
                        {
                            this.failCond(target, mCondEffect, conditionEffectTypes, condition, log_mt_ti);
                        }
                    }
                    break;
                }
                break;

            case ConditionEffectTypes.ForcedFailCondition:
                for (int index = 0; index < mCondEffect.param.conditions.Length; ++index)
                {
                    EUnitCondition condition = mCondEffect.param.conditions[index];
                    this.failCond(target, mCondEffect, conditionEffectTypes, condition, log_mt_ti);
                }
                break;

            case ConditionEffectTypes.RandomFailCondition:
                if ((int)mCondEffect.value != 0)
                {
                    EnchantParam   enchantResist = target.CurrentStatus.enchant_resist;
                    int            index         = (int)((long)rand.Get() % (long)mCondEffect.param.conditions.Length);
                    EUnitCondition condition     = mCondEffect.param.conditions[index];
                    if (!target.IsDisableUnitCondition(condition) && this.checkFailCond(target, (int)mCondEffect.value, (int)enchantResist[condition], condition, rand))
                    {
                        this.failCond(target, mCondEffect, conditionEffectTypes, condition, log_mt_ti);
                        break;
                    }
                    break;
                }
                break;

            case ConditionEffectTypes.DisableCondition:
                for (int index = 0; index < mCondEffect.param.conditions.Length; ++index)
                {
                    CondAttachment condAttachment = this.createCondAttachment(target, mCondEffect, conditionEffectTypes, mCondEffect.param.conditions[index]);
                    target.SetCondAttachment(condAttachment);
                }
                break;
            }
            return(true);
        }