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

◆ GetPickedUpByMonsters_Money()

void Terraria.Item.GetPickedUpByMonsters_Money ( int i)
inlineprivate

Definition at line 49052 of file Item.cs.

49053 {
49055 for (int j = 0; j < 200; j++)
49056 {
49057 NPC nPC = Main.npc[j];
49058 if (!nPC.active || nPC.lifeMax <= 5 || nPC.friendly || nPC.immortal || nPC.dontTakeDamage || NPCID.Sets.CantTakeLunchMoney[nPC.type])
49059 {
49060 continue;
49061 }
49062 float num = stack;
49063 float num2 = 1f;
49064 if (type == 72)
49065 {
49066 num2 = 100f;
49067 }
49068 if (type == 73)
49069 {
49070 num2 = 10000f;
49071 }
49072 if (type == 74)
49073 {
49074 num2 = 1000000f;
49075 }
49076 num *= num2;
49077 float num3 = nPC.extraValue;
49078 int num4 = nPC.realLife;
49079 if (num4 >= 0 && Main.npc[num4].active)
49080 {
49081 num3 = Main.npc[num4].extraValue;
49082 }
49083 else
49084 {
49085 num4 = -1;
49086 }
49087 if (!(num3 < num) || !(num3 + num < 999000000f))
49088 {
49089 continue;
49090 }
49091 Rectangle rectangle2 = new Rectangle((int)nPC.position.X, (int)nPC.position.Y, nPC.width, nPC.height);
49092 if (rectangle.Intersects(rectangle2))
49093 {
49094 float num5 = (float)Main.rand.Next(50, 76) * 0.01f;
49095 if (type == 71)
49096 {
49097 num5 += (float)Main.rand.Next(51) * 0.01f;
49098 }
49099 if (type == 72)
49100 {
49101 num5 += (float)Main.rand.Next(26) * 0.01f;
49102 }
49103 if (num5 > 1f)
49104 {
49105 num5 = 1f;
49106 }
49107 int num6 = (int)((float)stack * num5);
49108 if (num6 < 1)
49109 {
49110 num6 = 1;
49111 }
49112 if (num6 > stack)
49113 {
49114 num6 = stack;
49115 }
49116 stack -= num6;
49117 int num7 = (int)((float)num6 * num2);
49118 int number = j;
49119 if (num4 >= 0)
49120 {
49121 number = num4;
49122 }
49123 nPC.extraValue += num7;
49124 if (Main.netMode == 0)
49125 {
49126 nPC.moneyPing(position);
49127 }
49128 else
49129 {
49130 NetMessage.SendData(92, -1, -1, null, number, num7, position.X, position.Y);
49131 }
49132 if (stack <= 0)
49133 {
49134 SetDefaults();
49135 active = false;
49136 }
49137 NetMessage.SendData(21, -1, -1, null, i);
49138 }
49139 }
49140 }
Vector2 position
Definition Entity.cs:14
static bool[] CantTakeLunchMoney
Definition NPCID.cs:4113
int stack
Definition Item.cs:149
void SetDefaults(int Type=0)
Definition Item.cs:47332

References Terraria.Entity.active, Terraria.ID.NPCID.Sets.CantTakeLunchMoney, Terraria.Entity.height, Terraria.Main.netMode, Terraria.Main.npc, Terraria.Entity.position, Terraria.Main.rand, Terraria.NetMessage.SendData(), Terraria.Item.SetDefaults(), Terraria.Item.stack, Terraria.Item.type, Terraria.Entity.width, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Item.UpdateItem().