diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand.meta b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand.meta new file mode 100644 index 000000000..ce65bc759 --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 565cc5e666024fd683041e0f3a4463cf +timeCreated: 1753351165 \ No newline at end of file diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor.meta b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor.meta new file mode 100644 index 000000000..486b6404d --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40fa8d2d720a4b42b5184ab707c8ccf2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs new file mode 100644 index 000000000..61134100e --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs @@ -0,0 +1,11 @@ +#if UNITY_EDITOR + +namespace CanvasCoreExpand +{ + public class ExpandGraphEditor + { + public static IGraphExporter Exporter; + } +} + +#endif \ No newline at end of file diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs.meta b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs.meta new file mode 100644 index 000000000..10de6a22b --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/ExpandGraphEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7c6c09e966dc104fb93d7e2ae523a99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs new file mode 100644 index 000000000..6066db0ed --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs @@ -0,0 +1,14 @@ +#if UNITY_EDITOR + +using NodeCanvas.Framework; + + +namespace CanvasCoreExpand +{ + public interface IGraphExporter + { + public void GenerateAiBtNodeId(Graph graph); + } +} + +#endif \ No newline at end of file diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs.meta b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs.meta new file mode 100644 index 000000000..58ab894ce --- /dev/null +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/CanvasCoreExpand/Editor/IGraphExporter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f155fc1887824103b3f0622e6d9a763c +timeCreated: 1718782085 \ No newline at end of file diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.Toolbar.cs b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.Toolbar.cs index 402037353..e01a78bcf 100644 --- a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.Toolbar.cs +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.Toolbar.cs @@ -5,6 +5,7 @@ using UnityEditor; using NodeCanvas.Framework; using ParadoxNotion.Design; using System.Linq; +using CanvasCoreExpand; namespace NodeCanvas.Editor { @@ -181,6 +182,12 @@ namespace NodeCanvas.Editor ParadoxNotion.Serialization.JSONSerializer.ShowData(graph.GetSerializedJsonData(), graph.name); }); + menu.AddItem(new GUIContent("生成 节点ID"), false, () => + { + ExpandGraphEditor.Exporter.GenerateAiBtNodeId(graph); + graph.SelfSerialize(); + }); + return menu; } diff --git a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.cs b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.cs index 560c209c8..2fab0f83e 100644 --- a/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.cs +++ b/Unity/Assets/Plugins/ParadoxNotion/CanvasCore/Framework/Design/Editor/Windows/GraphEditor.cs @@ -1354,4 +1354,4 @@ namespace NodeCanvas.Editor } } -#endif \ No newline at end of file +#endif diff --git a/Unity/Assets/Resources/BT/BT.asset b/Unity/Assets/Resources/BT/BT.asset index 7657d2348..f6f1a8e0f 100644 --- a/Unity/Assets/Resources/BT/BT.asset +++ b/Unity/Assets/Resources/BT/BT.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3} m_Name: BT m_EditorClassIdentifier: - _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":498.9811,"y":132.3516},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"0"},{"_subTree":{"_value":1},"_tag":"\u9632\u5b88\u79d1\u6280","_position":{"x":-223.1669,"y":366.2295},"_comment":"","$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"1"},{"_subTree":{"_value":2},"_tag":"\u57ce\u5e02","_position":{"x":-39.6286,"y":368.0934},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"2"},{"_subTree":{"_value":3},"_tag":"\u53d1\u5c55\u79d1\u6280","_position":{"x":151.7755,"y":366.7513},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"3"},{"_subTree":{"_value":4},"_tag":"\u81ea\u7531\u4eba","_position":{"x":332.4889,"y":366.5828},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"4"},{"_subTree":{"_value":5},"_tag":"\u519b\u56e2","_position":{"x":507.5888,"y":365.6096},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"5"},{"_subTree":{"_value":6},"_tag":"\u514b\u5236\u79d1\u6280","_position":{"x":698.7617,"y":369.8222},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"6"},{"_subTree":{"_value":7},"_tag":"\u6361\u6f0f\u79d1\u6280\u53d1\u5c55","_position":{"x":914.2001,"y":368.6},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"7"},{"_subTree":{"_value":8},"_position":{"x":1087.276,"y":365.9682},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"8"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIFinishAction"},"_position":{"x":1250.001,"y":377.4711},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"9"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' + _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":498.9811,"y":132.3516},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"0"},{"_subTree":{"_value":1},"_tag":"\u9632\u5b88\u79d1\u6280","_position":{"x":-223.1669,"y":366.2295},"_comment":"","$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"1"},{"_subTree":{"_value":2},"_tag":"\u57ce\u5e02","_position":{"x":-39.6286,"y":368.0934},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"2"},{"_subTree":{"_value":3},"_tag":"\u53d1\u5c55\u79d1\u6280","_position":{"x":151.7755,"y":366.7513},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"3"},{"_subTree":{"_value":4},"_tag":"\u81ea\u7531\u4eba","_position":{"x":332.4889,"y":366.5828},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"4"},{"_subTree":{"_value":5},"_tag":"\u519b\u56e2","_position":{"x":507.5888,"y":365.6096},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"5"},{"_subTree":{"_value":6},"_tag":"\u514b\u5236\u79d1\u6280","_position":{"x":698.7617,"y":369.8222},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"6"},{"_subTree":{"_value":7},"_tag":"\u6361\u6f0f\u79d1\u6280\u53d1\u5c55","_position":{"x":914.2001,"y":368.6},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"7"},{"_subTree":{"_value":8},"_position":{"x":1087.276,"y":365.9682},"$type":"NodeCanvas.BehaviourTrees.SubTree","$id":"8"},{"_action":{"nodeId":300,"$type":"NodeCanvas.Tasks.Actions.AIFinishAction"},"_tag":"300","_position":{"x":1251.001,"y":366.4711},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"9"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' _objectReferences: - {fileID: 0} - {fileID: 11400000, guid: 5c2d56f30f0281f4b89ebbbe5f2015e8, type: 2} @@ -27,7 +27,7 @@ MonoBehaviour: _version: 3.33 _category: _comments: - _translation: {x: -189, y: -71} + _translation: {x: 417, y: 10} _zoomFactor: 1 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Unity/Assets/Resources/BT/CityFinal.asset b/Unity/Assets/Resources/BT/CityFinal.asset index bce6f6552..ea8b2406a 100644 --- a/Unity/Assets/Resources/BT/CityFinal.asset +++ b/Unity/Assets/Resources/BT/CityFinal.asset @@ -12,13 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3} m_Name: CityFinal m_EditorClassIdentifier: - _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":1144.022,"y":69.66586},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"CityCommonFinal","CheckNotHave":true,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":940.5991,"y":209.4542},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_position":{"x":1230.618,"y":218.5607},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_position":{"x":877.1291,"y":375.174},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_action":{"MarkStr":"CityCommonFinalTrain","CheckNotHave":true,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":585.8121,"y":483.5624},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"4"},{"_tag":"","_position":{"x":876.4305,"y":490.6696},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"5"},{"_action":{"Strategy":6,"IsCity":true,"ExtraName":"FinalTrain","$type":"NodeCanvas.Tasks.Actions.AIForeachCreate"},"_position":{"x":540.879,"y":603.9677},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIForeachStart"},"_position":{"x":801.9344,"y":617.3326},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_tag":"","_position":{"x":909.7975,"y":631.7015},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"8"},{"_action":{"ActionTypes":[4],"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":669.981,"y":820.1274},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"9"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIParamStandingTrainUnit"},"_position":{"x":809.1331,"y":819.9999},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"10"},{"_action":{"CalculateTypes":[7],"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_position":{"x":920.7878,"y":820.4131},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"11"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1032.731,"y":819.1275},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"12"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIForeachEnd"},"_position":{"x":1006.711,"y":615.2528},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"13"},{"_action":{"MarkStr":"CityCommonFinalTrain","$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1107.329,"y":613.2076},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"14"},{"_position":{"x":1732.677,"y":375.9999},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"15"},{"_action":{"MarkStr":"CityCommonFinalDeve","CheckNotHave":true,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1461.358,"y":480.3889},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"16"},{"_tag":"","_position":{"x":1751.976,"y":487.496},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"17"},{"_action":{"Strategy":6,"IsCity":true,"ExtraName":"FinalDeve","$type":"NodeCanvas.Tasks.Actions.AIForeachCreate"},"_position":{"x":1419.85,"y":609.9189},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"18"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIForeachStart"},"_position":{"x":1662.698,"y":621.0201},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"19"},{"_tag":"","_position":{"x":1785.343,"y":628.5279},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"20"},{"_action":{"ActionTypes":[0,1,3,5],"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":1622.796,"y":816.5692},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"21"},{"_action":{"CalculateTypes":[6],"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_position":{"x":1740.733,"y":817.262},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"22"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1930.713,"y":818.9725},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"23"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIForeachEnd"},"_position":{"x":1897.776,"y":618.5669},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"24"},{"_action":{"MarkStr":"CityCommonFinalDeve","$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":2008.208,"y":619.6822},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"25"},{"_action":{"MarkStr":"CityCommonFinal","$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1933.892,"y":370.9859},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"26"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"26"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"13"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"11"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"12"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"16"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"17"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"18"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"19"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"20"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"24"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"25"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"21"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"22"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"23"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' + _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":1144.022,"y":69.66586},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"CityCommonFinal","CheckNotHave":true,"nodeId":281,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":940.5991,"y":209.4542},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_position":{"x":1230.618,"y":218.5607},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_position":{"x":877.1291,"y":375.174},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_action":{"MarkStr":"CityCommonFinalTrain","CheckNotHave":true,"nodeId":282,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":585.8121,"y":483.5624},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"4"},{"_tag":"","_position":{"x":876.4305,"y":490.6696},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"5"},{"_action":{"Strategy":6,"IsCity":true,"ExtraName":"FinalTrain","nodeId":283,"$type":"NodeCanvas.Tasks.Actions.AIForeachCreate"},"_tag":"","_position":{"x":540.879,"y":603.9677},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"nodeId":284,"$type":"NodeCanvas.Tasks.Actions.AIForeachStart"},"_position":{"x":801.9344,"y":617.3326},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_tag":"","_position":{"x":909.7975,"y":631.7015},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"8"},{"_action":{"ActionTypes":[4],"nodeId":285,"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":669.981,"y":820.1274},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"9"},{"_action":{"nodeId":286,"$type":"NodeCanvas.Tasks.Actions.AIParamStandingTrainUnit"},"_position":{"x":809.1331,"y":819.9999},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"10"},{"_action":{"CalculateTypes":[7],"nodeId":287,"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_position":{"x":920.7878,"y":820.4131},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"11"},{"_action":{"nodeId":288,"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1032.731,"y":819.1275},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"12"},{"_action":{"nodeId":289,"$type":"NodeCanvas.Tasks.Actions.AIForeachEnd"},"_position":{"x":1006.711,"y":615.2528},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"13"},{"_action":{"MarkStr":"CityCommonFinalTrain","nodeId":290,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1107.329,"y":613.2076},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"14"},{"_position":{"x":1732.677,"y":375.9999},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"15"},{"_action":{"MarkStr":"CityCommonFinalDeve","CheckNotHave":true,"nodeId":291,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1461.358,"y":480.3889},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"16"},{"_tag":"","_position":{"x":1751.976,"y":487.496},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"17"},{"_action":{"Strategy":6,"IsCity":true,"ExtraName":"FinalDeve","nodeId":292,"$type":"NodeCanvas.Tasks.Actions.AIForeachCreate"},"_position":{"x":1419.85,"y":609.9189},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"18"},{"_action":{"nodeId":293,"$type":"NodeCanvas.Tasks.Actions.AIForeachStart"},"_position":{"x":1662.698,"y":621.0201},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"19"},{"_tag":"","_position":{"x":1785.343,"y":628.5279},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"20"},{"_action":{"ActionTypes":[0,1,3,5],"nodeId":294,"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":1622.796,"y":816.5692},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"21"},{"_action":{"CalculateTypes":[6],"nodeId":295,"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_position":{"x":1740.733,"y":817.262},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"22"},{"_action":{"nodeId":296,"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1930.713,"y":818.9725},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"23"},{"_action":{"nodeId":297,"$type":"NodeCanvas.Tasks.Actions.AIForeachEnd"},"_position":{"x":1897.776,"y":618.5669},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"24"},{"_action":{"MarkStr":"CityCommonFinalDeve","nodeId":298,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":2008.208,"y":619.6822},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"25"},{"_action":{"MarkStr":"CityCommonFinal","nodeId":299,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1933.892,"y":370.9859},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"26"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"15"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"26"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"13"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"5"},"_targetNode":{"$ref":"14"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"9"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"10"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"11"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"8"},"_targetNode":{"$ref":"12"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"16"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"15"},"_targetNode":{"$ref":"17"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"18"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"19"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"20"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"24"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"17"},"_targetNode":{"$ref":"25"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"21"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"22"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"20"},"_targetNode":{"$ref":"23"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' _objectReferences: [] _graphSource: _version: 3.33 _category: _comments: - _translation: {x: 22, y: 85} - _zoomFactor: 0.44545284 + _translation: {x: -463, y: -154} + _zoomFactor: 1 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Unity/Assets/Resources/BT/DefendTech.asset b/Unity/Assets/Resources/BT/DefendTech.asset index 769030b7f..452ee4651 100644 --- a/Unity/Assets/Resources/BT/DefendTech.asset +++ b/Unity/Assets/Resources/BT/DefendTech.asset @@ -12,13 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3} m_Name: DefendTech m_EditorClassIdentifier: - _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_tag":"","_position":{"x":-4057.796,"y":495.8528},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"DefendTech","CheckNotHave":true,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":-4341.097,"y":716.5207},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_tag":"","_position":{"x":-3859.394,"y":652.2503},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_tag":"","_position":{"x":-3980.755,"y":761.3211},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_condition":{"CountryStrategy":1,"$type":"NodeCanvas.Tasks.Actions.CountryStrategyCondition"},"_tag":"","_position":{"x":-4442.909,"y":1074.678},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"4"},{"_action":{"ActionTypes":[9],"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":-4235.439,"y":1074.848},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_action":{"CalculateTypes":[0],"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_tag":"","_position":{"x":-4071.956,"y":1074.477},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":-3844.539,"y":1076.901},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"MarkStr":"DefendTech","$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":-3703.157,"y":769.0768},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' + _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_tag":"","_position":{"x":-4057.796,"y":495.8528},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"DefendTech","CheckNotHave":true,"nodeId":1,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_tag":"1","_position":{"x":-4341.097,"y":716.5207},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_tag":"","_position":{"x":-3859.394,"y":652.2503},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_tag":"","_position":{"x":-3980.755,"y":761.3211},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_condition":{"CountryStrategy":1,"$type":"NodeCanvas.Tasks.Actions.CountryStrategyCondition"},"_tag":"","_position":{"x":-4473.909,"y":1067.678},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"4"},{"_action":{"ActionTypes":[9],"nodeId":2,"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"2","_position":{"x":-4239.439,"y":1068.848},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_action":{"CalculateTypes":[0],"nodeId":3,"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_tag":"3","_position":{"x":-4032.956,"y":1068.477},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"nodeId":4,"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"4","_position":{"x":-3784.539,"y":1068.901},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"MarkStr":"DefendTech","nodeId":5,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_tag":"5","_position":{"x":-3704.157,"y":769.0768},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' _objectReferences: [] _graphSource: _version: 3.33 _category: _comments: - _translation: {x: 4410, y: 394} + _translation: {x: 4897, y: -402} _zoomFactor: 1 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Unity/Assets/Resources/BT/DevelopmentTech.asset b/Unity/Assets/Resources/BT/DevelopmentTech.asset index d1a637074..d971f9f46 100644 --- a/Unity/Assets/Resources/BT/DevelopmentTech.asset +++ b/Unity/Assets/Resources/BT/DevelopmentTech.asset @@ -12,13 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3} m_Name: DevelopmentTech m_EditorClassIdentifier: - _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_tag":"","_position":{"x":1123.901,"y":2478.447},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"DevelopmentTech","CheckNotHave":true,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":840.5993,"y":2699.115},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_tag":"","_position":{"x":1322.302,"y":2634.844},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_tag":"","_position":{"x":1200.942,"y":2743.915},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_condition":{"CountryStrategy":2,"$type":"NodeCanvas.Tasks.Actions.CountryStrategyCondition"},"_tag":"","_position":{"x":877.7873,"y":3058.272},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"4"},{"_action":{"ActionTypes":[9],"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":1085.258,"y":3058.442},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_action":{"CalculateTypes":[34],"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_tag":"","_position":{"x":1230.74,"y":3059.071},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1407.495,"y":3060.163},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"MarkStr":"DevelopmentTech","$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1475.873,"y":2751.671},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' + _serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_tag":"","_position":{"x":1123.901,"y":2478.447},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"0"},{"_action":{"MarkStr":"DevelopmentTech","CheckNotHave":true,"nodeId":72,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":840.5993,"y":2699.115},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_tag":"","_position":{"x":1322.302,"y":2634.844},"$type":"NodeCanvas.BehaviourTrees.Selector","$id":"2"},{"_tag":"","_position":{"x":1200.942,"y":2743.915},"$type":"NodeCanvas.BehaviourTrees.Sequencer","$id":"3"},{"_condition":{"CountryStrategy":2,"$type":"NodeCanvas.Tasks.Actions.CountryStrategyCondition"},"_tag":"","_position":{"x":877.7873,"y":3058.272},"$type":"NodeCanvas.BehaviourTrees.ConditionNode","$id":"4"},{"_action":{"ActionTypes":[9],"nodeId":73,"$type":"NodeCanvas.Tasks.Actions.AIGeneratorAction"},"_tag":"","_position":{"x":1085.258,"y":3058.442},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_action":{"CalculateTypes":[34],"nodeId":74,"$type":"NodeCanvas.Tasks.Actions.AICalculateAction"},"_tag":"","_position":{"x":1239.123,"y":3046.497},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"nodeId":75,"$type":"NodeCanvas.Tasks.Actions.AIExecuteAction"},"_tag":"","_position":{"x":1528.575,"y":3045.925},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"},{"_action":{"MarkStr":"DevelopmentTech","nodeId":76,"$type":"NodeCanvas.Tasks.Actions.MarkAction"},"_position":{"x":1475.873,"y":2751.671},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"8"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"2"},"_targetNode":{"$ref":"8"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"3"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}' _objectReferences: [] _graphSource: _version: 3.33 _category: _comments: - _translation: {x: -663, y: -1810} + _translation: {x: -386, y: -2383} _zoomFactor: 1 _haltSerialization: 0 _externalSerializationFile: {fileID: 0} diff --git a/Unity/Assets/Resources/DataAssets/AiConfig.asset b/Unity/Assets/Resources/DataAssets/AiConfig.asset index 3d7ed3940..82cb0cdd7 100644 --- a/Unity/Assets/Resources/DataAssets/AiConfig.asset +++ b/Unity/Assets/Resources/DataAssets/AiConfig.asset @@ -87,3 +87,32 @@ MonoBehaviour: Ratio: 1 - TechType: 30 Ratio: 1 + AidiffInfos: + - Level: 0 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 1 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 2 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 3 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 diff --git a/Unity/Assets/Resources/Export/AIConfig.asset b/Unity/Assets/Resources/Export/AIConfig.asset index 3d7ed3940..82cb0cdd7 100644 --- a/Unity/Assets/Resources/Export/AIConfig.asset +++ b/Unity/Assets/Resources/Export/AIConfig.asset @@ -87,3 +87,32 @@ MonoBehaviour: Ratio: 1 - TechType: 30 Ratio: 1 + AidiffInfos: + - Level: 0 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 1 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 2 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 + - Level: 3 + FreeUnitRetreat: 0.5 + FreeUnitOther: 2 + LegionUnitDefend: 1 + LegionUnitAttack: 3 + LegionUnitDevelopment: 2 + UnitInCity: 0.5 diff --git a/Unity/Assets/Resources/Export/Multilingual.asset b/Unity/Assets/Resources/Export/Multilingual.asset index e307de651..2ccf675b7 100644 --- a/Unity/Assets/Resources/Export/Multilingual.asset +++ b/Unity/Assets/Resources/Export/Multilingual.asset @@ -59,7 +59,7 @@ MonoBehaviour: \uC2F6\uC5B4!]" - ID: 4 ZH: "\u9635\u8425\u7684\u666E\u901A\u5355\u4F4D\u5982\u5B8C\u6210\u51FB\u6740\u540E\uFF0C\u5C06 - \r\n\u5728\u4E0B\u56DE\u5408\u83B7\u5F97\u653B\u51FB\u5F3A\u5316\u3002" + \n\u5728\u4E0B\u56DE\u5408\u83B7\u5F97\u653B\u51FB\u5F3A\u5316\u3002" TDZH: EN: If ordinary units of a faction complete a kill, they will gain attack enhancement in the next round. @@ -505,7 +505,7 @@ MonoBehaviour: JP: "\u3053\u3053\u306F\u7A7A\u306E\u571F\u5730\u3067\u3059\u3002" KR: "\uC774\uACF3\uC740 \uBE44\uC5B4 \uC788\uB294 \uB545\uC785\uB2C8\uB2E4." - ID: 78 - ZH: "\u8FD9\u91CC\u662F\u63D0\u793A\u6587\u5B57\r\n\u63D0\u793A\u73A9\u5BB6\u5E94\u8BE5\u600E\u4E48\u64CD\u4F5C" + ZH: "\u8FD9\u91CC\u662F\u63D0\u793A\u6587\u5B57\n\u63D0\u793A\u73A9\u5BB6\u5E94\u8BE5\u600E\u4E48\u64CD\u4F5C" TDZH: EN: This is a prompt text prompting players what to do. JP: "\u3053\u308C\u306F\u30D7\u30ED\u30F3\u30D7\u30C8\u30C6\u30AD\u30B9\u30C8\u3067\u3059 @@ -520,31 +520,31 @@ MonoBehaviour: JP: "\u767B\u5C71" KR: "\uB4F1\uC0B0" - ID: 80 - ZH: "KING\r\n\u804C\u9636\u53EC\u5524" + ZH: "KING\n\u804C\u9636\u53EC\u5524" TDZH: EN: '"KING' JP: "\" \u30AD\u30F3\u30B0" KR: "\"\uD0B9" - ID: 81 - ZH: "BISHOP\r\n\u804C\u9636\u53EC\u5524" + ZH: "BISHOP\n\u804C\u9636\u53EC\u5524" TDZH: EN: '"BISHOP' JP: "\" \u30D3\u30B7\u30E7\u30C3\u30D7" KR: "\"\uBE44\uC20D" - ID: 82 - ZH: "QUEEN\r\n\u804C\u9636\u53EC\u5524" + ZH: "QUEEN\n\u804C\u9636\u53EC\u5524" TDZH: EN: '"QUEEN' JP: "\" \u30AF\u30A4\u30FC\u30F3" KR: "\"\uD038" - ID: 83 - ZH: "KNIGHTS\r\n\u804C\u9636\u53EC\u5524" + ZH: "KNIGHTS\n\u804C\u9636\u53EC\u5524" TDZH: EN: '"KNIGHTS' JP: "\" \u30CA\u30A4\u30C4" KR: "\"\uB098\uC774\uCE20" - ID: 84 - ZH: "CHARIOT\r\n\u804C\u9636\u53EC\u5524" + ZH: "CHARIOT\n\u804C\u9636\u53EC\u5524" TDZH: EN: '"CHARIOT' JP: "\" \u30C1\u30E3\u30EA\u30AA\u30C3\u30C8" @@ -619,7 +619,7 @@ MonoBehaviour: JP: "\u53E4\u660E\u5730\u899A" KR: "\uACE0\uBA85\uC9C0\uAC01" - ID: 95 - ZH: "\u8D35\u5B89\uFF0C\u7EA2\u9B54\u9986\u7684\u5927\u5C0F\u59D0\u3002\r\n\u4F60\u7684\u5FC3\u58F0\u5DF2\u7ECF\u90FD\u5199\u5728\u8138\u4E0A\u4E86\uFF0C\r\n\u4E0D\u8FC7\uFF0C\u8BF7\u522B\u518D\u60F3\u90A3\u4E9B\u5931\u793C\u7684\u4E8B\u60C5\u4E86\uFF0C\u597D\u5417\uFF1F" + ZH: "\u8D35\u5B89\uFF0C\u7EA2\u9B54\u9986\u7684\u5927\u5C0F\u59D0\u3002\n\u4F60\u7684\u5FC3\u58F0\u5DF2\u7ECF\u90FD\u5199\u5728\u8138\u4E0A\u4E86\uFF0C\n\u4E0D\u8FC7\uFF0C\u8BF7\u522B\u518D\u60F3\u90A3\u4E9B\u5931\u793C\u7684\u4E8B\u60C5\u4E86\uFF0C\u597D\u5417\uFF1F" TDZH: EN: Good day, young lady of the Scarlet Devil Mansion. Your feelings are all written on your face, but please stop thinking about impolite things, okay? @@ -629,7 +629,7 @@ MonoBehaviour: \uC788\uC2B5\uB2C8\uB2E4. \uD558\uC9C0\uB9CC \uBB34\uB840\uD55C \uC0DD\uAC01\uC740 \uADF8\uB9CC\uB450\uC2DC\uC8E0?" - ID: 96 - ZH: "\u54CE\u5440\u54CE\u5440\uFF0C\u539F\u6765\u662F\u53E4\u660E\u5730\u5C0F\u59D0\u3002\r\n\u65E2\u7136\u662F\u6E38\u620F\u4E2D\uFF0C\u6211\u53EF\u4E0D\u4F1A\u624B\u4E0B\u7559\u60C5\u54E6\u3002\r\n\u60F3\u5FC5\u6211\u4E0D\u8BF4\uFF0C\u4F60\u4E5F\u80FD\u8BFB\u61C2\u6211\u7684\u91CE\u5FC3\u5427\uFF1F" + ZH: "\u54CE\u5440\u54CE\u5440\uFF0C\u539F\u6765\u662F\u53E4\u660E\u5730\u5C0F\u59D0\u3002\n\u65E2\u7136\u662F\u6E38\u620F\u4E2D\uFF0C\u6211\u53EF\u4E0D\u4F1A\u624B\u4E0B\u7559\u60C5\u54E6\u3002\n\u60F3\u5FC5\u6211\u4E0D\u8BF4\uFF0C\u4F60\u4E5F\u80FD\u8BFB\u61C2\u6211\u7684\u91CE\u5FC3\u5427\uFF1F" TDZH: EN: Oh dear, it's Miss Koishi. Since this is a game, I won't hold back. I'm sure you can read my ambition without me saying it, right? @@ -813,14 +813,14 @@ MonoBehaviour: JP: "\u96E3\u6613\u5EA6" KR: "\uB09C\uC774\uB3C4" - ID: 126 - ZH: "\u9AD8\u50B2\u7684\u7EA2\u9B54\u9986\u5927\u5C0F\u59D0\u62BD\u5230\u4E86\u57C3\u53CA\u5E1D\u56FD\u5361\u3002\r\n\u4E0D\u77E5\u4E3A\u4EC0\u4E48\uFF0C\u5979\u8D4C\u4E0A\u4E86\u6574\u4E2A\u7EA2\u9B54\u9986\u62BC\u81EA\u5DF1\u8D62\u3002" + ZH: "\u9AD8\u50B2\u7684\u7EA2\u9B54\u9986\u5927\u5C0F\u59D0\u62BD\u5230\u4E86\u57C3\u53CA\u5E1D\u56FD\u5361\u3002\n\u4E0D\u77E5\u4E3A\u4EC0\u4E48\uFF0C\u5979\u8D4C\u4E0A\u4E86\u6574\u4E2A\u7EA2\u9B54\u9986\u62BC\u81EA\u5DF1\u8D62\u3002" TDZH: EN: The proud young lady of the Scarlet Devil Mansion drew the Egypt empire card.For some reason, she wagered the entire mansion on her own victory. JP: "\u9AD8\u6162\u306A\u7D05\u9B54\u9928\u306E\u304A\u5B22\u69D8\u306F \u30A8\u30B8\u30D7\u30C8\u5E1D\u56FD\u306E\u30AB\u30FC\u30C9\u3092\u5F15\u304D\u307E\u3057\u305F\u3002\u4F55\u6545\u304B\u3001\u7D05\u9B54\u9928\u5168\u4F53\u3092\u8CED\u3051\u3066\u81EA\u5206\u306E\u52DD\u5229\u3092\u304B\u3051\u3066\u3044\u307E\u3059\u3002" KR: "\uACE0\uB9CC\uD55C \uBD89\uC740 \uB9C8\uC655\uAD00 \uC544\uAC00\uC528\uAC00 - \uC774\uC9D1\uD2B8 \uC81C\uAD6D \uCE74\uB4DC\uB97C \uBF51\uC558\uC2B5\uB2C8\uB2E4.\r\n\uC774\uC720\uB294 + \uC774\uC9D1\uD2B8 \uC81C\uAD6D \uCE74\uB4DC\uB97C \uBF51\uC558\uC2B5\uB2C8\uB2E4.\n\uC774\uC720\uB294 \uBAA8\uB974\uACA0\uC9C0\uB9CC \uC804 \uC9D1\uC744 \uAC78\uACE0 \uC790\uC2E0\uC758 \uC2B9\uB9AC\uC5D0 \uAC78\uC5C8\uC5B4\uC694." - ID: 127 @@ -837,7 +837,7 @@ MonoBehaviour: JP: "\u30A8\u30B8\u30D7\u30C8\u5E1D\u56FD" KR: "\uC774\uC9D1\uD2B8 \uC81C\uAD6D" - ID: 129 - ZH: "\u4F18\u96C5\u800C\u6020\u60F0\u7684\u6708\u4E4B\u516C\u4E3B\u62BD\u5230\u4E86\u6CD5\u5170\u897F\u5E1D\u56FD\u5361\u3002\r\n\u5C1A\u65E0\u8D25\u7EE9\uFF0C\u4E0D\u8FC7\u597D\u50CF\u90FD\u662F\u5979\u7684\u5BA0\u7269\u6708\u5154\u4EE3\u6253\u3002" + ZH: "\u4F18\u96C5\u800C\u6020\u60F0\u7684\u6708\u4E4B\u516C\u4E3B\u62BD\u5230\u4E86\u6CD5\u5170\u897F\u5E1D\u56FD\u5361\u3002\n\u5C1A\u65E0\u8D25\u7EE9\uFF0C\u4E0D\u8FC7\u597D\u50CF\u90FD\u662F\u5979\u7684\u5BA0\u7269\u6708\u5154\u4EE3\u6253\u3002" TDZH: EN: The elegant and indolent moon princess drew the France empire card.She has no losses yet, but it seems her pet moon rabbit is doing @@ -868,7 +868,7 @@ MonoBehaviour: JP: "\u30D5\u30E9\u30F3\u30B9\u5E1D\u56FD" KR: "\uD504\uB791\uC2A4 \uC81C\uAD6D" - ID: 133 - ZH: "\u6C89\u9759\u800C\u53EF\u6016\u7684\u5730\u7075\u6BBF\u4E3B\u4EBA\u62BD\u5230\u4E86\u5370\u5EA6\u5E1D\u56FD\u5361\u3002\r\n\u5979\u53EA\u662F\u6765\u5BFB\u627E\u59B9\u59B9\u548C\u5BA0\u7269\uFF0C\u7A00\u91CC\u7CCA\u6D82\u52A0\u5165\u4E86\u5BF9\u5C40\u3002" + ZH: "\u6C89\u9759\u800C\u53EF\u6016\u7684\u5730\u7075\u6BBF\u4E3B\u4EBA\u62BD\u5230\u4E86\u5370\u5EA6\u5E1D\u56FD\u5361\u3002\n\u5979\u53EA\u662F\u6765\u5BFB\u627E\u59B9\u59B9\u548C\u5BA0\u7269\uFF0C\u7A00\u91CC\u7CCA\u6D82\u52A0\u5165\u4E86\u5BF9\u5C40\u3002" TDZH: EN: The calm and fearsome mistress of the Earth Spirit Hall drew the India empire card.She only came to find her sister and pet, and somehow got dragged @@ -1010,17 +1010,17 @@ MonoBehaviour: KR: "\uD638\uB8E8\uC2A4\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC740 \uBB34\uC220\uAC00" - ID: 152 - ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u9A6C(Knights)\r\n\u7EE7\u627F\u8D5B\u7279\u610F\u5FD7\u7684\u7EA2\u9B54\u9986\u4E8C\u5C0F\u59D0\u3002\u62E5\u6709\u7279\u8272\u7834\u5C40\u6280\u80FD\u56DB\u91CD\u5B58\u5728\u3002" + ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u9A6C(Knights)\n\u7EE7\u627F\u8D5B\u7279\u610F\u5FD7\u7684\u7EA2\u9B54\u9986\u4E8C\u5C0F\u59D0\u3002\u62E5\u6709\u7279\u8272\u7834\u5C40\u6280\u80FD\u56DB\u91CD\u5B58\u5728\u3002" TDZH: EN: 'Great Person Class: Knights The second young lady of the Scarlet Devil Mansion inheriting the will of Set. Has the unique breakthrough skill Quadruple Existence.' - JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30CA\u30A4\u30C4\r\n\u7D05\u9B54\u9928\u306E\u6B21\u5973\u3067\u3001 + JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30CA\u30A4\u30C4\n\u7D05\u9B54\u9928\u306E\u6B21\u5973\u3067\u3001 \u30BB\u30C8\u306E\u610F\u5FD7\u3092\u7D99\u627F\u3002\u7279\u5FB4\u7684\u306A\u7834\u5C40\u30B9\u30AD\u30EB \u56DB\u91CD\u5B58\u5728\u3092\u6301\u3064\u3002" - KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uAE30\uC0AC\r\n\uBD89\uC740 + KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uAE30\uC0AC\n\uBD89\uC740 \uB9C8\uC655\uAD00\uC758 \uB458\uC9F8 \uC544\uAC00\uC528\uB85C \uC138\uD2B8\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC558\uC2B5\uB2C8\uB2E4. \uD2B9\uC0C9 \uC788\uB294 \uAC1C\u5C40 \uC2A4\uD0AC \u56DB\u91CD\u5B58\u5728\uB97C @@ -1032,62 +1032,62 @@ MonoBehaviour: JP: "\u30D1\u30C1\u30E5\u30EA\u30FC\u30FB\u30CE\u30FC\u30EC\u30C3\u30B8" KR: "\uD328\uCE04\uB9AC \uB178\u30EC\uC9C0" - ID: 154 - ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u540E(Queen)\r\n\u7EE7\u627F\u514B\u91CC\u6B27\u5E15\u7279\u62C9\u610F\u5FD7\u7684\u9B54\u5973\u3002\u62E5\u6709\u7279\u8272\u8303\u56F4\u4F24\u5BB3\u6280\u80FD\u7687\u5BB6\u70C8\u7130\u3002" + ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u540E(Queen)\n\u7EE7\u627F\u514B\u91CC\u6B27\u5E15\u7279\u62C9\u610F\u5FD7\u7684\u9B54\u5973\u3002\u62E5\u6709\u7279\u8272\u8303\u56F4\u4F24\u5BB3\u6280\u80FD\u7687\u5BB6\u70C8\u7130\u3002" TDZH: EN: 'Great Person Class: Queen A witch inheriting the will of Cleopatra. Has the unique area damage skill Royal Flames.' - JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30AF\u30A4\u30FC\u30F3\r\n + JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30AF\u30A4\u30FC\u30F3\n \u30AF\u30EC\u30AA\u30D1\u30C8\u30E9\u306E\u610F\u5FD7\u3092\u7D99\u627F\u3059\u308B\u9B54\u5973\u3002\u7279\u5FB4\u7684\u306A\u7BC4\u56F2\u653B\u6483\u30B9\u30AD\u30EB \u738B\u5BB6\u306E\u708E\u3092\u6301\u3064\u3002" - KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uD038\r\n\uD074\uB808\uC624\uD328\uD2B8\uB77C\uC758 + KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uD038\n\uD074\uB808\uC624\uD328\uD2B8\uB77C\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC740 \uB9C8\uB140\uC785\uB2C8\uB2E4. \uD2B9\uC0C9 \uC788\uB294 \uBC94\uC704 \uB370\uBBF8\uC9C0 \uC2A4\uD0AC \uB85C\uC5F4 \uBD88\uAF43\uC744 \uC18C\uC720\uD569\uB2C8\uB2E4." - ID: 155 - ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u738B(King)\r\n\u7EE7\u627F\u5965\u897F\u91CC\u65AF\u610F\u5FD7\u7684\u5438\u8840\u9B3C\u3002\u62E5\u6709\u7279\u8272\u53CD\u51FB\u56DE\u590D\u6280\u80FD\u7EA2\u8272\u4E0D\u591C\u57CE\u3002" + ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u738B(King)\n\u7EE7\u627F\u5965\u897F\u91CC\u65AF\u610F\u5FD7\u7684\u5438\u8840\u9B3C\u3002\u62E5\u6709\u7279\u8272\u53CD\u51FB\u56DE\u590D\u6280\u80FD\u7EA2\u8272\u4E0D\u591C\u57CE\u3002" TDZH: EN: 'Great Person Class: King A vampire inheriting the will of Osiris. Has the unique counter-healing skill Red Sleepless City.' - JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30AD\u30F3\u30B0\r\n + JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30AD\u30F3\u30B0\n \u30AA\u30B7\u30EA\u30B9\u306E\u610F\u5FD7\u3092\u7D99\u627F\u3059\u308B\u5438\u8840\u9B3C\u3002\u7279\u5FB4\u7684\u306A\u53CD\u6483\u56DE\u5FA9\u30B9\u30AD\u30EB \u7D05\u306E\u4E0D\u591C\u57CE\u3092\u6301\u3064\u3002" - KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uD0B9\r\n\uC624\uC2DC\uB9AC\uC2A4\uC758 + KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uD0B9\n\uC624\uC2DC\uB9AC\uC2A4\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC740 \uD751\uB9C8\uADC0\uC785\uB2C8\uB2E4. \uD2B9\uC0C9 \uC788\uB294 \uBC18\uACA9 \uD68C\uBCF5 \uC2A4\uD0AC \uBD89\uC740 \uBD88\uC57C\uC131\uC744 \uC18C\uC720\uD569\uB2C8\uB2E4." - ID: 156 - ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u76F8(Bishop)\r\n\u7EE7\u627F\u963F\u52AA\u6BD4\u65AF\u610F\u5FD7\u7684\u5973\u4EC6\u957F\u3002\u62E5\u6709\u7279\u8272\u7A81\u88AD\u6280\u80FD\u94F6\u4E4B\u8DF3\u8DC3\u3002" + ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u76F8(Bishop)\n\u7EE7\u627F\u963F\u52AA\u6BD4\u65AF\u610F\u5FD7\u7684\u5973\u4EC6\u957F\u3002\u62E5\u6709\u7279\u8272\u7A81\u88AD\u6280\u80FD\u94F6\u4E4B\u8DF3\u8DC3\u3002" TDZH: EN: 'Great Person Class: Bishop The head maid inheriting the will of Anubis. Has the unique surprise attack skill Silver Leap.' - JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30D3\u30B7\u30E7\u30C3\u30D7\r\n + JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30D3\u30B7\u30E7\u30C3\u30D7\n \u30A2\u30CC\u30D3\u30B9\u306E\u610F\u5FD7\u3092\u7D99\u627F\u3059\u308B\u30E1\u30A4\u30C9\u9577\u3002\u7279\u5FB4\u7684\u306A\u5947\u8972\u30B9\u30AD\u30EB \u9280\u306E\u98DB\u8E8D\u3092\u6301\u3064\u3002" - KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uBE44\uC20D\r\n\uC544\uB204\uBE44\uC2A4\uC758 + KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uBE44\uC20D\n\uC544\uB204\uBE44\uC2A4\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC740 \uD558\uB140\uC7A5\uC785\uB2C8\uB2E4. \uD2B9\uC0C9 \uC788\uB294 \uC288\uD2B8 \uC2A4\uD0AC \uC740\uC758 \uC810\uD551\uC744 \uC18C\uC720\uD569\uB2C8\uB2E4." - ID: 157 - ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u8F66(Rook)\r\n\u7EE7\u627F\u8377\u9C81\u65AF\u610F\u5FD7\u7684\u6B66\u672F\u5BB6\u3002\u62E5\u6709\u7279\u8272\u53CD\u4F24\u6280\u80FD\u8679\u8272\u592A\u6781\u62F3\u3002" + ZH: "\u4F1F\u4EBA\u804C\u9636\uFF1A\u8F66(Rook)\n\u7EE7\u627F\u8377\u9C81\u65AF\u610F\u5FD7\u7684\u6B66\u672F\u5BB6\u3002\u62E5\u6709\u7279\u8272\u53CD\u4F24\u6280\u80FD\u8679\u8272\u592A\u6781\u62F3\u3002" TDZH: EN: 'Great Person Class: Rook A martial artist inheriting the will of Horus. Has the unique damage reflection skill Iridescent Tai Chi.' - JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30EB\u30FC\u30AF\r\n + JP: "\u5049\u4EBA\u8077\u968E\uFF1A \u30EB\u30FC\u30AF\n \u30DB\u30EB\u30B9\u306E\u610F\u5FD7\u3092\u7D99\u627F\u3059\u308B\u6B66\u9053\u5BB6\u3002\u7279\u5FB4\u7684\u306A\u53CD\u50B7\u30B9\u30AD\u30EB \u8679\u8272\u592A\u6975\u62F3\u3092\u6301\u3064\u3002" - KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uB8E9\r\n\uD638\uB8E8\uC2A4\uC758 + KR: "\uC704\uC778 \uC9C1\uAE09\uFF1A\uB8E9\n\uD638\uB8E8\uC2A4\uC758 \uC758\uC9C0\uB97C \uC774\uC5B4\uBC1B\uC740 \uBB34\uC220\uAC00\uC785\uB2C8\uB2E4. \uD2B9\uC0C9 \uC788\uB294 \uBC18\uC0C1 \uC2A4\uD0AC \uBB34\uC9C0\uAC1C \uD0DC\uADF9\uAD8C\uC744 \uC18C\uC720\uD569\uB2C8\uB2E4." @@ -1104,16 +1104,16 @@ MonoBehaviour: JP: "\u5996\u7CBE\u306E\u30E1\u30A4\u30C9" KR: "\uC694\uC815 \uD558\uB140" - ID: 160 - ZH: "\u9886\u571F\u5185\u672A\u6539\u9020\u7684\u68EE\u6797\u53EF\u8BAD\u7EC3\u57FA\u7840\u5355\u4F4D\u3002\r\n\u5996\u7CBE\u662F\u68EE\u6797\u7684\u547C\u5438\uFF0C\u662F\u81EA\u7136\u7684\u5316\u8EAB\u3002" + ZH: "\u9886\u571F\u5185\u672A\u6539\u9020\u7684\u68EE\u6797\u53EF\u8BAD\u7EC3\u57FA\u7840\u5355\u4F4D\u3002\n\u5996\u7CBE\u662F\u68EE\u6797\u7684\u547C\u5438\uFF0C\u662F\u81EA\u7136\u7684\u5316\u8EAB\u3002" TDZH: EN: 'Unmodified forests in territory can train basic units. Fairies are the breath of the forest, the embodiment of nature.' - JP: "\u9818\u571F\u5185\u306E\u672A\u6539\u9020\u306E \u68EE\u6797\u3067\u57FA\u790E\u30E6\u30CB\u30C3\u30C8\u3092\u8A13\u7DF4\u3067\u304D\u308B\u3002\r\n + JP: "\u9818\u571F\u5185\u306E\u672A\u6539\u9020\u306E \u68EE\u6797\u3067\u57FA\u790E\u30E6\u30CB\u30C3\u30C8\u3092\u8A13\u7DF4\u3067\u304D\u308B\u3002\n \u5996\u7CBE\u306F\u68EE\u306E\u547C\u5438\u3001\u81EA\u7136\u306E\u5316\u8EAB\u3067\u3042\u308B\u3002" KR: "\uC601\uD1A0 \uB0B4 \uAC1C\uC870\uB418\uC9C0 \uC54A\uC740 \uC232\uC5D0\uC11C - \uAE30\uBCF8 \uC720\uB2DB\uC744 \uD6C8\uB828\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\r\n\uC694\uC815\uC740 + \uAE30\uBCF8 \uC720\uB2DB\uC744 \uD6C8\uB828\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\uC694\uC815\uC740 \uC232\uC758 \uC228\uACB0\uC774\uACE0 \uC790\uC5F0\uC758 \uD654\uC2E0\uC785\uB2C8\uB2E4." - ID: 161 ZH: "\u6587\u660E\u7279\u6027" @@ -1128,16 +1128,16 @@ MonoBehaviour: JP: "\u30CA\u30A4\u30EB\u306E\u5A18" KR: "\uB098\uC77C\uAC15\uC758 \uB538" - ID: 163 - ZH: "\u5728\u6E38\u620F\u5F00\u59CB\u65F6\u62E5\u6709\u8015\u79CD\u79D1\u6280\u3002\r\n\u57C3\u53CA\u662F\u5C3C\u7F57\u6CB3\u7684\u9988\u8D60\u2014\u2014\u5E0C\u7F57\u591A\u5FB7" + ZH: "\u5728\u6E38\u620F\u5F00\u59CB\u65F6\u62E5\u6709\u8015\u79CD\u79D1\u6280\u3002\n\u57C3\u53CA\u662F\u5C3C\u7F57\u6CB3\u7684\u9988\u8D60\u2014\u2014\u5E0C\u7F57\u591A\u5FB7" TDZH: - EN: "Starts with the Farming technology.\r\nEgypt + EN: "Starts with the Farming technology.\nEgypt is a gift of the Nile \u2014 Herodotus" - JP: "\u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B \u8015\u4F5C\u6280\u8853\u3092\u4FDD\u6709\u3002\r\n + JP: "\u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B \u8015\u4F5C\u6280\u8853\u3092\u4FDD\u6709\u3002\n \u30A8\u30B8\u30D7\u30C8\u306F\u30CA\u30A4\u30EB\u306E\u8D08\u308A\u7269 \u2014\u2014 \u30D8\u30ED\u30C9\u30C8\u30B9" KR: "\uAC8C\uC784 \uC2DC\uC791 \uC2DC \uB18D\uC0AC \uAE30\uC220\uC744 - \uC18C\uC720\uD569\uB2C8\uB2E4.\r\n\uC774\uC9D1\uD2B8\uB294 - \uB098\uC77C\uAC15\uC758 \uC120\uBB3C\u2014\u2014\uD788\uB85C\uB3C4\uD1A0\uC2A4" + \uC18C\uC720\uD569\uB2C8\uB2E4.\n\uC774\uC9D1\uD2B8\uB294 \uB098\uC77C\uAC15\uC758 + \uC120\uBB3C\u2014\u2014\uD788\uB85C\uB3C4\uD1A0\uC2A4" - ID: 164 ZH: "\u6765\u81EA\u6C38\u8FDC\u4EAD\u7684\u6708\u4E4B\u516C\u4E3B\u2014\u2014\u84EC\u83B1\u5C71\u8F89\u591C\uFF0C\u6B64\u523B\u7AEF\u5750\u4E8E\u51EF\u65CB\u95E8\u4E0B\uFF0C\u4F18\u96C5\u5730\u5BA3\u5E03\u5979\u5C06\u7EE7\u627F\u6CD5\u5170\u897F\u5E1D\u56FD\u7684\u8363\u5149\u3002\u6708\u5149\u6D12\u843D\u67AB\u4E39\u767D\u9732\uFF0C\u7AF9\u5F71\u6F2B\u8FC7\u9999\u69AD\u4E3D\u820D\u3002\u5979\u5C06\u7387\u9886\u5154\u5B50\u519B\u56E2\uFF0C\u6F2B\u6B65\u4E8E\u9769\u547D\u4E0E\u6D6A\u6F2B\u4EA4\u7EC7\u7684\u7586\u571F\u4E0A\uFF0C\u4ECE\u5BB9\u5730\u91CD\u5851\u6CD5\u5170\u897F\u7684\u96C4\u56FE\u9738\u4E1A\u3002" TDZH: @@ -1241,7 +1241,7 @@ MonoBehaviour: JP: "\u5996\u602A\u30A6\u30B5\u30AE" KR: "\uC694\uAD34 \uD1A0\uB07C" - ID: 178 - ZH: "\u6C38\u8FDC\u4EAD\u9635\u8425\u7684\u5355\u4F4D\u5728\u9886\u571F\u5185\u7684\u6062\u590D\u91CF\u75314\u70B9\u63D0\u5347\u81F35\u70B9\u3002\r\n\u5154\u5B50\u8F7B\u8DF3\u800C\u8FC7\uFF0C\u597D\u8FD0\u6084\u7136\u800C\u81F3\u3002" + ZH: "\u6C38\u8FDC\u4EAD\u9635\u8425\u7684\u5355\u4F4D\u5728\u9886\u571F\u5185\u7684\u6062\u590D\u91CF\u75314\u70B9\u63D0\u5347\u81F35\u70B9\u3002\n\u5154\u5B50\u8F7B\u8DF3\u800C\u8FC7\uFF0C\u597D\u8FD0\u6084\u7136\u800C\u81F3\u3002" TDZH: EN: 'Units of the Eientei faction gain healing increased from 4 to 5 within their territory. @@ -1249,10 +1249,10 @@ MonoBehaviour: Rabbits hop by, and good luck comes quietly.' JP: "\u6C38\u9060\u4EAD\u9663\u55B6\u306E\u30E6\u30CB\u30C3\u30C8\u306F\u9818\u571F\u5185\u3067\u306E - \u56DE\u5FA9\u91CF\u304C 4 \u304B\u3089 5 \u306B\u4E0A\u304C\u308B\u3002\r\n + \u56DE\u5FA9\u91CF\u304C 4 \u304B\u3089 5 \u306B\u4E0A\u304C\u308B\u3002\n \u30A6\u30B5\u30AE\u304C\u8EFD\u3084\u304B\u306B\u8DF3\u3073\u8D8A\u3048\u308B\u3068\u3001\u5E78\u904B\u304C\u9759\u304B\u306B\u8A2A\u308C\u308B\u3002" KR: "\uC601\uC6D0\uC815 \uC9C4\uC601\uC758 \uC720\uB2DB\uC774 \uC601\uD1A0 \uB0B4\uC5D0\uC11C\uC758 - \uD68C\uBCF5\uB7C9\uC774 4\uC5D0\uC11C 5\uB85C \uC99D\uAC00\uD569\uB2C8\uB2E4.\r\n\uD1A0\uB07C\uAC00 + \uD68C\uBCF5\uB7C9\uC774 4\uC5D0\uC11C 5\uB85C \uC99D\uAC00\uD569\uB2C8\uB2E4.\n\uD1A0\uB07C\uAC00 \uAC00\uBCCD\uAC8C \uC810\uD551\uD558\uBA74 \uC6B4\uC774 \uC628\uB2E4." - ID: 179 ZH: "\u7530\u56ED\u7EC5\u58EB\u5B66" @@ -1261,18 +1261,17 @@ MonoBehaviour: JP: "\u7530\u5712\u7D33\u58EB\u5B66" KR: "\uC804\uC6D0 \uC2E0\uC0AC \uD559\uBB38" - ID: 180 - ZH: "\u5728\u6E38\u620F\u5F00\u59CB\u65F6\u62E5\u6709\u91C7\u96C6\u79D1\u6280\u3002\r\n\u6587\u660E\u7684\u7B2C\u4E00\u8BFE\uFF0C\u5C31\u5728\u8461\u8404\u85E4\u4E0E\u73AB\u7470\u82B1\u95F4\u3002" + ZH: "\u5728\u6E38\u620F\u5F00\u59CB\u65F6\u62E5\u6709\u91C7\u96C6\u79D1\u6280\u3002\n\u6587\u660E\u7684\u7B2C\u4E00\u8BFE\uFF0C\u5C31\u5728\u8461\u8404\u85E4\u4E0E\u73AB\u7470\u82B1\u95F4\u3002" TDZH: EN: 'Starts with the Gathering technology. The first lesson of civilization is among grapevines and roses.' - JP: "\u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B \u63A1\u53D6\u6280\u8853\u3092\u4FDD\u6709\u3002\r\n + JP: "\u30B2\u30FC\u30E0\u958B\u59CB\u6642\u306B \u63A1\u53D6\u6280\u8853\u3092\u4FDD\u6709\u3002\n \u6587\u660E\u306E\u7B2C\u4E00\u8AB2\u306F\u3001\u30D6\u30C9\u30A6\u306E\u6728\u3068\u30D0\u30E9\u306E\u9593\u306B\u3042\u308B\u3002" KR: "\uAC8C\uC784 \uC2DC\uC791 \uC2DC \uCC44\uC9D1 \uAE30\uC220\uC744 - \uC18C\uC720\uD569\uB2C8\uB2E4.\r\n\uBB38\uBA85\uC758 \uCCAB - \uC218\uC5C5\uC740 \uD3EC\uB3C4\u85E4\uACFC \uC7A5\uBBF8 \uAF43 \uC0AC\uC774\uC5D0 - \uC788\uC2B5\uB2C8\uB2E4." + \uC18C\uC720\uD569\uB2C8\uB2E4.\n\uBB38\uBA85\uC758 \uCCAB \uC218\uC5C5\uC740 + \uD3EC\uB3C4\u85E4\uACFC \uC7A5\uBBF8 \uAF43 \uC0AC\uC774\uC5D0 \uC788\uC2B5\uB2C8\uB2E4." - ID: 181 ZH: "\u57C3\u53CA" TDZH: @@ -1292,13 +1291,13 @@ MonoBehaviour: JP: "\u30D7\u30EB\u30B7\u30E3" KR: "\uD504\uB7EC\uC2DC\uC544" - ID: 184 - ZH: "\u666E\u9C81\u58EB\u5E1D\u56FD \r\n\u5B88\u77E2\u738B\u671D" + ZH: "\u666E\u9C81\u58EB\u5E1D\u56FD \n\u5B88\u77E2\u738B\u671D" TDZH: EN: 'Prussian Empire Moriyama Dynasty' - JP: "\u30D7\u30EB\u30B7\u30E3\u5E1D\u56FD\r\n\u5B88\u77E2\u738B\u671D" - KR: "\uD504\uB7EC\uC2DC\uC544 \uC81C\uAD6D\r\n\uC218\uC57C \uC655\uC870" + JP: "\u30D7\u30EB\u30B7\u30E3\u5E1D\u56FD\n\u5B88\u77E2\u738B\u671D" + KR: "\uD504\uB7EC\uC2DC\uC544 \uC81C\uAD6D\n\uC218\uC57C \uC655\uC870" - ID: 185 ZH: "\u516B\u5742\u795E\u5948\u5B50\u5C06\u626E\u6F14\u666E\u9C81\u58EB\u5E1D\u56FD\u2014\u2014\u5B88\u77E2\u94C1\u8840\u8054\u76DF\u7684\u6700\u9AD8\u9886\u8896\u3002\u5979\u5C06\u4EE5\u795E\u6743\u4E0E\u519B\u5A01\u5E76\u91CD\u7684\u59FF\u6001\uFF0C\u7387\u5B88\u77E2\u795E\u793E\u5728\u94A2\u94C1\u6D2A\u6D41\u4E2D\u5F3A\u52BF\u767B\u9876\u4E1C\u65B9\u7406\u60F3\u56FD\u5927\u8D5B\uFF01" TDZH: @@ -1395,13 +1394,13 @@ MonoBehaviour: \uAD11\uC11D\uC774 \uC5C6\uB294 \uC0B0\uB3C4 \uC81C\uB828\uC18C\uC5D0 1\uC810\uC758 \uB3C4\uC2DC \uACBD\uD5D8\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4." - ID: 198 - ZH: "\u5370\u5EA6\u5E1D\u56FD \r\n\u53E4\u660E\u5730\u738B\u671D" + ZH: "\u5370\u5EA6\u5E1D\u56FD \n\u53E4\u660E\u5730\u738B\u671D" TDZH: EN: 'Indian Empire Komeiji Dynasty' - JP: "\u30A4\u30F3\u30C9\u5E1D\u56FD\r\n\u53E4\u660E\u5730\u738B\u671D" - KR: "\uC778\uB3C4 \uC81C\uAD6D\r\n\uACE0\uBA85\uC9C0 \uC655\uC870" + JP: "\u30A4\u30F3\u30C9\u5E1D\u56FD\n\u53E4\u660E\u5730\u738B\u671D" + KR: "\uC778\uB3C4 \uC81C\uAD6D\n\uACE0\uBA85\uC9C0 \uC655\uC870" - ID: 199 ZH: "\u53E4\u660E\u5730\u89C9\u5C06\u626E\u6F14\u5370\u5EA6\u5E1D\u56FD\u2014\u2014\u5730\u7075\u5723\u671D\u7684\u5973\u738B\u3002\u5979\u5C06\u4EE5\u6DF1\u4E0D\u53EF\u6D4B\u7684\u5FC3\u7075\u64CD\u63A7\uFF0C\u5E26\u9886\u5730\u7075\u6BBF\uFF0C\u5728\u6052\u6CB3\u6587\u660E\u4E2D\u5189\u5189\u5347\u8D77\uFF0C\u95EE\u9F0E\u4E1C\u65B9\u7406\u60F3\u56FD\u5927\u8D5B\u7684\u6700\u7EC8\u51A0\u519B\u3002" TDZH: @@ -1620,14 +1619,14 @@ MonoBehaviour: \uC81C \uC5EC\uB3D9\uC0DD\uC744 \uBE68\uB9AC \uB370\uB9AC\uACE0 \uAC00\uACE0 \uC2F6\uC744 \uBFD0\uC774\uC5D0\uC694." - ID: 227 - ZH: "\u5E1D\u738B\u661F\u6536\u96C6 3 / 5 \r\n\u5728\u6E38\u620F\u4E2D\u53EC\u5524\u5BF9\u5E94\u7684\u4F1F\u4EBA\uFF0C\u70B9\u4EAE\u5E1D\u738B\u661F\u5427\uFF01" + ZH: "\u5E1D\u738B\u661F\u6536\u96C6 3 / 5 \n\u5728\u6E38\u620F\u4E2D\u53EC\u5524\u5BF9\u5E94\u7684\u4F1F\u4EBA\uFF0C\u70B9\u4EAE\u5E1D\u738B\u661F\u5427\uFF01" TDZH: EN: 'Imperial Star Collection 3/5 Summon the corresponding Great Persons in the game to light up the Imperial Stars!' - JP: "\u5E1D\u738B\u661F\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3 3/5\r\n\u30B2\u30FC\u30E0\u4E2D\u306B\u5BFE\u5FDC\u3059\u308B\u5049\u4EBA\u3092\u53EC\u5524\u3057\u3001\u5E1D\u738B\u661F\u3092\u70B9\u706F\u3057\u307E\u3057\u3087\u3046\uFF01" - KR: "\uC81C\uC655\uC131 \uC218\uC9D1 3/5\r\n\uAC8C\uC784\uC5D0\uC11C \uB300\uC751\uD558\uB294 + JP: "\u5E1D\u738B\u661F\u30B3\u30EC\u30AF\u30B7\u30E7\u30F3 3/5\n\u30B2\u30FC\u30E0\u4E2D\u306B\u5BFE\u5FDC\u3059\u308B\u5049\u4EBA\u3092\u53EC\u5524\u3057\u3001\u5E1D\u738B\u661F\u3092\u70B9\u706F\u3057\u307E\u3057\u3087\u3046\uFF01" + KR: "\uC81C\uC655\uC131 \uC218\uC9D1 3/5\n\uAC8C\uC784\uC5D0\uC11C \uB300\uC751\uD558\uB294 \uC704\uC778\uC744 \uC18C\uD658\uD558\uC5EC \uC81C\uC655\uC131\uC744 \uCF1C\uC138\uC694!" - ID: 228 ZH: "\u4F1F\u4EBA\u56FE\u9274" @@ -1845,7 +1844,7 @@ MonoBehaviour: JP: "\u4E0D\u601D\u8B70\u306A\u7D39\u4ECB" KR: "\uACBD\uAD00 \uC18C\uAC1C" - ID: 255 - ZH: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3001\u6700\u8457\u540D\u7684\u56FE\u4E66\u9986\uFF0C\u5EFA\u4E8E\u6258\u52D2\u5BC6\u738B\u671D\u65F6\u671F\u7684\u57C3\u53CA\uFF0C\u65E8\u5728\u6536\u85CF\u5929\u4E0B\u6240\u6709\u77E5\u8BC6\u3002\u540E\u56E0\u6218\u706B\u4E0E\u653F\u6CBB\u52A8\u8361\u591A\u6B21\u711A\u6BC1\u3002\r\n + ZH: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3001\u6700\u8457\u540D\u7684\u56FE\u4E66\u9986\uFF0C\u5EFA\u4E8E\u6258\u52D2\u5BC6\u738B\u671D\u65F6\u671F\u7684\u57C3\u53CA\uFF0C\u65E8\u5728\u6536\u85CF\u5929\u4E0B\u6240\u6709\u77E5\u8BC6\u3002\u540E\u56E0\u6218\u706B\u4E0E\u653F\u6CBB\u52A8\u8361\u591A\u6B21\u711A\u6BC1\u3002\n \u5728\u6E38\u620F\u4E2D\uFF0C\u4F5C\u4E3A\u77E5\u8BC6\u7C7B\u5947\u89C2\uFF0C\u89E3\u9501\u5168\u90E8\u79D1\u540E\u5373\u53EF\u83B7\u5F97\uFF0C\u63D0\u4F9B3\u70B9\u57CE\u5E02\u7ECF\u9A8C\u3002" TDZH: EN: 'The largest and most famous library of the ancient world, built in Ptolemaic @@ -1854,7 +1853,7 @@ MonoBehaviour: In the game, as a Knowledge Wonder, it is obtained after unlocking all technologies, providing 3 city experience points.' - JP: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3067\u6700\u3082\u6709\u540D\u306A\u56F3\u66F8\u9928\u3067\u3001\u30C8\u30EC\u30E1\u30FC\u738B\u671D\u6642\u4EE3\u306E\u30A8\u30B8\u30D7\u30C8\u306B\u5EFA\u3066\u3089\u308C\u3001\u5929\u4E0B\u306E\u77E5\u8B58\u3092\u53CE\u8535\u3059\u308B\u3053\u3068\u3092\u76EE\u7684\u3068\u3057\u305F\u3002\u5F8C\u306B\u6226\u706B\u3068\u653F\u6CBB\u7684\u52D5\u4E71\u306B\u3088\u308A\u4F55\u5EA6\u3082\u713C\u304B\u308C\u305F\u3002\r\n\u30B2\u30FC\u30E0\u5185\u3067\u306F + JP: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3067\u6700\u3082\u6709\u540D\u306A\u56F3\u66F8\u9928\u3067\u3001\u30C8\u30EC\u30E1\u30FC\u738B\u671D\u6642\u4EE3\u306E\u30A8\u30B8\u30D7\u30C8\u306B\u5EFA\u3066\u3089\u308C\u3001\u5929\u4E0B\u306E\u77E5\u8B58\u3092\u53CE\u8535\u3059\u308B\u3053\u3068\u3092\u76EE\u7684\u3068\u3057\u305F\u3002\u5F8C\u306B\u6226\u706B\u3068\u653F\u6CBB\u7684\u52D5\u4E71\u306B\u3088\u308A\u4F55\u5EA6\u3082\u713C\u304B\u308C\u305F\u3002\n\u30B2\u30FC\u30E0\u5185\u3067\u306F \u77E5\u8B58\u7CFB\u4E0D\u601D\u8B70\u3068\u3057\u3066\u3001\u5168\u6280\u8853\u3092\u89E3\u9664\u3057\u305F\u5F8C\u306B\u7372\u5F97\u3067\u304D\u30013 \u70B9\u306E\u90FD\u5E02\u7D4C\u9A13\u3092\u63D0\u4F9B\u3059\u308B\u3002" KR: "\uACE0\uB300 \uC138\uACC4\uC5D0\uC11C \uAC00\uC7A5 \uD06C\uACE0 \uC720\uBA85\uD55C @@ -1862,7 +1861,7 @@ MonoBehaviour: \uC2DC\uB300 \uC774\uC9D1\uD2B8\uC5D0 \uC138\uC6CC\u5929\u4E0B\u6240\u6709\u306E \uC9C0\uC2DD\uC744 \uC218\uC9D1\uD558\uB824\uACE0 \uD55C \uAC83\uC774\uB2E4. \uADF8 \uD6C4 \uC804\u706B\uC640 \uC815\uCE58\uC801\u52A8\u8361\uC73C\uB85C - \uC5EC\uB7EC \uCC28\uB840 \uBD88\uD0C0 \uBC84\uB838\uB2E4.\r\n\uAC8C\uC784\uC5D0\uC11C + \uC5EC\uB7EC \uCC28\uB840 \uBD88\uD0C0 \uBC84\uB838\uB2E4.\n\uAC8C\uC784\uC5D0\uC11C \uC9C0\uC2DD \uACC4 \uACBD\uAD00\uC73C\uB85C \uBAA8\uB4E0 \uAE30\uC220\uC744 \uD574\uC81C\uD558\uBA74 \uD68D\uB4DD\uD560 \uC218 \uC788\uC73C\uBA70 \uB3C4\uC2DC \uACBD\uD5D8 3\uC810\uC744 \uC81C\uACF5\uD55C\uB2E4." @@ -2505,10 +2504,10 @@ MonoBehaviour: Harvest animal resources here and gain 1 city experience.' - JP: "<\u72E9\u731F> \u6280\u8853\u3092\u5B66\u3093\u3060\u5F8C\u306B\u5B9F\u884C\u53EF\u80FD\u3002\r\n\u3053\u3053\u306E\u52D5\u7269\u8CC7\u6E90\u3092\u53CE\u7A6B\u3057\u3001\u90FD\u5E02\u7D4C\u9A13 + JP: "<\u72E9\u731F> \u6280\u8853\u3092\u5B66\u3093\u3060\u5F8C\u306B\u5B9F\u884C\u53EF\u80FD\u3002\n\u3053\u3053\u306E\u52D5\u7269\u8CC7\u6E90\u3092\u53CE\u7A6B\u3057\u3001\u90FD\u5E02\u7D4C\u9A13 1 \u70B9\u3092\u7372\u5F97\u3059\u308B\u3002" KR: "<\uC0AC\uB0E5> \uAE30\uC220\uC744 \uD559\uC2B5\uD55C \uD6C4 \uC218\uD589\uD560 - \uC218 \uC788\uC2B5\uB2C8\uB2E4.\r\n\uC5EC\uAE30\uC758 \uB3D9\uBB3C \uC790\uC6D0\uC744 + \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\uC5EC\uAE30\uC758 \uB3D9\uBB3C \uC790\uC6D0\uC744 \uC218\uD655\uD558\uACE0 \uB3C4\uC2DC \uACBD\uD5D8 1\uC810\uC744 \uD68D\uB4DD\uD569\uB2C8\uB2E4." - ID: 402 ZH: "\u5EFA\u8BBE\u519C\u7530" @@ -3490,7 +3489,7 @@ MonoBehaviour: JP: KR: - ID: 547 - ZH: "\u8FD9\u91CC\u662F\u5DF4\u9ECE\u5927\u5E73\u539F\uFF0C\u62E5\u6709\u975E\u5E38\u54C7\u585E\u7684\u571F\u58E4\u548C\u8D44\u6E90\u3002\r\n\u6BCF\u56DE\u5408\u989D\u5916\u63D0\u4F9B2\u91D1\u5E01\u3002" + ZH: "\u8FD9\u91CC\u662F\u5DF4\u9ECE\u5927\u5E73\u539F\uFF0C\u62E5\u6709\u975E\u5E38\u54C7\u585E\u7684\u571F\u58E4\u548C\u8D44\u6E90\u3002\n\u6BCF\u56DE\u5408\u989D\u5916\u63D0\u4F9B2\u91D1\u5E01\u3002" TDZH: EN: This is the Parisian Plain, boasting incredible soil and resources. JP: @@ -5528,7 +5527,7 @@ MonoBehaviour: JP: KR: - ID: 879 - ZH: "Debug\r\n\u5F00\u5173" + ZH: "Debug\n\u5F00\u5173" TDZH: EN: Debug\nSwitch JP: @@ -6284,64 +6283,64 @@ MonoBehaviour: JP: KR: - ID: 999 - ZH: "-------- ID=226, Civ=0, Force=0 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None Farming \r\n ---" + ZH: "-------- ID=226, Civ=0, Force=0 --------\nMoney = 5, Stratery = ???\nTech:None + Farming \n ---" TDZH: EN: -------- ID=226, Civ=0, Force=0 --------\nMoney = 5, Stratery = ???\nTech:None Farming \n --- JP: KR: - ID: 1000 - ZH: "-------- ID=227, Civ=1, Force=1 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None Organization \r\n ---" + ZH: "-------- ID=227, Civ=1, Force=1 --------\nMoney = 5, Stratery = ???\nTech:None + Organization \n ---" TDZH: EN: -------- ID=227, Civ=1, Force=1 --------\nMoney = 5, Stratery = ???\nTech:None Organization \n --- JP: KR: - ID: 1001 - ZH: "-------- ID=228, Civ=2, Force=2 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None Hunting \r\n ---" + ZH: "-------- ID=228, Civ=2, Force=2 --------\nMoney = 5, Stratery = ???\nTech:None + Hunting \n ---" TDZH: EN: -------- ID=228, Civ=2, Force=2 --------\nMoney = 5, Stratery = ???\nTech:None Hunting \n --- JP: KR: - ID: 1002 - ZH: "-------- ID=229, Civ=3, Force=3 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None Spiritualism \r\n ---" + ZH: "-------- ID=229, Civ=3, Force=3 --------\nMoney = 5, Stratery = ???\nTech:None + Spiritualism \n ---" TDZH: EN: -------- ID=229, Civ=3, Force=3 --------\nMoney = 5, Stratery = ???\nTech:None Spiritualism \n --- JP: KR: - ID: 1003 - ZH: "-------- ID=230, Civ=4, Force=4 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None \r\n ---" + ZH: "-------- ID=230, Civ=4, Force=4 --------\nMoney = 5, Stratery = ???\nTech:None + \n ---" TDZH: EN: -------- ID=230, Civ=4, Force=4 --------\nMoney = 5, Stratery = ???\nTech:None \n --- JP: KR: - ID: 1004 - ZH: "-------- ID=231, Civ=5, Force=5 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None \r\n ---" + ZH: "-------- ID=231, Civ=5, Force=5 --------\nMoney = 5, Stratery = ???\nTech:None + \n ---" TDZH: EN: -------- ID=231, Civ=5, Force=5 --------\nMoney = 5, Stratery = ???\nTech:None \n --- JP: KR: - ID: 1005 - ZH: "-------- ID=232, Civ=6, Force=6 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None \r\n ---" + ZH: "-------- ID=232, Civ=6, Force=6 --------\nMoney = 5, Stratery = ???\nTech:None + \n ---" TDZH: EN: -------- ID=232, Civ=6, Force=6 --------\nMoney = 5, Stratery = ???\nTech:None \n --- JP: KR: - ID: 1006 - ZH: "-------- ID=233, Civ=7, Force=7 --------\r\nMoney = 5, Stratery = - ???\r\nTech:None \r\n ---" + ZH: "-------- ID=233, Civ=7, Force=7 --------\nMoney = 5, Stratery = ???\nTech:None + \n ---" TDZH: EN: -------- ID=233, Civ=7, Force=7 --------\nMoney = 5, Stratery = ???\nTech:None \n --- @@ -6617,8 +6616,8 @@ MonoBehaviour: JP: KR: - ID: 1049 - ZH: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3001\u6700\u8457\u540D\u7684\u56FE\u4E66\u9986\uFF0C\u5EFA\u4E8E\u6258\u52D2\u5BC6\u738B\u671D\u65F6\u671F\u7684\u57C3\u53CA\uFF0C\u65E8\u5728\u6536\u85CF\u5929\u4E0B\u6240\u6709\u77E5\u8BC6\u3002\u540E\u56E0\u6218\u706B\u4E0E\u653F\u6CBB\u52A8\u8361\u591A\u6B21\u711A\u6BC1\u3002\r\n - \r\n\t\u5728\u6E38\u620F\u4E2D\uFF0C\u4F5C\u4E3A\u77E5\u8BC6\u7C7B\u5947\u89C2\uFF0C\u89E3\u9501\u5168\u90E8\u79D1\u540E\u5373\u53EF\u83B7\u5F97\uFF0C\u63D0\u4F9B3\u70B9\u57CE\u5E02\u7ECF\u9A8C\u3002" + ZH: "\u53E4\u4EE3\u4E16\u754C\u6700\u5927\u3001\u6700\u8457\u540D\u7684\u56FE\u4E66\u9986\uFF0C\u5EFA\u4E8E\u6258\u52D2\u5BC6\u738B\u671D\u65F6\u671F\u7684\u57C3\u53CA\uFF0C\u65E8\u5728\u6536\u85CF\u5929\u4E0B\u6240\u6709\u77E5\u8BC6\u3002\u540E\u56E0\u6218\u706B\u4E0E\u653F\u6CBB\u52A8\u8361\u591A\u6B21\u711A\u6BC1\u3002\n + \n\t\u5728\u6E38\u620F\u4E2D\uFF0C\u4F5C\u4E3A\u77E5\u8BC6\u7C7B\u5947\u89C2\uFF0C\u89E3\u9501\u5168\u90E8\u79D1\u540E\u5373\u53EF\u83B7\u5F97\uFF0C\u63D0\u4F9B3\u70B9\u57CE\u5E02\u7ECF\u9A8C\u3002" TDZH: EN: The largest and most famous library of the ancient world, built in Ptolemaic Egypt to house all the knowledge of the world. It was later destroyed multiple diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIActionRecoveryAndNoMove.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIActionRecoveryAndNoMove.cs index b6a79fc04..c3ec713b5 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIActionRecoveryAndNoMove.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIActionRecoveryAndNoMove.cs @@ -18,13 +18,14 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIActionRecoveryAndNoMove : ActionTask + public class AIActionRecoveryAndNoMove : BaseActionTask { - protected override string info => "回血并且原地不动"; + protected override string desc => "回血并且原地不动"; protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AICalculateAction.cs b/Unity/Assets/Scripts/BTNodeCanvas/AICalculateAction.cs index 8505186a6..2f0d8fcf6 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AICalculateAction.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AICalculateAction.cs @@ -17,18 +17,19 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AICalculateAction : ActionTask + public class AICalculateAction : BaseActionTask { public List CalculateTypes; - protected override string info + protected override string desc { get { return string.Format($"评分策略为 {CalculateTypes[0]}"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIExcuteAction.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIExcuteAction.cs index 41cab20db..1c1c7522b 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIExcuteAction.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIExcuteAction.cs @@ -14,15 +14,16 @@ using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIExecuteAction : ActionTask + public class AIExecuteAction : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"执行"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIFinishAction.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIFinishAction.cs index 27d492d83..3218a1ce2 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIFinishAction.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIFinishAction.cs @@ -14,15 +14,16 @@ using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIFinishAction : ActionTask + public class AIFinishAction : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"行为树执行结束"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachCreate.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachCreate.cs index ba7bd6a54..ecb391b77 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachCreate.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachCreate.cs @@ -16,7 +16,7 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIForeachCreate : ActionTask + public class AIForeachCreate : BaseActionTask { public Strategy Strategy; public bool IsCity; @@ -25,7 +25,7 @@ namespace NodeCanvas.Tasks.Actions public string ExtraName; - protected override string info + protected override string desc { get { @@ -47,6 +47,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null || string.IsNullOrEmpty(GetName()) || data.value.Marks.Contains(GetName())) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachEnd.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachEnd.cs index 58cb13e7f..8b2d12c3d 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachEnd.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachEnd.cs @@ -14,15 +14,16 @@ using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIForeachEnd : ActionTask + public class AIForeachEnd : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"迭代一次结束"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachStart.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachStart.cs index 6273a6726..2c8aa2582 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIForeachStart.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIForeachStart.cs @@ -18,15 +18,16 @@ using RuntimeData; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIForeachStart : ActionTask + public class AIForeachStart : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"迭代一次开始"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIGeneratorAction.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIGeneratorAction.cs index 6ab5b3d63..1a9d94f23 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIGeneratorAction.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIGeneratorAction.cs @@ -18,18 +18,20 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIGeneratorAction : ActionTask + public class AIGeneratorAction : BaseActionTask { public List ActionTypes; - protected override string info + + protected override string desc { get { return string.Format($"构建 {ActionTypes[0]} 行为"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamAroundNoUnitCity.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamAroundNoUnitCity.cs index 24f51094b..6e94fb8a8 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamAroundNoUnitCity.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamAroundNoUnitCity.cs @@ -18,11 +18,11 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamAroundNoUnitCity : ActionTask + public class AIParamAroundNoUnitCity : BaseActionTask { public int Offset; - protected override string info + protected override string desc { get { @@ -32,6 +32,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitCountLimit.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitCountLimit.cs index 819121170..cb5101133 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitCountLimit.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitCountLimit.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamCityUnitCountLimit : ActionTask + public class AIParamCityUnitCountLimit : BaseActionTask { public bool IsGreater; public int Count; - protected override string info + protected override string desc { get { @@ -32,6 +32,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.CityData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitRatio.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitRatio.cs index 9fa34255a..9eef3581b 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitRatio.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamCityUnitRatio.cs @@ -18,12 +18,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamCityUnitRatio : ActionTask + public class AIParamCityUnitRatio : BaseActionTask { public bool IsGreater; public float Ratio; - protected override string info + protected override string desc { get { @@ -34,6 +34,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.CityData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamEnemyCityTarget.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamEnemyCityTarget.cs index 87079e4cf..11be72b52 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamEnemyCityTarget.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamEnemyCityTarget.cs @@ -16,15 +16,16 @@ using RuntimeData; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIParamEnemyCityTarget : ActionTask + public class AIParamEnemyCityTarget : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"将可达最近的地方城市中心设为目标点"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamExplore.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamExplore.cs index 2c99889f2..cfd375b8a 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamExplore.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamExplore.cs @@ -18,18 +18,19 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamExplore : ActionTask + public class AIParamExplore : BaseActionTask { public int Offset = 3; - protected override string info + protected override string desc { get { return string.Format($"查找周围 {Offset} 格内可抵达的探索目标"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamHealth.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamHealth.cs index 87761679d..5f490fb57 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamHealth.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamHealth.cs @@ -16,13 +16,13 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamHealth : ActionTask + public class AIParamHealth : BaseActionTask { public bool GreaterThan = true; public float Ratio = 0.6f; - protected override string info + protected override string desc { get { @@ -33,6 +33,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamMustGarrison.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamMustGarrison.cs index 7c867f828..5ea1e6dc2 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamMustGarrison.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamMustGarrison.cs @@ -18,12 +18,13 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamMustGarrison : ActionTask + public class AIParamMustGarrison : BaseActionTask { - protected override string info => "必须驻守城市"; + protected override string desc => "必须驻守城市"; protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamRecentlySelfTerritoryTarget.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamRecentlySelfTerritoryTarget.cs index a926ef26b..f987240eb 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamRecentlySelfTerritoryTarget.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamRecentlySelfTerritoryTarget.cs @@ -14,15 +14,16 @@ using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] - public class AIParamRecentlySelfTerritoryTarget : ActionTask + public class AIParamRecentlySelfTerritoryTarget : BaseActionTask { - protected override string info + protected override string desc { get { return string.Format($"找最近的我方领土目标"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfCityCount.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfCityCount.cs index ca6051604..74e0105ee 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfCityCount.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfCityCount.cs @@ -18,12 +18,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamSelfCityCount : ActionTask + public class AIParamSelfCityCount : BaseActionTask { public bool Big; public int Count; - protected override string info + protected override string desc { get { @@ -34,6 +34,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritory.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritory.cs index 363055831..7d6cf48ca 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritory.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritory.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamSelfTerritory : ActionTask + public class AIParamSelfTerritory : BaseActionTask { public bool IsIn = true; - protected override string info + protected override string desc { get { @@ -32,6 +32,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritoryResource.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritoryResource.cs index 5308223e0..5b63dd281 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritoryResource.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamSelfTerritoryResource.cs @@ -16,7 +16,7 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamSelfTerritoryResource : ActionTask + public class AIParamSelfTerritoryResource : BaseActionTask { public ResourceType Resource; public TerrainType Terrain; @@ -24,13 +24,14 @@ namespace NodeCanvas.Tasks.Actions public Vegetation Vegetation; - protected override string info + protected override string desc { get { return string.Format($"我方领土存在符合条件格子"); } } protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamStandingTrainUnit.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamStandingTrainUnit.cs index 9ee3f5ced..3a33cbb2e 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamStandingTrainUnit.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamStandingTrainUnit.cs @@ -18,12 +18,13 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamStandingTrainUnit : ActionTask + public class AIParamStandingTrainUnit : BaseActionTask { - protected override string info => string.Format($"常备军训练单位"); + protected override string desc => string.Format($"常备军训练单位"); protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.CityData == null || data.value.AIActions.Count == 0) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityHaveUnit.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityHaveUnit.cs index 62975c561..b31550095 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityHaveUnit.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityHaveUnit.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamTargetCityHaveUnit : ActionTask + public class AIParamTargetCityHaveUnit : BaseActionTask { public bool CheckHaveUnit = true; - protected override string info + protected override string desc { get { @@ -32,6 +32,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityInAttackRange.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityInAttackRange.cs index 1d5b6a1bf..8e1ff3240 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityInAttackRange.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTargetCityInAttackRange.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamTargetCityInAttackRange : ActionTask + public class AIParamTargetCityInAttackRange : BaseActionTask { public bool CheckInAttackRange = true; - protected override string info + protected override string desc { get { @@ -32,6 +32,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam.UnitData == null || data.value.TargetParam.TargetGridData == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTechType.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTechType.cs index b12fc679c..330a95510 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTechType.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTechType.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamTechType : ActionTask + public class AIParamTechType : BaseActionTask { public TechType TechType; - protected override string info + protected override string desc { get { @@ -31,6 +31,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTrainUnitType.cs b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTrainUnitType.cs index 1a53a20bf..a061f0f60 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/AIParamTrainUnitType.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/AIParamTrainUnitType.cs @@ -16,12 +16,12 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class AIParamTrainUnitType : ActionTask + public class AIParamTrainUnitType : BaseActionTask { public UnitType UnitType; - protected override string info + protected override string desc { get { @@ -31,6 +31,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs b/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs new file mode 100644 index 000000000..198c5f27a --- /dev/null +++ b/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs @@ -0,0 +1,39 @@ +/* + * @Author: 白哉 + * @Description: + * @Date: 2025年06月06日 星期五 19:06:16 + * @Modify: + */ + +using System; +using Logic; +using NodeCanvas.Framework; +using UnityEngine; + +namespace NodeCanvas.Tasks.Actions +{ + [Serializable] + public class BaseActionTask : ActionTask + { + [SerializeField] + private uint nodeId; + + public uint NodeId + { + get => nodeId; + set => nodeId = value; + } + + protected override void OnExecute() + { + base.OnExecute(); + MainEditor.Instance.BTNodeId = this.nodeId; + } + + +#if UNITY_EDITOR + protected override string info => $"ID:{desc}"; + protected virtual string desc => string.Empty; +#endif + } +} \ No newline at end of file diff --git a/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs.meta b/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs.meta new file mode 100644 index 000000000..297665d55 --- /dev/null +++ b/Unity/Assets/Scripts/BTNodeCanvas/BaseActionTask.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 532595e313654fb48647f565e02c57ca +timeCreated: 1749439208 \ No newline at end of file diff --git a/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs b/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs new file mode 100644 index 000000000..b9313dce0 --- /dev/null +++ b/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs @@ -0,0 +1,33 @@ +/* + * @Author: 白哉 + * @Description: + * @Date: 2025年06月06日 星期五 19:06:16 + * @Modify: + */ + + +using System; +using NodeCanvas.Framework; +using UnityEngine; + + +namespace NodeCanvas.Tasks.Actions +{ + [Serializable] + public class BaseCondition : ConditionTask + { + [SerializeField] + private uint nodeId; + + public uint NodeId + { + get => nodeId; + set => nodeId = value; + } + +#if UNITY_EDITOR + protected override string info => $"ID:{desc}"; + protected virtual string desc => string.Empty; +#endif + } +} \ No newline at end of file diff --git a/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs.meta b/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs.meta new file mode 100644 index 000000000..c05ab6b90 --- /dev/null +++ b/Unity/Assets/Scripts/BTNodeCanvas/BaseCondition.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b712e66f75754bdaa81c21af75ccf7f2 +timeCreated: 1753350548 \ No newline at end of file diff --git a/Unity/Assets/Scripts/BTNodeCanvas/CountryStrategyCondition.cs b/Unity/Assets/Scripts/BTNodeCanvas/CountryStrategyCondition.cs index 5debb7032..9f3c539c9 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/CountryStrategyCondition.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/CountryStrategyCondition.cs @@ -16,11 +16,11 @@ namespace NodeCanvas.Tasks.Actions { [Category("AICondition")] [Serializable] - public class CountryStrategyCondition : ConditionTask + public class CountryStrategyCondition : BaseCondition { public Strategy CountryStrategy; - protected override string info + protected override string desc { get { return string.Format($"当国家战略为: {CountryStrategy} 时"); } } diff --git a/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs b/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs index bfc0f4711..449fd8de7 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs +++ b/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs @@ -16,13 +16,13 @@ namespace NodeCanvas.Tasks.Actions { [Category("AIAction")] [Serializable] - public class MarkAction : ActionTask + public class MarkAction : BaseActionTask { public string MarkStr; public bool CheckNotHave; - protected override string info + protected override string desc { get { @@ -33,6 +33,7 @@ namespace NodeCanvas.Tasks.Actions protected override void OnExecute() { + base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value == null) diff --git a/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs.meta b/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs.meta index 297665d55..25c9a1c25 100644 --- a/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs.meta +++ b/Unity/Assets/Scripts/BTNodeCanvas/MarkAction.cs.meta @@ -1,3 +1,3 @@ fileFormatVersion: 2 -guid: 532595e313654fb48647f565e02c57ca +guid: 0ae62d223f0a87b46b826b630c72b8a0 timeCreated: 1749439208 \ No newline at end of file diff --git a/Unity/Assets/Scripts/Logic/AI/AIActionBase.cs b/Unity/Assets/Scripts/Logic/AI/AIActionBase.cs index bcf57429d..ab548344d 100644 --- a/Unity/Assets/Scripts/Logic/AI/AIActionBase.cs +++ b/Unity/Assets/Scripts/Logic/AI/AIActionBase.cs @@ -198,6 +198,7 @@ namespace Logic.AI public List ForeachCity; public bool IsFinish; + public AIDiffInfo AiDiffInfo; public AICalculatorData() @@ -1044,27 +1045,28 @@ namespace Logic.AI Map.GetCityDataListByPlayerId(Player.Id, selfCity); foreach (var unit in Map.UnitMap.UnitList) { - var ratio = 1f; + var ratio = AiDiffInfo.LegionUnitDevelopment; if (unit.LegionId != 0) { if (LegionStrategy.TryGetValue(unit.LegionId, out var value)) { - if (value == Strategy.Attack) ratio = 3; - if (value == Strategy.Development) ratio = 2; + if (value == Strategy.Attack) ratio = AiDiffInfo.LegionUnitAttack; + if (value == Strategy.Development) ratio = AiDiffInfo.LegionUnitDevelopment; + if (value == Strategy.Defend) ratio = AiDiffInfo.LegionUnitDefend; } } else { if (FreeUnitStrategy.TryGetValue(unit, out var value)) { - if (value == Strategy.Retreat) ratio = 1; - else ratio = 2; + if (value == Strategy.Retreat) ratio = AiDiffInfo.FreeUnitRetreat; + else ratio = AiDiffInfo.FreeUnitOther; } } if (Map.GetGridDataByUnitId(unit.Id, out var unitGrid) && Map.GetCityDataByGid(unitGrid.Id, out var city) && - selfCity.Contains(city)) ratio = 0.5f; + selfCity.Contains(city)) ratio = AiDiffInfo.UnitInCity; UnitAttackRatio[unit.Id] = ratio; } } diff --git a/Unity/Assets/Scripts/Logic/AI/AIConfigAsset.cs b/Unity/Assets/Scripts/Logic/AI/AIConfigAsset.cs index 371d89252..12b77e6e1 100644 --- a/Unity/Assets/Scripts/Logic/AI/AIConfigAsset.cs +++ b/Unity/Assets/Scripts/Logic/AI/AIConfigAsset.cs @@ -37,6 +37,7 @@ namespace Logic.AI public float MilitaryConstructionRatioValue; public List TechInfoList = new List(); + public List AidiffInfos = new List(); public AICalculatorTechInfo GetTechInfo(TechType techType) @@ -49,6 +50,17 @@ namespace Logic.AI return null; } + + public AIDiffInfo GetAIDiffInfo(AIDifficult level) + { + foreach (var diffInfo in AidiffInfos) + { + if (diffInfo.Level != level) continue; + return diffInfo; + } + + return null; + } } @@ -64,4 +76,29 @@ namespace Logic.AI Ratio = ratio; } } + + + [Serializable] + public class AIDiffInfo + { + public AIDifficult Level; + public float FreeUnitRetreat; + public float FreeUnitOther; + public float LegionUnitDefend; + public float LegionUnitAttack; + public float LegionUnitDevelopment; + public float UnitInCity; + + + public AIDiffInfo(AIDifficult level) + { + Level = level; + FreeUnitRetreat = 1f; + FreeUnitOther = 2f; + LegionUnitDefend = 1f; + LegionUnitAttack = 3f; + LegionUnitDevelopment = 2f; + UnitInCity = 0.5f; + } + } } \ No newline at end of file diff --git a/Unity/Assets/Scripts/Logic/AI/AILogic.cs b/Unity/Assets/Scripts/Logic/AI/AILogic.cs index 714ec8095..7e3b9f63e 100644 --- a/Unity/Assets/Scripts/Logic/AI/AILogic.cs +++ b/Unity/Assets/Scripts/Logic/AI/AILogic.cs @@ -9,6 +9,7 @@ using System.Collections.Generic; using System.Diagnostics; using Logic.Action; +using Logic.CrashSight; using NodeCanvas.BehaviourTrees; using NodeCanvas.Framework; using UnityEngine; @@ -63,7 +64,7 @@ namespace Logic.AI AILogicState = AILogicState.Prepare; RecordActions = new List(); _scoreCalculator = new AIActionScoreCalculator(); - _cfg = Resources.Load("DataAssets/AIConfig"); + _cfg = Resources.Load("Export/AIConfig"); _generator = new AIActionGenerator(); _logicObject = GameObject.Find("AIBT"); @@ -83,6 +84,8 @@ namespace Logic.AI AILogicState = AILogicState.Playing; _mapData = mapData; _playerData = playerData; + var aiDiff = _cfg.GetAIDiffInfo(_mapData.MapConfig.AIDiff); + _data.AiDiffInfo = aiDiff; _generator.Init(_mapData, _playerData); _data.Refresh(mapData, playerData); _btOwner.StopBehaviour(); @@ -141,7 +144,7 @@ namespace Logic.AI if (_data.MaxAiAction != null || _data.IsFinish) break; if (index > 100) { - Debug.LogWarning($"死循环了"); + LogSystem.LogError($"死循环了,最终记录点为:{MainEditor.Instance.BTNodeId}"); break; } } diff --git a/Unity/Assets/Scripts/Logic/Action/ActionLogic.cs b/Unity/Assets/Scripts/Logic/Action/ActionLogic.cs index 28c4a5c04..30197209c 100644 --- a/Unity/Assets/Scripts/Logic/Action/ActionLogic.cs +++ b/Unity/Assets/Scripts/Logic/Action/ActionLogic.cs @@ -217,6 +217,25 @@ namespace Logic.Action { return 0; } + + public string GetStringLog() + { + var log = $""; + log += $"ActionType : {ActionType}\n"; + log += $"WonderType : {WonderType}\n"; + log += $"ResourceType : {ResourceType}\n"; + log += $"FeatureType : {FeatureType}\n"; + log += $"TerrainType : {TerrainType}\n"; + log += $"UnitType : {UnitType}\n"; + log += $"GiantType : {GiantType}\n"; + log += $"Vegetation : {Vegetation}\n"; + log += $"UnitActionType : {UnitActionType}\n"; + log += $"CityLevelUpActionType : {CityLevelUpActionType}\n"; + log += $"GridMiscActionType : {GridMiscActionType}\n"; + log += $"SkillType : {SkillType}\n"; + log += $"TechType : {TechType}\n"; + return log; + } } diff --git a/Unity/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs b/Unity/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs index 1c59eb5d1..e6a0d9770 100644 --- a/Unity/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs +++ b/Unity/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs @@ -7,7 +7,12 @@ using System.Collections.Generic; +using System.Linq; +using CanvasCoreExpand; using Logic.AI; +using NodeCanvas.BehaviourTrees; +using NodeCanvas.Framework; +using NodeCanvas.Tasks.Actions; using RuntimeData; using UnityEditor; using UnityEngine; @@ -35,6 +40,7 @@ namespace Logic.Editor private PlayerData _player; private CityData _city; private Main _main; + private AIConfigAsset _asset; [MenuItem("Tools/AI 编辑器")] @@ -48,7 +54,7 @@ namespace Logic.Editor protected virtual void OnEnable() { - + ExpandGraphEditor.Exporter = new GraphExporter(); } private void OnDisable() @@ -72,6 +78,7 @@ namespace Logic.Editor GUI.skin.button.wordWrap = true; _barPosition = EditorGUILayout.BeginScrollView(_barPosition); + if (!Application.isPlaying) OnInspectorAIConfig(); OnGUIRunTime(); OnShowPlayerInfo(); OnShowCityInfo(); @@ -79,6 +86,71 @@ namespace Logic.Editor EditorGUILayout.EndScrollView(); } + private void OnInspectorAIConfig() + { + if (!_asset) + { + var path = $"Assets/Resources/DataAssets/AIConfig.asset"; + _asset = AssetDatabase.LoadAssetAtPath(path); + if (!_asset) + { + _asset = CreateInstance(); + AssetDatabase.CreateAsset(_asset, path); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } + if (InspectorUtils.InspectorButtonWithTextWidth("保存")) + { + EditorUtility.SetDirty(_asset); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + for (int i = (int)AIDifficult.EASY; i <= (int)AIDifficult.LUNATIC; i++) + { + if (_asset.GetAIDiffInfo((AIDifficult)i) == null) + { + _asset.AidiffInfos.Add(new AIDiffInfo((AIDifficult)i)); + } + } + _asset.AidiffInfos = _asset.AidiffInfos.OrderBy(i => i.Level).ToList(); + foreach (var diffInfo in _asset.AidiffInfos) + { + EditorGUILayout.BeginVertical(_whiteBoxStyle); + InspectorUtils.InspectorTextWidthRich($"难度:{diffInfo.Level}"); + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"自由人撤退攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.FreeUnitRetreat); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"自由人其他攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.FreeUnitOther); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"军团成员协防攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.LegionUnitDefend); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"军团成员进攻攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.LegionUnitAttack); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"军团成员驻扎攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.LegionUnitDevelopment); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.BeginHorizontal(); + InspectorUtils.InspectorTextWidthRich($"城中小兵攻击收益"); + diffInfo.FreeUnitRetreat = EditorGUILayout.FloatField(diffInfo.UnitInCity); + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + } + } + private void OnGUIRunTime() { if (!Application.isPlaying) return; diff --git a/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs b/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs new file mode 100644 index 000000000..ada4ec2d5 --- /dev/null +++ b/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs @@ -0,0 +1,54 @@ +using CanvasCoreExpand; +using NodeCanvas.BehaviourTrees; +using NodeCanvas.Framework; +using NodeCanvas.Tasks.Actions; + +namespace Logic.Editor +{ + public class GraphExporter: IGraphExporter + { + private uint _recordId; + + public void GenerateAiBtNodeId(Graph graph) + { + if (graph == null) return; + + _recordId = 1; + var root = graph.primeNode; + if (root == null) return; + + // 递归遍历所有节点 + TraverseBTNodes(root); + } + + private void TraverseBTNodes(Node node) + { + if (node == null) return; + + // 检查当前节点是否是BaseActionTask类型 + var actionNode = node as ActionNode; + if (actionNode != null && actionNode.task is BaseActionTask baseTask) + { + baseTask.NodeId = _recordId++; + node.tag = $"{baseTask.NodeId}"; + } + + // 处理子树节点 + var subTree = node as SubTree; + if (subTree != null && subTree.subGraph != null && subTree.subGraph.primeNode != null) + { + TraverseBTNodes(subTree.subGraph.primeNode); + } + + // 遍历所有子节点 + if (node.outConnections != null) + { + foreach (var connection in node.outConnections) + { + if (connection.targetNode == null) continue; + TraverseBTNodes(connection.targetNode); + } + } + } + } +} \ No newline at end of file diff --git a/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs.meta b/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs.meta new file mode 100644 index 000000000..4ee22295f --- /dev/null +++ b/Unity/Assets/Scripts/Logic/Editor/GraphExporter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7668b51a3e204505bea0c4549b7daf19 +timeCreated: 1753351271 \ No newline at end of file diff --git a/Unity/Assets/Scripts/Logic/Main/MainEditor.cs b/Unity/Assets/Scripts/Logic/Main/MainEditor.cs index be764c108..2322bd5bb 100644 --- a/Unity/Assets/Scripts/Logic/Main/MainEditor.cs +++ b/Unity/Assets/Scripts/Logic/Main/MainEditor.cs @@ -16,6 +16,7 @@ namespace Logic public bool IsEditor = false; public bool IsGo = false; public AICalculatorData Data; + public uint BTNodeId = 0; private Dictionary _playerStrategy; private Dictionary> _playerAttackTarget; private Dictionary _cityStrategy;