private IEnumerator BattleAnimWithNone(RadingKind type, float cur, int died) { for (int i = 0; i < 2; i++) { shell.Initialize(enemy.transform.parent.localPosition, ship.transform.localPosition, type); yield return(MyWaitForSeconds((type != 0) ? 1f : 0.5f)); iTween.ShakePosition(ship.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f)); explosion.transform.localPosition = ship.transform.localPosition; SoundUtils.PlaySE(SEFIleInfos.BattleDamage); iTween.ValueTo(explosion.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.1f, "onupdate", "ExplosionAlpha", "onupdatetarget", base.gameObject)); iTween.ScaleTo(explosion.gameObject, iTween.Hash("scale", 2f * Vector3.one, "islocal", true, "time", 0.5f, "easeType", iTween.EaseType.easeOutQuad)); iTween.ValueTo(explosion.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.1f, "delay", 0.4f, "onupdate", "ExplosionAlpha", "onupdatetarget", base.gameObject)); GameObject tmp = UnityEngine.Object.Instantiate(count.gameObject); tmp.transform.parent = count.transform.parent; tmp.transform.localScale = Vector3.one; tmp.transform.localPosition = count.transform.localPosition; iTween.MoveTo(tmp, iTween.Hash("position", tmp.transform.localPosition + 50f * Vector3.up, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear)); iTween.RotateTo(tmp, iTween.Hash("x", 90, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear)); UnityEngine.Object.Destroy(tmp, 0.4f); cur -= (float)died / 2f; count.text = "x " + Mathf.RoundToInt(cur); yield return(MyWaitForSeconds(1f)); } }
public IEnumerator DelayedActions(bool guard, RadingKind type) { yield return(new WaitForSeconds(0.5f)); yield return(StartCoroutine(TankerPopUp())); yield return(StartCoroutine(EnemyPopUp(guard))); yield return(StartCoroutine(GuardPopUp(guard))); float cur = tot; int died = tot - cnt; if (!CutMode) { if (guard) { AttackCor = StartCoroutine(BattleAnimWithGuard(type, cur, died)); yield return(AttackCor); } else { AttackCor = StartCoroutine(BattleAnimWithNone(type, cur, died)); yield return(AttackCor); } } AttackCor = null; ResultPhaseCor = StartCoroutine(ResultPhase()); yield return(ResultPhaseCor); CutMode = false; }
private int getRadingTankerLostNum(RadingKind kind, List <Mem_ship> ships, int nowTankerNum, Mst_radingrate radingRecord) { int radingPow = radingRecord.GetRadingPow(kind); int num = Enumerable.Count <Mem_ship>(ships, (Mem_ship x) => x.IsEscortDeffender()); int num2 = 0; if (num == 0 || Utils.GetRandDouble(1.0, (double)(12 - num), 1.0, 1) >= 6.0) { if (num == 6) { double randDouble = Utils.GetRandDouble(0.0, Math.Sqrt((double)radingPow), 0.1, 1); num2 = (int)(randDouble + 0.5); } else if (num == 4 || num == 5) { double randDouble2 = Utils.GetRandDouble(0.0, Math.Sqrt((double)(radingPow / 2)), 0.1, 1); num2 = (int)(randDouble2 + 0.5); } else if (num >= 1 && num <= 3) { double randDouble3 = Utils.GetRandDouble(0.0, Math.Sqrt((double)radingPow), 0.1, 1); num2 = (int)(randDouble3 + 1.5); } else if (num == 0) { return(nowTankerNum); } } if (num2 > nowTankerNum) { return(nowTankerNum); } return(num2); }
public void Attack(bool guard, RadingKind type) { timer = Time.time; on = true; isFinished = false; count.text = "x " + tot; isGuard = guard; DelayedActionsCor = StartCoroutine(DelayedActions(guard, type)); }
public void Attack(bool guard, RadingKind type) { this.timer = Time.get_time(); this.on = true; this.isFinished = false; this.count.text = "x " + this.tot; this.isGuard = guard; this.DelayedActionsCor = base.StartCoroutine(this.DelayedActions(guard, type)); }
public int[] GetRadingValues(RadingKind kind) { int[] array = new int[2]; if (kind == RadingKind.AIR_ATTACK) { array[0] = this.Air_rate; array[1] = this.Air_karyoku; } else { array[0] = this.Submarine_rate; array[1] = this.Submarine_karyoku; } return(array); }
private int getRadingTankerLostNum(RadingKind kind, List <Mem_ship> ships, int nowTankerNum, Mst_radingrate radingRecord) { int radingPow = radingRecord.GetRadingPow(kind); int num = ships.Count((Mem_ship x) => x.IsEscortDeffender()); int num2 = 0; if (num == 0 || Utils.GetRandDouble(1.0, 12 - num, 1.0, 1) >= 6.0) { switch (num) { case 6: { double randDouble = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow), 0.1, 1); num2 = (int)(randDouble + 0.5); break; } case 4: case 5: { double randDouble3 = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow / 2), 0.1, 1); num2 = (int)(randDouble3 + 0.5); break; } case 1: case 2: case 3: { double randDouble2 = Utils.GetRandDouble(0.0, Math.Sqrt(radingPow), 0.1, 1); num2 = (int)(randDouble2 + 1.5); break; } default: if (num == 0) { return(nowTankerNum); } break; } } if (num2 > nowTankerNum) { return(nowTankerNum); } return(num2); }
public void StartAnimation(bool friendly, RadingKind type, bool isFirst) { float num = 0f; if (isFirst) { textBG.alpha = 1f; iTween.ScaleTo(textBG.gameObject, iTween.Hash("scale", Vector3.one, "time", 0.5f, "easeType", iTween.EaseType.easeOutQuad)); iTween.MoveTo(text.gameObject, iTween.Hash("position", new Vector3(0f, 0f, 0f), "islocal", true, "time", 1, "delay", 0.4f, "easeType", iTween.EaseType.easeOutExpo)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.5f, "delay", 0.4f, "onupdate", "TextAlpha", "onupdatetarget", base.gameObject)); iTween.MoveTo(text.gameObject, iTween.Hash("position", new Vector3(680f, 0f, 0f), "islocal", true, "time", 1, "delay", 1.4f, "easeType", iTween.EaseType.easeInExpo)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.5f, "delay", 1.9f, "onupdate", "TextAlpha", "onupdatetarget", base.gameObject)); iTween.ScaleTo(textBG.gameObject, iTween.Hash("scale", new Vector3(1f, 0f, 1f), "time", 0.5f, "delay", 2, "easeType", iTween.EaseType.easeInQuad, "oncomplete", "TextBGAlphaOff", "oncompletetarget", base.gameObject)); num = 2.4f; } StartCoroutine(StrategyTopTaskManager.Instance.UIModel.MapCamera.MoveToTargetTile(curTile + 1, 1f)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0.5f, "time", 0.2f, "delay", num, "onupdate", "TileColor", "onupdatetarget", base.gameObject)); this.DelayAction(num, delegate { StartCoroutine(Attack(3.4f, friendly, type)); }); }
public IEnumerator Attack(float delay, bool friendly, RadingKind type) { attacking = true; taa.transform.localPosition = tiles[curTile].transform.parent.localPosition + tiles[curTile].transform.localPosition + new Vector3(-6f, 6f, 0f); taa.Attack(friendly, type); while (!taa.isFinished) { yield return(new WaitForEndOfFrame()); } tileSprites[curTile].color = Color.white; attacking = false; on = false; text.transform.localPosition = new Vector3(-680f, 0f, 0f); isFinished = true; TweenAlpha ta = TweenAlpha.Begin(taa.gameObject, 0.2f, 0f); ta.onFinished.Clear(); ta.SetOnFinished(delegate { this.taa.SetActive(isActive: false); this.tileAnimInstance.SetActive(false); }); }
private List <RadingDamageData> getRadingDamage(int area, RadingKind kind, Mst_radingrate rateRecord, List <Mem_ship> targetShips, out int deckPow, out List <Mem_ship> deleteShips) { List <Mem_ship> list = targetShips.ToList(); int ec = 0; double ad3 = 0.0; double ad2 = 0.0; list.ForEach(delegate(Mem_ship ship) { if (ship.IsEscortDeffender()) { ec++; } Ship_GrowValues battleBaseParam = ship.GetBattleBaseParam(); int num9 = ship.Taiku - battleBaseParam.Taiku; ad3 = ad3 + Math.Sqrt(battleBaseParam.Taiku) + (double)num9; int num10 = ship.Taisen - battleBaseParam.Taisen; ad2 = ad2 + Math.Sqrt(battleBaseParam.Taisen) + (double)num10; }); int[] radingValues = rateRecord.GetRadingValues(kind); double num = (kind != RadingKind.AIR_ATTACK) ? ad2 : ad3; int num11 = radingValues[0]; int num2 = radingValues[1]; deckPow = (int)num; deleteShips = new List <Mem_ship>(); if (list.Count == 0) { return(new List <RadingDamageData>()); } RadingResultData radingResultData = new RadingResultData(); radingResultData.DeckAttackPow = (int)num; double num3 = (double)num2 - Math.Sqrt(ec); int num4 = (!(num3 < 1.0)) ? ((int)Utils.GetRandDouble(0.0, num3, 0.1, 1)) : 0; List <RadingDamageData> list2 = new List <RadingDamageData>(); Dictionary <int, DamageState> dictionary = (from x in list select new { rid = x.Rid, state = x.Get_DamageState() }).ToDictionary(key => key.rid, val => val.state); for (int i = 0; i < num4; i++) { if (list.Count == 0) { return(list2); } RadingDamageData radingDamageData = new RadingDamageData(); double num5 = (double)(num2 * 5) - num / 5.0 - Math.Sqrt(num); int index = (int)Utils.GetRandDouble(0.0, list.Count - 1, 1.0, 1); Mem_ship mem_ship = list[index]; radingDamageData.Rid = mem_ship.Rid; if (num5 <= 0.0) { radingDamageData.Damage = false; radingDamageData.DamageState = DamagedStates.None; } else { int taik = Mst_DataManager.Instance.Mst_ship[mem_ship.Ship_id].Taik; int num6 = (int)((double)taik * Utils.GetRandDouble(1.0, num5, 1.0, 1) / 100.0) + 1; int num7 = mem_ship.Nowhp - num6; if (num7 <= 0) { num7 = ((basicInstance.Difficult != DifficultKind.SHI) ? 1 : ((dictionary[mem_ship.Rid] != DamageState.Taiha) ? 1 : 0)); } int num8 = mem_ship.Nowhp - num7; if (num8 > 0) { DamageState damageState = mem_ship.Get_DamageState(); radingDamageData.Damage = true; if (num7 == 0) { int[] array = mem_ship.FindRecoveryItem(); if (array[0] == -1) { radingDamageData.DamageState = DamagedStates.Gekichin; list.Remove(mem_ship); deleteShips.Add(mem_ship); } else { mem_ship.SubHp(num8); mem_ship.UseRecoveryItem(array, flagShipRecovery: false); radingDamageData.DamageState = ((array[1] != 43) ? DamagedStates.Youin : DamagedStates.Megami); dictionary[mem_ship.Rid] = DamageState.Normal; } } else { mem_ship.SubHp(num8); DamageState damageState2 = mem_ship.Get_DamageState(); if (damageState != damageState2) { switch (damageState2) { case DamageState.Taiha: radingDamageData.DamageState = DamagedStates.Taiha; break; case DamageState.Shouha: radingDamageData.DamageState = DamagedStates.Shouha; break; case DamageState.Tyuuha: radingDamageData.DamageState = DamagedStates.Tyuuha; break; } } else { radingDamageData.DamageState = DamagedStates.None; } } } else { radingDamageData.Damage = false; radingDamageData.DamageState = DamagedStates.None; } } list2.Add(radingDamageData); } return(list2); }
public IEnumerator DelayedActions(bool guard, RadingKind type) { TileAnimationAttack.< DelayedActions > c__Iterator195 <DelayedActions> c__Iterator = new TileAnimationAttack.< DelayedActions > c__Iterator195();
public int GetRadingRate(RadingKind kind) { return((kind != RadingKind.AIR_ATTACK) ? this.Submarine_rate : this.Air_rate); }
public int GetRadingPow(RadingKind kind) { return((kind != RadingKind.AIR_ATTACK) ? this.Submarine_karyoku : this.Air_karyoku); }
private IEnumerator BattleAnimWithGuard(RadingKind type, float cur, int died) { for (int i = 0; i < 2; i++) { shell.Initialize(enemy.transform.parent.localPosition, friendly.transform.parent.localPosition, type); yield return(MyWaitForSeconds((type != 0) ? 1f : 0.5f)); iTween.ShakePosition(friendly.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f)); ((Component)partExplosion).transform.localPosition = friendly.transform.parent.localPosition; partExplosion.time = 0f; partExplosion.Play(true); SoundUtils.PlaySE(SEFIleInfos.BattleDamage); GameObject tmp = UnityEngine.Object.Instantiate(count.gameObject); tmp.transform.parent = count.transform.parent; tmp.transform.localScale = Vector3.one; tmp.transform.localPosition = count.transform.localPosition; iTween.MoveTo(tmp, iTween.Hash("position", tmp.transform.localPosition + 50f * Vector3.up, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear)); iTween.RotateTo(tmp, iTween.Hash("x", 90, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear)); UnityEngine.Object.Destroy(tmp, 0.4f); cur -= (float)died / 2f; count.text = "x " + Mathf.RoundToInt(cur); if (RadingData.RadingDamage.Any((RadingDamageData x) => x.Damage)) { bool isGekichin = RadingData.RadingDamage.Any((RadingDamageData x) => x.DamageState == DamagedStates.Gekichin); bool isYouin = RadingData.RadingDamage.Any((RadingDamageData x) => x.DamageState == DamagedStates.Youin); if (i == 1 && (isGekichin || isYouin)) { hukidashi.Play(TileAnimationHukidashi.Type.Goutin); yield return(new WaitForSeconds(2f)); if (isYouin) { hukidashi.Play(TileAnimationHukidashi.Type.Damecon); yield return(new WaitForSeconds(1f)); TrophyUtil.Unlock_At_Rading(); } } else { hukidashi.Play(TileAnimationHukidashi.Type.Damage); } } yield return(MyWaitForSeconds(1.2f)); partExplosion.Stop(true); partExplosion.Clear(true); SoundUtils.PlaySE(SEFIleInfos.BattleDamage); shell.Initialize(friendly.transform.parent.localPosition, enemy.transform.parent.localPosition, (RadingKind)0); yield return(MyWaitForSeconds(0.5f)); iTween.ShakePosition(enemy.gameObject, iTween.Hash("amount", Vector3.one, "islocal", true, "time", 0.5f)); ((Component)partExplosion).transform.localPosition = enemy.transform.parent.localPosition; partExplosion.time = 0f; partExplosion.Play(true); SoundUtils.PlaySE(SEFIleInfos.BattleDamage); yield return(MyWaitForSeconds(1.2f)); partExplosion.Stop(true); partExplosion.Clear(true); } }
public IEnumerator Attack(float delay, bool friendly, RadingKind type) { TileAnimationManager.< Attack > c__Iterator19F <Attack> c__Iterator19F = new TileAnimationManager.< Attack > c__Iterator19F();
public void Initialize(Vector3 origin, Vector3 target, RadingKind type) { base.transform.localPosition = origin; base.transform.localScale = Vector3.one; base.transform.eulerAngles = Vector3.zero; tex.alpha = 0f; switch (type) { case RadingKind.AIR_ATTACK: if (StrategyTopTaskManager.GetLogicManager().Turn >= 500) { tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_e54") as Texture); tex.width = 60; tex.height = 60; } else { tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_506_2") as Texture); tex.width = 50; tex.height = 100; } tex.alpha = 1f; base.transform.localScale = 0.001f * Vector3.one; iTween.ScaleTo(base.gameObject, iTween.Hash("scale", Vector3.one, "islocal", true, "time", 0.2f, "delay", 0.5f, "easeType", iTween.EaseType.easeInOutQuad)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "delay", 0.5f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); iTween.MoveTo(base.gameObject, iTween.Hash("path", new Vector3[3] { origin, origin + 0.5f * (target - origin) + 50f * Vector3.down, 1.2f * target - 0.2f * origin }, "islocal", true, "time", 1.2f, "easeType", iTween.EaseType.linear)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 1.15f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); this.DelayAction(0.2f, delegate { SoundUtils.PlaySE(SEFIleInfos.BattleTookOffAircraft); }); break; case RadingKind.SUBMARINE_ATTACK: { tex.mainTexture = (Resources.Load("Textures/TileAnimations/kouseki") as Texture); tex.MakePixelPerfect(); Vector3 vector2 = target - origin; base.transform.Rotate(Vector3.forward, 180f / (float)Math.PI * Mathf.Atan2(vector2.y, vector2.x)); base.transform.localScale = new Vector3(0.001f, 0.75f, 0.75f); iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); iTween.ScaleTo(base.gameObject, iTween.Hash("scale", 0.75f * Vector3.one, "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear)); iTween.MoveTo(base.gameObject, iTween.Hash("position", 0.8f * target + 0.2f * origin, "islocal", true, "time", 1, "easeType", iTween.EaseType.linear)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 0.95f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); SoundUtils.PlaySE(SEFIleInfos.BattleTorpedo); break; } default: { tex.mainTexture = (Resources.Load("Textures/TileAnimations/fire_5") as Texture); tex.MakePixelPerfect(); Vector3 vector = target - origin; base.transform.Rotate(Vector3.forward, 180f / (float)Math.PI * Mathf.Atan2(vector.y, vector.x)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); iTween.MoveTo(base.gameObject, iTween.Hash("position", target, "islocal", true, "time", 0.25f, "easeType", iTween.EaseType.linear)); iTween.ValueTo(base.gameObject, iTween.Hash("from", 1, "to", 0, "time", 0.05f, "delay", 0.2f, "onupdate", "Alpha", "onupdatetarget", base.gameObject)); SoundUtils.PlaySE(SEFIleInfos.SE_901); break; } } }
public void Initialize(Vector3 origin, Vector3 target, RadingKind type) { base.get_transform().set_localPosition(origin); base.get_transform().set_localScale(Vector3.get_one()); base.get_transform().set_eulerAngles(Vector3.get_zero()); this.tex.alpha = 0f; if (type == RadingKind.AIR_ATTACK) { if (StrategyTopTaskManager.GetLogicManager().Turn >= 500) { this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_e54") as Texture); this.tex.width = 60; this.tex.height = 60; } else { this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/item_up_506_2") as Texture); this.tex.width = 50; this.tex.height = 100; } this.tex.alpha = 1f; base.get_transform().set_localScale(0.001f * Vector3.get_one()); iTween.ScaleTo(base.get_gameObject(), iTween.Hash(new object[] { "scale", Vector3.get_one(), "islocal", true, "time", 0.2f, "delay", 0.5f, "easeType", iTween.EaseType.easeInOutQuad })); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 0, "to", 1, "time", 0.05f, "delay", 0.5f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[] { "path", new Vector3[] { origin, origin + 0.5f * (target - origin) + 50f * Vector3.get_down(), 1.2f * target - 0.2f * origin }, "islocal", true, "time", 1.2f, "easeType", iTween.EaseType.linear })); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 1, "to", 0, "time", 0.05f, "delay", 1.15f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); this.DelayAction(0.2f, delegate { SoundUtils.PlaySE(SEFIleInfos.BattleTookOffAircraft); }); } else if (type == RadingKind.SUBMARINE_ATTACK) { this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/kouseki") as Texture); this.tex.MakePixelPerfect(); Vector3 vector = target - origin; base.get_transform().Rotate(Vector3.get_forward(), 57.2957764f * Mathf.Atan2(vector.y, vector.x)); base.get_transform().set_localScale(new Vector3(0.001f, 0.75f, 0.75f)); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); iTween.ScaleTo(base.get_gameObject(), iTween.Hash(new object[] { "scale", 0.75f * Vector3.get_one(), "islocal", true, "time", 0.4f, "easeType", iTween.EaseType.linear })); iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[] { "position", 0.8f * target + 0.2f * origin, "islocal", true, "time", 1, "easeType", iTween.EaseType.linear })); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 1, "to", 0, "time", 0.05f, "delay", 0.95f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); SoundUtils.PlaySE(SEFIleInfos.BattleTorpedo); } else { this.tex.mainTexture = (Resources.Load("Textures/TileAnimations/fire_5") as Texture); this.tex.MakePixelPerfect(); Vector3 vector2 = target - origin; base.get_transform().Rotate(Vector3.get_forward(), 57.2957764f * Mathf.Atan2(vector2.y, vector2.x)); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 0, "to", 1, "time", 0.05f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); iTween.MoveTo(base.get_gameObject(), iTween.Hash(new object[] { "position", target, "islocal", true, "time", 0.25f, "easeType", iTween.EaseType.linear })); iTween.ValueTo(base.get_gameObject(), iTween.Hash(new object[] { "from", 1, "to", 0, "time", 0.05f, "delay", 0.2f, "onupdate", "Alpha", "onupdatetarget", base.get_gameObject() })); SoundUtils.PlaySE(SEFIleInfos.SE_901); } }
private List <RadingDamageData> getRadingDamage(int area, RadingKind kind, Mst_radingrate rateRecord, List <Mem_ship> targetShips, out int deckPow, out List <Mem_ship> deleteShips) { List <Mem_ship> list = Enumerable.ToList <Mem_ship>(targetShips); int ec = 0; double ad1 = 0.0; double ad2 = 0.0; list.ForEach(delegate(Mem_ship ship) { if (ship.IsEscortDeffender()) { ec++; } Ship_GrowValues battleBaseParam = ship.GetBattleBaseParam(); int num11 = ship.Taiku - battleBaseParam.Taiku; ad1 = ad1 + Math.Sqrt((double)battleBaseParam.Taiku) + (double)num11; int num12 = ship.Taisen - battleBaseParam.Taisen; ad2 = ad2 + Math.Sqrt((double)battleBaseParam.Taisen) + (double)num12; }); int[] radingValues = rateRecord.GetRadingValues(kind); double num = (kind != RadingKind.AIR_ATTACK) ? ad2 : ad1; int num2 = radingValues[0]; int num3 = radingValues[1]; deckPow = (int)num; deleteShips = new List <Mem_ship>(); if (list.get_Count() == 0) { return(new List <RadingDamageData>()); } RadingResultData radingResultData = new RadingResultData(); radingResultData.DeckAttackPow = (int)num; double num4 = (double)num3 - Math.Sqrt((double)ec); int num5 = (num4 >= 1.0) ? ((int)Utils.GetRandDouble(0.0, num4, 0.1, 1)) : 0; List <RadingDamageData> list2 = new List <RadingDamageData>(); Dictionary <int, DamageState> dictionary = Enumerable.ToDictionary(Enumerable.Select(list, (Mem_ship x) => new { rid = x.Rid, state = x.Get_DamageState() }), key => key.rid, val => val.state); for (int i = 0; i < num5; i++) { if (list.get_Count() == 0) { return(list2); } RadingDamageData radingDamageData = new RadingDamageData(); double num6 = (double)(num3 * 5) - num / 5.0 - Math.Sqrt(num); int num7 = (int)Utils.GetRandDouble(0.0, (double)(list.get_Count() - 1), 1.0, 1); Mem_ship mem_ship = list.get_Item(num7); radingDamageData.Rid = mem_ship.Rid; if (num6 <= 0.0) { radingDamageData.Damage = false; radingDamageData.DamageState = DamagedStates.None; } else { int taik = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id).Taik; int num8 = (int)((double)taik * Utils.GetRandDouble(1.0, num6, 1.0, 1) / 100.0) + 1; int num9 = mem_ship.Nowhp - num8; if (num9 <= 0) { if (this.basicInstance.Difficult != DifficultKind.SHI) { num9 = 1; } else if (dictionary.get_Item(mem_ship.Rid) != DamageState.Taiha) { num9 = 1; } else { num9 = 0; } } int num10 = mem_ship.Nowhp - num9; if (num10 > 0) { DamageState damageState = mem_ship.Get_DamageState(); radingDamageData.Damage = true; if (num9 == 0) { int[] array = mem_ship.FindRecoveryItem(); if (array[0] == -1) { radingDamageData.DamageState = DamagedStates.Gekichin; list.Remove(mem_ship); deleteShips.Add(mem_ship); } else { mem_ship.SubHp(num10); mem_ship.UseRecoveryItem(array, false); radingDamageData.DamageState = ((array[1] != 43) ? DamagedStates.Youin : DamagedStates.Megami); dictionary.set_Item(mem_ship.Rid, DamageState.Normal); } } else { mem_ship.SubHp(num10); DamageState damageState2 = mem_ship.Get_DamageState(); if (damageState != damageState2) { if (damageState2 == DamageState.Taiha) { radingDamageData.DamageState = DamagedStates.Taiha; } else if (damageState2 == DamageState.Shouha) { radingDamageData.DamageState = DamagedStates.Shouha; } else if (damageState2 == DamageState.Tyuuha) { radingDamageData.DamageState = DamagedStates.Tyuuha; } } else { radingDamageData.DamageState = DamagedStates.None; } } } else { radingDamageData.Damage = false; radingDamageData.DamageState = DamagedStates.None; } } list2.Add(radingDamageData); } return(list2); }