static bool isPlantWild(KPrefabID plant) { if (plant.GetComponent <BasicForagePlantPlanted>() != null) { return(true); } ReceptacleMonitor receptacleMonitor = plant.GetComponent <ReceptacleMonitor>(); if (receptacleMonitor != null) { if (!receptacleMonitor.Replanted) { return(true); } var plantablePlot = receptacleMonitor.GetReceptacle(); if (plantablePlot != null) { if (plantablePlot.GetComponent <WildPlanterBox>() || plantablePlot.GetComponent <WildFarmTile>()) { return(true); } } } return(false); }
private static void Attack(KPrefabID creature) { var health = creature.GetComponent <Health>(); if (health == null) { return; } health.Damage(Random.Range(0f, 1f) * creature.GetComponent <AttackableBase>().GetDamageMultiplier()); }
private void AttackCreature(KPrefabID creature) { var health = creature.GetComponent <Health>(); if (!(bool)health) { return; } health.Damage(Random.Range(0f, 1f) * creature.GetComponent <AttackableBase>().GetDamageMultiplier()); }
public void RestoreTargetFromInstanceID() { if (target_instance_id != -1 && target == null) { KPrefabID instance = KPrefabIDTracker.Get().GetInstance(target_instance_id); if ((bool)instance) { IAssignableIdentity component = instance.GetComponent <IAssignableIdentity>(); if (component != null) { SetTarget(component, instance.gameObject); } else { Debug.LogWarningFormat("RestoreTargetFromInstanceID target ID {0} was found but it wasn't an IAssignableIdentity, destroying proxy object.", target_instance_id); Util.KDestroyGameObject(base.gameObject); } } else { Debug.LogWarningFormat("RestoreTargetFromInstanceID target ID {0} was not found, destroying proxy object.", target_instance_id); Util.KDestroyGameObject(base.gameObject); } } }
private static int CountNearbyPlants(int cell, int radius) { int x = 0; int y = 0; Grid.PosToXY(Grid.CellToPos(cell), out x, out y); int num = radius * 2; x -= radius; y -= radius; ListPool <ScenePartitionerEntry, GameScenePartitioner> .PooledList pooledList = ListPool <ScenePartitionerEntry, GameScenePartitioner> .Allocate(); GameScenePartitioner.Instance.GatherEntries(x, y, num, num, GameScenePartitioner.Instance.plants, pooledList); int num2 = 0; foreach (ScenePartitionerEntry item in pooledList) { KPrefabID kPrefabID = (KPrefabID)item.obj; if (!(bool)kPrefabID.GetComponent <TreeBud>()) { num2++; } } pooledList.Recycle(); return(num2); }
protected override void OnSpawn() { base.OnSpawn(); UpdateTint(); UpdateStatusString(); base.OnAssign += OnNewAssignment; if (assignee == null) { MinionStorage component = GetComponent <MinionStorage>(); if ((bool)component) { List <MinionStorage.Info> storedMinionInfo = component.GetStoredMinionInfo(); if (storedMinionInfo.Count > 0) { MinionStorage.Info info = storedMinionInfo[0]; Ref <KPrefabID> serializedMinion = info.serializedMinion; if (serializedMinion != null && serializedMinion.GetId() != -1) { KPrefabID kPrefabID = serializedMinion.Get(); StoredMinionIdentity component2 = kPrefabID.GetComponent <StoredMinionIdentity>(); component2.ValidateProxy(); Assign(component2); } } } } }
private void CheckTarget() { if (target == null) { KPrefabID instance = KPrefabIDTracker.Get().GetInstance(target_instance_id); if ((Object)instance != (Object)null) { target = instance.GetComponent <IAssignableIdentity>(); if (target != null) { MinionIdentity minionIdentity = target as MinionIdentity; if ((bool)minionIdentity) { minionIdentity.ValidateProxy(); } else { StoredMinionIdentity storedMinionIdentity = target as StoredMinionIdentity; if ((bool)storedMinionIdentity) { storedMinionIdentity.ValidateProxy(); } } } } } }
protected override void OnSpawn() { base.OnSpawn(); RegisterInGrid(true); SetGridRestrictions(null, DefaultPermission); foreach (KeyValuePair <Ref <KPrefabID>, Permission> savedPermission in savedPermissions) { SetGridRestrictions(savedPermission.Key.Get(), savedPermission.Value); } ListPool <Tuple <MinionAssignablesProxy, Permission>, AccessControl> .PooledList pooledList = ListPool <Tuple <MinionAssignablesProxy, Permission>, AccessControl> .Allocate(); for (int num = savedPermissions.Count - 1; num >= 0; num--) { KPrefabID kPrefabID = savedPermissions[num].Key.Get(); if ((Object)kPrefabID != (Object)null) { MinionIdentity component = kPrefabID.GetComponent <MinionIdentity>(); if ((Object)component != (Object)null) { pooledList.Add(new Tuple <MinionAssignablesProxy, Permission>(component.assignableProxy.Get(), savedPermissions[num].Value)); savedPermissions.RemoveAt(num); ClearGridRestrictions(kPrefabID); } } } foreach (Tuple <MinionAssignablesProxy, Permission> item in pooledList) { SetPermission(item.first, item.second); } pooledList.Recycle(); SetStatusItem(); }
public void SerializeMinion(GameObject minion) { CleanupBadReferences(); KPrefabID kPrefabID = CreateSerializedMinion(minion); Info item = new Info(kPrefabID.GetComponent <StoredMinionIdentity>().storedName, new Ref <KPrefabID>(kPrefabID)); serializedMinions.Add(item); }
public RancherChore(KPrefabID rancher_station) : base(Db.Get().ChoreTypes.Ranch, (IStateMachineTarget)rancher_station, (ChoreProvider)null, false, (Action <Chore>)null, (Action <Chore>)null, (Action <Chore>)null, PriorityScreen.PriorityClass.basic, 5, false, true, 0, false, ReportManager.ReportType.WorkTime) { AddPrecondition(IsCreatureAvailableForRanching, rancher_station.GetSMI <RanchStation.Instance>()); AddPrecondition(ChorePreconditions.instance.HasSkillPerk, Db.Get().SkillPerks.CanUseRanchStation.Id); AddPrecondition(ChorePreconditions.instance.IsScheduledTime, Db.Get().ScheduleBlockTypes.Work); AddPrecondition(ChorePreconditions.instance.CanMoveTo, rancher_station.GetComponent <Building>()); Operational component = rancher_station.GetComponent <Operational>(); AddPrecondition(ChorePreconditions.instance.IsOperational, component); Deconstructable component2 = rancher_station.GetComponent <Deconstructable>(); AddPrecondition(ChorePreconditions.instance.IsNotMarkedForDeconstruction, component2); BuildingEnabledButton component3 = rancher_station.GetComponent <BuildingEnabledButton>(); AddPrecondition(ChorePreconditions.instance.IsNotMarkedForDisable, component3); base.smi = new RancherChoreStates.Instance(rancher_station); SetPrioritizable(rancher_station.GetComponent <Prioritizable>()); }
public static void Prefix(ICollection <int> visited_cells, KCompactedVector <CavityInfo> ___cavityInfos, HandleVector <int> .Handle[] ___CellCavityID) { int maxRoomSize = TuningData <RoomProber.Tuning> .Get().maxRoomSize; foreach (int current in visited_cells) { HandleVector <int> .Handle handle = ___CellCavityID [current]; if (handle.IsValid()) { CavityInfo data = ___cavityInfos.GetData(handle); if (0 < data.numCells && data.numCells <= maxRoomSize) { GameObject gameObject = Grid.Objects [current, (int)ObjectLayer.Plants]; if (gameObject != null) { KPrefabID component = gameObject.GetComponent <KPrefabID> (); bool flag2 = false; foreach (KPrefabID current2 in data.buildings) { if (component.InstanceID == current2.InstanceID) { flag2 = true; break; } } foreach (KPrefabID current3 in data.plants) { if (component.InstanceID == current3.InstanceID) { flag2 = true; break; } } if (!flag2) { if (component.GetComponent <Deconstructable> ()) { data.AddBuilding(component); } else { if (component.HasTag(GameTags.Plant) && !component.HasTag("ForestTreeBranch".ToTag())) { data.AddPlants(component); } } } } } } } }
public MessageTarget(KPrefabID prefab_id) { prefabId.Set(prefab_id); position = prefab_id.transform.GetPosition(); name = "Unknown"; KSelectable component = prefab_id.GetComponent <KSelectable>(); if ((Object)component != (Object)null) { name = component.GetName(); } prefab_id.Subscribe(-1940207677, OnAbsorbedBy); }
private void RebuildDirtyCavities(ICollection <int> visited_cells) { int maxRoomSize = TuningData <Tuning> .Get().maxRoomSize; foreach (int visited_cell in visited_cells) { HandleVector <int> .Handle handle = CellCavityID[visited_cell]; if (handle.IsValid()) { CavityInfo data = cavityInfos.GetData(handle); if (0 < data.numCells && data.numCells <= maxRoomSize) { GameObject gameObject = Grid.Objects[visited_cell, 1]; if ((UnityEngine.Object)gameObject != (UnityEngine.Object)null) { KPrefabID component = gameObject.GetComponent <KPrefabID>(); bool flag = false; foreach (KPrefabID building in data.buildings) { if (component.InstanceID == building.InstanceID) { flag = true; break; } } foreach (KPrefabID plant in data.plants) { if (component.InstanceID == plant.InstanceID) { flag = true; break; } } if (!flag) { if ((bool)component.GetComponent <Deconstructable>()) { data.AddBuilding(component); } else if (component.HasTag(GameTags.Plant) && !component.HasTag("ForestTreeBranch".ToTag())) { data.AddPlants(component); } } } } } } visited_cells.Clear(); }
public bool IsFuelTankAboveMinimumLevel() { KPrefabID storedOutfit = GetStoredOutfit(); if ((UnityEngine.Object)storedOutfit != (UnityEngine.Object)null) { JetSuitTank component = storedOutfit.GetComponent <JetSuitTank>(); if ((UnityEngine.Object)component == (UnityEngine.Object)null) { return(true); } return(component.PercentFull() >= TUNING.EQUIPMENT.SUITS.MINIMUM_USABLE_SUIT_CHARGE); } return(false); }
private KToggleMenu.ToggleInfo[] GetFillers() { HashSet <Tag> hashSet = new HashSet <Tag>(); List <KToggleMenu.ToggleInfo> list = new List <KToggleMenu.ToggleInfo>(); foreach (Pickupable item in Components.Pickupables.Items) { KPrefabID kPrefabID = item.KPrefabID; if (kPrefabID.HasTag(GameTags.Filler) && hashSet.Add(kPrefabID.PrefabTag)) { string text = kPrefabID.GetComponent <PrimaryElement>().Element.id.ToString(); list.Add(new KToggleMenu.ToggleInfo(text, null, Action.NumActions)); } } return(list.ToArray()); }
public void SetupDeliverables() { foreach (GameObject item in base.sm.fetcher.Get <Storage>(base.smi).items) { if (!((UnityEngine.Object)item == (UnityEngine.Object)null)) { KPrefabID component = item.GetComponent <KPrefabID>(); if (!((UnityEngine.Object)component == (UnityEngine.Object)null)) { Pickupable component2 = component.GetComponent <Pickupable>(); if ((UnityEngine.Object)component2 != (UnityEngine.Object)null) { deliverables.Add(component2); } } } } }
public static bool Prefix(SuitLocker __instance) { if (OxygenNotNeededConfigChecker.ForceLoad || CustomGameSettings.Instance.GetCurrentQualitySetting(OxygenNotNeededPatches.WorldRequiresOxygen).id == "Enabled") { KPrefabID storedOutfit = __instance.GetStoredOutfit(); if ((UnityEngine.Object)storedOutfit == (UnityEngine.Object)null) { return(false); } SuitTank component = storedOutfit.GetComponent <SuitTank>(); component.amount = component.capacity; return(false); } else { return(true); } }
public bool CheckStoredMinionIsAssignee() { foreach (MinionStorage.Info item in GetComponent <MinionStorage>().GetStoredMinionInfo()) { MinionStorage.Info current = item; if (current.serializedMinion != null) { KPrefabID kPrefabID = current.serializedMinion.Get(); if (!((Object)kPrefabID == (Object)null)) { StoredMinionIdentity component = kPrefabID.GetComponent <StoredMinionIdentity>(); Assignable component2 = GetComponent <Assignable>(); if (component2.assignee == component.assignableProxy.Get()) { return(true); } } } } return(false); }
private void FuelSuit(float dt) { KPrefabID storedOutfit = suit_locker.GetStoredOutfit(); if (!((UnityEngine.Object)storedOutfit == (UnityEngine.Object)null)) { GameObject fuel = GetFuel(); if (!((UnityEngine.Object)fuel == (UnityEngine.Object)null)) { PrimaryElement component = fuel.GetComponent <PrimaryElement>(); if (!((UnityEngine.Object)component == (UnityEngine.Object)null)) { JetSuitTank component2 = storedOutfit.GetComponent <JetSuitTank>(); float a = 375f * dt / 600f; a = Mathf.Min(a, 25f - component2.amount); a = Mathf.Min(component.Mass, a); component.Mass -= a; component2.amount += a; } } } }