Пример #1
0
        // Methods
        public new void DigThroughLoopCallback(StateMachineClient smc, Interaction <Sim, JunkPile> .LoopData ld)
        {
            try
            {
                EventTracker.SendEvent(EventTypeId.kLootAJunkPile, Actor, Target);
                if (!Autonomous)
                {
                    int            numScraps = 0x1;
                    InventingSkill skill     = Actor.SkillManager.GetSkill <InventingSkill>(SkillNames.Inventing);
                    if ((skill != null) && skill.OppTheScrapperCompleted)
                    {
                        numScraps += (int)Math.Ceiling((double)(numScraps * InventingSkill.kTheScraperScrapMultiplier));
                    }
                    ScrapInitParameters initData = new ScrapInitParameters(numScraps);
                    Scrap scrap = GlobalFunctions.CreateObject("scrapPile", ProductVersion.EP2, Vector3.Origin, 0x0, Vector3.UnitZ, null, initData) as Scrap;

                    if (Inventories.TryToMove(scrap, Actor))
                    {
                        mScrapCollected++;
                    }

                    Target.DecrementScrapAmount();
                    if (Target.IsEmpty)
                    {
                        Actor.AddExitReason(ExitReason.Finished);
                    }
                }
                else
                {
                    Actor.AddExitReason(ExitReason.Finished);
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
            }
        }
Пример #2
0
        // Methods
        public new void DigThroughLoopCallback(StateMachineClient smc, Interaction<Sim, JunkPile>.LoopData ld)
        {
            try
            {
                EventTracker.SendEvent(EventTypeId.kLootAJunkPile, Actor, Target);
                if (!Autonomous)
                {
                    int numScraps = 0x1;
                    InventingSkill skill = Actor.SkillManager.GetSkill<InventingSkill>(SkillNames.Inventing);
                    if ((skill != null) && skill.OppTheScrapperCompleted)
                    {
                        numScraps += (int) Math.Ceiling((double) (numScraps * InventingSkill.kTheScraperScrapMultiplier));
                    }
                    ScrapInitParameters initData = new ScrapInitParameters(numScraps);
                    Scrap scrap = GlobalFunctions.CreateObject("scrapPile", ProductVersion.EP2, Vector3.Origin, 0x0, Vector3.UnitZ, null, initData) as Scrap;
                    
                    if (Inventories.TryToMove(scrap, Actor))
                    {
                        mScrapCollected++;
                    }

                    Target.DecrementScrapAmount();
                    if (Target.IsEmpty)
                    {
                        Actor.AddExitReason(ExitReason.Finished);
                    }
                }
                else
                {
                    Actor.AddExitReason(ExitReason.Finished);
                }
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
            }
        }
Пример #3
0
        public static bool CreateScrap(Sim sim, int amount)
        {
            ScrapInitParameters initData = new ScrapInitParameters(amount);
            IGameObject         obj2     = GlobalFunctions.CreateObjectOutOfWorld("scrapPile", ProductVersion.EP2, null, initData);

            Scrap scrap = obj2 as Scrap;

            if (scrap != null)
            {
                scrap.HasBeenCounted = true;
                if (Inventories.TryToMove(scrap, sim))
                {
                    return(true);
                }
                scrap.Destroy();
            }
            else if (obj2 != null)
            {
                obj2.Destroy();
            }
            return(false);
        }
Пример #4
0
        public static IGameObject FetchRandomOccultTreat(OccultTypes type, bool isAlien)
        {
            if (isAlien)
            {

                InteractionDefinition instance = RabbitHole.StealSpaceRocks.Singleton;
                RabbitHole.StealSpaceRocks instance2 = instance as RabbitHole.StealSpaceRocks;
                if (instance2 != null)
                {
                    RabbitHole.StealSpaceRocks.SpaceRockSize weightedIndex = (RabbitHole.StealSpaceRocks.SpaceRockSize)RandomUtil.GetWeightedIndex(instance2.SSRTuning.SpaceRockWeights);
                    RockGemMetal spaceRockSize = RockGemMetal.SpaceRockSmall;
                    switch (weightedIndex)
                    {
                        case RabbitHole.StealSpaceRocks.SpaceRockSize.Small:
                            spaceRockSize = RockGemMetal.SpaceRockSmall;
                            break;
                        case RabbitHole.StealSpaceRocks.SpaceRockSize.Medium:
                            spaceRockSize = RockGemMetal.SpaceRockMedium;
                            break;
                        case RabbitHole.StealSpaceRocks.SpaceRockSize.Large:
                            spaceRockSize = RockGemMetal.SpaceRockLarge;
                            break;
                    }

                    return RockGemMetalBase.Make(spaceRockSize, false);
                }
            }            

            switch(type)
            {                
                case OccultTypes.Fairy:
                    PlantRarity rarity = (PlantRarity) RandomUtil.GetInt(0, 3);
                    Quality quality = (Quality) RandomUtil.GetInt(4, 9);
                    PlayerDisclosure playerKnowledgeOfPlantableType = (rarity == PlantRarity.Common) ? PlayerDisclosure.Exposed : PlayerDisclosure.Concealed;
                    IGameObject seed = PlantHelper.CreateRandomPlantable(rarity, quality, true, playerKnowledgeOfPlantableType);

                    return seed;                   
                case OccultTypes.Frankenstein:
                    ScrapInitParameters initData = new ScrapInitParameters(1);
                    IGameObject scrap = GlobalFunctions.CreateObjectOutOfWorld("scrapPile", ProductVersion.EP2, null, initData);
                    return scrap;
                case OccultTypes.Genie:
                    IGameObject lamp = GlobalFunctions.CreateObjectOutOfWorld("GenieLamp", ProductVersion.EP6);
                    return lamp;
                case OccultTypes.Mermaid:                    
                    IGameObject kelp = MermadicKelp.MakeMermadicKelp(RandomUtil.CoinFlip());
                    return kelp;
                case OccultTypes.PlantSim:
                    string randomHerb = RandomUtil.GetRandomObjectFromList<string>(new List<string>(Herb.sIngredientToHerbDataMap.Keys));
                    Ingredient herb = Ingredient.Create(IngredientData.NameToDataMap[randomHerb]);
                    return herb as IGameObject;
                case OccultTypes.Robot:
                    TraitChipStaticData data = RandomUtil.GetRandomObjectFromDictionary<ulong, TraitChipStaticData>(GenericManager<TraitChipName, TraitChipStaticData, TraitChip>.sDictionary);
                    if (data != null)
                    {
                        TraitChip chip = TraitChipManager.CreateTraitChip(data.Guid);
                        return chip;
                    }
                    return null;
                case OccultTypes.Vampire:
                    IGameObject vampireTreat = null;
                    if (!GameUtils.IsInstalled(ProductVersion.EP3))
                    {
                        vampireTreat = Recipe.NameToRecipeHash["VampireJuiceEP7"].CreateFinishedFood(Recipe.MealQuantity.Single, Quality.Perfect);
                    }
                    else
                    {
                        bool coinToss = RandomUtil.CoinFlip();
                        if (coinToss)
                        {
                            vampireTreat = Recipe.NameToRecipeHash["VampireJuice"].CreateFinishedFood(Recipe.MealQuantity.Single, Quality.Perfect);
                        }
                        else
                        {
                            vampireTreat = Ingredient.Create(IngredientData.NameToDataMap["VampireFruit"]);
                        }
                    }
                    return vampireTreat;
                case OccultTypes.Werewolf:
                    List<FishType> fish = new List<FishType>();
                    List<float> weights = new List<float>(fish.Count);
                    foreach (FishType fishType in Fish.sFishData.Keys)
                    {
                        FishData data2 = Fish.sFishData[fishType];
                        if (((data2.IngredientData != null) && data2.IngredientData.CanBuyFromStore) && (data2.Level >= 0))
                        {
                            fish.Add(fishType);
                            weights.Add(1f);
                        }
                    }
                    int weightedIndexFish = RandomUtil.GetWeightedIndex(weights.ToArray());
                    Fish obj2 = Fish.CreateFishOfRandomWeight(fish[weightedIndexFish]);
                    return obj2 as IGameObject;
                case OccultTypes.Witch:
                    if (RandomUtil.CoinFlip())
                    {
                        ISoloInteractionDefinition cdef = TraitFunctions.ConjureApple.Singleton;
                        TraitFunctions.ConjureApple appleDef = cdef as TraitFunctions.ConjureApple;
                        if (appleDef != null)
                        {
                            return appleDef.CreateAppleForInventory(RandomUtil.CoinFlip(), Quality.Perfect);
                        }
                    }
                    else
                    {
                        AlchemyPotion potion = AlchemyPotion.CreateARandomPotion(RandomUtil.CoinFlip(), 0);
                        return potion as IGameObject;
                    }
                    return null;
                case OccultTypes.None:
                default:
                    return null;                    
            }           
        }
Пример #5
0
        public static IGameObject FetchRandomOccultTreat(OccultTypes type, bool isAlien)
        {
            if (isAlien)
            {
                InteractionDefinition      instance  = RabbitHole.StealSpaceRocks.Singleton;
                RabbitHole.StealSpaceRocks instance2 = instance as RabbitHole.StealSpaceRocks;
                if (instance2 != null)
                {
                    RabbitHole.StealSpaceRocks.SpaceRockSize weightedIndex = (RabbitHole.StealSpaceRocks.SpaceRockSize)RandomUtil.GetWeightedIndex(instance2.SSRTuning.SpaceRockWeights);
                    RockGemMetal spaceRockSize = RockGemMetal.SpaceRockSmall;
                    switch (weightedIndex)
                    {
                    case RabbitHole.StealSpaceRocks.SpaceRockSize.Small:
                        spaceRockSize = RockGemMetal.SpaceRockSmall;
                        break;

                    case RabbitHole.StealSpaceRocks.SpaceRockSize.Medium:
                        spaceRockSize = RockGemMetal.SpaceRockMedium;
                        break;

                    case RabbitHole.StealSpaceRocks.SpaceRockSize.Large:
                        spaceRockSize = RockGemMetal.SpaceRockLarge;
                        break;
                    }

                    return(RockGemMetalBase.Make(spaceRockSize, false));
                }
            }

            switch (type)
            {
            case OccultTypes.Fairy:
                PlantRarity      rarity  = (PlantRarity)RandomUtil.GetInt(0, 3);
                Quality          quality = (Quality)RandomUtil.GetInt(4, 9);
                PlayerDisclosure playerKnowledgeOfPlantableType = (rarity == PlantRarity.Common) ? PlayerDisclosure.Exposed : PlayerDisclosure.Concealed;
                IGameObject      seed = PlantHelper.CreateRandomPlantable(rarity, quality, true, playerKnowledgeOfPlantableType);

                return(seed);

            case OccultTypes.Frankenstein:
                ScrapInitParameters initData = new ScrapInitParameters(1);
                IGameObject         scrap    = GlobalFunctions.CreateObjectOutOfWorld("scrapPile", ProductVersion.EP2, null, initData);
                return(scrap);

            case OccultTypes.Genie:
                IGameObject lamp = GlobalFunctions.CreateObjectOutOfWorld("GenieLamp", ProductVersion.EP6);
                return(lamp);

            case OccultTypes.Mermaid:
                IGameObject kelp = MermadicKelp.MakeMermadicKelp(RandomUtil.CoinFlip());
                return(kelp);

            case OccultTypes.PlantSim:
                string     randomHerb = RandomUtil.GetRandomObjectFromList <string>(new List <string>(Herb.sIngredientToHerbDataMap.Keys));
                Ingredient herb       = Ingredient.Create(IngredientData.NameToDataMap[randomHerb]);
                return(herb as IGameObject);

            case OccultTypes.Robot:
                TraitChipStaticData data = RandomUtil.GetRandomObjectFromDictionary <ulong, TraitChipStaticData>(GenericManager <TraitChipName, TraitChipStaticData, TraitChip> .sDictionary);
                if (data != null)
                {
                    TraitChip chip = TraitChipManager.CreateTraitChip(data.Guid);
                    return(chip);
                }
                return(null);

            case OccultTypes.Vampire:
                IGameObject vampireTreat = null;
                if (!GameUtils.IsInstalled(ProductVersion.EP3))
                {
                    vampireTreat = Recipe.NameToRecipeHash["VampireJuiceEP7"].CreateFinishedFood(Recipe.MealQuantity.Single, Quality.Perfect);
                }
                else
                {
                    bool coinToss = RandomUtil.CoinFlip();
                    if (coinToss)
                    {
                        vampireTreat = Recipe.NameToRecipeHash["VampireJuice"].CreateFinishedFood(Recipe.MealQuantity.Single, Quality.Perfect);
                    }
                    else
                    {
                        vampireTreat = Ingredient.Create(IngredientData.NameToDataMap["VampireFruit"]);
                    }
                }
                return(vampireTreat);

            case OccultTypes.Werewolf:
                List <FishType> fish    = new List <FishType>();
                List <float>    weights = new List <float>(fish.Count);
                foreach (FishType fishType in Fish.sFishData.Keys)
                {
                    FishData data2 = Fish.sFishData[fishType];
                    if (((data2.IngredientData != null) && data2.IngredientData.CanBuyFromStore) && (data2.Level >= 0))
                    {
                        fish.Add(fishType);
                        weights.Add(1f);
                    }
                }
                int  weightedIndexFish = RandomUtil.GetWeightedIndex(weights.ToArray());
                Fish obj2 = Fish.CreateFishOfRandomWeight(fish[weightedIndexFish]);
                return(obj2 as IGameObject);

            case OccultTypes.Witch:
                if (RandomUtil.CoinFlip())
                {
                    ISoloInteractionDefinition  cdef     = TraitFunctions.ConjureApple.Singleton;
                    TraitFunctions.ConjureApple appleDef = cdef as TraitFunctions.ConjureApple;
                    if (appleDef != null)
                    {
                        return(appleDef.CreateAppleForInventory(RandomUtil.CoinFlip(), Quality.Perfect));
                    }
                }
                else
                {
                    AlchemyPotion potion = AlchemyPotion.CreateARandomPotion(RandomUtil.CoinFlip(), 0);
                    return(potion as IGameObject);
                }
                return(null);

            case OccultTypes.None:
            default:
                return(null);
            }
        }