示例#1
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedMoonlord && spawnInfo.spawnTileY > Main.maxTilesY - 200 ? 0.002f : 0f);
        }
示例#2
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && (tile == 70)) && y < Main.rockLayer ? 0.03f : 0f);
        }
示例#3
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return(Tremor.NormalSpawn(spawnInfo) && spawnInfo.spawnTileY < Main.rockLayer && NPC.downedMoonlord && Main.eclipse ? 0.01f : 0f);
        }
示例#4
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedMoonlord && Main.hardMode && !Main.dayTime && y < Main.worldSurface ? 0.02f : 0f);
        }
示例#5
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedBoss3 && y > Main.rockLayer ? 0.02f : 0f);
        }
示例#6
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int  x    = spawnInfo.spawnTileX;
            int  y    = spawnInfo.spawnTileY;
            Tile tile = Main.tile[spawnInfo.spawnTileX, spawnInfo.spawnTileY];

            return((Tremor.NoZoneAllowWater(spawnInfo)) && (tile.type == 368) && y > Main.rockLayer ? 0.01f : 0f);
        }
示例#7
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && !Main.dayTime && NPC.downedBoss2 && spawnInfo.player.ZoneCrimson && y < Main.worldSurface ? 0.02f : 0);
        }
示例#8
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && (tile == 53 || tile == 112 || tile == 116 || tile == 234) && Tremor.NoZoneAllowWater(spawnInfo) && spawnInfo.water) && y < Main.rockLayer && (x < 250 || x > Main.maxTilesX - 250) && !spawnInfo.playerSafe ? 0.01f : 0f);
        }
示例#9
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return(Tremor.NoZoneAllowWater(spawnInfo) && spawnInfo.sky ? 0.02f : 0);
        }
示例#10
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && Main.hardMode && Main.expertMode && Main.bloodMoon && y < Main.worldSurface ? 0.002f : 0f);
        }
示例#11
0
文件: Orc.cs 项目: astranauta/Tremor
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedBoss1 && y < Main.worldSurface ? 0.1f : 0f);
        }
示例#12
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && NPC.downedPlantBoss && !Main.dayTime && y < Main.worldSurface ? 0.01f : 0f);
        }
示例#13
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneJungle && y > Main.rockLayer ? 0.01f : 0f);
        }
示例#14
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && Tremor.NoZoneAllowWater(spawnInfo)) && Main.hardMode && spawnInfo.spawnTileY > Main.maxTilesY - 200 ? 0.02f : 0);
        }
示例#15
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NormalSpawn(spawnInfo) && !Main.dayTime && Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneDesert ? 0.01f : 0f);
        }
示例#16
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && spawnInfo.player.ZoneDungeon && NPC.downedMoonlord && Main.hardMode && y > Main.rockLayer ? 0.01f : 0f);
        }
示例#17
0
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            int x    = spawnInfo.spawnTileX;
            int y    = spawnInfo.spawnTileY;
            int tile = (int)Main.tile[x, y].type;

            return((Tremor.NoZoneAllowWater(spawnInfo)) && Main.cloudAlpha > 0f && y < Main.worldSurface && spawnInfo.player.ZoneSnow ? 0.03f : 0f);
        }
示例#18
0
        public override void PostUpdate()
        {
            if (NPC.LunarApocalypseIsUp && !LunarApocalypseLastTick)
            {
                Tremor.Log("Moving pillars...");
                var towers = new int[5];

                foreach (var npc in Main.npc)
                {
                    if (npc == null)
                    {
                        continue;
                    }
                    if (npc.type == NPCID.LunarTowerNebula)
                    {
                        towers[0] = npc.whoAmI;
                    }
                    if (npc.type == NPCID.LunarTowerSolar)
                    {
                        towers[1] = npc.whoAmI;
                    }
                    if (npc.type == NPCID.LunarTowerStardust)
                    {
                        towers[2] = npc.whoAmI;
                    }
                    if (npc.type == NPCID.LunarTowerVortex)
                    {
                        towers[3] = npc.whoAmI;
                    }
                }
                towers[4] = -1;
                towers    = towers.OrderBy(x => Main.rand.Next()).ToArray();

                for (int i = 0; i < 5; i++)
                {
                    MovePillar(i, towers[i]);
                }
            }
            else if (!NPC.LunarApocalypseIsUp && LunarApocalypseLastTick && TowerActive)
            {
                for (int i = Main.chatLine.Length - 1; i >= 0; i--)
                {
                    if (Main.chatLine[i].text.StartsWith("Impending doom"))
                    {
                        Main.chatLine[i].parsedText = new[]
                        {
                            new TextSnippet("Your hands are shaking...", new Color(175, 75, 255))
                        };
                        break;
                    }
                }
                NPC.MoonLordCountdown = 0;
            }

            LunarApocalypseLastTick = NPC.LunarApocalypseIsUp;
        }
示例#19
0
        void MovePillar(int position, int whoAmI)
        {
            if (whoAmI == -1)
            {
                Tremor.Log("Spawning Nova Pillar");
            }
            //else
            //{
            //Tremor.Log("Moving " + Main.npc[whoAmI].displayName);
            // }

            int x        = Main.maxTilesX / 6 * (1 + position);
            var spawnPos = new Vector2(x * 16, (float)(Main.worldSurface - 40) * 16);

            bool success = false;

            for (int attempts = 0; attempts < 30; attempts++)
            {
                int offsetX = Main.rand.Next(-100, 101);
                for (int y = (int)Main.worldSurface; y > 100; y--)
                {
                    if (!Collision.SolidTiles(x + offsetX - 10, x + offsetX + 10, y - 20, y + 15) && !WorldGen.PlayerLOS(x + offsetX - 10, y) && !WorldGen.PlayerLOS(x + offsetX + 10, y) && !WorldGen.PlayerLOS(x + offsetX - 10, y - 20) && !WorldGen.PlayerLOS(x + offsetX + 10, y - 20))
                    {
                        spawnPos = new Vector2((x + offsetX) * 16, y * 16);
                        success  = true;
                        break;
                    }
                }
                if (success)
                {
                    break;
                }
            }

            if (whoAmI == -1)
            {
                whoAmI = NPC.NewNPC((int)spawnPos.X, (int)spawnPos.Y, mod.NPCType("NovaPillar"));
                TowerX = (int)spawnPos.X;
                TowerY = (int)spawnPos.Y;
            }
            else
            {
                Main.npc[whoAmI].Center = spawnPos;
                ShieldStrength          = NPC.ShieldStrengthTowerMax;
                TowerActive             = true;
            }
            if (Main.netMode == 2 && whoAmI < 200)
            {
                NetMessage.SendData(MessageID.SyncNPC, number: whoAmI);
            }
        }
示例#20
0
 public override float SpawnChance(NPCSpawnInfo spawnInfo)
 {
     return(spawnInfo.spawnTileY < Main.rockLayer && Main.hardMode && Tremor.NoInvasion(spawnInfo) && NPC.downedMoonlord && Main.dayTime ? 0.005f : 0f);
 }