// ユニットのオーラ力レベル public double AuraLevel(bool no_limit = false) { double AuraLevelRet = default; switch (CountPilot()) { case 0: { return(AuraLevelRet); } case 1: { AuraLevelRet = MainPilot().SkillLevel("オーラ", ref_mode: ""); break; } default: { // パイロットが2名以上の場合は2人目のオーラ力を加算 AuraLevelRet = MainPilot().SkillLevel("オーラ", ref_mode: "") + Pilots[1].SkillLevel("オーラ", ref_mode: "") / 2d; break; } } // サポートのオーラ力を加算 if (IsFeatureAvailable("追加サポート")) { AuraLevelRet = AuraLevelRet + AdditionalSupport().SkillLevel("オーラ", ref_mode: "") / 2d; } else if (CountSupport() > 0) { AuraLevelRet = AuraLevelRet + Supports.First().SkillLevel("オーラ", ref_mode: "") / 2d; } // オーラ変換器レベルによる制限 if (IsFeatureAvailable("オーラ変換器") && !no_limit) { if (IsFeatureLevelSpecified("オーラ変換器")) { AuraLevelRet = GeneralLib.MinDbl(AuraLevelRet, FeatureLevel("オーラ変換器")); } } return(AuraLevelRet); }
// ユニットの同調率 public double SyncLevel(bool no_limit = false) { double SyncLevelRet = default; if (CountPilot() == 0) { return(SyncLevelRet); } SyncLevelRet = MainPilot().SynchroRate(); // シンクロドライブレベルによる制限 if (IsFeatureAvailable("シンクロドライブ") && !no_limit) { if (IsFeatureLevelSpecified("シンクロドライブ")) { SyncLevelRet = GeneralLib.MinDbl(SyncLevelRet, FeatureLevel("シンクロドライブ")); } } return(SyncLevelRet); }
protected override int ExecInternal() { if (ArgNum < 2) { throw new EventErrorException(this, "ColorFilterコマンドの引数の数が違います"); } var late_refresh = false; Map.MapDrawIsMapOnly = false; var trans_par = 0.5d; for (var i = 3; i <= ArgNum; i++) { var buf = GetArgAsString(i); switch (buf ?? "") { case "非同期": { late_refresh = true; break; } case "マップ限定": { Map.MapDrawIsMapOnly = true; break; } default: { if (Strings.Right(buf, 1) == "%" && Information.IsNumeric(Strings.Left(buf, Strings.Len(buf) - 1))) { trans_par = GeneralLib.MaxDbl( 0d, GeneralLib.MinDbl(1d, Conversions.ToDouble(Strings.Left(buf, Strings.Len(buf) - 1)) / 100d)); } else { throw new EventErrorException(this, "ColorFilterコマンドに不正なオプション「" + buf + "」が使われています"); } break; } } } Color filter_color; { var buf = GetArgAsString(2); if (!ColorExtension.TryFromHexString(buf, out filter_color)) { throw new EventErrorException(this, "ColorFilterコマンドのカラー指定が不正です"); } } // マウスカーソルを砂時計に GUI.ChangeStatus(GuiStatus.WaitCursor); GUI.SetupBackground("フィルタ", "非同期", filter_color, trans_par); GUI.RedrawScreen(late_refresh); // マウスカーソルを元に戻す GUI.ChangeStatus(GuiStatus.Default); return(EventData.NextID); }