public Strength GetAffectEffectStrength(AffectEffect affectEffect) { if (!Tolerance.OnInfluenceToleranceAffectEffect(affectEffect)) { global::Debug.LogError("Unknown Type : " + affectEffect.ToString()); return(Strength.None); } switch (affectEffect) { case AffectEffect.Paralysis: return(this.paralysis); case AffectEffect.Poison: return(this.poison); case AffectEffect.Sleep: return(this.sleep); case AffectEffect.SkillLock: return(this.skillLock); case AffectEffect.Confusion: return(this.confusion); case AffectEffect.Stun: return(this.stun); } return(this.instantDeath); }
public void AddHitIcon(CharacterStateControl target, AffectEffect affectEffect, int damage, Strength strength, bool isMiss, bool isCritical, bool isDrain, bool isCounter, bool isReflection, ExtraEffectType extraEffectType) { SubStatePlayHitAnimationAction.Data.HitIcon hitIcon = new SubStatePlayHitAnimationAction.Data.HitIcon(); hitIcon.target = target; hitIcon.affectEffect = affectEffect; hitIcon.damage = damage; hitIcon.strength = strength; hitIcon.isMiss = isMiss; hitIcon.isCritical = isCritical; hitIcon.isDrain = isDrain; hitIcon.isCounter = isCounter; hitIcon.isReflection = isReflection; hitIcon.extraEffectType = extraEffectType; this.hitIconList.Add(hitIcon); }
public AffectEffectProperty(AffectEffect type, int skillId, int subSkillId, float hitRate, EffectTarget target, EffectNumbers effectNumbers, int[] intValue, float[] floatValue, bool useDrain, PowerType powerType, TechniqueType techniqueType, global::Attribute attribute, bool isMissThrough) { this._type = type; this.skillId = skillId; this.subSkillId = subSkillId; this.hitRate = hitRate; this._techniqueType = techniqueType; this._attribute = attribute; this.target = target; this._effectNumbers = effectNumbers; this._powerType = powerType; this._floatValue = floatValue; this._intValue = intValue; this.useDrain = useDrain; this.isMissThrough = isMissThrough; }
private void GetSkillDetailViewData(out GameWebAPI.RespDataMA_GetSkillDetailM.SkillDetailM dest, List <GameWebAPI.RespDataMA_GetSkillDetailM.SkillDetailM> source) { dest = null; for (int i = 0; i < source.Count; i++) { if (dest == null) { dest = source[i]; } AffectEffect affectEffect = ServerToBattleUtility.IntToAffectEffect(source[i].effectType); if (AffectEffectProperty.IsDamage(affectEffect)) { dest = source[i]; break; } } }
public void ApplyShowHitIcon(AffectEffect affect, int onDamage, Strength onWeak, bool onMiss, bool onCrithical, bool isDrain, bool isCounter, bool isReflection, ExtraEffectType extraEffectType = ExtraEffectType.Non, AffectEffectProperty affectEffectProperty = null) { this.ApplyHitIconPlayAnimation(onWeak); bool flag = false; HitIcon.Data data = (!flag) ? this.standard : this.gimmick; this.standard.gameObject.SetActive(!flag); this.gimmick.gameObject.SetActive(flag); base.transform.localScale = Vector3.one; data.numMesh.text = string.Empty; data.topMesh.text = string.Empty; data.middleMesh.text = string.Empty; data.bottomMesh.text = string.Empty; this.upSprite.gameObject.SetActive(false); this.downSprite.gameObject.SetActive(false); if (onMiss) { this.ShowMiss(data); } else { switch (affect) { case AffectEffect.Damage: case AffectEffect.ReferenceTargetHpRate: case AffectEffect.HpBorderlineDamage: case AffectEffect.HpBorderlineSpDamage: case AffectEffect.DefenseThroughDamage: case AffectEffect.SpDefenseThroughDamage: case AffectEffect.RefHpRateNonAttribute: this.ShowDamage(data, onDamage, onWeak, onCrithical, isCounter, isReflection, extraEffectType); return; case AffectEffect.AttackUp: this.ShowAttackUp(data); return; case AffectEffect.AttackDown: this.ShowAttackDown(data); return; case AffectEffect.DefenceUp: this.ShowDefenceUp(data); return; case AffectEffect.DefenceDown: this.ShowDefenceDown(data); return; case AffectEffect.SpAttackUp: this.ShowSpAttackUp(data); return; case AffectEffect.SpAttackDown: this.ShowSpAttackDown(data); return; case AffectEffect.SpDefenceUp: this.ShowSpDefenceUp(data); return; case AffectEffect.SpDefenceDown: this.ShowSpDefenceDown(data); return; case AffectEffect.SpeedUp: this.ShowSpeedUp(data); return; case AffectEffect.SpeedDown: this.ShowSpeedDown(data); return; case AffectEffect.CorrectionUpReset: this.ShowCorrectionUpReset(data); return; case AffectEffect.CorrectionDownReset: this.ShowCorrectionDownReset(data); return; case AffectEffect.HpRevival: this.ShowHpRevival(data, onDamage, isDrain); return; case AffectEffect.Counter: this.ShowCounter(data, onDamage); return; case AffectEffect.Reflection: this.ShowReflection(data, onDamage); return; case AffectEffect.Protect: this.ShowProtect(data); return; case AffectEffect.PowerCharge: this.ShowPowerCharge(data); return; case AffectEffect.Destruct: this.ShowDestruct(data); return; case AffectEffect.Paralysis: this.ShowParalysis(data); return; case AffectEffect.Poison: this.ShowPoison(data, onDamage); return; case AffectEffect.Sleep: this.ShowSleep(data); return; case AffectEffect.SkillLock: this.ShowSkillLock(data); return; case AffectEffect.HitRateUp: this.ShowHitRateUp(data); return; case AffectEffect.HitRateDown: this.ShowHitRateDown(data); return; case AffectEffect.InstantDeath: this.ShowInstantDeath(data); return; case AffectEffect.Confusion: this.ShowConfusion(data); return; case AffectEffect.Stun: this.ShowStun(data); return; case AffectEffect.SufferStatusClear: this.ShowSufferStatusClear(data); return; case AffectEffect.SatisfactionRateUp: this.ShowSatisfactionRateUp(data); return; case AffectEffect.SatisfactionRateDown: this.ShowSatisfactionRateDown(data); return; case AffectEffect.ApRevival: this.ShowApRevival(data); return; case AffectEffect.ApUp: this.ShowApUp(data); return; case AffectEffect.ApDown: this.ShowApDown(data); return; case AffectEffect.ApConsumptionUp: this.ShowApConsumptionUp(data); return; case AffectEffect.ApConsumptionDown: this.ShowApConsumptionDown(data); return; case AffectEffect.TurnBarrier: this.ShowTurnBarrier(data); return; case AffectEffect.CountBarrier: this.ShowCountBarrier(data); return; case AffectEffect.Invalid: this.ShowInvalid(data); return; case AffectEffect.Recommand: this.ShowRecommand(data); return; case AffectEffect.DamageRateUp: this.ShowDamageRateUp(data); return; case AffectEffect.DamageRateDown: this.ShowDamageRateDown(data); return; case AffectEffect.Regenerate: this.ShowRegenerate(data, onDamage); return; case AffectEffect.TurnEvasion: this.ShowTurnEvasion(data); return; case AffectEffect.CountEvasion: this.ShowCountEvasion(data); return; case AffectEffect.Escape: this.ShowEscape(data); return; case AffectEffect.ChangeToleranceUp: this.ShowAttributeTolerance(data, affectEffectProperty, true); return; case AffectEffect.ChangeToleranceDown: this.ShowAttributeTolerance(data, affectEffectProperty, false); return; case AffectEffect.ClearTolerance: this.ShowClearTolerance(data); return; } NGUITools.SetActiveSelf(base.gameObject, false); } }
public static bool OnInfluenceToleranceAffectEffect(AffectEffect affectEffect) { return(affectEffect == AffectEffect.Poison || affectEffect == AffectEffect.Paralysis || affectEffect == AffectEffect.Sleep || affectEffect == AffectEffect.Stun || affectEffect == AffectEffect.SkillLock || affectEffect == AffectEffect.InstantDeath || affectEffect == AffectEffect.Confusion); }
private IEnumerator PlayHitAnimation() { if (!base.stateManager.cameraControl.IsPlaying(this.data.cameraKey)) { foreach (SubStatePlayHitAnimationAction.Data.HitIcon hitIcon in this.data.hitIconList) { hitIcon.target.CharacterParams.PlayAnimation(CharacterAnimationType.idle, SkillType.Attack, 0, null, null); } if (this.data.hitIconList.Count == 1) { base.stateManager.cameraControl.PlayCameraMotionActionCharacter(this.data.cameraKey, this.data.hitIconList[0].target); } else if (this.data.hitIconList.Count >= 2 && this.data.hitIconList[0].affectEffect != AffectEffect.InstantDeath) { base.stateManager.cameraControl.PlayCameraMotionActionCharacter(this.data.cameraKey, this.data.hitIconList[0].target); } } List <HitIcon> hitIconList = new List <HitIcon>(); foreach (SubStatePlayHitAnimationAction.Data.HitIcon hitIcon2 in this.data.hitIconList) { int count = hitIconList.Count; HitIcon item2 = base.stateManager.uiControl.ApplyShowHitIcon(count, base.stateManager.uiControl.GetFixableCharacterCenterPosition2DFunction(hitIcon2.target), hitIcon2.affectEffect, hitIcon2.damage, hitIcon2.strength, hitIcon2.isMiss, hitIcon2.isCritical, hitIcon2.isDrain, hitIcon2.isCounter, hitIcon2.isReflection, hitIcon2.extraEffectType, hitIcon2.affectEffect != AffectEffect.InstantDeath, this.data.affectEffectProperty); hitIconList.Add(item2); } HitEffectParams[] currentHitEffect = this.GetHitEffectParams(); base.stateManager.uiControl.HideCharacterHUDFunction(); base.stateManager.threeDAction.ShowAllCharactersAction(this.data.hitIconList.Select((SubStatePlayHitAnimationAction.Data.HitIcon item) => item.target).ToArray <CharacterStateControl>()); bool isPlayedDeathSE = false; Action PlayDeadSE = delegate() { if (!isPlayedDeathSE) { this.stateManager.soundPlayer.PlayDeathSE(); } isPlayedDeathSE = true; }; bool isFindDeathCharacter = false; bool isBigBossFindDeathCharacter = false; bool isPlayedHitEffectSE = false; for (int i = 0; i < this.data.hitIconList.Count; i++) { if (this.data.hitIconList[i].target.isDiedJustBefore) { this.data.hitIconList[i].target.CharacterParams.gameObject.SetActive(false); } else { base.stateManager.threeDAction.PlayHitEffectAction(currentHitEffect[i], this.data.hitIconList[i].target); if (!isPlayedHitEffectSE) { isPlayedHitEffectSE = true; base.stateManager.soundPlayer.TryPlaySE(currentHitEffect[i]); } bool flag = AffectEffectProperty.IsDamage(this.data.affectEffectProperty.type); bool flag2 = Tolerance.OnInfluenceToleranceAffectEffect(this.data.affectEffectProperty.type); bool flag3 = this.data.hitIconList[i].affectEffect == AffectEffect.TurnBarrier || this.data.hitIconList[i].affectEffect == AffectEffect.CountBarrier; bool flag4 = this.data.hitIconList[i].affectEffect == AffectEffect.TurnEvasion || this.data.hitIconList[i].affectEffect == AffectEffect.CountEvasion; bool flag5 = this.data.hitIconList[i].strength == Strength.Invalid; if (!this.data.hitIconList[i].target.isDied) { if ((flag || flag2) && (flag3 || flag4 || flag5)) { base.stateManager.threeDAction.PlayIdleAnimationActiveCharacterAction(new CharacterStateControl[] { this.data.hitIconList[i].target }); } else if (!this.data.hitIconList[i].isMiss) { AffectEffect affectEffect = this.data.hitIconList[i].affectEffect; switch (affectEffect) { case AffectEffect.Damage: goto IL_69A; default: switch (affectEffect) { case AffectEffect.ReferenceTargetHpRate: case AffectEffect.HpBorderlineDamage: case AffectEffect.HpBorderlineSpDamage: case AffectEffect.DefenseThroughDamage: case AffectEffect.SpDefenseThroughDamage: case AffectEffect.RefHpRateNonAttribute: goto IL_69A; case AffectEffect.ApDrain: case AffectEffect.Escape: case AffectEffect.Nothing: case AffectEffect.SkillBranch: case AffectEffect.ChangeToleranceUp: goto IL_881; case AffectEffect.HpSettingFixable: case AffectEffect.HpSettingPercentage: if (this.data.hitIconList[i].damage > 0) { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.hit, new CharacterStateControl[] { this.data.hitIconList[i].target }); } else { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.revival, new CharacterStateControl[] { this.data.hitIconList[i].target }); } break; case AffectEffect.ChangeToleranceDown: goto IL_79F; default: goto IL_881; } break; case AffectEffect.AttackDown: case AffectEffect.DefenceDown: case AffectEffect.SpAttackDown: case AffectEffect.SpDefenceDown: case AffectEffect.SpeedDown: case AffectEffect.CorrectionUpReset: case AffectEffect.HateUp: case AffectEffect.Paralysis: case AffectEffect.Poison: case AffectEffect.Sleep: case AffectEffect.SkillLock: case AffectEffect.HitRateDown: case AffectEffect.InstantDeath: case AffectEffect.Confusion: case AffectEffect.Stun: case AffectEffect.SatisfactionRateDown: case AffectEffect.ApDown: case AffectEffect.ApConsumptionUp: goto IL_79F; case AffectEffect.Counter: case AffectEffect.Reflection: case AffectEffect.Destruct: goto IL_881; } IL_8C1: goto IL_901; IL_69A: if (this.data.hitIconList[i].strength == Strength.Weak) { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.strongHit, new CharacterStateControl[] { this.data.hitIconList[i].target }); } else if (this.data.hitIconList[i].strength == Strength.Drain) { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.revival, new CharacterStateControl[] { this.data.hitIconList[i].target }); } else { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.hit, new CharacterStateControl[] { this.data.hitIconList[i].target }); } goto IL_8C1; IL_79F: base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.hit, new CharacterStateControl[] { this.data.hitIconList[i].target }); goto IL_8C1; IL_881: base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.revival, new CharacterStateControl[] { this.data.hitIconList[i].target }); } else { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.guard, new CharacterStateControl[] { this.data.hitIconList[i].target }); } IL_901 :; } else { if (base.hierarchyData.batteWaves[base.battleStateData.currentWaveNumber].cameraType == 1 && this.data.hitIconList[i].target.isEnemy) { base.stateManager.threeDAction.PlayAnimationCharacterAction(CharacterAnimationType.strongHit, new CharacterStateControl[] { this.data.hitIconList[i].target }); isBigBossFindDeathCharacter = true; } else { base.stateManager.threeDAction.PlayDeadAnimationCharacterAction(PlayDeadSE, this.data.hitIconList[i].target); } isFindDeathCharacter = true; } } } base.stateManager.uiControl.ShowCharacterHUDFunction(this.data.hitIconList.Select((SubStatePlayHitAnimationAction.Data.HitIcon item) => item.target).ToArray <CharacterStateControl>()); IEnumerator slowMotion = null; if (base.stateManager.IsLastBattleAndAllDeath()) { if (base.stateManager.battleMode == BattleMode.Multi) { base.stateManager.uiControlMulti.HideAllDIalog(); } slowMotion = base.stateManager.threeDAction.SlowMotionWaitAction(); } if (isBigBossFindDeathCharacter) { base.stateManager.uiControl.Fade(Color.white, 1f, 1f); } float waitSecond = this.data.time; if (isFindDeathCharacter) { waitSecond += 1f; } while (waitSecond > 0f) { waitSecond -= Time.deltaTime; CharacterStateControl[] targets = this.data.hitIconList.Select((SubStatePlayHitAnimationAction.Data.HitIcon item) => item.target).ToArray <CharacterStateControl>(); base.stateManager.uiControl.RepositionCharacterHUDPosition(targets); if (slowMotion != null) { slowMotion.MoveNext(); } for (int j = 0; j < this.data.hitIconList.Count; j++) { Vector3 fixableCharacterCenterPosition2DFunction = base.stateManager.uiControl.GetFixableCharacterCenterPosition2DFunction(this.data.hitIconList[j].target); hitIconList[j].HitIconReposition(fixableCharacterCenterPosition2DFunction); } yield return(null); } AppCoroutine.Start(this.StopHitAnimation(currentHitEffect), false); yield break; }
public static bool IsDamage(AffectEffect affectEffect) { return(affectEffect == AffectEffect.Damage || affectEffect == AffectEffect.ReferenceTargetHpRate || affectEffect == AffectEffect.HpBorderlineDamage || affectEffect == AffectEffect.HpBorderlineSpDamage || affectEffect == AffectEffect.DefenseThroughDamage || affectEffect == AffectEffect.SpDefenseThroughDamage || affectEffect == AffectEffect.RefHpRateNonAttribute); }
public SkillResults GetOtherSkillResult(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter) { SkillResults skillResults = new SkillResults(); skillResults.useAffectEffectProperty = affectEffectProperty; skillResults.hitIconAffectEffect = affectEffectProperty.type; skillResults.attackCharacter = attackerCharacter; skillResults.targetCharacter = targetCharacter; if (!affectEffectProperty.OnHit(attackerCharacter, targetCharacter)) { skillResults.onMissHit = true; return(skillResults); } skillResults.onMissHit = false; AffectEffect type = affectEffectProperty.type; switch (type) { case AffectEffect.CorrectionUpReset: this.CorrectionUpReset(targetCharacter); break; case AffectEffect.CorrectionDownReset: this.CorrectionDownReset(targetCharacter); break; case AffectEffect.HpRevival: { int num = this.HpRevival(targetCharacter, affectEffectProperty); skillResults.attackPower = num; skillResults.originalAttackPower = num; break; } default: switch (type) { case AffectEffect.HpSettingFixable: { int num2 = this.HpSettingFixable(targetCharacter, affectEffectProperty); if (num2 > 0) { skillResults.hitIconAffectEffect = AffectEffect.HpRevival; } else { skillResults.hitIconAffectEffect = AffectEffect.Damage; } num2 = Mathf.Abs(num2); skillResults.attackPower = num2; skillResults.originalAttackPower = num2; break; } case AffectEffect.HpSettingPercentage: { int num3 = this.HpSettingPercentage(targetCharacter, affectEffectProperty); if (num3 > 0) { skillResults.hitIconAffectEffect = AffectEffect.HpRevival; } else { skillResults.hitIconAffectEffect = AffectEffect.Damage; } num3 = Mathf.Abs(num3); skillResults.attackPower = num3; skillResults.originalAttackPower = num3; break; } case AffectEffect.Escape: if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.Escape)) { skillResults.onMissHit = true; } else { this.AddSufferStateOthers(targetCharacter, affectEffectProperty); } break; case AffectEffect.Nothing: break; default: if (type != AffectEffect.ApUp) { if (type != AffectEffect.ApDown) { if (type != AffectEffect.SufferStatusClear) { if (type != AffectEffect.Recommand) { this.AddSufferStateOthers(targetCharacter, affectEffectProperty); } else { targetCharacter.isRecommand = true; } } else { this.SufferStatusClear(targetCharacter, affectEffectProperty); } } else { this.ApDown(targetCharacter, affectEffectProperty); } } else { this.ApUp(targetCharacter, affectEffectProperty); } break; case AffectEffect.ClearTolerance: this.ClearTolerance(targetCharacter, affectEffectProperty); break; } break; case AffectEffect.HateUp: this.HateUp(targetCharacter, affectEffectProperty); break; case AffectEffect.HateDown: this.HateDown(targetCharacter, affectEffectProperty); break; } return(skillResults); }
public Sprite GetAffectEffectIcon(AffectEffect auxiliaryEffect) { switch (auxiliaryEffect) { case AffectEffect.AttackUp: return(this.auxiliaryEffectIcons[0]); case AffectEffect.AttackDown: return(this.auxiliaryEffectIcons[1]); case AffectEffect.DefenceUp: return(this.auxiliaryEffectIcons[2]); case AffectEffect.DefenceDown: return(this.auxiliaryEffectIcons[3]); case AffectEffect.SpAttackUp: return(this.auxiliaryEffectIcons[4]); case AffectEffect.SpAttackDown: return(this.auxiliaryEffectIcons[5]); case AffectEffect.SpDefenceUp: return(this.auxiliaryEffectIcons[6]); case AffectEffect.SpDefenceDown: return(this.auxiliaryEffectIcons[7]); case AffectEffect.SpeedUp: return(this.auxiliaryEffectIcons[8]); case AffectEffect.SpeedDown: return(this.auxiliaryEffectIcons[10]); case AffectEffect.CorrectionUpReset: return(this.auxiliaryEffectIcons[11]); case AffectEffect.CorrectionDownReset: return(this.auxiliaryEffectIcons[12]); case AffectEffect.HpRevival: return(this.auxiliaryEffectIcons[13]); case AffectEffect.Counter: return(this.auxiliaryEffectIcons[14]); case AffectEffect.Reflection: return(this.auxiliaryEffectIcons[15]); case AffectEffect.Protect: return(this.auxiliaryEffectIcons[16]); case AffectEffect.HateUp: return(this.auxiliaryEffectIcons[17]); case AffectEffect.HateDown: return(this.auxiliaryEffectIcons[18]); case AffectEffect.PowerCharge: return(this.auxiliaryEffectIcons[19]); case AffectEffect.Destruct: return(this.auxiliaryEffectIcons[20]); case AffectEffect.Paralysis: return(this.auxiliaryEffectIcons[21]); case AffectEffect.Poison: return(this.auxiliaryEffectIcons[22]); case AffectEffect.Sleep: return(this.auxiliaryEffectIcons[24]); case AffectEffect.SkillLock: return(this.auxiliaryEffectIcons[25]); case AffectEffect.HitRateUp: return(this.auxiliaryEffectIcons[26]); case AffectEffect.HitRateDown: return(this.auxiliaryEffectIcons[27]); case AffectEffect.InstantDeath: return(this.auxiliaryEffectIcons[28]); case AffectEffect.Confusion: return(this.auxiliaryEffectIcons[29]); case AffectEffect.Stun: return(this.auxiliaryEffectIcons[30]); case AffectEffect.SatisfactionRateUp: return(this.auxiliaryEffectIcons[9]); case AffectEffect.SatisfactionRateDown: return(this.auxiliaryEffectIcons[31]); } return(null); }
private static int CompareToleranceAffectEffectBase(CharacterStateControl x, CharacterStateControl y, AffectEffect affectEffect) { return(CharacterStateControlSorter.CompareToleranceBase(x.tolerance.GetAffectEffectStrength(affectEffect), y.tolerance.GetAffectEffectStrength(affectEffect))); }