TModLoader v1.4.4.9
TModLoader source code documentation
Loading...
Searching...
No Matches

◆ ItemCheck_CheckCanUse()

bool Terraria.Player.ItemCheck_CheckCanUse ( Item sItem)
inlineprivate

Definition at line 52757 of file Player.cs.

52758 {
52759 if (sItem.IsAir || !CombinedHooks.CanUseItem(this, sItem))
52760 {
52761 return false;
52762 }
52763 int num = whoAmI;
52764 bool flag = true;
52765 int num2 = (int)((float)Main.mouseX + Main.screenPosition.X) / 16;
52766 int num3 = (int)((float)Main.mouseY + Main.screenPosition.Y) / 16;
52767 if (gravDir == -1f)
52768 {
52769 num3 = (int)(Main.screenPosition.Y + (float)Main.screenHeight - (float)Main.mouseY) / 16;
52770 }
52771 if (sItem.type == 3335 && (extraAccessory || !Main.expertMode))
52772 {
52773 flag = false;
52774 }
52775 if (pulley && sItem.fishingPole > 0)
52776 {
52777 flag = false;
52778 }
52779 if (pulley && ItemID.Sets.IsAKite[sItem.type])
52780 {
52781 flag = false;
52782 }
52784 {
52785 flag = false;
52786 }
52787 if (sItem.type == 5451 && ownedProjectileCounts[1020] > 0)
52788 {
52789 flag = false;
52790 }
52791 if ((sItem.type == 3611 || sItem.type == 3625) && wireOperationsCooldown > 0)
52792 {
52793 flag = false;
52794 }
52796 {
52797 flag = false;
52798 }
52800 {
52801 flag = false;
52802 }
52803 int pushYUp;
52804 if (sItem.shoot > -1 && ProjectileID.Sets.IsADD2Turret[sItem.shoot] && DD2Event.Ongoing && num == Main.myPlayer)
52805 {
52807 if (WouldSpotOverlapWithSentry(worldX, worldY, sItem.shoot == 688 || sItem.shoot == 689 || sItem.shoot == 690))
52808 {
52809 flag = false;
52810 }
52811 }
52812 if (sItem.shoot > -1 && ProjectileID.Sets.IsADD2Turret[sItem.shoot] && num == Main.myPlayer)
52813 {
52815 worldX2 /= 16;
52816 worldY2 /= 16;
52817 worldY2--;
52818 if (sItem.shoot == 688 || sItem.shoot == 689 || sItem.shoot == 690)
52819 {
52820 if (Collision.SolidTiles(worldX2, worldX2, worldY2 - 2, worldY2))
52821 {
52822 flag = false;
52823 }
52824 }
52825 else if (WorldGen.SolidTile(worldX2, worldY2))
52826 {
52827 flag = false;
52828 }
52829 }
52830 if (wet && (sItem.shoot == 85 || sItem.shoot == 15 || sItem.shoot == 34))
52831 {
52832 flag = false;
52833 }
52834 if (sItem.makeNPC > 0 && !NPC.CanReleaseNPCs(whoAmI))
52835 {
52836 flag = false;
52837 }
52838 if (whoAmI == Main.myPlayer && sItem.type == 603 && !Main.runningCollectorsEdition)
52839 {
52840 flag = false;
52841 }
52842 if (sItem.type == 1071 || sItem.type == 1072)
52843 {
52844 bool flag2 = false;
52845 for (int i = 0; i < 58; i++)
52846 {
52847 if (inventory[i].PaintOrCoating)
52848 {
52849 flag2 = true;
52850 break;
52851 }
52852 }
52853 if (!flag2)
52854 {
52855 flag = false;
52856 }
52857 }
52858 if (noItems)
52859 {
52860 flag = false;
52861 }
52862 if (sItem.tileWand > 0)
52863 {
52864 int tileWand = sItem.tileWand;
52865 flag = false;
52866 for (int j = 0; j < 58; j++)
52867 {
52868 if (tileWand == inventory[j].type && inventory[j].stack > 0)
52869 {
52870 flag = true;
52871 break;
52872 }
52873 }
52874 }
52875 if (sItem.shoot == 6 || sItem.shoot == 19 || sItem.shoot == 33 || sItem.shoot == 52 || sItem.shoot == 113 || sItem.shoot == 320 || sItem.shoot == 333 || sItem.shoot == 383 || sItem.shoot == 491 || sItem.shoot == 867 || sItem.shoot == 902 || sItem.shoot == 866)
52876 {
52877 for (int k = 0; k < 1000; k++)
52878 {
52879 if (Main.projectile[k].active && Main.projectile[k].owner == Main.myPlayer && Main.projectile[k].type == sItem.shoot)
52880 {
52881 flag = false;
52882 }
52883 }
52884 }
52885 if (sItem.shoot == 106)
52886 {
52887 int num4 = 0;
52888 for (int l = 0; l < 1000; l++)
52889 {
52890 if (Main.projectile[l].active && Main.projectile[l].owner == Main.myPlayer && Main.projectile[l].type == sItem.shoot)
52891 {
52892 num4++;
52893 }
52894 }
52895 if (num4 >= 6)
52896 {
52897 flag = false;
52898 }
52899 }
52900 if (sItem.shoot == 272)
52901 {
52902 int num5 = 0;
52903 for (int m = 0; m < 1000; m++)
52904 {
52905 if (Main.projectile[m].active && Main.projectile[m].owner == Main.myPlayer && Main.projectile[m].type == sItem.shoot)
52906 {
52907 num5++;
52908 }
52909 }
52910 if (num5 >= 10)
52911 {
52912 flag = false;
52913 }
52914 }
52915 if (sItem.shoot == 1000)
52916 {
52917 int num6 = 0;
52918 for (int n = 0; n < 1000; n++)
52919 {
52920 if (Main.projectile[n].active && Main.projectile[n].owner == Main.myPlayer && Main.projectile[n].type == sItem.shoot)
52921 {
52922 num6++;
52923 }
52924 }
52925 if (num6 >= 3)
52926 {
52927 flag = false;
52928 }
52929 }
52930 if (sItem.shoot == 13 || sItem.shoot == 32 || (sItem.shoot >= 230 && sItem.shoot <= 235) || sItem.shoot == 315 || sItem.shoot == 331 || sItem.shoot == 372)
52931 {
52932 for (int num7 = 0; num7 < 1000; num7++)
52933 {
52934 if (Main.projectile[num7].active && Main.projectile[num7].owner == Main.myPlayer && Main.projectile[num7].type == sItem.shoot && Main.projectile[num7].ai[0] != 2f)
52935 {
52936 flag = false;
52937 }
52938 }
52939 }
52940 if (sItem.shoot == 332)
52941 {
52942 int num8 = 0;
52943 for (int num9 = 0; num9 < 1000; num9++)
52944 {
52945 if (Main.projectile[num9].active && Main.projectile[num9].owner == Main.myPlayer && Main.projectile[num9].type == sItem.shoot && Main.projectile[num9].ai[0] != 2f)
52946 {
52947 num8++;
52948 }
52949 }
52950 if (num8 >= 3)
52951 {
52952 flag = false;
52953 }
52954 }
52955 if (sItem.potion && potionDelay > 0)
52956 {
52957 flag = false;
52958 }
52959 if (sItem.mana > 0 && silence)
52960 {
52961 flag = false;
52962 }
52963 if (sItem.mana > 0 && flag)
52964 {
52966 }
52967 if (sItem.type == 43 && Main.IsItDay())
52968 {
52969 flag = false;
52970 }
52971 if (sItem.type == 544 && Main.IsItDay())
52972 {
52973 flag = false;
52974 }
52975 if (sItem.type == 556 && Main.IsItDay())
52976 {
52977 flag = false;
52978 }
52979 if (sItem.type == 557 && Main.IsItDay())
52980 {
52981 flag = false;
52982 }
52983 if (sItem.type == 70 && !ZoneCorrupt)
52984 {
52985 flag = false;
52986 }
52987 if (sItem.type == 1133 && !ZoneJungle)
52988 {
52989 flag = false;
52990 }
52991 if (sItem.type == 5120 && !ZoneSnow)
52992 {
52993 flag = false;
52994 }
52995 if (sItem.type == 1844 && (Main.dayTime || Main.pumpkinMoon || Main.snowMoon || DD2Event.Ongoing))
52996 {
52997 flag = false;
52998 }
52999 if (sItem.type == 1958 && (Main.dayTime || Main.pumpkinMoon || Main.snowMoon || DD2Event.Ongoing))
53000 {
53001 flag = false;
53002 }
53003 if (sItem.type == 2767 && (!Main.dayTime || Main.eclipse || !Main.hardMode))
53004 {
53005 flag = false;
53006 }
53007 if (sItem.type == 4271 && (Main.dayTime || Main.bloodMoon))
53008 {
53009 flag = false;
53010 }
53011 if (sItem.type == 3601 && (!NPC.downedGolemBoss || !Main.hardMode || NPC.AnyDanger() || NPC.AnyoneNearCultists()))
53012 {
53013 flag = false;
53014 }
53015 if (!SummonItemCheck(sItem))
53016 {
53017 flag = false;
53018 }
53019 if (sItem.shoot == 17 && flag && num == Main.myPlayer && !ItemCheck_IsValidDirtRodTarget(Main.tile[num2, num3]))
53020 {
53021 flag = false;
53022 }
53023 if (sItem.chlorophyteExtractinatorConsumable && flag && num == Main.myPlayer)
53024 {
53025 Tile tile = Main.tile[num2, num3];
53026 if (!tile.active() || (tile.type != 642 && tile.type != 219))
53027 {
53028 flag = false;
53029 }
53030 }
53031 if (sItem.fishingPole > 0)
53032 {
53034 }
53036 {
53038 }
53039 if (sItem.shoot == 17 && flag && num == Main.myPlayer)
53040 {
53041 if (ItemCheck_IsValidDirtRodTarget(Main.tile[num2, num3]))
53042 {
53044 if (!Main.tile[num2, num3].active())
53045 {
53046 if (Main.netMode == 1)
53047 {
53048 NetMessage.SendData(17, -1, -1, null, 4, num2, num3);
53049 }
53050 }
53051 else
53052 {
53053 flag = false;
53054 }
53055 }
53056 else
53057 {
53058 flag = false;
53059 }
53060 }
53061 if (flag)
53062 {
53063 flag = HasAmmo(sItem, flag);
53064 }
53065 return flag;
53066 }
bool wet
The Entity is currently in water. Projectile: Affects movement speed and some projectiles die when ...
Definition Entity.cs:57
int whoAmI
The index of this Entity within its specific array. These arrays track the entities in the world....
Definition Entity.cs:16
static bool[] HasAProjectileThatHasAUsabilityCheck
If true for a given item type (F:Terraria.Item.type), then that item will run M:Terraria....
Definition ItemID.cs:295
static bool[] IsAKite
If true for a given item type (F:Terraria.Item.type), then that item is a kite. Kites cannot be use...
Definition ItemID.cs:264
static bool[] IsADD2Turret
Iff true for a given projectile type (F:Terraria.Projectile.type), then that projectile is counted as...
static bool CanUseItem(Player player, Item item)
bool ItemCheck_CheckUsabilityOfProjectiles(bool canUse)
Definition Player.cs:53068
static bool WouldSpotOverlapWithSentry(int worldX, int worldY, bool lightningAura)
Definition Player.cs:53560
bool downedDD2EventAnyDifficulty
Definition Player.cs:2066
bool HasAmmo(Item sItem)
Whether or not the player has ammunition available for the given weapon.
Definition Player.cs:53974
int wireOperationsCooldown
Definition Player.cs:2966
void FindSentryRestingSpot(int checkProj, out int worldX, out int worldY, out int pushYUp)
Definition Player.cs:53599
bool CheckDD2CrystalPaymentLock(Item item)
Definition Player.cs:41533
bool extraAccessory
Definition Player.cs:1071
bool SummonItemCheck(Item item)
Definition Player.cs:41314
bool ItemCheck_CheckFishingBobbers(bool canUse)
Definition Player.cs:53081
int[] ownedProjectileCounts
Provides efficient access to the number of projectiles of the specified type owned by this player cur...
Definition Player.cs:3105
static bool ItemCheck_IsValidDirtRodTarget(Tile t)
Definition Player.cs:53248
Item[] inventory
The player's normal inventory. Indexes 0-9 hold the hotbar items, 10-49 the rest of the main inventor...
Definition Player.cs:1767
bool ItemCheck_PayMana(Item sItem, bool canUse)
Definition Player.cs:53261

References Terraria.Tile.active(), Terraria.NPC.AnyDanger(), Terraria.NPC.AnyoneNearCultists(), Terraria.Main.bloodMoon, Terraria.NPC.CanReleaseNPCs(), Terraria.ModLoader.CombinedHooks.CanUseItem(), Terraria.Player.CheckDD2CrystalPaymentLock(), Terraria.Main.dayTime, Terraria.Player.downedDD2EventAnyDifficulty, Terraria.NPC.downedGolemBoss, Terraria.Main.eclipse, Terraria.Main.expertMode, Terraria.Player.extraAccessory, Terraria.Player.FindSentryRestingSpot(), Terraria.Player.gravDir, Terraria.Main.hardMode, Terraria.Player.HasAmmo(), Terraria.ID.ItemID.Sets.HasAProjectileThatHasAUsabilityCheck, Terraria.Player.inventory, Terraria.ID.ProjectileID.Sets.IsADD2Turret, Terraria.ID.ItemID.Sets.IsAKite, Terraria.Main.IsItDay(), Terraria.Player.ItemCheck_CheckFishingBobbers(), Terraria.Player.ItemCheck_CheckUsabilityOfProjectiles(), Terraria.Player.ItemCheck_IsValidDirtRodTarget(), Terraria.Player.ItemCheck_PayMana(), Terraria.WorldGen.KillTile(), Terraria.Main.mouseY, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Player.noItems, Terraria.GameContent.Events.DD2Event.Ongoing, Terraria.Player.ownedProjectileCounts, Terraria.Player.potionDelay, Terraria.Main.projectile, Terraria.Player.pulley, Terraria.Main.pumpkinMoon, Terraria.Main.runningCollectorsEdition, Terraria.Main.screenPosition, Terraria.NetMessage.SendData(), Terraria.Player.silence, Terraria.Main.snowMoon, Terraria.WorldGen.SolidTile(), Terraria.Collision.SolidTiles(), Terraria.Player.SummonItemCheck(), Terraria.Main.tile, Terraria.GameContent.UI.WiresUI.Settings.ToolMode, Terraria.Tile.type, Terraria.Entity.wet, Terraria.Entity.whoAmI, Terraria.Player.wireOperationsCooldown, Terraria.Player.WouldSpotOverlapWithSentry(), Terraria.Player.ZoneCorrupt, Terraria.Player.ZoneJungle, and Terraria.Player.ZoneSnow.

Referenced by Terraria.Player.ItemCheck_Inner(), Terraria.Player.QuickBuff(), Terraria.Player.QuickGrapple(), Terraria.Player.QuickHeal(), Terraria.Player.QuickMana(), and Terraria.Player.QuickMount().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: