예제 #1
0
        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;
        }
예제 #2
0
        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);
        }
예제 #3
0
    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);
    }