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

◆ ItemCheck_UseBuckets()

void Terraria.Player.ItemCheck_UseBuckets ( Item sItem)
inlineprivate

Definition at line 44095 of file Player.cs.

44096 {
44097 if (((sItem.type < 205 || sItem.type > 207) && sItem.type != 1128 && sItem.type != 3031 && sItem.type != 3032 && sItem.type != 4820 && sItem.type != 4872 && sItem.type != 5302 && sItem.type != 5303 && sItem.type != 5304 && sItem.type != 5364) || noBuilding || !(position.X / 16f - (float)tileRangeX - (float)sItem.tileBoost <= (float)tileTargetX) || !((position.X + (float)width) / 16f + (float)tileRangeX + (float)sItem.tileBoost - 1f >= (float)tileTargetX) || !(position.Y / 16f - (float)tileRangeY - (float)sItem.tileBoost <= (float)tileTargetY) || !((position.Y + (float)height) / 16f + (float)tileRangeY + (float)sItem.tileBoost - 2f >= (float)tileTargetY))
44098 {
44099 return;
44100 }
44101 if (!Main.GamepadDisableCursorItemIcon)
44102 {
44103 cursorItemIconEnabled = true;
44104 Main.ItemIconCacheUpdate(sItem.type);
44105 }
44107 {
44108 return;
44109 }
44110 if ((sItem.type == 205 && !Main.tile[tileTargetX, tileTargetY].shimmer()) || (sItem.type == 3032 && Main.tile[tileTargetX, tileTargetY].liquidType() == 0) || (sItem.type == 3032 && Main.tile[tileTargetX, tileTargetY].shimmer()) || (sItem.type == 4872 && Main.tile[tileTargetX, tileTargetY].lava()) || (sItem.type == 5303 && Main.tile[tileTargetX, tileTargetY].honey()) || sItem.type == 5304)
44111 {
44112 int num = Main.tile[tileTargetX, tileTargetY].liquidType();
44113 int num2 = 0;
44114 for (int i = tileTargetX - 1; i <= tileTargetX + 1; i++)
44115 {
44116 for (int j = tileTargetY - 1; j <= tileTargetY + 1; j++)
44117 {
44118 if (Main.tile[i, j].liquidType() == num)
44119 {
44120 num2 += Main.tile[i, j].liquid;
44121 }
44122 }
44123 }
44124 if (Main.tile[tileTargetX, tileTargetY].liquid <= 0 || (num2 <= 100 && sItem.type != 3032 && sItem.type != 4872 && sItem.type != 5303 && sItem.type != 5304))
44125 {
44126 return;
44127 }
44128 int liquidType = Main.tile[tileTargetX, tileTargetY].liquidType();
44129 if (sItem.type != 3032 && sItem.type != 4872 && sItem.type != 5303 && sItem.type != 5304)
44130 {
44131 if (Main.tile[tileTargetX, tileTargetY].honey() && sItem.type == 205)
44132 {
44133 sItem.stack--;
44135 }
44136 else if (Main.tile[tileTargetX, tileTargetY].lava() && sItem.type == 205)
44137 {
44138 sItem.stack--;
44140 }
44141 else
44142 {
44143 if (Main.tile[tileTargetX, tileTargetY].shimmer() && sItem.type == 205)
44144 {
44145 return;
44146 }
44147 sItem.stack--;
44149 }
44150 }
44151 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
44153 int num3 = Main.tile[tileTargetX, tileTargetY].liquid;
44154 Main.tile[tileTargetX, tileTargetY].liquid = 0;
44155 Main.tile[tileTargetX, tileTargetY].lava(lava: false);
44156 Main.tile[tileTargetX, tileTargetY].honey(honey: false);
44157 WorldGen.SquareTileFrame(tileTargetX, tileTargetY, resetFrame: false);
44158 if (Main.netMode == 1)
44159 {
44160 NetMessage.sendWater(tileTargetX, tileTargetY);
44161 }
44162 else
44163 {
44164 Liquid.AddWater(tileTargetX, tileTargetY);
44165 }
44166 if (num3 >= 255)
44167 {
44168 return;
44169 }
44170 for (int k = tileTargetX - 1; k <= tileTargetX + 1; k++)
44171 {
44172 for (int l = tileTargetY - 1; l <= tileTargetY + 1; l++)
44173 {
44174 if ((k != tileTargetX || l != tileTargetY) && Main.tile[k, l].liquid > 0 && Main.tile[k, l].liquidType() == num)
44175 {
44176 int num4 = Main.tile[k, l].liquid;
44177 if (num4 + num3 > 255)
44178 {
44179 num4 = 255 - num3;
44180 }
44181 num3 += num4;
44182 Main.tile[k, l].liquid -= (byte)num4;
44183 Main.tile[k, l].liquidType(liquidType);
44184 if (Main.tile[k, l].liquid == 0)
44185 {
44186 Main.tile[k, l].lava(lava: false);
44187 Main.tile[k, l].honey(honey: false);
44188 }
44189 WorldGen.SquareTileFrame(k, l, resetFrame: false);
44190 if (Main.netMode == 1)
44191 {
44192 NetMessage.sendWater(k, l);
44193 }
44194 else
44195 {
44196 Liquid.AddWater(k, l);
44197 }
44198 }
44199 }
44200 }
44201 }
44202 else
44203 {
44204 if (Main.tile[tileTargetX, tileTargetY].liquid >= 200 || (Main.tile[tileTargetX, tileTargetY].nactive() && Main.tileSolid[Main.tile[tileTargetX, tileTargetY].type] && !Main.tileSolidTop[Main.tile[tileTargetX, tileTargetY].type] && Main.tile[tileTargetX, tileTargetY].type != 546))
44205 {
44206 return;
44207 }
44208 if (sItem.type == 207 || sItem.type == 4820)
44209 {
44210 if (Main.tile[tileTargetX, tileTargetY].liquid == 0 || Main.tile[tileTargetX, tileTargetY].liquidType() == 1)
44211 {
44212 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
44213 Main.tile[tileTargetX, tileTargetY].liquidType(1);
44214 Main.tile[tileTargetX, tileTargetY].liquid = byte.MaxValue;
44215 WorldGen.SquareTileFrame(tileTargetX, tileTargetY);
44216 if (sItem.type != 4820)
44217 {
44218 sItem.stack--;
44220 }
44222 if (Main.netMode == 1)
44223 {
44224 NetMessage.sendWater(tileTargetX, tileTargetY);
44225 }
44226 }
44227 }
44228 else if (sItem.type == 206 || sItem.type == 3031)
44229 {
44230 if (Main.tile[tileTargetX, tileTargetY].liquid == 0 || Main.tile[tileTargetX, tileTargetY].liquidType() == 0)
44231 {
44232 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
44233 Main.tile[tileTargetX, tileTargetY].liquidType(0);
44234 Main.tile[tileTargetX, tileTargetY].liquid = byte.MaxValue;
44235 WorldGen.SquareTileFrame(tileTargetX, tileTargetY);
44236 if (sItem.type != 3031)
44237 {
44238 sItem.stack--;
44240 }
44242 if (Main.netMode == 1)
44243 {
44244 NetMessage.sendWater(tileTargetX, tileTargetY);
44245 }
44246 }
44247 }
44248 else if (sItem.type == 1128 || sItem.type == 5302)
44249 {
44250 if (Main.tile[tileTargetX, tileTargetY].liquid == 0 || Main.tile[tileTargetX, tileTargetY].liquidType() == 2)
44251 {
44252 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
44253 Main.tile[tileTargetX, tileTargetY].liquidType(2);
44254 Main.tile[tileTargetX, tileTargetY].liquid = byte.MaxValue;
44255 WorldGen.SquareTileFrame(tileTargetX, tileTargetY);
44256 if (sItem.type != 5302)
44257 {
44258 sItem.stack--;
44260 }
44262 if (Main.netMode == 1)
44263 {
44264 NetMessage.sendWater(tileTargetX, tileTargetY);
44265 }
44266 }
44267 }
44268 else if (sItem.type == 5364 && (Main.tile[tileTargetX, tileTargetY].liquid == 0 || Main.tile[tileTargetX, tileTargetY].liquidType() == 3))
44269 {
44270 SoundEngine.PlaySound(19, (int)position.X, (int)position.Y);
44271 Main.tile[tileTargetX, tileTargetY].liquidType(3);
44272 Main.tile[tileTargetX, tileTargetY].liquid = byte.MaxValue;
44273 WorldGen.SquareTileFrame(tileTargetX, tileTargetY);
44275 if (Main.netMode == 1)
44276 {
44277 NetMessage.sendWater(tileTargetX, tileTargetY);
44278 }
44279 }
44280 }
44281 }
static void PlaySound(int type, Vector2 position, int style=1)
Vector2 position
Definition Entity.cs:14
void ApplyItemTime(Item sItem)
Definition Player.cs:3752
bool cursorItemIconEnabled
Definition Player.cs:1489
void PutItemInInventoryFromItemUsage(int type, int theSelectedItem=-1)
Definition Player.cs:40188
bool ItemTimeIsZero
Definition Player.cs:3525
static int tileTargetY
Definition Player.cs:2085
bool noBuilding
Definition Player.cs:799
static int tileRangeX
Definition Player.cs:2075
static int tileTargetX
Definition Player.cs:2083
static int tileRangeY
Definition Player.cs:2077
bool controlUseItem
Definition Player.cs:1391

References Terraria.Liquid.AddWater(), Terraria.Main.GamepadDisableCursorItemIcon, Terraria.Main.ItemIconCacheUpdate(), Terraria.Main.netMode, Terraria.Audio.SoundEngine.PlaySound(), Terraria.NetMessage.sendWater(), Terraria.WorldGen.SquareTileFrame(), Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.