protected override void InitializeFuzzyModule() { InitializeDistanceToTarget(out var targetClose, out var targetMedium, out var targetFar); InitializeDesirability(out var undesirable, out var desirable, out var veryDesirable); var ammoStatus = FuzzyModule.CreateFlv("ammoStatus"); var ammoLoads = ammoStatus.AddRightShoulderSet("ammoLoads", 10, 12, 15); var ammoOkay = ammoStatus.AddTriangularSet("ammoOkay", 5, 10, 12); var ammoLow = ammoStatus.AddTriangularSet("ammoLow", 0, 2, 6); FuzzyModule.AddRule(new FzAnd(targetClose, ammoLoads), undesirable); FuzzyModule.AddRule(new FzAnd(targetClose, ammoOkay), undesirable); FuzzyModule.AddRule(new FzAnd(targetClose, ammoLow), undesirable); FuzzyModule.AddRule(new FzAnd(targetMedium, ammoLoads), veryDesirable); FuzzyModule.AddRule(new FzAnd(targetMedium, ammoOkay), veryDesirable); FuzzyModule.AddRule(new FzAnd(targetMedium, ammoLow), desirable); FuzzyModule.AddRule(new FzAnd(targetFar, ammoLoads), desirable); FuzzyModule.AddRule(new FzAnd(targetFar, ammoOkay), undesirable); FuzzyModule.AddRule(new FzAnd(targetFar, ammoLow), undesirable); }