/*public override void Pickup(PlayerController player) * { * player.OnItemPurchased += Restocker; * base.Pickup(player); * } * * public override DebrisObject Drop(PlayerController player) * { * player.OnItemPurchased -= Restocker; * return base.Drop(player); * }*/ private void Restocker(PlayerController arg1, ShopItemController arg2) { arg2.item.PersistsOnPurchase = true; if (!arg2.gameObject || !arg2) { ETGModConsole.Log("my coffins all i see"); } ETGModConsole.Log("time to drop"); FieldInfo _parentShop = typeof(ShopItemController).GetField("m_parentShop", BindingFlags.NonPublic | BindingFlags.Instance); ShopController shop = (ShopController)_parentShop.GetValue(arg2); if (shop) { arg2.Initialize(Gungeon.Game.Items["psm:randy"], shop); } else { ETGModConsole.Log("loosen up"); FieldInfo _parentBaseShop = typeof(ShopItemController).GetField("m_baseParentShop", BindingFlags.NonPublic | BindingFlags.Instance); BaseShopController baseShop = (BaseShopController)_parentBaseShop.GetValue(arg2); if (baseShop) { ETGModConsole.Log("dont forget about it"); arg2.Initialize(Gungeon.Game.Items["psm:randy"], baseShop); } else { ETGModConsole.Log("f**k shit up"); } } }
public static void BaseShopSetupHook(Action <BaseShopController> orig, BaseShopController self) { orig(self); if (self.baseShopType == BaseShopController.AdditionalShopType.FOYER_META && self.ExampleBlueprintPrefab != null) { List <ShopItemController> shopItems = (List <ShopItemController>)BaseItemControllersInfo.GetValue(self); if (shopItems != null) { foreach (ShopItemController shopItem in shopItems) { if (shopItem != null && shopItem.item != null && shopItem.item.encounterTrackable != null && shopItem.item.encounterTrackable.journalData != null) { PickupObject po = GetBlueprintUnlockedItem(shopItem.item.encounterTrackable); if (po != null && po.encounterTrackable != null && po.encounterTrackable.prerequisites != null) { CustomDungeonFlags saveFlagToSetOnAcquisition = CustomDungeonFlags.NONE; for (int i = 0; i < po.encounterTrackable.prerequisites.Length; i++) { if (po.encounterTrackable.prerequisites[i] is CustomDungeonPrerequisite && (po.encounterTrackable.prerequisites[i] as CustomDungeonPrerequisite).advancedPrerequisiteType == CustomDungeonPrerequisite.AdvancedPrerequisiteType.CUSTOM_FLAG) { saveFlagToSetOnAcquisition = (po.encounterTrackable.prerequisites[i] as CustomDungeonPrerequisite).customFlagToCheck; } } if (saveFlagToSetOnAcquisition != CustomDungeonFlags.NONE) { shopItem.item.gameObject.AddComponent <SpecialPickupObject>().CustomSaveFlagToSetOnAcquisition = saveFlagToSetOnAcquisition; } } } } } } }
private void TurnShopkeeperGrey(BaseShopController shop) { FakeGameActorEffectHandler effectHandler = shop.GetComponentInChildren <FakeGameActorEffectHandler>(); if (effectHandler) { effectHandler.StartCoroutine(this.TurnShopkeeperGreyCR(effectHandler)); } }
private static void LockItemsHook(Action <BaseShopController> orig, BaseShopController self) { if (self is CustomShopController) { (self as CustomShopController).LockItems(); } else { orig(self); } }
public static void BaseShopSetupHook(Action <BaseShopController> orig, BaseShopController self) { orig(self); if (self.baseShopType == BaseShopController.AdditionalShopType.FOYER_META && self.ExampleBlueprintPrefab != null) { List <ShopItemController> shopItems = (List <ShopItemController>)BaseItemControllersInfo.GetValue(self); if (shopItems != null) { foreach (ShopItemController shopItem in shopItems) { if (shopItem != null && shopItem.item != null && shopItem.item.encounterTrackable != null && shopItem.item.encounterTrackable.journalData != null) { //ETGModConsole.Log("GETTING BLUEPRINT ITEM FOR: " + shopItem.item.name); PickupObject po = GetBlueprintUnlockedItem(shopItem.item.encounterTrackable); //ETGModConsole.Log("BLUEPRINT ISN'T NULL: " + (po != null) + ", ENCOUNTERTRACKABLE ISN'T NULL: " + (po.encounterTrackable != null) + ", PREREQUISITES ISN'T NULL: " + (po.encounterTrackable != null)); if (po != null && po.encounterTrackable != null && po.encounterTrackable.prerequisites != null) { //ETGModConsole.Log("GAMEOBJECT NAME: " + po.name); //ETGModConsole.Log("DATABASE OBJECT NAME: " + ETGMod.Databases.Items[po.gameObject.name].gameObject.name); // ETGModConsole.Log("DATABASE OBJECT UNLOCK COUNT: " + ETGMod.Databases.Items[po.gameObject.name].encounterTrackable.prerequisites.Length); CustomDungeonFlags saveFlagToSetOnAcquisition = CustomDungeonFlags.NONE; for (int i = 0; i < po.encounterTrackable.prerequisites.Length; i++) { //ETGModConsole.Log("LOOKING AT PREREQUISITE #" + i + ": " + po.encounterTrackable.prerequisites[i].GetType()); if (po.encounterTrackable.prerequisites[i] is CustomDungeonPrerequisite && (po.encounterTrackable.prerequisites[i] as CustomDungeonPrerequisite).advancedPrerequisiteType == CustomDungeonPrerequisite.AdvancedPrerequisiteType.CUSTOM_FLAG) { saveFlagToSetOnAcquisition = (po.encounterTrackable.prerequisites[i] as CustomDungeonPrerequisite).customFlagToCheck; //ETGModConsole.Log("FOUND FLAG: " + saveFlagToSetOnAcquisition); } } //ETGModConsole.Log("FINAL VALUE FOR FLAG: " + saveFlagToSetOnAcquisition); if (saveFlagToSetOnAcquisition != CustomDungeonFlags.NONE) { shopItem.item.gameObject.AddComponent <SpecialPickupObject>().CustomSaveFlagToSetOnAcquisition = saveFlagToSetOnAcquisition; } } } } } } }
public static void OnPurchase(Action <BaseShopController, ShopItemController, bool, bool> orig, BaseShopController self, ShopItemController item, bool flag1, bool flag2) { ETGModConsole.Log("god"); if (GameManager.Instance.PrimaryPlayer.HasMTGConsoleID("psm:restock") && item.item.quality != ItemQuality.SPECIAL) { ETGModConsole.Log("shitkeeper"); item.item.PersistsOnPurchase = true; FieldInfo _pickedUp = typeof(ShopItemController).GetField("pickedUp", BindingFlags.NonPublic | BindingFlags.Instance); _pickedUp.SetValue(item, false); LootEngine.DoDefaultItemPoof(item.specRigidbody.UnitCenter); if (item.item.quality != ItemQuality.COMMON && item.item.quality != ItemQuality.SPECIAL) { ETGModConsole.Log("fart sex"); item.Initialize(self.shopItemsGroup2.defaultItemDrops.SelectByWeight().GetComponent <PickupObject>(), self); } } else { item.item.PersistsOnPurchase = false; FieldInfo _pickedUp = typeof(ShopItemController).GetField("pickedUp", BindingFlags.NonPublic | BindingFlags.Instance); _pickedUp.SetValue(item, true); } orig(self, item, flag1, flag2); }
public static void AllItemsAre() { if (itemPool.Count == 0) { return; } foreach (PickupObject pickupObject in UnityEngine.Object.FindObjectsOfType <PickupObject>()) { //ETGModConsole.Log("ID: " + pickupObject.PickupObjectId + " | InstanceID: " + pickupObject.GetInstanceID() + " | Name: " + pickupObject.name); bool continueThen = false; foreach (PickupObject item in itemPool) { if (item.PickupObjectId == pickupObject.PickupObjectId) { continueThen = true; break; } } if (continueThen) { continue; } if (pickupObject.GetComponentInParent <AIActor>() != null) { if (pickupObject.GetComponentInParent <AIActor>().IsMimicEnemy) { continue; } } if (pickupObject.GetComponentInParent <BeholsterTentacleController>() != null) { continue; } if (GameManager.Instance.PrimaryPlayer != null) { if (GameManager.Instance.PrimaryPlayer.characterIdentity == PlayableCharacters.Pilot) { if (pickupObject.PickupObjectId == Game.Items.Get("trusty_lockpicks").PickupObjectId) { continue; } } else if (GameManager.Instance.PrimaryPlayer.characterIdentity == PlayableCharacters.Convict) { if (pickupObject.PickupObjectId == Game.Items.Get("molotov").PickupObjectId) { continue; } } else if (GameManager.Instance.PrimaryPlayer.characterIdentity == PlayableCharacters.Soldier) { if (pickupObject.PickupObjectId == Game.Items.Get("supply_drop").PickupObjectId) { continue; } } else if (GameManager.Instance.PrimaryPlayer.characterIdentity == PlayableCharacters.Robot) { if (pickupObject.PickupObjectId == Game.Items.Get("coolant_leak").PickupObjectId) { continue; } } } if (!settingBools[2] && pickupObject.PickupObjectId == glassGuonID) { continue; } else if (!settingBools[12] && pickupObject.PickupObjectId == mapItemID) { continue; } else if (!settingBools[1] && pickupObject.PickupObjectId == junkID) { continue; } else if (pickupObject.PickupObjectId == keyID) { continue; } else if (pickupObject.PickupObjectId == heartID) { continue; } else if (pickupObject.PickupObjectId == GlobalItemIds.Blank) { continue; } else if (pickupObject.PickupObjectId == halfHeartID) { continue; } if (pickupObject as Gun != null && settingBools[3]) { Gun gun = pickupObject.GetComponent <Gun>(); if (gun.HasBeenPickedUp) { safeItems.Add(gun.GetInstanceID()); continue; } else { if (!safeItems.Contains(gun.GetInstanceID())) { LootEngine.SpawnItem(itemPool.ElementAt(UnityEngine.Random.Range(0, itemPool.Count)).gameObject, pickupObject.transform.position, Vector2.up, 1.0f); UnityEngine.Object.Destroy(gun.gameObject); } } } else if (pickupObject as PassiveItem != null && settingBools[4]) { PassiveItem passiveItem = pickupObject.GetComponent <PassiveItem>(); if (passiveItem.PickedUp) { safeItems.Add(passiveItem.GetInstanceID()); continue; } else { if (!safeItems.Contains(passiveItem.GetInstanceID())) { { LootEngine.SpawnItem(itemPool.ElementAt(UnityEngine.Random.Range(0, itemPool.Count)).gameObject, pickupObject.transform.position, Vector2.up, 1.0f); UnityEngine.Object.Destroy(passiveItem.gameObject); } } } } else if (pickupObject as PlayerItem != null && settingBools[5]) { PlayerItem playerItem = pickupObject.GetComponent <PlayerItem>(); if (playerItem.LastOwner != null) { safeItems.Add(playerItem.GetInstanceID()); continue; } else { if (!safeItems.Contains(playerItem.GetInstanceID())) { LootEngine.SpawnItem(itemPool.ElementAt(UnityEngine.Random.Range(0, itemPool.Count)).gameObject, pickupObject.transform.position, Vector2.up, 1.0f); UnityEngine.Object.Destroy(playerItem.gameObject); } } } else { continue; } } foreach (ShopItemController shopItem in UnityEngine.Object.FindObjectsOfType <ShopItemController>()) { bool continueSoon = false; foreach (PickupObject itemToTest in itemPool) { if (itemToTest.PickupObjectId == shopItem.item.PickupObjectId) { continueSoon = true; } } if (!settingBools[3] && shopItem.item is Gun) { continue; } else if (!settingBools[4] && shopItem.item is PassiveItem) { continue; } else if (!settingBools[5] && shopItem.item is PlayerItem) { continue; } if (continueSoon) { continue; } else { if (StaticReferenceManager.AllShops.Count > 0) { if (!settingBools[6] && (shopItem.item.PickupObjectId == halfHeartID || shopItem.item.PickupObjectId == heartID)) { continue; } else if (!settingBools[7] && shopItem.item.PickupObjectId == shieldID) { continue; } else if (!settingBools[8] && shopItem.item.PickupObjectId == blankID) { continue; } else if (!settingBools[9] && (shopItem.item.PickupObjectId == ammoID || shopItem.item.PickupObjectId == spreadAmmoID)) { continue; } else if (!settingBools[10] && shopItem.item.PickupObjectId == keyID) { continue; } else if (!settingBools[2] && shopItem.item.PickupObjectId == glassGuonID) { continue; } else if (!settingBools[12] && shopItem.item.PickupObjectId == mapItemID) { continue; } else if (!settingBools[1] && shopItem.item.PickupObjectId == junkID) { continue; } else if (shopItem.IsResourcefulRatKey) { continue; } else { float distanceToClosest = 555555f; BaseShopController shopToUse = StaticReferenceManager.AllShops.First(); foreach (BaseShopController shop in StaticReferenceManager.AllShops) { foreach (Transform tran in shop.spawnPositions) { if (shopItem.GetDistanceToPoint(tran.position) < distanceToClosest) { distanceToClosest = shopItem.GetDistanceToPoint(tran.position); shopToUse = shop; } } foreach (Transform tran in shop.spawnPositionsGroup2) { if (shopItem.GetDistanceToPoint(tran.position) < distanceToClosest) { distanceToClosest = shopItem.GetDistanceToPoint(tran.position); shopToUse = shop; } } } int priceBefore = shopItem.CurrentPrice; shopItem.Initialize(itemPool.ElementAt(UnityEngine.Random.Range(0, itemPool.Count)), shopToUse); if (!settingBools[11]) { shopItem.OverridePrice = priceBefore; } else if (shopItem.OverridePrice == 9999) { ETGModConsole.Log("New Payday item in shop... adjusting price to avoid 9999 cost item"); shopItem.OverridePrice = 69; //heheheheheheh } } } } } foreach (RewardPedestal pedestal in UnityEngine.Object.FindObjectsOfType <RewardPedestal>()) { if (pedestal.pickedUp || pedestal.contents == null) { continue; } bool conAfter = false; foreach (PickupObject idem in itemPool) { if (pedestal.contents.PickupObjectId == idem.PickupObjectId) { conAfter = true; } } if (conAfter) { continue; } if (!settingBools[3] && pedestal.contents is Gun) { continue; } else if (!settingBools[4] && pedestal.contents is PassiveItem) { continue; } else if (!settingBools[5] && pedestal.contents is PlayerItem) { continue; } else if (!settingBools[2] && pedestal.contents.PickupObjectId == glassGuonID) { continue; } else if (!settingBools[12] && pedestal.contents.PickupObjectId == mapItemID) { continue; } else if (!settingBools[1] && pedestal.contents.PickupObjectId == junkID) { continue; } else if (!settingBools[13] && pedestal.contents.PickupObjectId == crestID) { continue; } else if (!settingBools[0] && masterRoundIDs.Contains(pedestal.contents.PickupObjectId)) { continue; } PickupObject idemInstead = itemPool[UnityEngine.Random.Range(0, itemPool.Count)]; pedestal.contents = null; pedestal.IsBossRewardPedestal = false; pedestal.UsesSpecificItem = true; pedestal.SpecificItemId = idemInstead.PickupObjectId; pedestal.ForceConfiguration(); pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().sprite.Collection = idemInstead.sprite.Collection; pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().sprite.spriteId = idemInstead.sprite.spriteId; SpriteOutlineManager.AddOutlineToSprite(pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>(), Color.black, 0.1f, 0.05f, SpriteOutlineManager.OutlineType.NORMAL); pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().HeightOffGround = 0.25f; pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().depthUsesTrimmedBounds = true; pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().PlaceAtPositionByAnchor(pedestal.spawnTransform.position, tk2dSprite.Anchor.LowerCenter); pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().transform.position = pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().transform.position.Quantize(1f / 16f); pedestal.spawnTransform.GetComponentInChildren <tk2dSprite>().UpdateZDepth(); } }
public static void BelloFiredBullet(Action <BaseShopController, Projectile> orig, BaseShopController self, Projectile firedShot) { orig(self, firedShot); if (!SaveAPIManager.GetFlag(CustomDungeonFlags.ANGERED_BELLO)) { SaveAPIManager.SetFlag(CustomDungeonFlags.ANGERED_BELLO, true); } }