public override void Resolve(ResolveParams rp)
        {
            //Generate Loot
            ResolveParams resolveParamsReward = rp;

            //Chance for a storage container
            if (Rand.Chance(0.3f))
            {
                resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateStorageBoxReward();
                resolveParamsReward.rect = new CellRect(rp.rect.minX + 3, rp.rect.minZ + 3, rp.rect.Width - 5, rp.rect.Height - 5);
                BaseGen.symbolStack.Push("storageBoxLGE", resolveParamsReward);
            }
            else
            {
                //Scattered Loot
                if (Rand.Chance(0.85f))
                {
                    resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateStockpileReward(0.28f);
                }
                else
                {
                    resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateWeaponsCacheReward(Rand.RangeInclusive(4, 5));
                }
                resolveParamsReward.rect.ContractedBy(1);
                BaseGen.symbolStack.Push("spawnStockpileLGE", resolveParamsReward);
            }

            //spawn empty room
            BaseGen.symbolStack.Push("emptyRoom", rp);

            //Clear out the entire rect (including roofs)
            rp.clearRoof = true;
            BaseGen.symbolStack.Push("clear", rp);
        }
        public static List <Thing> GenerateInterceptedMessageReward()
        {
            List <Thing> returnList = new List <Thing>();

            if (Rand.Chance(0.60f)) //0.65 usually
            {
                returnList = RewardGeneratorUtilityLGE.GenerateStockpileReward(0.20f);
            }
            else
            {
                if (Rand.Chance(0.5f)) //0.5 usually
                {
                    returnList = RewardGeneratorUtilityLGE.GenerateWeaponsCacheReward(Rand.RangeInclusive(3, 4));
                }
                else
                {
                    returnList = RewardGeneratorUtilityLGE.GenerateApperalReward(Rand.RangeInclusive(3, 4));
                }
            }

            return(returnList);
        }
        public override void Resolve(ResolveParams rp)
        {
            //Danger Spawn
            if (rp.disableHives == false) //Meaning they should be active
            {
                ResolveParams resolveParamsDanger = rp;
                resolveParamsDanger.hivesCount = Rand.RangeInclusive(1, 2);
                resolveParamsDanger.rect       = rp.rect.ContractedBy(1);
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 2500f)
                {
                    resolveParamsDanger.hivesCount = Rand.RangeInclusive(1, 3);
                }
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 4500f)
                {
                    resolveParamsDanger.hivesCount = Rand.RangeInclusive(2, 3);
                }
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 7000f)
                {
                    resolveParamsDanger.hivesCount = Rand.RangeInclusive(3, 4);
                }
                BaseGen.symbolStack.Push("hives", resolveParamsDanger);
            }
            else
            {
                //MechanoidsSpawn
                ResolveParams resolveParamsDanger = rp;
                resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(2, 4);
                resolveParamsDanger.rect            = rp.rect.ContractedBy(1);
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 2500f)
                {
                    resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(3, 5);
                }
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 4500f)
                {
                    resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(4, 7);
                }
                if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 7000f)
                {
                    resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(6, 10);
                }
                BaseGen.symbolStack.Push("randomMechanoidGroup", resolveParamsDanger);
            }

            //Generate Loot
            ResolveParams resolveParamsReward = rp;

            //Chance for a storage container
            if (Rand.Chance(0.9f))
            {
                resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateStorageBoxReward();
                resolveParamsReward.rect = new CellRect(rp.rect.minX + 3, rp.rect.minZ + 3, rp.rect.Width - 5, rp.rect.Height - 5);
                BaseGen.symbolStack.Push("storageBoxLGE", resolveParamsReward);
            }
            else
            {
                //Scattered Loot
                if (Rand.Chance(0.85f))
                {
                    resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateStockpileReward(0.28f);
                }
                else
                {
                    resolveParamsReward.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateWeaponsCacheReward(Rand.RangeInclusive(4, 5));
                }
                resolveParamsReward.rect.ContractedBy(1);
                BaseGen.symbolStack.Push("spawnStockpileLGE", resolveParamsReward);
            }

            //spawn empty room
            BaseGen.symbolStack.Push("emptyRoom", rp);

            //Clear out the entire rect (including roofs)
            rp.clearRoof = true;
            BaseGen.symbolStack.Push("clear", rp);
        }