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

◆ HoverOverNPCs()

void Terraria.Main.HoverOverNPCs ( Microsoft::Xna::Framework::Rectangle mouseRectangle)
inlineprivate

Definition at line 40007 of file Main.cs.

40008 {
40009 Player player = Main.player[myPlayer];
40010 for (int i = 0; i < 200; i++)
40011 {
40012 NPC nPC = npc[i];
40013 if (!(nPC.active & (nPC.shimmerTransparency == 0f || nPC.CanApplyHunterPotionEffects())))
40014 {
40015 continue;
40016 }
40017 int type = nPC.type;
40018 LoadNPC(type);
40019 nPC.position += nPC.netOffset;
40020 Microsoft.Xna.Framework.Rectangle value = new Microsoft.Xna.Framework.Rectangle((int)nPC.Bottom.X - nPC.frame.Width / 2, (int)nPC.Bottom.Y - nPC.frame.Height, nPC.frame.Width, nPC.frame.Height);
40021 if (nPC.type >= 87 && nPC.type <= 92)
40022 {
40023 value = new Microsoft.Xna.Framework.Rectangle((int)((double)nPC.position.X + (double)nPC.width * 0.5 - 32.0), (int)((double)nPC.position.Y + (double)nPC.height * 0.5 - 32.0), 64, 64);
40024 }
40025 bool flag = mouseRectangle.Intersects(value);
40026 bool flag2 = flag || (SmartInteractShowingGenuine && SmartInteractNPC == i);
40027 if (flag2 && ((nPC.type != 85 && nPC.type != 341 && nPC.type != 629 && nPC.aiStyle != 87) || nPC.ai[0] != 0f) && nPC.type != 488)
40028 {
40029 if (nPC.type == 685)
40030 {
40031 player.cursorItemIconEnabled = true;
40032 player.cursorItemIconID = 327;
40033 player.cursorItemIconText = "";
40034 player.noThrow = 2;
40035 if (!player.dead)
40036 {
40039 {
40040 npcChatRelease = false;
40042 {
40043 player.releaseInventory = false;
40044 }
40045 if (player.talkNPC != i && !player.tileInteractionHappened && TryFreeingElderSlime(i))
40046 {
40047 NPC.TransformElderSlime(i);
40049 }
40050 }
40051 }
40052 }
40053 else
40054 {
40056 if (nPC.townNPC || nPC.type == 105 || nPC.type == 106 || nPC.type == 123 || nPC.type == 354 || nPC.type == 376 || nPC.type == 579 || nPC.type == 453 || nPC.type == 589)
40057 {
40058 Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle((int)(player.position.X + (float)(player.width / 2) - (float)(Player.tileRangeX * 16)), (int)(player.position.Y + (float)(player.height / 2) - (float)(Player.tileRangeY * 16)), Player.tileRangeX * 16 * 2, Player.tileRangeY * 16 * 2);
40059 Microsoft.Xna.Framework.Rectangle value2 = new Microsoft.Xna.Framework.Rectangle((int)nPC.position.X, (int)nPC.position.Y, nPC.width, nPC.height);
40060 if (rectangle.Intersects(value2))
40061 {
40062 flag3 = true;
40063 }
40064 }
40065 if (player.ownedProjectileCounts[651] > 0)
40066 {
40067 flag3 = false;
40068 }
40069 if (flag3 && !player.dead)
40070 {
40072 HoveringOverAnNPC = true;
40075 {
40076 npcChatRelease = false;
40078 {
40079 player.releaseInventory = false;
40080 }
40081 if (player.talkNPC != i && !player.tileInteractionHappened)
40082 {
40084 SetNPCShopIndex(0);
40085 InGuideCraftMenu = false;
40086 player.dropItemCheck();
40088 player.sign = -1;
40089 editSign = false;
40090 player.SetTalkNPC(i);
40091 playerInventory = false;
40092 player.chest = -1;
40093 Recipe.FindRecipes();
40094 npcChatText = nPC.GetChat();
40096 }
40097 }
40098 }
40099 if (flag && !player.mouseInterface)
40100 {
40101 player.cursorItemIconEnabled = false;
40102 string text = nPC.GivenOrTypeName;
40103 int num = i;
40104 if (nPC.realLife >= 0)
40105 {
40106 num = nPC.realLife;
40107 }
40108 if (npc[num].lifeMax > 1 && !npc[num].dontTakeDamage)
40109 {
40110 text = text + ": " + npc[num].life + "/" + npc[num].lifeMax;
40111 }
40113 mouseText = true;
40114 nPC.position -= nPC.netOffset;
40115 break;
40116 }
40117 if (flag2)
40118 {
40119 nPC.position -= nPC.netOffset;
40120 break;
40121 }
40122 }
40123 }
40124 nPC.position -= nPC.netOffset;
40125 }
40126 }
static void PlaySound(int type, Vector2 position, int style=1)
void MouseTextHackZoom(string text, string buffTooltip=null)
Definition Main.cs:18714
static string npcChatText
Definition Main.cs:1825
static int npcChatCornerItem
Definition Main.cs:1837
static bool npcChatRelease
Definition Main.cs:1813
void LoadNPC(int i)
Definition Main.cs:56032
static bool SmartInteractShowingGenuine
Definition Main.cs:2155
static bool TryFreeingElderSlime(int npcIndex)
Definition Main.cs:40128
static int myPlayer
Definition Main.cs:1801
static bool editSign
Definition Main.cs:1815
static bool mouseRight
Definition Main.cs:616
static void SetNPCShopIndex(int index)
Definition Main.cs:37260
static void CancelHairWindow()
Definition Main.cs:40662
static int SmartInteractNPC
Definition Main.cs:2163
static bool mouseText
Definition Main.cs:2453
int currentNPCShowingChatBubble
Definition Main.cs:2000
static bool InGuideCraftMenu
Definition Main.cs:1906
static NPC[] npc
Definition Main.cs:1685
static bool playerInventory
Definition Main.cs:1759
static bool HoveringOverAnNPC
Definition Main.cs:2447
static Player[] player
Definition Main.cs:1803

References Terraria.Main.CancelHairWindow(), Terraria.Main.currentNPCShowingChatBubble, Terraria.Main.editSign, Terraria.Recipe.FindRecipes(), Terraria.Main.HoveringOverAnNPC, System.Text.RegularExpressions.i, Terraria.Main.InGuideCraftMenu, Terraria.Main.LoadNPC(), Terraria.Main.mouseRight, Terraria.Main.mouseText, Terraria.Main.MouseTextHackZoom(), Terraria.Main.myPlayer, Terraria.Main.npc, Terraria.Main.npcChatCornerItem, Terraria.Main.npcChatRelease, Terraria.Main.npcChatText, Terraria.Main.player, Terraria.Main.playerInventory, Terraria.Audio.SoundEngine.PlaySound(), Terraria.Main.SetNPCShopIndex(), Terraria.GameInput.PlayerInput.SetZoom_MouseInWorld(), Terraria.Main.SmartInteractNPC, Terraria.Main.SmartInteractShowingGenuine, System.text, Terraria.Player.tileRangeX, Terraria.Player.tileRangeY, Terraria.NPC.TransformElderSlime(), Terraria.Main.TryFreeingElderSlime(), System.type, Terraria.GameInput.PlayerInput.UsingGamepad, and System.value.

Referenced by Terraria.Main.DrawMouseOver().