This commit is contained in:
kawagiri 2025-08-28 17:55:48 +08:00
commit df546508d3
4 changed files with 241 additions and 143 deletions

View File

@ -50,25 +50,36 @@ namespace NodeCanvas.Tasks.Actions
param.MapData.GetCityDataListByPlayerId(param.PlayerData.Id, selfCity);
var aroundGrids = param.MapData.GridMap.GetAroundGridData(Offset, Offset, unitGrid);
var targetGrids = new List<List<GridData>>();
for (int i = 0; i < 3; i++) targetGrids.Add(new List<GridData>());
for (int i = 0; i < 4; i++) targetGrids.Add(new List<GridData>());
foreach (var grid in aroundGrids)
{
if (grid == unitGrid) continue;
if (grid.Resource == ResourceType.CityCenter && !param.MapData.GetCityDataByGid(grid.Id, out _))
if (grid.Resource == ResourceType.CityCenter && param.MapData.GetCityDataByGid(grid.Id, out var city) &&
!selfCity.Contains(city) && param.MapData.GetPlayerDataByCityId(city.Id, out var player))
{
targetGrids[0].Add(grid);
continue;
param.PlayerData.DiplomacyData.GetCountryDiplomacyInfo(player.Id, out var selfToPlayer);
if (selfToPlayer.DiplomacyState != DiplomacyState.League)
{
targetGrids[0].Add(grid);
continue;
}
}
if (grid.Resource == ResourceType.Treasure) // 宝箱
if (grid.Resource == ResourceType.CityCenter && !param.MapData.GetCityDataByGid(grid.Id, out _))
{
targetGrids[1].Add(grid);
continue;
}
if (grid.Resource == ResourceType.Starfish && param.PlayerData.TechTree.CheckIfHasTech(TechType.Navigation)) // 海星
if (grid.Resource == ResourceType.Treasure) // 宝箱
{
targetGrids[2].Add(grid);
continue;
}
if (grid.Resource == ResourceType.Starfish && param.PlayerData.TechTree.CheckIfHasTech(TechType.Navigation)) // 海星
{
targetGrids[3].Add(grid);
continue;
}
}
var score = float.MinValue;

File diff suppressed because it is too large Load Diff

View File

@ -616,13 +616,8 @@ namespace Logic.AI
}
if (type == CalculateType.UnitAttack)
{
if (aiAction.Param.UnitData == null || aiAction.Param.TargetUnitData == null) return false;
if (!data.UnitAttackRatio.TryGetValue(aiAction.Param.UnitData.Id, out var ratio)) return false;
var selfDmg = Table.Instance.CalcDamage(aiAction.Param.MapData, aiAction.Param.UnitData, aiAction.Param.TargetUnitData);
var otherDmg = Table.Instance.CalcDamage(aiAction.Param.MapData, aiAction.Param.TargetUnitData, aiAction.Param.UnitData);
if (selfDmg < aiAction.Param.TargetUnitData.Health && selfDmg * ratio < otherDmg) return false;
return true;
var score = data.CalculateAttackGain(aiAction.Param.MapData, aiAction.Param.UnitData, aiAction.Param.TargetUnitData);
return score > 0;
}
if (type == CalculateType.UnitAttackSelfCityEnemy)
@ -659,12 +654,9 @@ namespace Logic.AI
if (aiAction.Param.UnitData == null || aiAction.Param.TargetUnitData == null || aiAction.Param.TargetGridData == null) return false;
if (!aiAction.Param.MapData.GetGridDataByUnitId(aiAction.Param.TargetUnitData.Id, out var unitGrid)) return false;
if (aiAction.Param.TargetGridData != unitGrid) return false;
if (!data.UnitAttackRatio.TryGetValue(aiAction.Param.UnitData.Id, out var ratio)) return false;
var selfDmg = Table.Instance.CalcDamage(aiAction.Param.MapData, aiAction.Param.UnitData, aiAction.Param.TargetUnitData);
var otherDmg = Table.Instance.CalcDamage(aiAction.Param.MapData, aiAction.Param.TargetUnitData, aiAction.Param.UnitData);
if (selfDmg < aiAction.Param.TargetUnitData.Health && selfDmg * ratio < otherDmg) return false;
return true;
var score = data.CalculateAttackGain(aiAction.Param.MapData, aiAction.Param.UnitData, aiAction.Param.TargetUnitData);
return score > 0;
}
if (type == CalculateType.LegionAttackMoveInCity)
{
@ -713,6 +705,7 @@ namespace Logic.AI
}
if (type == CalculateType.DiplomacyTech)
{
// TODO 外交科技选择
if (aiAction.ActionLogic.ActionId.TechType == TechType.Strategy) return true;
if (aiAction.ActionLogic.ActionId.TechType == TechType.Diplomacy) return true;
return false;

View File

@ -524,10 +524,7 @@ namespace Logic.Editor
}
_activeSet.Add(textCom.ID);
}
foreach (var prefab in prefabList) EditorUtility.SetDirty(prefab);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
_asset.RefreshDict();
foreach (var kv in _zhStrDict)
{
@ -561,6 +558,7 @@ namespace Logic.Editor
}
WriteToExcel();
foreach (var prefab in prefabList) EditorUtility.SetDirty(prefab);
EditorUtility.SetDirty(_asset);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();