Terraria.Player.PickTile C# (CSharp) Method

PickTile() public method

public PickTile ( int x, int y, int pickPower ) : void
x int
y int
pickPower int
return void
        public void PickTile(int x, int y, int pickPower)
        {
            int num1 = 0;
            int tileId = this.hitTile.HitObject(x, y, 1);
            Tile tile = Main.tile[x, y];
            if (Main.tileNoFail[(int)tile.type])
                num1 = 100;
            int damageAmount = Main.tileDungeon[(int)tile.type] || (int)tile.type == 25 || ((int)tile.type == 58 || (int)tile.type == 117) || (int)tile.type == 203 ? num1 + pickPower / 2 : ((int)tile.type == 48 || (int)tile.type == 232 ? num1 + pickPower / 4 : ((int)tile.type != 226 ? ((int)tile.type == 107 || (int)tile.type == 221 ? num1 + pickPower / 2 : ((int)tile.type == 108 || (int)tile.type == 222 ? num1 + pickPower / 3 : ((int)tile.type == 111 || (int)tile.type == 223 ? num1 + pickPower / 4 : ((int)tile.type != 211 ? num1 + pickPower : num1 + pickPower / 5)))) : num1 + pickPower / 4));
            if ((int)tile.type == 211 && pickPower < 200)
                damageAmount = 0;
            if (((int)tile.type == 25 || (int)tile.type == 203) && pickPower < 65)
                damageAmount = 0;
            else if ((int)tile.type == 117 && pickPower < 65)
                damageAmount = 0;
            else if ((int)tile.type == 37 && pickPower < 50)
                damageAmount = 0;
            else if ((int)tile.type == 404 && pickPower < 65)
                damageAmount = 0;
            else if (((int)tile.type == 22 || (int)tile.type == 204) && ((double)y > Main.worldSurface && pickPower < 55))
                damageAmount = 0;
            else if ((int)tile.type == 56 && pickPower < 65)
                damageAmount = 0;
            else if ((int)tile.type == 58 && pickPower < 65)
                damageAmount = 0;
            else if (((int)tile.type == 226 || (int)tile.type == 237) && pickPower < 210)
                damageAmount = 0;
            else if (Main.tileDungeon[(int)tile.type] && pickPower < 65)
            {
                if ((double)x < (double)Main.maxTilesX * 0.35 || (double)x > (double)Main.maxTilesX * 0.65)
                    damageAmount = 0;
            }
            else if ((int)tile.type == 107 && pickPower < 100)
                damageAmount = 0;
            else if ((int)tile.type == 108 && pickPower < 110)
                damageAmount = 0;
            else if ((int)tile.type == 111 && pickPower < 150)
                damageAmount = 0;
            else if ((int)tile.type == 221 && pickPower < 100)
                damageAmount = 0;
            else if ((int)tile.type == 222 && pickPower < 110)
                damageAmount = 0;
            else if ((int)tile.type == 223 && pickPower < 150)
                damageAmount = 0;
            if ((int)tile.type == 147 || (int)tile.type == 0 || ((int)tile.type == 40 || (int)tile.type == 53) || ((int)tile.type == 57 || (int)tile.type == 59 || ((int)tile.type == 123 || (int)tile.type == 224)) || (int)tile.type == 397)
                damageAmount += pickPower;
            if ((int)tile.type == 165 || Main.tileRope[(int)tile.type] || ((int)tile.type == 199 || Main.tileMoss[(int)tile.type]))
                damageAmount = 100;
            if (this.hitTile.AddDamage(tileId, damageAmount, false) >= 100 && ((int)tile.type == 2 || (int)tile.type == 23 || ((int)tile.type == 60 || (int)tile.type == 70) || ((int)tile.type == 109 || (int)tile.type == 199 || Main.tileMoss[(int)tile.type])))
                damageAmount = 0;
            if ((int)tile.type == 128 || (int)tile.type == 269)
            {
                if ((int)tile.frameX == 18 || (int)tile.frameX == 54)
                {
                    --x;
                    tile = Main.tile[x, y];
                    this.hitTile.UpdatePosition(tileId, x, y);
                }
                if ((int)tile.frameX >= 100)
                {
                    damageAmount = 0;
                    Main.blockMouse = true;
                }
            }
            if ((int)tile.type == 334)
            {
                if ((int)tile.frameY == 0)
                {
                    ++y;
                    tile = Main.tile[x, y];
                    this.hitTile.UpdatePosition(tileId, x, y);
                }
                if ((int)tile.frameY == 36)
                {
                    --y;
                    tile = Main.tile[x, y];
                    this.hitTile.UpdatePosition(tileId, x, y);
                }
                int num2 = (int)tile.frameX;
                bool flag1 = num2 >= 5000;
                bool flag2 = false;
                if (!flag1)
                {
                    int num3 = num2 / 18 % 3;
                    x -= num3;
                    tile = Main.tile[x, y];
                    if ((int)tile.frameX >= 5000)
                        flag1 = true;
                }
                if (flag1)
                {
                    int num3 = (int)tile.frameX;
                    int num4 = 0;
                    while (num3 >= 5000)
                    {
                        num3 -= 5000;
                        ++num4;
                    }
                    if (num4 != 0)
                        flag2 = true;
                }
                if (flag2)
                {
                    damageAmount = 0;
                    Main.blockMouse = true;
                }
            }
            if (!WorldGen.CanKillTile(x, y))
                damageAmount = 0;
            if (this.hitTile.AddDamage(tileId, damageAmount, true) >= 100)
            {
                AchievementsHelper.CurrentlyMining = true;
                this.hitTile.Clear(tileId);
                if (Main.netMode == 1 && Main.tileContainer[(int)Main.tile[x, y].type])
                {
                    WorldGen.KillTile(x, y, true, false, false);
                    NetMessage.SendData(17, -1, -1, "", 0, (float)x, (float)y, 1f, 0, 0, 0);
                    if ((int)Main.tile[x, y].type == 21)
                        NetMessage.SendData(34, -1, -1, "", 1, (float)x, (float)y, 0.0f, 0, 0, 0);
                    if ((int)Main.tile[x, y].type == 88)
                        NetMessage.SendData(34, -1, -1, "", 3, (float)x, (float)y, 0.0f, 0, 0, 0);
                }
                else
                {
                    int j = y;
                    bool flag = Main.tile[x, j].active();
                    WorldGen.KillTile(x, j, false, false, false);
                    if (flag && !Main.tile[x, j].active())
                        AchievementsHelper.HandleMining();
                    if (Main.netMode == 1)
                        NetMessage.SendData(17, -1, -1, "", 0, (float)x, (float)j, 0.0f, 0, 0, 0);
                }
                AchievementsHelper.CurrentlyMining = false;
            }
            else
            {
                WorldGen.KillTile(x, y, true, false, false);
                if (Main.netMode == 1)
                    NetMessage.SendData(17, -1, -1, "", 0, (float)x, (float)y, 1f, 0, 0, 0);
            }
            if (damageAmount == 0)
                return;
            this.hitTile.Prune();
        }

Usage Example

Ejemplo n.º 1
0
 public void UseDrill(Player mountedPlayer)
 {
     if (this._type != 8 || !this._abilityActive)
     {
         return;
     }
     Mount.DrillMountData drillMountData = (Mount.DrillMountData)this._mountSpecificData;
     if (drillMountData.beamCooldown == 0)
     {
         int i = 0;
         while (i < (int)drillMountData.beams.Length)
         {
             Mount.DrillBeam drillBeam = drillMountData.beams[i];
             if (drillBeam.cooldown == 0)
             {
                 Point16 point = this.DrillSmartCursor(mountedPlayer, drillMountData);
                 if (point != Point16.NegativeOne)
                 {
                     drillBeam.curTileTarget = point;
                     int pickPower = Mount.drillPickPower;
                     bool flag = mountedPlayer.whoAmI == Main.myPlayer;
                     if (flag)
                     {
                         mountedPlayer.PickTile((int)point.X, (int)point.Y, pickPower);
                     }
                     if (flag)
                     {
                         Tile.SmoothSlope((int)point.X, (int)point.Y, true);
                     }
                     drillBeam.cooldown = Mount.drillPickTime;
                     break;
                 }
                 break;
             }
             else
             {
                 i++;
             }
         }
         drillMountData.beamCooldown = Mount.drillBeamCooldownMax;
     }
 }
All Usage Examples Of Terraria.Player::PickTile
Player