Terraria.Projectile.FishingCheck C# (CSharp) Method

FishingCheck() public method

public FishingCheck ( ) : void
return void
        public void FishingCheck()
        {
            int index = (int)(Center.X / 16.0);
            int j1 = (int)(Center.Y / 16.0);
            if (Main.tile[index, j1].liquid < 0)
                ++j1;
            bool flag1 = false;
            bool flag2 = false;
            int i1 = index;
            int i2 = index;
            while (i1 > 10 && Main.tile[i1, j1].liquid > 0 && !WorldGen.SolidTile(i1, j1))
                --i1;
            while (i2 < Main.maxTilesX - 10 && Main.tile[i2, j1].liquid > 0 && !WorldGen.SolidTile(i2, j1))
                ++i2;
            int num1 = 0;
            for (int i3 = i1; i3 <= i2; ++i3)
            {
                int j2 = j1;
                while (Main.tile[i3, j2].liquid > 0 && !WorldGen.SolidTile(i3, j2) && j2 < Main.maxTilesY - 10)
                {
                    ++num1;
                    ++j2;
                    if (Main.tile[i3, j2].lava())
                        flag1 = true;
                    else if (Main.tile[i3, j2].honey())
                        flag2 = true;
                }
            }
            if (flag2)
                num1 = (int)(num1 * 1.5);
            if (num1 < 75)
            {
                Main.player[owner].displayedFishingInfo = "Not Enough Water!";
            }
            else
            {
                int num2 = Main.player[owner].FishingLevel();
                if (num2 == 0)
                    return;
                Main.player[owner].displayedFishingInfo = (string)(object)num2 + (object)" Fishing Power";
                if (num2 < 0)
                {
                    if (num2 != -1)
                        return;
                    Main.player[owner].displayedFishingInfo = "Warning!";
                    if (index >= 380 && index <= Main.maxTilesX - 380 || (num1 <= 1000 || NPC.AnyNPCs(370)))
                        return;
                    ai[1] = (Main.rand.Next(-180, -60) - 100);
                    localAI[1] = num2;
                    netUpdate = true;
                }
                else
                {
                    int num3 = 300;
                    float num4 = (Main.maxTilesX / 4200);
                    float num5 = (float)((position.Y / 16.0 - (60.0 + 10.0 * (num4 * num4))) / (Main.worldSurface / 6.0));
                    if (num5 < 0.25)
                        num5 = 0.25f;
                    if (num5 > 1.0)
                        num5 = 1f;
                    int num6 = (int)(num3 * num5);
                    float num7 = num1 / num6;
                    if (num7 < 1.0)
                        num2 = (int)(num2 * num7);
                    float num8 = 1f - num7;
                    if (num1 < num6)
                        Main.player[owner].displayedFishingInfo = string.Concat(new object[4]
            {
               num2,
               " (",
               -Math.Round(num8 * 100.0),
               "%) Fishing Power"
            });
                    int num9 = (num2 + 75) / 2;
                    if (Main.player[owner].wet || Main.rand.Next(100) > num9)
                        return;
                    int Type = 0;
                    int num10 = j1 >= Main.worldSurface * 0.5 ? (j1 >= Main.worldSurface ? (j1 >= Main.rockLayer ? (j1 >= Main.maxTilesY - 300 ? 4 : 3) : 2) : 1) : 0;
                    int num11 = 150;
                    int maxValue1 = num11 / num2;
                    int maxValue2 = num11 * 2 / num2;
                    int maxValue3 = num11 * 7 / num2;
                    int maxValue4 = num11 * 15 / num2;
                    int maxValue5 = num11 * 30 / num2;
                    if (maxValue1 < 2)
                        maxValue1 = 2;
                    if (maxValue2 < 3)
                        maxValue2 = 3;
                    if (maxValue3 < 4)
                        maxValue3 = 4;
                    if (maxValue4 < 5)
                        maxValue4 = 5;
                    if (maxValue5 < 6)
                        maxValue5 = 6;
                    bool flag3 = false;
                    bool flag4 = false;
                    bool flag5 = false;
                    bool flag6 = false;
                    bool flag7 = false;
                    if (Main.rand.Next(maxValue1) == 0)
                        flag3 = true;
                    if (Main.rand.Next(maxValue2) == 0)
                        flag4 = true;
                    if (Main.rand.Next(maxValue3) == 0)
                        flag5 = true;
                    if (Main.rand.Next(maxValue4) == 0)
                        flag6 = true;
                    if (Main.rand.Next(maxValue5) == 0)
                        flag7 = true;
                    int num12 = 10;
                    if (Main.player[owner].cratePotion)
                        num12 += 10;
                    int type = Main.anglerQuestItemNetIDs[Main.anglerQuest];
                    if (Main.player[owner].HasItem(type))
                        type = -1;
                    if (Main.anglerQuestFinished)
                        type = -1;
                    if (flag1)
                    {
                        if (Main.player[owner].inventory[Main.player[owner].selectedItem].itemId != 2422)
                            return;
                        if (flag7)
                            Type = 2331;
                        else if (flag6)
                            Type = 2312;
                        else if (flag5)
                            Type = 2315;
                    }
                    else if (flag2)
                    {
                        if (flag5 || flag4 && Main.rand.Next(2) == 0)
                            Type = 2314;
                        else if (flag4 && type == 2451)
                            Type = 2451;
                    }
                    else if (Main.rand.Next(50) > num2 && Main.rand.Next(50) > num2 && num1 < num6)
                        Type = Main.rand.Next(2337, 2340);
                    else if (Main.rand.Next(100) < num12)
                        Type = flag6 || flag7 ? 2336 : (!flag5 || !Main.player[owner].ZoneCorrupt ? (!flag5 || !Main.player[owner].ZoneCrimson ? (!flag5 || !Main.player[owner].ZoneHoly ? (!flag5 || !Main.player[owner].ZoneDungeon ? (!flag5 || !Main.player[owner].ZoneJungle ? (!flag5 || num10 != 0 ? (!flag4 ? 2334 : 2335) : 3206) : 3208) : 3205) : 3207) : 3204) : 3203);
                    else if (flag7 && Main.rand.Next(5) == 0)
                        Type = 2423;
                    else if (flag7 && Main.rand.Next(5) == 0)
                        Type = 3225;
                    else if (flag7 && Main.rand.Next(10) == 0)
                        Type = 2420;
                    else if (!flag7 && !flag6 && (flag4 && Main.rand.Next(5) == 0))
                    {
                        Type = 3196;
                    }
                    else
                    {
                        bool flag8 = Main.player[owner].ZoneCorrupt;
                        bool flag9 = Main.player[owner].ZoneCrimson;
                        if (flag8 && flag9)
                        {
                            if (Main.rand.Next(2) == 0)
                                flag9 = false;
                            else
                                flag8 = false;
                        }
                        if (flag8)
                        {
                            if (flag7 && Main.hardMode && (Main.player[owner].ZoneSnow && num10 == 3) && Main.rand.Next(3) != 0)
                                Type = 2429;
                            else if (flag7 && Main.hardMode && Main.rand.Next(2) == 0)
                                Type = 3210;
                            else if (flag5)
                                Type = 2330;
                            else if (flag4 && type == 2454)
                                Type = 2454;
                            else if (flag4 && type == 2485)
                                Type = 2485;
                            else if (flag4 && type == 2457)
                                Type = 2457;
                            else if (flag4)
                                Type = 2318;
                        }
                        else if (flag9)
                        {
                            if (flag7 && Main.hardMode && (Main.player[owner].ZoneSnow && num10 == 3) && Main.rand.Next(3) != 0)
                                Type = 2429;
                            else if (flag7 && Main.hardMode && Main.rand.Next(2) == 0)
                                Type = 3211;
                            else if (flag4 && type == 2477)
                                Type = 2477;
                            else if (flag4 && type == 2463)
                                Type = 2463;
                            else if (flag4)
                                Type = 2319;
                            else if (flag3)
                                Type = 2305;
                        }
                        else if (Main.player[owner].ZoneHoly)
                        {
                            if (flag7 && Main.hardMode && (Main.player[owner].ZoneSnow && num10 == 3) && Main.rand.Next(3) != 0)
                                Type = 2429;
                            else if (flag7 && Main.hardMode && Main.rand.Next(2) == 0)
                                Type = 3209;
                            else if (num10 > 1 && flag6)
                                Type = 2317;
                            else if (num10 > 1 && flag5 && type == 2465)
                                Type = 2465;
                            else if (num10 < 2 && flag5 && type == 2468)
                                Type = 2468;
                            else if (flag5)
                                Type = 2310;
                            else if (flag4 && type == 2471)
                                Type = 2471;
                            else if (flag4)
                                Type = 2307;
                        }
                        if (Type == 0 && Main.player[owner].ZoneSnow)
                        {
                            if (num10 < 2 && flag4 && type == 2467)
                                Type = 2467;
                            else if (num10 == 1 && flag4 && type == 2470)
                                Type = 2470;
                            else if (num10 >= 2 && flag4 && type == 2484)
                                Type = 2484;
                            else if (num10 > 1 && flag4 && type == 2466)
                                Type = 2466;
                            else if (flag3 && Main.rand.Next(12) == 0 || flag4 && Main.rand.Next(6) == 0)
                                Type = 3197;
                            else if (flag4)
                                Type = 2306;
                            else if (flag3)
                                Type = 2299;
                            else if (num10 > 1 && Main.rand.Next(3) == 0)
                                Type = 2309;
                        }
                        if (Type == 0 && Main.player[owner].ZoneJungle)
                        {
                            if (Main.hardMode && flag7 && Main.rand.Next(2) == 0)
                                Type = 3018;
                            else if (num10 == 1 && flag4 && type == 2452)
                                Type = 2452;
                            else if (num10 == 1 && flag4 && type == 2483)
                                Type = 2483;
                            else if (num10 == 1 && flag4 && type == 2488)
                                Type = 2488;
                            else if (num10 >= 1 && flag4 && type == 2486)
                                Type = 2486;
                            else if (num10 > 1 && flag4)
                                Type = 2311;
                            else if (flag4)
                                Type = 2313;
                            else if (flag3)
                                Type = 2302;
                        }
                        if (Type == 0 && Main.shroomTiles > 200 && (flag4 && type == 2475))
                            Type = 2475;
                        if (Type == 0)
                        {
                            if (num10 <= 1 && (index < 380 || index > Main.maxTilesX - 380) && num1 > 1000)
                            {
                                Type = !flag6 || Main.rand.Next(2) != 0 ? (!flag6 ? (!flag5 || Main.rand.Next(5) != 0 ? (!flag5 || Main.rand.Next(2) != 0 ? (!flag4 || type != 2480 ? (!flag4 || type != 2481 ? (!flag4 ? (!flag3 || Main.rand.Next(2) != 0 ? (!flag3 ? 2297 : 2300) : 2301) : 2316) : 2481) : 2480) : 2332) : 2438) : 2342) : 2341;
                            }
                            else
                            {
                                int num13 = Main.sandTiles;
                            }
                        }
                        if (Type == 0)
                            Type = num10 >= 2 || !flag4 || type != 2461 ? (num10 != 0 || !flag4 || type != 2453 ? (num10 != 0 || !flag4 || type != 2473 ? (num10 != 0 || !flag4 || type != 2476 ? (num10 >= 2 || !flag4 || type != 2458 ? (num10 >= 2 || !flag4 || type != 2459 ? (num10 != 0 || !flag4 ? (num10 <= 0 || num10 >= 3 || (!flag4 || type != 2455) ? (num10 != 1 || !flag4 || type != 2479 ? (num10 != 1 || !flag4 || type != 2456 ? (num10 != 1 || !flag4 || type != 2474 ? (num10 <= 1 || !flag5 || Main.rand.Next(5) != 0 ? (num10 <= 1 || !flag7 ? (num10 <= 1 || !flag6 || Main.rand.Next(2) != 0 ? (num10 <= 1 || !flag5 ? (num10 <= 1 || !flag4 || type != 2478 ? (num10 <= 1 || !flag4 || type != 2450 ? (num10 <= 1 || !flag4 || type != 2464 ? (num10 <= 1 || !flag4 || type != 2469 ? (num10 <= 2 || !flag4 || type != 2462 ? (num10 <= 2 || !flag4 || type != 2482 ? (num10 <= 2 || !flag4 || type != 2472 ? (num10 <= 2 || !flag4 || type != 2460 ? (num10 <= 1 || !flag4 || Main.rand.Next(4) == 0 ? (num10 <= 1 || !flag4 && !flag3 && Main.rand.Next(4) != 0 ? (!flag4 || type != 2487 ? (num1 <= 1000 || !flag3 ? 2290 : 2298) : 2487) : (Main.rand.Next(4) != 0 ? 2309 : 2303)) : 2303) : 2460) : 2472) : 2482) : 2462) : 2469) : 2464) : 2450) : 2478) : 2321) : 2320) : 2308) : (!Main.hardMode || Main.rand.Next(2) != 0 ? 2436 : 2437)) : 2474) : 2456) : 2479) : 2455) : 2304) : 2459) : 2458) : 2476) : 2473) : 2453) : 2461;
                    }
                    if (Type <= 0)
                        return;
                    if (Main.player[owner].sonarPotion)
                    {
                        Item newItem = new Item();
                        newItem.SetDefaults(Type, false);
                        newItem.position = position;
                        ItemText.NewText(newItem, 1, true, false);
                    }
                    float num14 = num2;
                    ai[1] = Main.rand.Next(-240, -90) - num14;
                    localAI[1] = Type;
                    netUpdate = true;
                }
            }
        }