bug修改

This commit is contained in:
wuwenbo 2025-07-03 18:29:17 +08:00
parent 404935cc9f
commit 67c2c36736
2 changed files with 25 additions and 10 deletions

View File

@ -492,15 +492,17 @@ namespace Logic.AI
var techType = (TechType)i;
var techSet = Table.Instance.TechDataAssets.GetNextTechs(techType);
var score = 0f;
foreach (var id in Player.LastAttackPlayers)
foreach (var player in Map.PlayerMap.PlayerDataList)
{
score += CalCountryTechGapScore(techType, id) * 2;
if (player == Player) continue;
score += CalCountryTechGapScore(techType, player.Id) * 2;
}
foreach (var tech in techSet)
{
foreach (var id in Player.LastAttackPlayers)
foreach (var player in Map.PlayerMap.PlayerDataList)
{
score += CalCountryTechGapScore(tech, id);
if (player == Player) continue;
score += CalCountryTechGapScore(tech, player.Id);
}
}
@ -519,7 +521,9 @@ namespace Logic.AI
GetUnitTypeByTech(techType, out var unitType, out var giantType);
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitType, giantType, out var info))
return 0;
var selfCity = new HashSet<CityData>();
Map.GetCityDataListByPlayerId(Player.Id, selfCity);
if (selfCity.Count == 0) return 0;
var unitList = new List<UnitData>();
Map.GetUnitDataListByPlayerId(playerId, unitList);
var score = 0f;
@ -527,8 +531,18 @@ namespace Logic.AI
{
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(targetUnit.UnitType, targetUnit.GiantType, out var targetInfo))
continue;
if (!Map.GetGridDataByUnitId(targetUnit.Id, out var unitGrid)) continue;
var minDis = int.MaxValue;
foreach (var city in selfCity)
{
if (!Map.GetGridDataByCityId(city.Id, out var cityGrid)) continue;
var dis = Map.GridMap.CalcDistance(unitGrid, cityGrid);
if (dis < minDis) minDis = dis;
}
score += CalUnitCounterScore(info.UnitType, targetInfo.UnitType);
score -= CalUnitCounterScore(targetInfo.UnitType, info.UnitType);
score /= minDis;
}
return score;
@ -1210,6 +1224,7 @@ namespace Logic.AI
unitType = UnitType.None;
giantType = GiantType.None;
if (techType == TechType.Archery) unitType = UnitType.Archer;
if (techType == TechType.Riding) unitType = UnitType.Rider;
if (techType == TechType.Strategy) unitType = UnitType.Defender;
if (techType == TechType.Chivalry) unitType = UnitType.Knights;
if (techType == TechType.Mathematics) unitType = UnitType.Catapult;
@ -1261,7 +1276,7 @@ namespace Logic.AI
var path = PathFinder.FindPath((int)Map.MapConfig.Width, (int)Map.MapConfig.Height,
new (selfGrid.Pos.X, selfGrid.Pos.Y), new (cityGrid.Pos.X, cityGrid.Pos.Y), Map, Player);
if (!path.found) continue;
if (path.length < minDistance) continue;
if (path.length > minDistance) continue;
minDistance = path.length;
}
}

View File

@ -940,8 +940,7 @@ namespace Logic.AI
var targetScore = 0;
foreach (var unit in param.MapData.UnitMap.UnitList)
{
if (!param.MapData.GetPlayerDataByUnitId(unit.Id, out var targetPlayer)) continue;
if (!selfUnits.Contains(unit) && targetPlayer.Id != data.AttackPlayer.Id) continue;
if (!selfUnits.Contains(unit)) continue;
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unit.UnitType, unit.GiantType, out var info))
continue;
if (selfUnits.Contains(unit))
@ -982,8 +981,9 @@ namespace Logic.AI
var targetScore = 0;
foreach (var unit in param.MapData.UnitMap.UnitList)
{
if (!param.MapData.GetPlayerDataByUnitId(unit.Id, out var targetPlayer)) continue;
if (!selfUnits.Contains(unit) && !data.Player.LastAttackPlayers.Contains(targetPlayer.Id)) continue;
if (!param.MapData.GetGridDataByUnitId(unit.Id, out var unitGrid)) continue;
var dis = param.MapData.GridMap.CalcDistance(cityGrid, unitGrid);
if (dis > 6) continue;
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unit.UnitType, unit.GiantType, out var info))
continue;
if (selfUnits.Contains(unit))