diff --git a/OshimaCore/Controllers/FunGameController.cs b/OshimaCore/Controllers/FunGameController.cs index 5f48ce2..6b9c67d 100644 --- a/OshimaCore/Controllers/FunGameController.cs +++ b/OshimaCore/Controllers/FunGameController.cs @@ -60,12 +60,12 @@ namespace Oshima.Core.Controllers builder.AppendLine($"总计前三数:{stats.Top3s}"); builder.AppendLine($"总计败场数:{stats.Loses}"); - List names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())]; - builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName())})"); + List names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName()) + 1})"); builder.AppendLine($"前三率:{stats.Top3rates * 100:0.##}%"); - names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; - builder.AppendLine($"技术得分:{stats.Rating:0.##}(#{names.IndexOf(character.GetName())})"); + names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"技术得分:{stats.Rating:0.##}(#{names.IndexOf(character.GetName()) + 1})"); builder.AppendLine($"上次排名:{stats.LastRank} / 场均名次:{stats.AvgRank}"); @@ -112,9 +112,9 @@ namespace Oshima.Core.Controllers builder.AppendLine($"总计败场数:{stats.Loses}"); List names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())]; - builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName())})"); + builder.AppendLine($"胜率:{stats.Winrates * 100:0.##}%(#{names.IndexOf(character.GetName()) + 1})"); names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; - builder.AppendLine($"技术得分:{stats.Rating:0.##}(#{names.IndexOf(character.GetName())})"); + builder.AppendLine($"技术得分:{stats.Rating:0.##}(#{names.IndexOf(character.GetName()) + 1})"); return NetworkUtility.JsonSerialize(builder.ToString()); } diff --git a/OshimaCore/Utils/FunGameUtil.cs b/OshimaCore/Utils/FunGameUtil.cs index be872c5..f84b764 100644 --- a/OshimaCore/Utils/FunGameUtil.cs +++ b/OshimaCore/Utils/FunGameUtil.cs @@ -33,7 +33,6 @@ namespace Oshima.Core.Utils if (IsRuning) return ["娓告垙姝e湪妯℃嫙涓紝璇峰嬁閲嶅璇锋眰锛"]; List result = []; - int deaths = 0; Msg = ""; IsRuning = true; @@ -283,6 +282,11 @@ namespace Oshima.Core.Utils // 鍒涘缓椤哄簭琛ㄥ苟鎺掑簭 ActionQueue actionQueue = new(characters, isTeam, WriteLine); + if (isTeam) + { + actionQueue.MaxRespawnTimes = -1; + actionQueue.MaxScoreToWin = 30; + } if (PrintOut) Console.WriteLine(); // 鎬绘父鎴忔椂闀 @@ -296,7 +300,7 @@ namespace Oshima.Core.Utils int 鍙戞斁鐨勯グ鍝佸搧璐 = 0; 绌烘姇(actionQueue, 鍙戞斁鐨勬鍣ㄥ搧璐, 鍙戞斁鐨勯槻鍏峰搧璐, 鍙戞斁鐨勯瀷瀛愬搧璐, 鍙戞斁鐨勯グ鍝佸搧璐); if (isWeb) result.Add("=== 绌烘姇 ===\r\n" + Msg); - double 涓嬩竴娆$┖鎶 = 40; + double 涓嬩竴娆$┖鎶 = isTeam ? 80 : 40; if (鍙戞斁鐨勬鍣ㄥ搧璐 < 4) { 鍙戞斁鐨勬鍣ㄥ搧璐++; @@ -362,11 +366,12 @@ namespace Oshima.Core.Utils if (PrintOut) Console.WriteLine(); // 鎬诲洖鍚堟暟 + int maxRound = isTeam ? 9999 : 999; int i = 1; - while (i < 999) + while (i < maxRound) { Msg = ""; - if (i == 998) + if (i == maxRound - 1) { if (isTeam) { @@ -426,7 +431,7 @@ namespace Oshima.Core.Utils Msg = ""; 绌烘姇(actionQueue, 鍙戞斁鐨勬鍣ㄥ搧璐, 鍙戞斁鐨勯槻鍏峰搧璐, 鍙戞斁鐨勯瀷瀛愬搧璐, 鍙戞斁鐨勯グ鍝佸搧璐); if (isWeb) result.Add("=== 绌烘姇 ===\r\n" + Msg); - 涓嬩竴娆$┖鎶 = 40; + 涓嬩竴娆$┖鎶 = isTeam ? 100 : 40; if (鍙戞斁鐨勬鍣ㄥ搧璐 < 4) { 鍙戞斁鐨勬鍣ㄥ搧璐++; @@ -445,9 +450,8 @@ namespace Oshima.Core.Utils } } - if (actionQueue.Eliminated.Count > deaths) + if (actionQueue.LastRound.Targets.Any(c => c.HP <= 0)) { - deaths = actionQueue.Eliminated.Count; if (!isWeb) { string roundMsg = Msg; @@ -489,7 +493,7 @@ namespace Oshima.Core.Utils CharacterStatistics stats = actionQueue.CharacterStatistics[character]; StringBuilder builder = new(); builder.AppendLine($"{(isWeb ? count + "." : (isTeam ? "[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? "" : ""))} [ {character.ToStringWithLevel()} ]"); - builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}"); + builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 姝讳骸鏁帮細" + stats.Deaths : "")}"); builder.AppendLine($"瀛樻椿鏃堕暱锛歿stats.LiveTime} / 瀛樻椿鍥炲悎鏁帮細{stats.LiveRound} / 琛屽姩鍥炲悎鏁帮細{stats.ActionTurn}"); builder.AppendLine($"鎬昏浼ゅ锛歿stats.TotalDamage} / 鎬昏鐗╃悊浼ゅ锛歿stats.TotalPhysicalDamage} / 鎬昏榄旀硶浼ゅ锛歿stats.TotalMagicDamage}"); builder.AppendLine($"鎬绘壙鍙椾激瀹筹細{stats.TotalTakenDamage} / 鎬绘壙鍙楃墿鐞嗕激瀹筹細{stats.TotalTakenPhysicalDamage} / 鎬绘壙鍙楅瓟娉曚激瀹筹細{stats.TotalTakenMagicDamage}"); @@ -511,7 +515,7 @@ namespace Oshima.Core.Utils StringBuilder builder = new(); CharacterStatistics stats = actionQueue.CharacterStatistics[character]; builder.AppendLine($"{(isWeb ? count + "." : ("[ " + actionQueue.GetTeamFromEliminated(character)?.Name + " ]" ?? ""))} [ {character.ToStringWithLevel()} ]"); - builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}"); + builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 姝讳骸鏁帮細" + stats.Deaths : "")}"); builder.AppendLine($"瀛樻椿鏃堕暱锛歿stats.LiveTime} / 瀛樻椿鍥炲悎鏁帮細{stats.LiveRound} / 琛屽姩鍥炲悎鏁帮細{stats.ActionTurn}"); builder.AppendLine($"鎬昏浼ゅ锛歿stats.TotalDamage} / 鎬昏鐗╃悊浼ゅ锛歿stats.TotalPhysicalDamage} / 鎬昏榄旀硶浼ゅ锛歿stats.TotalMagicDamage}"); builder.AppendLine($"鎬绘壙鍙椾激瀹筹細{stats.TotalTakenDamage} / 鎬绘壙鍙楃墿鐞嗕激瀹筹細{stats.TotalTakenPhysicalDamage} / 鎬绘壙鍙楅瓟娉曚激瀹筹細{stats.TotalTakenMagicDamage}"); @@ -539,7 +543,7 @@ namespace Oshima.Core.Utils StringBuilder builder = new(); CharacterStatistics stats = actionQueue.CharacterStatistics[character]; builder.AppendLine($"{(isWeb ? count + ". " : "")}[ {character.ToStringWithLevel()} ]"); - builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}"); + builder.AppendLine($"鎶鏈緱鍒嗭細{stats.Rating:0.##} / 鍑绘潃鏁帮細{stats.Kills} / 鍔╂敾鏁帮細{stats.Assists}{(actionQueue.MaxRespawnTimes != 0 ? " / 姝讳骸鏁帮細" + stats.Deaths : "")}"); builder.AppendLine($"瀛樻椿鏃堕暱锛歿stats.LiveTime} / 瀛樻椿鍥炲悎鏁帮細{stats.LiveRound} / 琛屽姩鍥炲悎鏁帮細{stats.ActionTurn}"); builder.AppendLine($"鎬昏浼ゅ锛歿stats.TotalDamage} / 鎬昏鐗╃悊浼ゅ锛歿stats.TotalPhysicalDamage} / 鎬昏榄旀硶浼ゅ锛歿stats.TotalMagicDamage}"); builder.AppendLine($"鎬绘壙鍙椾激瀹筹細{stats.TotalTakenDamage} / 鎬绘壙鍙楃墿鐞嗕激瀹筹細{stats.TotalTakenPhysicalDamage} / 鎬绘壙鍙楅瓟娉曚激瀹筹細{stats.TotalTakenMagicDamage}"); @@ -681,8 +685,9 @@ namespace Oshima.Core.Utils if (d != null) 杩欐鍙戞斁鐨勭┖鎶.Add(d); foreach (Item item in 杩欐鍙戞斁鐨勭┖鎶) { - Item realItem = item.Copy(1); + Item realItem = item.Copy(); realItem.SetGamingQueue(queue); + realItem.SetLevel(1); queue.Equip(character, realItem); } } diff --git a/OshimaModules/Skills/QingXiang/鏋鎵撳嚮.cs b/OshimaModules/Skills/QingXiang/鏋鎵撳嚮.cs index 00c316b..3884354 100644 --- a/OshimaModules/Skills/QingXiang/鏋鎵撳嚮.cs +++ b/OshimaModules/Skills/QingXiang/鏋鎵撳嚮.cs @@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"姣忔閫犳垚浼ゅ閮戒細闅忔満鍑忓皯瀵规柟 [ 10~25 ] 鐐硅兘閲忓硷紝瀵硅兘閲忓间綆浜庝竴鍗婄殑瑙掕壊棰濆閫犳垚 30% 浼ゅ銆傚浜庢灟绔墦鍑昏岃█锛岃兘閲忓煎ぇ浜100涓斿皬浜150鏃讹紝瑙嗕负浣庝簬涓鍗娿"; + public override string Description => $"姣忔閫犳垚浼ゅ閮戒細闅忔満鍑忓皯瀵规柟 [ 7~15 ] 鐐硅兘閲忓硷紝瀵硅兘閲忓间綆浜庝竴鍗婄殑瑙掕壊棰濆閫犳垚 30% 浼ゅ銆傚浜庢灟绔墦鍑昏岃█锛岃兘閲忓煎ぇ浜100涓斿皬浜150鏃讹紝瑙嗕负浣庝簬涓鍗娿"; public override bool TargetSelf => true; private bool 鏄惁鏄祵濂椾激瀹 = false; @@ -34,7 +34,7 @@ namespace Oshima.FunGame.OshimaModules.Skills if (character == Skill.Character && damageResult != DamageResult.Evaded && !鏄惁鏄祵濂椾激瀹) { // 鍑忓皯鑳介噺 - double EP = Random.Shared.Next(10, 25); + double EP = Random.Shared.Next(7, 15); enemy.EP -= EP; WriteLine($"[ {character} ] 鍙戝姩浜嗘灟绔墦鍑伙紒[ {enemy} ] 鐨勮兘閲忓艰鍑忓皯浜 {EP:0.##} 鐐癸紒鐜版湁鑳介噺锛歿enemy.EP:0.##}銆"); // 棰濆浼ゅ diff --git a/OshimaModules/Skills/QingXiang/鑳介噺姣佺伃.cs b/OshimaModules/Skills/QingXiang/鑳介噺姣佺伃.cs index 5dfd8d6..dfb471e 100644 --- a/OshimaModules/Skills/QingXiang/鑳介噺姣佺伃.cs +++ b/OshimaModules/Skills/QingXiang/鑳介噺姣佺伃.cs @@ -17,6 +17,11 @@ namespace Oshima.FunGame.OshimaModules.Skills { Effects.Add(new 鑳介噺姣佺伃鐗规晥(this)); } + + public override List SelectTargets(Character caster, List enemys, List teammates) + { + return [.. enemys]; + } } public class 鑳介噺姣佺伃鐗规晥(Skill skill) : Effect(skill) diff --git a/OshimaModules/Skills/SkillID.cs b/OshimaModules/Skills/SkillID.cs index 85be3ef..5c2b22d 100644 --- a/OshimaModules/Skills/SkillID.cs +++ b/OshimaModules/Skills/SkillID.cs @@ -1,5 +1,34 @@ 锘縩amespace Oshima.FunGame.OshimaModules.Skills { + /** + * 鍐伴湝鏀诲嚮 = 鍗曚綋浼ゅ + * 鐏箣鐭 = 鍗曚綋浼ゅ + * 姘翠箣鐭 =鍗曚綋浼ゅ + * 鐭充箣閿 =鍗曚綋浼ゅ + * 椋庝箣杞 =鍗曚綋浼ゅ + * 蹇冪伒涔嬮湠 =鍗曚綋浼ゅ + * 娆″厓涓婂崌 = 鍗曚綋浼ゅ + * 鏆楃墿璐 = 鍗曚綋浼ゅ + * + * 鍥炲鏈 = 鎴戞柟路鍗曚綋鍥炲, + * 娌绘剤鏈 = 鎴戞柟路鍗曚綋鍥炲, + * 澶嶈嫃鏈 = 鎴戞柟路鍗曚綋璐熼潰瑙i櫎+鍥炲, + * 鍦g伒鏈 = 鎴戞柟路鍏ㄤ綋璐熼潰瑙i櫎+鍥炲, + * 鏃堕棿鍔犻 = 鎴戞柟路鍗曚綋閫熷害鎻愬崌, + * 鏃堕棿鍑忛 = 鍗曚綋閫熷害鍑忓皯, + * 鍙嶉瓟娉曢鍩 = 鍏ㄤ綋灏佹妧+鏂芥硶瑙i櫎, + * 娌夐粯鍗佸瓧 = 鍗曚綋灏佹妧+鏂芥硶瑙i櫎, + * 铏氬急棰嗗煙 = 鍏ㄤ綋铏氬急, + * 娣锋矊鐑欏嵃 = 鍗曚綋娣蜂贡, + * 鍑濊兌绋犵诞 = 鍗曚綋铏氬急, + * + * 澶у湴涔嬪 = 鎴戞柟路澶氱洰鏍囨姢鐩, + * 鐩栦簹涔嬬浘 = 鎴戞柟路鍏ㄤ綋鎶ょ浘, + * 椋庝箣瀹堟姢 = 鎴戞柟路鏁忔嵎/闂伩鎻愬崌, + * 缁撴櫠闃叉姢 = 鎴戞柟路鎶ょ敳/榄旀姉鎻愬崌, + * 寮洪煶涔嬪姏 = 鎴戞柟路鏀诲嚮鎻愬崌, + * 绁炲湥绁濈 = 鎴戞柟路鏀诲嚮/鎶ょ敳/榄旀姉鎻愬崌 + */ public enum MagicID : long { 鍐伴湝鏀诲嚮 = 1001,