private void SpawnMoneyLunarPod(Vector3 moneyPodPosition) { SpawnCard chestCard = Resources.Load <SpawnCard>("SpawnCards/InteractableSpawnCard/iscLunarChest"); DirectorPlacementRule placementRule = new DirectorPlacementRule(); placementRule.placementMode = DirectorPlacementRule.PlacementMode.Direct; moneyLunarPod = chestCard.DoSpawn(moneyPodPosition, Quaternion.identity, new DirectorSpawnRequest(chestCard, placementRule, Run.instance.runRNG)).spawnedInstance; displayItems.Add(moneyLunarPod); }
private void On_ServerStageBegin(Stage stage) { if (chestlocations.ContainsKey(stage.sceneDef.sceneName)) { //grab first position var position = chestlocations[stage.sceneDef.sceneName][0]; SpawnCard chestCard = Resources.Load <SpawnCard>("SpawnCards/InteractableSpawnCard/iscChest3"); GameObject chest = chestCard.DoSpawn(position, Quaternion.Euler(0, 0, 0), null); } }
private void SpawnPrinters() { printerPosAndRot.Clear(); FillPrinterInfo(); for (int i = 0; i < ModConfig.printerCount.Value; i++) { string randomDuplicator = GetRandomDuplicator(); SpawnCard printerCard = Resources.Load <SpawnCard>("SpawnCards/InteractableSpawnCard/" + randomDuplicator); DirectorPlacementRule placementRule = new DirectorPlacementRule(); placementRule.placementMode = DirectorPlacementRule.PlacementMode.Direct; GameObject printerOne = printerCard.DoSpawn(printerPosAndRot[i].position, Quaternion.identity, new DirectorSpawnRequest(printerCard, placementRule, Run.instance.runRNG)).spawnedInstance; printerOne.transform.eulerAngles = printerPosAndRot[i].rotation; } }
public override void InvokeServer(Dictionary <string, string> contents) { string spawnCard = contents["SpawnCard"]; if (!DataUtils.ReadVector3FromDictionary("Location", ref contents, out Vector3 hit)) { SandboxMain.Log( $"Invalid location \"[{contents["Location.x"]}, {contents["Location.y"]}, {contents["Location.z"]}] Replicated", true); return; } SpawnCard card = Resources.Load <SpawnCard>("SpawnCards/" + spawnCard); if (card == null) { SandboxMain.Log($"Unable to load a spawnCard called \"{spawnCard}\"", true); return; } card.DoSpawn(hit, Quaternion.identity); }
public void StartBazaar(BiggerBazaar biggerBazaar) { isUsingexperimentalScaling = false; if (!ModConfig.disableTransferMoney.Value) { for (int i = 0; i < PlayerCharacterMasterController.instances.Count; i++) { for (int j = 0; j < bazaarPlayers.Count; j++) { if (bazaarPlayers[j].networkUser == PlayerCharacterMasterController.instances[i].networkUser) { if (!ModConfig.IsShareSuiteMoneySharing()) { PlayerCharacterMasterController.instances[i].master.money = bazaarPlayers[j].money; break; } //ShareSuite.MoneySharingHooks.AddMoneyExternal((int)this.bazaarPlayers[j].money); biggerBazaar.StartCoroutine(TriggerInteractorBarrelInteraction(PlayerCharacterMasterController.instances[i].master, GetShareSuiteSharedMoneyValue())); goto done; } } } done :; } ClearBazaarItems(); List <PickupTier> bazaarItemTiers = PickRandomWeightedBazaarItemTiers(bazaarItemAmount); //uint playerMoney = 0; //for (int i = 0; i < bazaarPlayers.Count; i++) //{ // playerMoney += bazaarPlayers[i].money; //} if (AreAnyItemsAvailable() && bazaarItemTiers != null) { if (ModConfig.chestCostType.Value == 1) { for (int i = 0; i < bazaarItemTiers.Count; i++) { SpawnBazaarItemAt(bazaarItemPositions[i], bazaarItemRotations[i], bazaarItemTiers[i], ModConfig.GetTierUnitConfig(bazaarItemTiers[i]).costLunar); } //} // experimental price scaling //else if (ModConfig.experimentalPriceScaling.Value && DoPlayersHaveTooMuchMoney(playerMoney, bazaarItemTiers)) //{ // isUsingexperimentalScaling = true; // uint unscaledPlayerMoney = GetDifficultyUnscaledCost(playerMoney); // float chestUnits = 0f; // for (int i = 0; i < bazaarItemTiers.Count; i++) // { // if (bazaarItemTiers[i] == ItemTier.Tier1) // { // chestUnits += 1f * ModConfig.maxChestPurchasesTier1.Value; // } // else if (bazaarItemTiers[i] == ItemTier.Tier2) // { // chestUnits += tierRatio[bazaarItemTiers[i]] * ModConfig.maxChestPurchasesTier2.Value; // } // else if (bazaarItemTiers[i] == ItemTier.Tier3) // { // chestUnits += tierRatio[bazaarItemTiers[i]] * ModConfig.maxChestPurchasesTier3.Value; // } // } // int tier1BaseCost = (int)(unscaledPlayerMoney / chestUnits); // double randomMult = r.NextDouble() * (ModConfig.experimentalPriceScalingMaxPercent.Value - ModConfig.experimentalPriceScalingMinPercent.Value) + ModConfig.experimentalPriceScalingMinPercent.Value; // for (int i = 0; i < bazaarItemTiers.Count; i++) // { // tierRatio.TryGetValue(bazaarItemTiers[i], out float val); // int scaledCost = (int)(tier1BaseCost * ((1f / randomMult) * val)); // //Debug.Log("Tier " + bazaarItemTiers[i] + ": " + scaledCost); // SpawnBazaarItemAt(bazaarItemPositions[i], bazaarItemRotations[i], bazaarItemTiers[i], scaledCost); // } // priceScaledLunarPodBaseCost = (int)(tier1BaseCost * ((1f / randomMult) * tierRatio[ItemTier.Tier2])); } else // regular price { for (int i = 0; i < bazaarItemTiers.Count; i++) { SpawnBazaarItemAt(bazaarItemPositions[i], bazaarItemRotations[i], bazaarItemTiers[i], -1); } } if (ModConfig.maxLunarExchanges.Value != 0) { SpawnMoneyLunarPod(moneyPodPosition); } if (ModConfig.isShareSuiteLoaded) { // if money sharing spawn a barrel interaction that handles giving money because of the ShareSuite money sharing issue if (ModConfig.IsShareSuiteMoneySharing()) { SpawnCard barrelCard = Resources.Load <SpawnCard>("SpawnCards/InteractableSpawnCard/iscBarrel1"); Vector3 barrelPosition = new Vector3(200f, 200f, 200f); DirectorPlacementRule placementRule = new DirectorPlacementRule(); placementRule.placementMode = DirectorPlacementRule.PlacementMode.Direct; GameObject barrelGameObject = barrelCard.DoSpawn(barrelPosition, Quaternion.identity, new DirectorSpawnRequest(barrelCard, placementRule, Run.instance.runRNG)).spawnedInstance; barrelInteraction = barrelGameObject.GetComponent <BarrelInteraction>(); } } } }