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 override void Resolve(ResolveParams rp) { //Random chance for Danger if (Rand.Chance(0.9f)) { 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) > 4000f) { resolveParamsDanger.hivesCount = Rand.RangeInclusive(2, 3); } BaseGen.symbolStack.Push("hives", resolveParamsDanger); } else { //MechanoidsSpawn ResolveParams resolveParamsDanger = rp; resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(3, 5); resolveParamsDanger.rect = rp.rect.ContractedBy(1); if (StorytellerUtility.DefaultThreatPointsNow(Find.World) > 4000f) { resolveParamsDanger.mechanoidsCount = Rand.RangeInclusive(5, 7); } BaseGen.symbolStack.Push("randomMechanoidGroup", resolveParamsDanger); } } //Put in a storage container ResolveParams resolveParamsAncientStorage = rp; resolveParamsAncientStorage.rect = new CellRect(rp.rect.minX + 3, rp.rect.minZ + 3, rp.rect.Width - 6, rp.rect.Height - 5); //Reward Loot resolveParamsAncientStorage.stockpileConcreteContents = RewardGeneratorUtilityLGE.GenerateStorageBoxReward(); BaseGen.symbolStack.Push("storageBoxLGE", resolveParamsAncientStorage); ResolveParams resolveParamsCryoCaskets = rp; resolveParamsCryoCaskets.rect = rp.rect.ContractedBy(1); //We could steal from the SymbolResolver_Interior_AncientTemple here and include rewards and/or dangers BaseGen.symbolStack.Push("ancientShrinesGroup", resolveParamsCryoCaskets); //spawn empty room BaseGen.symbolStack.Push("emptyRoom", rp); //Clear out the entire rect (including roofs) rp.clearRoof = true; BaseGen.symbolStack.Push("clear", rp); }
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); }