public void UseDrill(Player mountedPlayer)
{
if (this._type != 8 || !this._abilityActive)
return;
Mount.DrillMountData data = (Mount.DrillMountData)this._mountSpecificData;
if (data.beamCooldown != 0)
return;
for (int index1 = 0; index1 < data.beams.Length; ++index1)
{
Mount.DrillBeam drillBeam = data.beams[index1];
if (drillBeam.cooldown == 0)
{
Point16 point16 = this.DrillSmartCursor(mountedPlayer, data);
if (point16 != Point16.NegativeOne)
{
drillBeam.curTileTarget = point16;
int pickPower = Mount.drillPickPower;
mountedPlayer.PickTile((int)point16.X, (int)point16.Y, pickPower);
Vector2 Position = new Vector2((float)((int)point16.X << 4) + 8f, (float)((int)point16.Y << 4) + 8f);
float num1 = Utils.ToRotation(Position - mountedPlayer.Center);
for (int index2 = 0; index2 < 2; ++index2)
{
float num2 = num1 + (float)((Main.rand.Next(2) == 1 ? -1.0 : 1.0) * 1.57079637050629);
float num3 = (float)(Main.rand.NextDouble() * 2.0 + 2.0);
Vector2 vector2 = new Vector2((float)Math.Cos((double)num2) * num3, (float)Math.Sin((double)num2) * num3);
int index3 = Dust.NewDust(Position, 0, 0, 230, vector2.X, vector2.Y, 0, new Color(), 1f);
Main.dust[index3].noGravity = true;
Main.dust[index3].customData = (object)mountedPlayer;
}
Tile.SmoothSlope((int)point16.X, (int)point16.Y, true);
drillBeam.cooldown = Mount.drillPickTime;
break;
}
break;
}
}
data.beamCooldown = Mount.drillBeamCooldownMax;
}