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

◆ GetShimmered()

void Terraria.Item.GetShimmered ( )
inlineprivate

Definition at line 48073 of file Item.cs.

48074 {
48078 {
48079 switch (shimmerEquivalentType)
48080 {
48081 case 72:
48082 stack *= 100;
48083 break;
48084 case 73:
48085 stack *= 10000;
48086 break;
48087 case 74:
48088 if (stack > 1)
48089 {
48090 stack = 1;
48091 }
48092 stack *= 1000000;
48093 break;
48094 }
48095 Main.player[Main.myPlayer].AddCoinLuck(base.Center, stack);
48096 NetMessage.SendData(146, -1, -1, null, 1, (int)base.Center.X, (int)base.Center.Y, stack);
48097 type = 0;
48098 stack = 0;
48099 }
48100 else if (shimmerEquivalentType == 1326 && NPC.downedMoonlord)
48101 {
48102 int num = stack;
48103 SetDefaults(5335);
48104 stack = num;
48105 shimmered = true;
48106 }
48107 else if (shimmerEquivalentType == 779 && NPC.downedMoonlord)
48108 {
48109 int num2 = stack;
48110 SetDefaults(5134);
48111 stack = num2;
48112 shimmered = true;
48113 }
48114 else if (shimmerEquivalentType == 3031 && NPC.downedMoonlord)
48115 {
48116 int num3 = stack;
48117 SetDefaults(5364);
48118 stack = num3;
48119 shimmered = true;
48120 }
48121 else if (shimmerEquivalentType == 5364 && NPC.downedMoonlord)
48122 {
48123 int num4 = stack;
48124 SetDefaults(3031);
48125 stack = num4;
48126 shimmered = true;
48127 }
48128 else if (shimmerEquivalentType == 3461)
48129 {
48130 short num5 = 3461;
48131 num5 = Main.GetMoonPhase() switch
48132 {
48133 MoonPhase.QuarterAtRight => 5407,
48134 MoonPhase.HalfAtRight => 5405,
48135 MoonPhase.ThreeQuartersAtRight => 5404,
48136 MoonPhase.Full => 5408,
48137 MoonPhase.ThreeQuartersAtLeft => 5401,
48138 MoonPhase.HalfAtLeft => 5403,
48139 MoonPhase.QuarterAtLeft => 5402,
48140 _ => 5406,
48141 };
48142 int num6 = stack;
48144 stack = num6;
48145 shimmered = true;
48146 }
48147 else if (createTile == 139)
48148 {
48149 int num7 = stack;
48150 SetDefaults(576);
48151 stack = num7;
48152 shimmered = true;
48153 }
48155 {
48156 int num8 = stack;
48158 stack = num8;
48159 shimmered = true;
48160 }
48161 else if (type == 4986)
48162 {
48163 if (NPC.unlockedSlimeRainbowSpawn)
48164 {
48165 return;
48166 }
48167 NPC.unlockedSlimeRainbowSpawn = true;
48168 NetMessage.SendData(7);
48169 int num9 = NPC.NewNPC(GetNPCSource_FromThis(), (int)base.Center.X + 4, (int)base.Center.Y, 681);
48170 if (num9 >= 0)
48171 {
48172 NPC obj = Main.npc[num9];
48173 obj.velocity = velocity;
48174 obj.netUpdate = true;
48175 obj.shimmerTransparency = 1f;
48176 NetMessage.SendData(146, -1, -1, null, 2, num9);
48177 }
48178 WorldGen.CheckAchievement_RealEstateAndTownSlimes();
48179 stack--;
48180 if (stack <= 0)
48181 {
48182 type = 0;
48183 }
48184 }
48185 else if (makeNPC > 0)
48186 {
48187 int num10 = 50;
48189 int num11 = NPC.GetAvailableAmountOfNPCsToSpawnUpToSlot(stack, highestNPCSlotIndexWeWillPick);
48190 while (num10 > 0 && num11 > 0 && stack > 0)
48191 {
48192 num10--;
48193 num11--;
48194 stack--;
48195 int num12 = -1;
48196 num12 = ((NPCID.Sets.ShimmerTransformToNPC[makeNPC] < 0) ? NPC.ReleaseNPC((int)base.Center.X, (int)base.Bottom.Y, makeNPC, placeStyle, Main.myPlayer) : NPC.ReleaseNPC((int)base.Center.X, (int)base.Bottom.Y, NPCID.Sets.ShimmerTransformToNPC[makeNPC], 0, Main.myPlayer));
48197 if (num12 >= 0)
48198 {
48199 Main.npc[num12].shimmerTransparency = 1f;
48200 NetMessage.SendData(146, -1, -1, null, 2, num12);
48201 }
48202 }
48203 shimmered = true;
48204 if (stack <= 0)
48205 {
48206 type = 0;
48207 }
48208 }
48209 else if (decraftingRecipeIndex >= 0)
48210 {
48211 int num13 = FindDecraftAmount();
48212 Recipe recipe = Main.recipe[decraftingRecipeIndex];
48213 int num14 = 0;
48214 bool flag = recipe.requiredItem[1].stack > 0;
48215 IEnumerable<Item> enumerable = recipe.requiredItem;
48216 if (recipe.customShimmerResults != null)
48217 {
48218 enumerable = recipe.customShimmerResults;
48219 }
48220 int num15 = 0;
48221 foreach (Item item2 in enumerable)
48222 {
48223 if (item2.type <= 0)
48224 {
48225 break;
48226 }
48227 num15++;
48228 int num16 = num13 * item2.stack;
48229 if (recipe.alchemy)
48230 {
48231 for (int num17 = num16; num17 > 0; num17--)
48232 {
48233 if (Main.rand.Next(3) == 0)
48234 {
48235 num16--;
48236 }
48237 }
48238 }
48239 while (num16 > 0)
48240 {
48241 int num18 = num16;
48242 if (num18 > 9999)
48243 {
48244 num18 = 9999;
48245 }
48246 num16 -= num18;
48247 int num19 = NewItem(GetItemSource_Misc(8), (int)position.X, (int)position.Y, width, height, item2.type);
48248 Item item = Main.item[num19];
48249 item.stack = num18;
48250 item.shimmerTime = 1f;
48251 item.shimmered = true;
48252 item.shimmerWet = true;
48253 item.wet = true;
48254 item.velocity *= 0.1f;
48255 item.playerIndexTheItemIsReservedFor = Main.myPlayer;
48256 if (flag)
48257 {
48258 item.velocity.X = 1f * (float)num15;
48259 item.velocity.X *= 1f + (float)num15 * 0.05f;
48260 if (num14 % 2 == 0)
48261 {
48262 item.velocity.X *= -1f;
48263 }
48264 }
48265 NetMessage.SendData(145, -1, -1, null, num19, 1f);
48266 }
48267 }
48268 stack -= num13 * recipe.createItem.stack;
48269 if (stack <= 0)
48270 {
48271 stack = 0;
48272 type = 0;
48273 }
48274 }
48275 if (stack > 0)
48276 {
48277 shimmerTime = 1f;
48278 }
48279 else
48280 {
48281 shimmerTime = 0f;
48282 }
48283 shimmerWet = true;
48284 wet = true;
48285 velocity *= 0.1f;
48286 if (Main.netMode == 0)
48287 {
48288 ShimmerEffect(base.Center);
48289 }
48290 else
48291 {
48292 NetMessage.SendData(146, -1, -1, null, 0, (int)base.Center.X, (int)base.Center.Y);
48293 NetMessage.SendData(145, -1, -1, null, whoAmI, 1f);
48294 }
48296 if (stack == 0)
48297 {
48298 makeNPC = -1;
48299 active = false;
48300 }
48301 }
bool shimmerWet
Definition Entity.cs:32
Vector2 velocity
Definition Entity.cs:16
Vector2 position
Definition Entity.cs:14
static bool[] CommonCoin
Definition ItemID.cs:1046
static int[] ShimmerTransformToItem
Definition ItemID.cs:67
static int[] ShimmerTransformToNPC
Definition NPCID.cs:4222
static void ShimmerEffect(Vector2 shimmerPositon)
Definition Item.cs:48303
int stack
Definition Item.cs:149
int GetShimmerEquivalentType()
Definition Item.cs:48064
int createTile
Definition Item.cs:161
IEntitySource GetNPCSource_FromThis()
Definition Item.cs:459
int FindDecraftAmount()
Definition Item.cs:48054
int placeStyle
Definition Item.cs:165
float shimmerTime
Definition Item.cs:324
IEntitySource GetItemSource_Misc(int itemSourceId)
Definition Item.cs:464
bool shimmered
Definition Item.cs:322
void SetDefaults(int Type=0)
Definition Item.cs:47332
static int NewItem(IEntitySource source, Vector2 pos, Vector2 randomBox, int Type, int Stack=1, bool noBroadcast=false, int prefixGiven=0, bool noGrabDelay=false, bool reverseLookup=false)
Definition Item.cs:49697
short makeNPC
Definition Item.cs:109

References Terraria.Entity.active, Terraria.WorldGen.CheckAchievement_RealEstateAndTownSlimes(), Terraria.ID.ItemID.Sets.CommonCoin, Terraria.Item.createTile, Terraria.Recipe.customShimmerResults, Terraria.NPC.downedMoonlord, Terraria.Item.FindDecraftAmount(), Terraria.NPC.GetAvailableAmountOfNPCsToSpawnUpToSlot(), Terraria.GameContent.ShimmerTransforms.GetDecraftingRecipeIndex(), Terraria.Item.GetItemSource_Misc(), Terraria.Main.GetMoonPhase(), Terraria.Item.GetNPCSource_FromThis(), Terraria.Item.GetShimmerEquivalentType(), Terraria.Entity.height, System.item, Terraria.Main.item, Terraria.Item.makeNPC, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Item.NewItem(), Terraria.NPC.NewNPC(), Terraria.GameContent.Achievements.AchievementsHelper.NotifyProgressionEvent(), Terraria.Main.npc, System.obj, Terraria.Item.placeStyle, Terraria.Main.player, Terraria.Entity.position, Terraria.Main.rand, Terraria.Main.recipe, Terraria.NPC.ReleaseNPC(), Terraria.Recipe.requiredItem, Terraria.NetMessage.SendData(), Terraria.Item.SetDefaults(), Terraria.Item.shimmered, Terraria.Item.ShimmerEffect(), Terraria.Item.shimmerTime, Terraria.ID.ItemID.Sets.ShimmerTransformToItem, Terraria.ID.NPCID.Sets.ShimmerTransformToNPC, Terraria.Entity.shimmerWet, Terraria.Item.stack, Terraria.Item.type, Terraria.NPC.unlockedSlimeRainbowSpawn, Terraria.Entity.velocity, Terraria.Entity.wet, Terraria.Entity.whoAmI, Terraria.Entity.width, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Item.Shimmering().