//////////////// public void CheckSettings(Player player) { if (this.IsCopying) { var set = new HashSet <int> { ModContent.ItemType <CopyCartridgeItem>() }; var copyCartItem = PlayerItemFinderHelpers.FindFirstOfPossessedItemFor(player, set, false); if (copyCartItem == null) { Main.NewText("Copy Cartridges needed.", Color.Red); this.IsCopying = false; } } if (this.CurrentPaintItemInventoryIndex >= 0) { Item item = this.GetCurrentPaintItem(); if (item == null) { this.CurrentPaintItemInventoryIndex = -1; } } }
private static bool ScribeBlankContractIf(Player player, Item item) { int blankContractType = ModContent.ItemType <BlankContractItem>(); Item contractItem = PlayerItemFinderHelpers.FindFirstOfPossessedItemFor( player, new HashSet <int> { blankContractType }, false ); var myContractItem = contractItem.modItem as BlankContractItem; if (contractItem == null || myContractItem == null) { Main.NewText("No blank contract item in player's possession.", Color.Yellow); return(false); } if (item?.active != true) { if (IntrinsicsConfig.Instance.DebugModeInfo) { Main.NewText("BlankContractItem reports it cannot swap selected item"); } return(false); } if (!myContractItem.CanAddItem(item)) { Main.NewText("This item cannot be scribed.", Color.Yellow); return(false); } bool hasMadeContract = myContractItem.CreateImpartmentContract(player, item); if (IntrinsicsConfig.Instance.DebugModeInfo) { Main.NewText("Impartment contract created? " + hasMadeContract); } if (!hasMadeContract) { return(false); } PlayerItemHelpers.RemoveInventoryItemQuantity(player, item.type, 1); PlayerItemHelpers.RemoveInventoryItemQuantity(player, blankContractType, 1); Main.mouseItem = new Item(); return(hasMadeContract); }
//////////////// private Item AccountForPurchase(Player player, long spent, Item lastBuyItem) { NPC talkNpc = Main.npc[player.talkNPC]; if (talkNpc == null || !talkNpc.active) { LogHelpers.Log("AccountForPurchase - No shop npc."); return(null); } var mymod = CapitalismMod.Instance; ISet <int> possiblePurchases = ItemFinderHelpers.FindPossiblePurchaseTypes(player.inventory, spent); Item item = null; int stack = 1; if (possiblePurchases.Count > 0) { var changesAt = PlayerItemFinderHelpers.FindInventoryChanges(player, this.PrevMouseInfo, this.PrevInventoryInfos); changesAt = ItemFinderHelpers.FilterByTypes(changesAt, possiblePurchases); if (changesAt.Count == 1) { foreach (var entry in changesAt) { if (entry.Key == -1) { item = Main.mouseItem; } else { item = player.inventory[entry.Key]; } if (item != null) { // Must be a false positive? if (lastBuyItem != null && lastBuyItem.type != item.type) { item = null; } else { //stack = entry.Value.Value; break; } } } } } if (item == null) { if (lastBuyItem != null) { var vendor = this.GetOrCreateVendor(WorldHelpers.GetUniqueIdForCurrentWorld(true), talkNpc.type); int value = (int)vendor.GetPriceOf(lastBuyItem.type); if ((spent % value) == 0) { item = lastBuyItem; stack = (int)(spent / value); } } } if (item != null) { this.BoughtFrom(player, talkNpc, item, stack); } return(item); }
public static Item GetFuelItemFromInventory(Player player) { return(PlayerItemFinderHelpers.FindFirstOfPossessedItemFor(player, new HashSet <int> { ItemID.DD2ElderCrystal }, false)); }
//////////////// private string onGiveMaskButtonClick() { var mymod = (TheLunaticMod)this.mod; var myworld = ModContent.GetInstance <TheLunaticWorld>(); if (myworld.MaskLogic == null) { throw new ModHelpersException("Mask logic not initialized."); } Player player = Main.player[Main.myPlayer]; var remainingMasks = myworld.MaskLogic.GetRemainingVanillaMasks(); if (remainingMasks.Count == 0) { return("I need no more masks."); } bool isCustom = false; bool isGiven = false; Item mask = PlayerItemFinderHelpers.FindFirstOfPossessedItemFor(player, remainingMasks, false); if (mask == null) { mask = PlayerItemFinderHelpers.FindFirstOfPossessedItemFor(player, new HashSet <int> { ModContent.ItemType <CustomBossMaskItem>() }, false); isCustom = mask != null; isGiven = isCustom && myworld.MaskLogic.DoesLoonyHaveThisMask(mask); } if (mask == null || isGiven) { if (mask == null) { mask = PlayerItemFinderHelpers.FindFirstOfPossessedItemFor(player, MaskLogic.AllVanillaMasks, false); } string msg, hint = this.GetHint(); if (mask == null) { msg = "Ehehe, good one! But seriously, you DO have a mask... don't you? ...please?\n" + hint; } else { msg = "Very nice, but I've already got a " + MaskLogic.GetMaskDisplayName(mask) + ".\n" + hint; } if (!myworld.GameLogic.HasGameEnded && mymod.Config.LoonyIndicatesDaysRemaining) { int daysLeft = mymod.Config.DaysUntil - (myworld.GameLogic.HalfDaysElapsed / 2); msg += "\n \nDays remaining: " + daysLeft; } return(msg); } if (myworld.MaskLogic.IsValidMask(mask)) { int remaining = remainingMasks.Count() - (isCustom?0:1); string status, msg; if (mymod.Config.MoonLordMaskWins) { if (mask.type == ItemID.BossMaskMoonlord) { status = "At last! Seems this world gets to live a little bit longer. I won't need this anymore. Enjoy!"; UmbralCowlItem.Give(player); } else { status = "I require more masks!"; } } else { if (remaining >= 2) { status = "I require " + remaining + " more masks."; } else if (remaining == 1) { status = "I require one final mask."; } else { if (mymod.Config.LoonyGivesCompletionReward) { status = "At last! Seems this world gets to live a little bit longer. I won't need this anymore. Enjoy!"; UmbralCowlItem.Give(player); } else { status = "At last! Seems this world gets to live a little bit longer. Be sure to celebrate by buying some of my delicious treats!"; } } } msg = this.GiveMaskReply(mask); myworld.MaskLogic.GiveMaskToLoony(player, mask); return(msg + "\n\n" + status); } else { // 1: Display info, 2: Fast time, 4: Reset, 8: Reset win, 16: Skip to signs, 32: Display net info if (mymod.Config.DebugModeInfo) { LogHelpers.Log("DEBUG cheater detected. " + mask.Name); } if (mymod.Config.LoonyShunsCheaters) { player.GetModPlayer <TheLunaticPlayer>().SetCheater(); return("You... you aren't supposed to even have this. Bye."); } else { return("I don't know how you got this, but I'm not ready for it yet."); } } }