public override bool spawn() { var positions = new List<MinionSpawnPosition> { MinionSpawnPosition.SPAWN_BLUE_TOP, MinionSpawnPosition.SPAWN_BLUE_BOT, MinionSpawnPosition.SPAWN_BLUE_MID, MinionSpawnPosition.SPAWN_RED_TOP, MinionSpawnPosition.SPAWN_RED_BOT, MinionSpawnPosition.SPAWN_RED_MID, }; if (waveNumber < 3) { for (var i = 0; i < positions.Count; ++i) { Minion m = new Minion(this, Game.GetNewNetID(), MinionSpawnType.MINION_TYPE_MELEE, positions[i], laneWaypoints[i]); addObject(m); } return false; } if (waveNumber == 3) { for (var i = 0; i < positions.Count; ++i) { Minion m = new Minion(this, Game.GetNewNetID(), MinionSpawnType.MINION_TYPE_CANNON, positions[i], laneWaypoints[i]); addObject(m); } return false; } if (waveNumber < 7) { for (var i = 0; i < positions.Count; ++i) { Minion m = new Minion(this, Game.GetNewNetID(), MinionSpawnType.MINION_TYPE_CASTER, positions[i], laneWaypoints[i]); addObject(m); } return false; } return true; }
public override void setMinionStats(Minion minion) { // Same for all minions minion.getStats().setMovementSpeed(325.0f); minion.getStats().setBaseAttackSpeed(0.625f); minion.getStats().setAttackSpeedMultiplier(1.0f); switch (minion.getType()) { case MinionSpawnType.MINION_TYPE_MELEE: minion.getStats().setCurrentHealth(475.0f + ((20.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setMaxHealth(475.0f + ((20.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setBaseAd(12.0f + ((1.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setRange(180.0f); minion.getStats().setBaseAttackSpeed(1.250f); minion.setAutoAttackDelay(11.8f / 30.0f); minion.setMelee(true); break; case MinionSpawnType.MINION_TYPE_CASTER: minion.getStats().setCurrentHealth(279.0f + ((7.5f) * (int)(gameTime / (float)(90 * 1000)))); minion.getStats().setMaxHealth(279.0f + ((7.5f) * (int)(gameTime / (float)(90 * 1000)))); minion.getStats().setBaseAd(23.0f + ((1.0f) * (int)(gameTime / (float)(90 * 1000)))); minion.getStats().setRange(600.0f); minion.getStats().setBaseAttackSpeed(0.670f); minion.setAutoAttackDelay(14.1f / 30.0f); minion.setAutoAttackProjectileSpeed(650.0f); break; case MinionSpawnType.MINION_TYPE_CANNON: minion.getStats().setCurrentHealth(700.0f + ((27.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setMaxHealth(700.0f + ((27.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setBaseAd(40.0f + ((3.0f) * (int)(gameTime / (float)(180 * 1000)))); minion.getStats().setRange(450.0f); minion.getStats().setBaseAttackSpeed(1.0f); minion.setAutoAttackDelay(9.0f / 30.0f); minion.setAutoAttackProjectileSpeed(1200.0f); break; } }
public EnterVisionAgain(Minion m) : base(PacketCmdS2C.PKT_S2C_ObjectSpawn, m.getNetId()) { buffer.fill(0, 13); buffer.Write(1.0f); buffer.fill(0, 13); buffer.Write((byte)0x02); buffer.Write((int)Environment.TickCount); // unk var waypoints = m.getWaypoints(); buffer.Write((byte)((waypoints.Count - m.getCurWaypoint() + 1) * 2)); // coordCount buffer.Write((int)m.getNetId()); buffer.Write((byte)0); // movement mask buffer.Write((short)MovementVector.targetXToNormalFormat(m.getX())); buffer.Write((short)MovementVector.targetYToNormalFormat(m.getY())); for (int i = m.getCurWaypoint(); i < waypoints.Count; i++) { buffer.Write(MovementVector.targetXToNormalFormat((float)waypoints[i].X)); buffer.Write(MovementVector.targetXToNormalFormat((float)waypoints[i].Y)); } }
public MinionSpawn(Minion m) : base(PacketCmdS2C.PKT_S2C_ObjectSpawn, m.getNetId()) { buffer.Write((int)0x00150017); // unk buffer.Write((byte)0x03); // SpawnType - 3 = minion buffer.Write((int)m.getNetId()); buffer.Write((int)m.getNetId()); buffer.Write((int)m.getSpawnPosition()); buffer.Write((byte)0xFF); // unk buffer.Write((byte)1); // wave number ? buffer.Write((byte)m.getType()); if (m.getType() == MinionSpawnType.MINION_TYPE_MELEE) { buffer.Write((byte)0); // unk } else { buffer.Write((byte)1); // unk } buffer.Write((byte)0); // unk if (m.getType() == MinionSpawnType.MINION_TYPE_CASTER) { buffer.Write((int)0x00010007); // unk } else if (m.getType() == MinionSpawnType.MINION_TYPE_MELEE) { buffer.Write((int)0x0001000A); // unk } else if (m.getType() == MinionSpawnType.MINION_TYPE_CANNON) { buffer.Write((int)0x0001000D); } else { buffer.Write((int)0x00010007); // unk } buffer.Write((int)0x00000000); // unk buffer.Write((int)0x00000000); // unk buffer.Write((short)0x0000); // unk buffer.Write((float)1.0f); // unk buffer.Write((int)0x00000000); // unk buffer.Write((int)0x00000000); // unk buffer.Write((int)0x00000000); // unk buffer.Write((short)0x0200); // unk buffer.Write((int)Environment.TickCount); // unk List<Vector2> waypoints = m.getWaypoints(); buffer.Write((byte)((waypoints.Count - m.getCurWaypoint() + 1) * 2)); // coordCount buffer.Write((int)m.getNetId()); buffer.Write((byte)0); // movement mask buffer.Write((short)MovementVector.targetXToNormalFormat(m.getX())); buffer.Write((short)MovementVector.targetYToNormalFormat(m.getY())); for (int i = m.getCurWaypoint(); i < waypoints.Count; ++i) { buffer.Write((short)MovementVector.targetXToNormalFormat(waypoints[i].X)); buffer.Write((short)MovementVector.targetXToNormalFormat(waypoints[i].Y)); } }
public static void notifyMinionSpawned(Minion m, TeamId team) { var ms = new MinionSpawn(m); PacketHandlerManager.getInstace().broadcastPacketTeam(team, ms, Channel.CHL_S2C); notifySetHealth(m); }
public virtual void setMinionStats(Minion minion) { }