diff --git a/Entity/Skill/NormalAttack.cs b/Entity/Skill/NormalAttack.cs index 1cf8c98..25f3af3 100644 --- a/Entity/Skill/NormalAttack.cs +++ b/Entity/Skill/NormalAttack.cs @@ -273,6 +273,22 @@ namespace Milimoe.FunGame.Core.Entity return selectable; } + /// + /// 实际可选取的目标数量 + /// + public int RealCanSelectTargetCount(List enemys, List teammates) + { + int count = CanSelectTargetCount; + if (SelectAllTeammates) + { + return teammates.Count + 1; + } + if (SelectAllEnemies) + { + return enemys.Count; + } + return count; + } /// /// 选取普攻目标 diff --git a/Entity/Skill/Skill.cs b/Entity/Skill/Skill.cs index 01c8675..65c315c 100644 --- a/Entity/Skill/Skill.cs +++ b/Entity/Skill/Skill.cs @@ -377,6 +377,23 @@ namespace Milimoe.FunGame.Core.Entity return selectable; } + /// + /// 实际可选取的目标数量 + /// + public int RealCanSelectTargetCount(List enemys, List teammates) + { + int count = CanSelectTargetCount; + if (SelectAllTeammates) + { + return teammates.Count + 1; + } + if (SelectAllEnemies) + { + return enemys.Count; + } + return count; + } + /// /// 选取技能目标 /// diff --git a/Interface/Entity/Typical/ISkill.cs b/Interface/Entity/Typical/ISkill.cs index 4ac6619..8d1ce21 100644 --- a/Interface/Entity/Typical/ISkill.cs +++ b/Interface/Entity/Typical/ISkill.cs @@ -110,5 +110,13 @@ namespace Milimoe.FunGame.Core.Interface.Entity /// /// public List GetSelectableTargets(Character caster, List enemys, List teammates); + + /// + /// 实际可选取的目标数量 + /// + /// + /// + /// + public int RealCanSelectTargetCount(List enemys, List teammates); } } diff --git a/Model/GamingQueue.cs b/Model/GamingQueue.cs index c063a88..575a064 100644 --- a/Model/GamingQueue.cs +++ b/Model/GamingQueue.cs @@ -580,19 +580,12 @@ namespace Milimoe.FunGame.Core.Model { if (_queue.Count == 0) return null; - // 硬直时间为 0 的角色或预释放爆发技的角色先行动,取第一个 - Character? character = _queue.FirstOrDefault(c => c.CharacterState == CharacterState.PreCastSuperSkill); - if (character is null) + // 硬直时间为 0 的角色 + Character? character = null; + Character temp = _queue[0]; + if (_hardnessTimes[temp] == 0) { - Character temp = _queue[0]; - if (_hardnessTimes[temp] == 0) - { - character = temp; - } - } - else - { - _hardnessTimes[character] = 0; + character = temp; } if (character != null) @@ -1282,8 +1275,8 @@ namespace Milimoe.FunGame.Core.Model character.CharacterState == CharacterState.ActionRestricted || character.CharacterState == CharacterState.BattleRestricted) { - baseTime += 5; - WriteLine($"[ {character} ] {CharacterSet.GetCharacterState(character.CharacterState)},放弃行动将额外获得 5 {GameplayEquilibriumConstant.InGameTime}硬直时间!"); + baseTime += 3; + WriteLine($"[ {character} ] {CharacterSet.GetCharacterState(character.CharacterState)},放弃行动将额外获得 3 {GameplayEquilibriumConstant.InGameTime}硬直时间!"); } decided = true; WriteLine($"[ {character} ] 结束了回合!"); @@ -1305,7 +1298,7 @@ namespace Milimoe.FunGame.Core.Model } else { - if (baseTime == 0) baseTime += 10; + if (baseTime == 0) baseTime += 8; decided = true; WriteLine($"[ {character} ] 完全行动不能!"); } @@ -2228,6 +2221,7 @@ namespace Milimoe.FunGame.Core.Model Skill? skill = item.Skills.Active; if (skill != null) { + skill.GamingQueue = this; List targets = await SelectTargetsAsync(character, skill, enemys, teammates); if (targets.Count > 0) {