public IdleCellQuery Reset(MinionBrain brain, int max_cost) { this.brain = brain; maxCost = max_cost; targetCell = Grid.InvalidCell; return(this); }
public SafeCellSensor(Sensors sensors) : base(sensors) { navigator = GetComponent <Navigator>(); brain = GetComponent <MinionBrain>(); prefabid = GetComponent <KPrefabID>(); }
/// <summary> /// Applied before Update runs. /// </summary> internal static bool Prefix(MinionBrain ___brain) { // A slim bit slow, but only run 1-2 times a frame, and way faster than what // the sensor does by default return(___brain != null && recreation != null && (!___brain.TryGetComponent( out Schedulable schedulable) || ScheduleManager.Instance.IsAllowed( schedulable, recreation))); }
public Context(KMonoBehaviour cmp) { cell = Grid.PosToCell(cmp); navigator = cmp.GetComponent <Navigator>(); oxygenBreather = cmp.GetComponent <OxygenBreather>(); minionBrain = cmp.GetComponent <MinionBrain>(); temperatureTransferer = cmp.GetComponent <SimTemperatureTransfer>(); primaryElement = cmp.GetComponent <PrimaryElement>(); }
public SafeCellQuery Reset(MinionBrain brain, bool avoid_light) { this.brain = brain; targetCell = PathFinder.InvalidCell; targetCost = 2147483647; targetCellFlags = (SafeFlags)0; this.avoid_light = avoid_light; return(this); }
protected override void OnSpawn() { base.OnSpawn(); kbac = GetComponent <KBatchedAnimController>(); mb = GetComponent <MinionBrain>(); if (autoRun) { PlaySequence(); } }
/// <summary> /// Adds a brain to update asynchronously. /// </summary> /// <param name="brain">The Duplicant brain to update.</param> internal void AddBrain(MinionBrain brain) { var nav = brain.Navigator; if (nav != null) { // What PathProberSensor did nav.UpdateProbe(false); } brainsToUpdate.Add(new BrainPair(brain, nav)); }
/// <summary> /// Applied before Update runs. /// </summary> internal static bool Prefix(MinionBrain ___brain) { var inst = ScheduleManager.Instance; bool run = ___brain != null; if (run && ___brain.TryGetComponent(out Schedulable schedulable) && inst != null && recreation != null) { var block = schedulable.GetSchedule().GetBlock(Schedule.GetBlockIdx()); run = block.IsAllowed(recreation) || (finishTasks != null && block. IsAllowed(finishTasks)); } return(run); }
public Leah(World world, int snoID, TagMap tags) : base(world, snoID, tags) { Brain = new MinionBrain(this); // lookup GameBalance MonsterLevels.gam asset var monsterLevels = (GameBalance)Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.GameBalance][19760].Data; var monsterData = (Monster.Target as MonsterFF); // always use normal difficulty levels for now if (monsterData.Level.Normal >= 0 && monsterData.Level.Normal < monsterLevels.MonsterLevel.Count) { //this.Brain = new MonsterBrain(this); this.Attributes[GameAttribute.Level] = monsterData.Level.Normal; this.Attributes[GameAttribute.Hitpoints_Max] = monsterLevels.MonsterLevel[monsterData.Level.Normal].F0; this.Attributes[GameAttribute.Hitpoints_Cur] = this.Attributes[GameAttribute.Hitpoints_Max_Total]; this.WalkSpeed = 0.5f * monsterData.Floats[129]; // TODO: this is probably multiplied by something erekose the 0.3 is because he is way too fast otherwise } }
public MingleCellSensor(Sensors sensors) : base(sensors) { navigator = GetComponent <Navigator>(); brain = GetComponent <MinionBrain>(); }
public DrawNavGridQuery Reset(MinionBrain brain) { return(this); }
public static SafeFlags GetFlags(int cell, MinionBrain brain, bool avoid_light = false) { int num = Grid.CellAbove(cell); if (!Grid.IsValidCell(num)) { return((SafeFlags)0); } if (Grid.Solid[cell] || Grid.Solid[num]) { return((SafeFlags)0); } if (Grid.IsTileUnderConstruction[cell] || Grid.IsTileUnderConstruction[num]) { return((SafeFlags)0); } bool flag = brain.IsCellClear(cell); bool flag2 = !Grid.Element[cell].IsLiquid; bool flag3 = !Grid.Element[num].IsLiquid; bool flag4 = Grid.Temperature[cell] > 285.15f && Grid.Temperature[cell] < 303.15f; bool flag5 = brain.OxygenBreather.IsBreathableElementAtCell(cell, Grid.DefaultOffset); bool flag6 = !brain.Navigator.NavGrid.NavTable.IsValid(cell, NavType.Ladder) && !brain.Navigator.NavGrid.NavTable.IsValid(cell, NavType.Pole); bool flag7 = !brain.Navigator.NavGrid.NavTable.IsValid(cell, NavType.Tube); bool flag8 = !avoid_light || SleepChore.IsLightLevelOk(cell); if (cell == Grid.PosToCell(brain)) { flag5 = !brain.OxygenBreather.IsSuffocating; } SafeFlags safeFlags = (SafeFlags)0; if (flag) { safeFlags |= SafeFlags.IsClear; } if (flag4) { safeFlags |= SafeFlags.CorrectTemperature; } if (flag5) { safeFlags |= SafeFlags.IsBreathable; } if (flag6) { safeFlags |= SafeFlags.IsNotLadder; } if (flag7) { safeFlags |= SafeFlags.IsNotTube; } if (flag2) { safeFlags |= SafeFlags.IsNotLiquid; } if (flag3) { safeFlags |= SafeFlags.IsNotLiquidOnMyFace; } if (flag8) { safeFlags |= SafeFlags.IsLightOk; } return(safeFlags); }