public int GetTotalFailConditionCount() { CondEffect condEffect = this.skill.GetCondEffect(SkillEffectTargets.Target); if (condEffect == null || condEffect.param == null || condEffect.param.conditions == null || condEffect.param.type != ConditionEffectTypes.FailCondition && condEffect.param.type != ConditionEffectTypes.ForcedFailCondition && condEffect.param.type != ConditionEffectTypes.RandomFailCondition) { return(0); } int num1 = 0; int num2 = 0; if (this.self.AI != null) { num2 = (int)this.self.AI.cond_border; } if (num2 > 0 && (int)condEffect.rate > 0 && (int)condEffect.rate < num2) { return(0); } for (int index1 = 0; index1 < this.targets.Count; ++index1) { for (int index2 = 0; index2 < condEffect.param.conditions.Length; ++index2) { Unit target = this.targets[index1].target; EUnitCondition condition = condEffect.param.conditions[index2]; if (!target.IsUnitCondition(condition) && !target.IsDisableUnitCondition(condition) && (num2 <= 0 || Math.Max((int)condEffect.value - (int)target.CurrentStatus.enchant_resist[condition], 0) >= num2)) { ++num1; } } } return(num1); }
public void SetText(EUnitCondition condition) { if (!Object.op_Inequality((Object)this.Text, (Object)null)) { return; } string str1 = condition.ToString(); if (string.IsNullOrEmpty(str1)) { return; } StringBuilder stringBuilder1 = GameUtility.GetStringBuilder(); stringBuilder1.Append("quest.COND_"); stringBuilder1.Append(str1); string str2 = LocalizedText.Get(stringBuilder1.ToString()); StringBuilder stringBuilder2 = GameUtility.GetStringBuilder(); stringBuilder2.Append(str2); stringBuilder2.Append(' '); this.Text.BottomColor = GameSettings.Instance.FailCondition_TextBottomColor; this.Text.TopColor = GameSettings.Instance.FailCondition_TextTopColor; this.Text.text = stringBuilder2.ToString(); }
public static bool IsFailCondition(Unit self, Unit target, EUnitCondition condition) { bool flag = SceneBattle.Instance.Battle.CheckEnemySide(self, target); if (AIUtility.IsFailCondition(condition)) return flag; return !flag; }
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; }
public void SetCond(EUnitCondition cond) { int index = new List <EUnitCondition>((IEnumerable <EUnitCondition>)Enum.GetValues(typeof(EUnitCondition))).IndexOf(cond); if (UnityEngine.Object.op_Implicit((UnityEngine.Object) this.ImageCond) && index >= 0 && index < this.ImageCond.Images.Length) { this.ImageCond.ImageIndex = index; } if (!UnityEngine.Object.op_Implicit((UnityEngine.Object) this.TextValue) || index < 0 || index >= Unit.StrNameUnitConds.Length) { return; } this.TextValue.set_text(Unit.StrNameUnitConds[index]); }
public bool ContainsCondition(EUnitCondition condition) { if (this.param == null || this.param.conditions == null) { return(false); } for (int index = 0; index < this.param.conditions.Length; ++index) { if (this.param.conditions[index] == condition) { return(true); } } return(false); }
private bool checkFailCond(Unit target, int val, int resist, EUnitCondition condition, RandXorshift rand) { if (rand == null || val <= 0) { return(false); } int num1 = val - resist; if (num1 <= 0) { return(false); } int num2 = (int)(rand.Get() % 100U); return(num1 > num2); }
public string GetLinkageBuffId(EUnitCondition cond) { if (this.conditions == null || this.BuffIds == null) { return((string)null); } for (int index = 0; index < this.conditions.Length; ++index) { if (this.conditions[index] == cond) { if (index < this.BuffIds.Length) { return(this.BuffIds[index]); } return((string)null); } } return((string)null); }
public int GetTotalCureConditionCount() { CondEffect condEffect = this.skill.GetCondEffect(SkillEffectTargets.Target); if (condEffect == null || condEffect.param == null || (condEffect.param.conditions == null || condEffect.param.type != ConditionEffectTypes.CureCondition)) { return(0); } int num = 0; for (int index1 = 0; index1 < this.targets.Count; ++index1) { for (int index2 = 0; index2 < condEffect.param.conditions.Length; ++index2) { EUnitCondition condition = condEffect.param.conditions[index2]; if (this.targets[index1].target.IsUnitCondition(condition) && !this.targets[index1].target.IsPassiveUnitCondition(condition)) { ++num; } } } return(num); }
private void cureCond(Unit target, EUnitCondition condition) { target.CureCondEffects(condition, true, false); }
public EventScript.Sequence OnRecvSkillCond(TacticsUnitController controller, EUnitCondition cond, bool isFirstPlay) { return(this.StartSequence((EventScript.TestCondition)(trigger => { if (trigger.Trigger == EventScript.ScriptSequence.StartConditions.RecvSkillCond && (!trigger.IsFirstOnly || isFirstPlay) && this.IsContainsUnit(trigger.UnitName, controller, (TacticsUnitController)null)) { return (cond & (EUnitCondition)trigger.SkillCond) != (EUnitCondition)0; } return false; }), true, 0)); }
private void failCond(Unit target, CondEffect effect, ConditionEffectTypes effect_type, EUnitCondition condition) { CondAttachment condAttachment = this.createCondAttachment(target, effect, effect_type, condition); CondAttachment sameCondAttachment = this.getSameCondAttachment(target, condAttachment); if (sameCondAttachment != null) { sameCondAttachment.turn = condAttachment.turn; } else { target.SetCondAttachment(condAttachment); if (!WeatherData.mIsEntryConditionLog) { return; } SceneBattle instance = SceneBattle.Instance; if (!UnityEngine.Object.op_Implicit((UnityEngine.Object)instance)) { return; } BattleCore battle = instance.Battle; if (battle == null) { return; } 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)) { return; } unitController.LockUpdateBadStatus(condition, false); } }
public bool ContainsCondition(EUnitCondition condition) { return(((EUnitCondition)(int)this.mCondition & condition) != (EUnitCondition)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; }
private CondAttachment createCondAttachment(Unit target, CondEffect effect, ConditionEffectTypes type, EUnitCondition condition) { if (type == ConditionEffectTypes.None) { return((CondAttachment)null); } if (effect == null) { return((CondAttachment)null); } CondAttachment condAttachment = new CondAttachment(effect.param); condAttachment.user = (Unit)null; condAttachment.skill = (SkillData)null; condAttachment.skilltarget = SkillEffectTargets.Self; condAttachment.CondId = effect.param.iname; condAttachment.IsPassive = (OBool)false; condAttachment.UseCondition = ESkillCondition.None; condAttachment.CondType = type; condAttachment.Condition = condition; condAttachment.turn = effect.turn; condAttachment.CheckTiming = effect.param.chk_timing; condAttachment.CheckTarget = target; if (condAttachment.IsFailCondition()) { condAttachment.IsCurse = effect.IsCurse; } condAttachment.SetupLinkageBuff(); return(condAttachment); }
public CondHit(EUnitCondition cond, int per = 0) { this.Cond = cond; this.Per = per; }
private CondAttachment createCondAttachment(Unit target, CondEffect effect, ConditionEffectTypes type, EUnitCondition condition) { if (type == ConditionEffectTypes.None) { return((CondAttachment)null); } CondAttachment condAttachment = new CondAttachment(); condAttachment.user = (Unit)null; condAttachment.skill = (SkillData)null; condAttachment.IsPassive = (OBool)(effect.param.chk_timing == EffectCheckTimings.Eternal); condAttachment.UseCondition = ESkillCondition.Weather; condAttachment.CondType = type; condAttachment.Condition = condition; int num = (int)effect.turn; if (num < 2) { num = 2; } condAttachment.turn = (OInt)num; condAttachment.CheckTiming = effect.param.chk_timing; condAttachment.CheckTarget = target; if (condAttachment.IsFailCondition()) { condAttachment.IsCurse = effect.IsCurse; } return(condAttachment); }
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); }
public OShort this[EUnitCondition condition] { get { EUnitCondition eunitCondition = condition; if (eunitCondition >= EUnitCondition.Poison && eunitCondition <= EUnitCondition.Sleep) { switch (eunitCondition) { case EUnitCondition.Poison: return(this.poison); case EUnitCondition.Paralysed: return(this.paralyse); case EUnitCondition.Stun: return(this.stun); case EUnitCondition.Sleep: return(this.sleep); } } switch (eunitCondition) { case EUnitCondition.Charm: return(this.charm); case EUnitCondition.Stone: return(this.stone); case EUnitCondition.Blindness: return(this.blind); case EUnitCondition.DisableSkill: return(this.notskl); case EUnitCondition.DisableMove: return(this.notmov); case EUnitCondition.DisableAttack: return(this.notatk); case EUnitCondition.Zombie: return(this.zombie); case EUnitCondition.DeathSentence: return(this.death); case EUnitCondition.Berserk: return(this.berserk); case EUnitCondition.Stop: return(this.stop); case EUnitCondition.Fast: return(this.fast); case EUnitCondition.Slow: return(this.slow); case EUnitCondition.AutoHeal: return(this.auto_heal); case EUnitCondition.Donsoku: return(this.donsoku); case EUnitCondition.Rage: return(this.rage); case EUnitCondition.GoodSleep: return(this.good_sleep); case EUnitCondition.AutoJewel: return(this.auto_jewel); case EUnitCondition.DisableHeal: return(this.notheal); default: return((OShort)0); } } set { EUnitCondition eunitCondition = condition; if (eunitCondition >= EUnitCondition.Poison && eunitCondition <= EUnitCondition.Sleep) { switch (eunitCondition) { case EUnitCondition.Poison: this.poison = value; return; case EUnitCondition.Paralysed: this.paralyse = value; return; case EUnitCondition.Stun: this.stun = value; return; case EUnitCondition.Sleep: this.sleep = value; return; } } switch (eunitCondition) { case EUnitCondition.Charm: this.charm = value; break; case EUnitCondition.Stone: this.stone = value; break; case EUnitCondition.Blindness: this.blind = value; break; case EUnitCondition.DisableSkill: this.notskl = value; break; case EUnitCondition.DisableMove: this.notmov = value; break; case EUnitCondition.DisableAttack: this.notatk = value; break; case EUnitCondition.Zombie: this.zombie = value; break; case EUnitCondition.DeathSentence: this.death = value; break; case EUnitCondition.Berserk: this.berserk = value; break; case EUnitCondition.Stop: this.stop = value; break; case EUnitCondition.Fast: this.fast = value; break; case EUnitCondition.Slow: this.slow = value; break; case EUnitCondition.AutoHeal: this.auto_heal = value; break; case EUnitCondition.Donsoku: this.donsoku = value; break; case EUnitCondition.Rage: this.rage = value; break; case EUnitCondition.GoodSleep: this.good_sleep = value; break; case EUnitCondition.AutoJewel: this.auto_jewel = value; break; case EUnitCondition.DisableHeal: this.notheal = value; break; } } }
private bool attachCond(WeatherData.eCondAttachType cond_at_type, Unit target, RandXorshift rand = null) { bool flag = false; using (List <CondEffect> .Enumerator enumerator = this.mCondEffectLists.GetEnumerator()) { while (enumerator.MoveNext()) { CondEffect current = enumerator.Current; if (current != null && current.param != null && current.param.conditions != null) { switch (cond_at_type) { case WeatherData.eCondAttachType.PASSIVE: if (current.param.chk_timing == EffectCheckTimings.Eternal) { break; } continue; case WeatherData.eCondAttachType.TURN: if (current.param.chk_timing != EffectCheckTimings.Eternal) { break; } continue; } if (current.CheckEnableCondTarget(target)) { ConditionEffectTypes type = current.param.type; switch (type) { case ConditionEffectTypes.CureCondition: for (int index = 0; index < current.param.conditions.Length; ++index) { EUnitCondition condition = current.param.conditions[index]; this.cureCond(target, condition); } break; case ConditionEffectTypes.FailCondition: if ((int)current.value != 0) { EnchantParam enchantResist = target.CurrentStatus.enchant_resist; for (int index = 0; index < current.param.conditions.Length; ++index) { EUnitCondition condition = current.param.conditions[index]; if (!target.IsDisableUnitCondition(condition) && this.checkFailCond(target, (int)current.value, (int)enchantResist[condition], condition, rand)) { this.failCond(target, current, type, condition); } } break; } break; case ConditionEffectTypes.ForcedFailCondition: for (int index = 0; index < current.param.conditions.Length; ++index) { EUnitCondition condition = current.param.conditions[index]; this.failCond(target, current, type, condition); } break; case ConditionEffectTypes.RandomFailCondition: if ((int)current.value != 0) { EnchantParam enchantResist = target.CurrentStatus.enchant_resist; int index = rand == null ? 0 : (int)((long)rand.Get() % (long)current.param.conditions.Length); EUnitCondition condition = current.param.conditions[index]; if (!target.IsDisableUnitCondition(condition) && this.checkFailCond(target, (int)current.value, (int)enchantResist[condition], condition, rand)) { this.failCond(target, current, type, condition); break; } break; } break; case ConditionEffectTypes.DisableCondition: for (int index = 0; index < current.param.conditions.Length; ++index) { CondAttachment condAttachment = this.createCondAttachment(target, current, type, current.param.conditions[index]); CondAttachment sameCondAttachment = this.getSameCondAttachment(target, condAttachment); if (sameCondAttachment != null) { sameCondAttachment.turn = condAttachment.turn; } else { target.SetCondAttachment(condAttachment); } } break; } flag = true; } } } } return(flag); }
public OInt this[EUnitCondition condition] { get { EUnitCondition eunitCondition = condition; switch (eunitCondition) { case EUnitCondition.Poison: return(this.poison); case EUnitCondition.Paralysed: return(this.paralyse); case EUnitCondition.Stun: return(this.stun); case EUnitCondition.Sleep: return(this.sleep); default: if (eunitCondition == EUnitCondition.Charm) { return(this.charm); } if (eunitCondition == EUnitCondition.Stone) { return(this.stone); } if (eunitCondition == EUnitCondition.Blindness) { return(this.blind); } if (eunitCondition == EUnitCondition.DisableSkill) { return(this.notskl); } if (eunitCondition == EUnitCondition.DisableMove) { return(this.notmov); } if (eunitCondition == EUnitCondition.DisableAttack) { return(this.notatk); } if (eunitCondition == EUnitCondition.Zombie) { return(this.zombie); } if (eunitCondition == EUnitCondition.DeathSentence) { return(this.death); } if (eunitCondition == EUnitCondition.Berserk) { return(this.berserk); } if (eunitCondition == EUnitCondition.Stop) { return(this.stop); } if (eunitCondition == EUnitCondition.Fast) { return(this.fast); } if (eunitCondition == EUnitCondition.Slow) { return(this.slow); } if (eunitCondition == EUnitCondition.AutoHeal) { return(this.auto_heal); } if (eunitCondition == EUnitCondition.Donsoku) { return(this.donsoku); } if (eunitCondition == EUnitCondition.Rage) { return(this.rage); } if (eunitCondition == EUnitCondition.GoodSleep) { return(this.good_sleep); } if (eunitCondition == EUnitCondition.AutoJewel) { return(this.auto_jewel); } if (eunitCondition == EUnitCondition.DisableHeal) { return(this.notheal); } return((OInt)0); } } set { EUnitCondition eunitCondition = condition; switch (eunitCondition) { case EUnitCondition.Poison: this.poison = value; break; case EUnitCondition.Paralysed: this.paralyse = value; break; case EUnitCondition.Stun: this.stun = value; break; case EUnitCondition.Sleep: this.sleep = value; break; default: if (eunitCondition != EUnitCondition.Charm) { if (eunitCondition != EUnitCondition.Stone) { if (eunitCondition != EUnitCondition.Blindness) { if (eunitCondition != EUnitCondition.DisableSkill) { if (eunitCondition != EUnitCondition.DisableMove) { if (eunitCondition != EUnitCondition.DisableAttack) { if (eunitCondition != EUnitCondition.Zombie) { if (eunitCondition != EUnitCondition.DeathSentence) { if (eunitCondition != EUnitCondition.Berserk) { if (eunitCondition != EUnitCondition.Stop) { if (eunitCondition != EUnitCondition.Fast) { if (eunitCondition != EUnitCondition.Slow) { if (eunitCondition != EUnitCondition.AutoHeal) { if (eunitCondition != EUnitCondition.Donsoku) { if (eunitCondition != EUnitCondition.Rage) { if (eunitCondition != EUnitCondition.GoodSleep) { if (eunitCondition != EUnitCondition.AutoJewel) { if (eunitCondition != EUnitCondition.DisableHeal) { break; } this.notheal = value; break; } this.auto_jewel = value; break; } this.good_sleep = value; break; } this.rage = value; break; } this.donsoku = value; break; } this.auto_heal = value; break; } this.slow = value; break; } this.fast = value; break; } this.stop = value; break; } this.berserk = value; break; } this.death = value; break; } this.zombie = value; break; } this.notatk = value; break; } this.notmov = value; break; } this.notskl = value; break; } this.blind = value; break; } this.stone = value; break; } this.charm = value; break; } } }
public static bool IsFailCondition(EUnitCondition condition) { return condition != EUnitCondition.AutoHeal && condition != EUnitCondition.GoodSleep && (condition != EUnitCondition.AutoJewel && condition != EUnitCondition.Fast) && (condition != EUnitCondition.DisableDebuff && condition != EUnitCondition.DisableKnockback); }