public static void onRanchComplete(GameObject creature_go) { RanchStation.Instance targetRanchStation = creature_go.GetSMI <RanchableMonitor.Instance>().targetRanchStation; RancherChore.RancherChoreStates.Instance smi = targetRanchStation.GetSMI <RancherChore.RancherChoreStates.Instance>(); float num = (float)(1.2 + (double)targetRanchStation.GetSMI <RancherChore.RancherChoreStates.Instance>().sm.rancher.Get(smi).GetAttributes().Get(Db.Get().Attributes.Ranching.Id).GetTotalValue() * 0.100000001490116); creature_go.GetComponent <Effects>().Add("Ranched", true).timeRemaining *= num; }
private static RoomType GetTrueRoomType(RoomType type, RanchStation.Instance instance) { var roomtype = instance?.GetComponent <RoomTracker>()?.requiredRoomType; if (string.IsNullOrEmpty(roomtype)) { return(type); } return(Db.Get().RoomTypes.TryGet(roomtype) ?? type); }
public static void ButchCreature(GameObject creature_go, bool moveCreatureToButcherStation = false) { RanchStation.Instance targetRanchStation = creature_go.GetSMI <RanchableMonitor.Instance>()?.targetRanchStation; if (targetRanchStation != null) { if (moveCreatureToButcherStation) { creature_go.transform.SetPosition(targetRanchStation.transform.GetPosition()); } ExtraMeatSpawner extraMeatSpawner = creature_go.GetComponent <ExtraMeatSpawner>(); if (extraMeatSpawner != null) { RancherChore.RancherChoreStates.Instance smi = targetRanchStation.GetSMI <RancherChore.RancherChoreStates.Instance>(); GameObject rancher = smi.sm.rancher.Get(smi); extraMeatSpawner.onDeathDropMultiplier = rancher.GetAttributes().Get(Db.Get().Attributes.Ranching.Id).GetTotalValue() * Config.Get().EXTRAMEATPERRANCHINGATTRIBUTE; } } creature_go.GetSMI <DeathMonitor.Instance>()?.Kill(Db.Get().Deaths.Generic); }
public override void DoPostConfigureComplete(GameObject go) { GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0); go.AddOrGet <LogicOperationalController>(); RanchStation.Def def = go.AddOrGetDef <RanchStation.Def>(); def.isCreatureEligibleToBeRanchedCb = ((GameObject creature_go, RanchStation.Instance ranch_station_smi) => !creature_go.GetComponent <Effects>().HasEffect("Ranched")); def.onRanchCompleteCb = delegate(GameObject creature_go) { RanchableMonitor.Instance sMI = creature_go.GetSMI <RanchableMonitor.Instance>(); RanchStation.Instance targetRanchStation = sMI.targetRanchStation; RancherChore.RancherChoreStates.Instance sMI2 = targetRanchStation.GetSMI <RancherChore.RancherChoreStates.Instance>(); GameObject go2 = targetRanchStation.GetSMI <RancherChore.RancherChoreStates.Instance>().sm.rancher.Get(sMI2); float num2 = 1f + go2.GetAttributes().Get(Db.Get().Attributes.Ranching.Id).GetTotalValue() * 0.1f; creature_go.GetComponent <Effects>().Add("Ranched", true).timeRemaining *= num2; }; def.ranchedPreAnim = "grooming_pre"; def.ranchedLoopAnim = "grooming_loop"; def.ranchedPstAnim = "grooming_pst"; def.getTargetRanchCell = delegate(RanchStation.Instance smi) { int num = Grid.InvalidCell; if (!smi.IsNullOrStopped()) { num = Grid.CellRight(Grid.PosToCell(smi.transform.GetPosition())); if (!smi.targetRanchable.IsNullOrStopped() && smi.targetRanchable.HasTag(GameTags.Creatures.Flyer)) { num = Grid.CellAbove(num); } } return(num); }; RoomTracker roomTracker = go.AddOrGet <RoomTracker>(); roomTracker.requiredRoomType = Db.Get().RoomTypes.CreaturePen.Id; roomTracker.requirement = RoomTracker.Requirement.Required; SkillPerkMissingComplainer skillPerkMissingComplainer = go.AddOrGet <SkillPerkMissingComplainer>(); skillPerkMissingComplainer.requiredSkillPerk = Db.Get().SkillPerks.CanWrangleCreatures.Id; Prioritizable.AddRef(go); }
private static int GetTargetRanchCell(Instance smi) { RanchStation.Instance ranchStation = GetRanchStation(smi); return(ranchStation.GetTargetRanchCell()); }
public static bool isCreatureEligibleToBeRanched(GameObject creature_go, RanchStation.Instance ranch_station_smi) { return(120f >= (creature_go.GetComponent <Effects>()?.Get("Ranched")?.timeRemaining ?? 0f)); }
public Instance(KPrefabID rancher_station) : base((IStateMachineTarget)rancher_station) { ranchStation = rancher_station.GetSMI <RanchStation.Instance>(); }
private static List <KPrefabID> GetOrderedCreatureList(List <KPrefabID> creatures, RanchStation.Instance instance) { if (creatures.Count > 0) { var butcherStation = instance.GetComponent <ButcherStation>(); if (butcherStation != null) { butcherStation.RefreshCreatures(creatures); return(butcherStation.Creatures); } } return(creatures); }