public Collectable(int collectableId, Position position, Spacemap spacemap, bool respawnable, Player toPlayer) : base(Randoms.CreateRandomID(), position, spacemap) { Hash = Randoms.GenerateHash(10); CollectableId = collectableId; Respawnable = respawnable; ToPlayer = toPlayer; if (this is CargoBox) { Program.TickManager.AddTick(this); disposeTime = DateTime.Now; } }
private void ForceChangeMap(Spacemap targetMap, Vector targetPosition, int vw = 0) { lock (JumpLock) { baseController.Player.State.Jumping = true; if (baseController.Player.Spacemap == targetMap) { return; } baseController.Player.MoveToMap(targetMap, targetPosition, vw); baseController.Player.State.Jumping = false; //World.DatabaseManager.AddPlayerLog(baseController.Player, PlayerLogTypes.SYSTEM, "Jumped to " + targetMap.Id + " AT " + targetPosition + " IN VW " + vw); } }
public Collectable(int collectableId, Position position, Spacemap spacemap, bool respawnable, Player toPlayer) { CollectableId = collectableId; Hash = Randoms.GenerateHash(16); Position = position; Spacemap = spacemap; Respawnable = respawnable; ToPlayer = toPlayer; Spacemap.Collectables.TryAdd(Hash, this); var tickId = -1; Program.TickManager.AddTick(this, out tickId); TickId = tickId; }
public Mine(Player player, Spacemap spacemap, Position position, int mineTypeId) : base(Randoms.CreateRandomID(), position, spacemap) { Hash = Randoms.GenerateHash(10); Player = player; MineTypeId = mineTypeId; Lance = Player.Settings.InGameSettings.selectedFormation == DroneManager.LANCE_FORMATION; Detonation = (Player.SkillTree.detonation1 + Player.SkillTree.detonation2 == 5); Pulse = Player.SkillTree.explosives == 5; ExplodeRange += Maths.GetPercentage(ExplodeRange, Player.GetSkillPercentage("Explosives")); activationTime = DateTime.Now; Program.TickManager.AddTick(this); }
//TODO: public void Relog(Spacemap spacemap = null, Vector pos = null) { throw new NotImplementedException(); Disconnect(); if (spacemap != null) { Player.Spacemap = spacemap; } if (pos != null) { Player.ChangePosition(pos); } Player.Save(); //Store(); }
public Npc(int id, Ship ship, Spacemap spacemap, Position position) : base(id, ship.Name, 0, ship, position, spacemap, GameManager.GetClan(0)) { Spacemap.AddCharacter(this); ShieldAbsorption = 0.8; Damage = ship.Damage; MaxHitPoints = ship.BaseHitpoints; CurrentHitPoints = MaxHitPoints; MaxShieldPoints = ship.BaseShieldPoints; CurrentShieldPoints = MaxShieldPoints; NpcAI = new NpcAI(this); Program.TickManager.AddTick(this); }
public virtual void Dispose() { try { GameClient.SendToSpacemap(Spacemap, netty.commands.new_client.DisposeBoxCommand.write(Hash, true)); GameClient.SendToSpacemap(Spacemap, netty.commands.old_client.LegacyModule.write("0|2|" + Hash)); Spacemap.RemoveObject(this); Disposed = true; } catch (Exception e) { Console.WriteLine(e); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } }
public static Vector Random(Spacemap map, Vector min = null, Vector max = null) { if (min == null) { min = map.Limits[0]; } if (max == null) { max = map.Limits[1]; } var random = RandomInstance.getInstance(map); var posX = random.Next(min.X, max.X); var posY = random.Next(min.Y, max.Y); return(new Vector(posX, posY)); }
public override void Dispose() { if (_disposed || !(_disposed = true)) { return; } Lock(null); Spacemap?.Remove(this); GameManager.Remove(ID); UpdateState(); base.Dispose(); Connection?.Dispose(false); _logger.LogInformation($"['{Account.Username}'] unloaded!"); }
public void Score(Faction faction, Jumpgate portal) { switch (faction) { case Faction.MMO: MMOScore++; foreach (var session in World.StorageManager.GameSessions.Values) { if (session == null || !session.Player.Controller.Active) { continue; } Packet.Builder.SpaceBallUpdateScoreCommand(session, faction, MMOScore, portal.Id); } break; case Faction.EIC: EICScore++; foreach (var session in World.StorageManager.GameSessions.Values) { if (session == null || !session.Player.Controller.Active) { continue; } Packet.Builder.SpaceBallUpdateScoreCommand(session, faction, EICScore, portal.Id); } break; case Faction.VRU: VRUScore++; foreach (var session in World.StorageManager.GameSessions.Values) { if (session == null || !session.Player.Controller.Active) { continue; } Packet.Builder.SpaceBallUpdateScoreCommand(session, faction, VRUScore, portal.Id); } break; } for (var i = 0; i < 50; i++) { Spacemap.CreateLootBox(Vector.GetPosOnCircle(portal.Position, 50 * i), new Reward(RewardType.URIDIUM, 750), Types.BIG_PUMPKIN, 25000); } }
public void InitiateVirtualWorld() { var getVWID = Spacemap.VirtualWorlds.FirstOrDefault(x => x.Key != 0 && x.Value == null); VWID = getVWID.Key; if (VWID == 0) { VWID = Spacemap.VirtualWorlds.Count; Spacemap.VirtualWorlds.Add(VWID, null); } Spacemap vwMap; Spacemap.Duplicate(Spacemap, out vwMap); Spacemap.VirtualWorlds[VWID] = vwMap; CreateAssets(); Initiate(); }
protected Character(int id, string name, int factionId, Ship ship, Position position, Spacemap spacemap, Clan clan) : base(id) { Name = name; FactionId = factionId; Ship = ship; Position = position; Spacemap = spacemap; Clan = clan; Storage = new Storage(this); Moving = false; OldPosition = new Position(0, 0); Destination = position; Direction = new Position(0, 0); MovementStartTime = new DateTime(); MovementTime = 0; }
public void ForceChangeMap(Spacemap targetMap, Vector targetPosition, int vw = 0) { if (baseController.Player.Spacemap == targetMap) { return; } //baseController.Player.Pet?.Controller.Deactivate(); var gameSession = World.StorageManager.GetGameSession(baseController.Player.Id); //todo:fix //Packet.Builder.MapChangeCommand(gameSession); baseController.Destruction.Deselect(baseController.Player); gameSession.Relog(targetMap, targetPosition); gameSession.Player.VirtualWorldId = vw; //baseController.Player.Position = targetPosition; //baseController.Player.Spacemap = targetMap; //baseController.Player.Save(); }
public static void SendToSpacemap(Spacemap spacemap, byte[] bytes) { try { foreach (var entry in spacemap.Entities) { var entity = entry.Value as Player; if (entity != null && (entity.Spacemap != null || entity.Position != null)) { World.StorageManager.GameSessions[entity.Id]?.Client.Send(bytes); } } } catch (Exception e) { Out.WriteLine("Something went wrong sending a spacemap packet.", "ERROR", ConsoleColor.Red); Debug.WriteLine(e.Message, "Debug Error"); } }
public static void LoadMaps() { using (var mySqlClient = SqlDatabaseManager.GetClient()) { var data = (DataTable)mySqlClient.ExecuteQueryTable("SELECT * FROM server_maps"); foreach (DataRow row in data.Rows) { int MapID = Convert.ToInt32(row["mapID"]); string Name = Convert.ToString(row["name"]); int FactionID = Convert.ToInt32(row["factionID"]); bool PvpMap = Convert.ToBoolean(row["isPvp"]); bool StarterMap = Convert.ToBoolean(row["isStartedMap"]); var Portals = JsonConvert.DeserializeObject <List <PortalBase> >(row["portals"].ToString()); var Stations = JsonConvert.DeserializeObject <List <StationBase> >(row["stations"].ToString()); var spacemap = new Spacemap(MapID, Name, FactionID, StarterMap, PvpMap, Portals, Stations); GameManager.Spacemaps.TryAdd(spacemap.Id, spacemap); } } }
public void CreateBattleStation() { Building = false; var battleStation = new ClanBattleStation(Spacemap.GetNextObjectId(), AssignedBattleStationId, Name, Faction, new Vector(Position.X, Position.Y), Spacemap, Builder, EquippedModules); Spacemap.RemoveObject(this); GameClient.SendToSpacemap(Spacemap, netty.commands.old_client.AssetRemoveCommand.write(new netty.commands.old_client.AssetTypeModule((short)Type), Id)); foreach (var module in EquippedModules.Values) { module.BattleStation = battleStation; if (module.SlotId == 0 || module.SlotId == 1) { continue; } module.Position = BattleStationModule.GetPos(battleStation.Position, module.SlotId); Spacemap.Objects[module.Id] = module; } Spacemap.AddObject(battleStation); }
protected Character(int id, string name, int factionId, Ship ship, Position position, Spacemap spacemap, Clan clan) : base(id) { Name = name; FactionId = factionId; Ship = ship; Position = position; Spacemap = spacemap; Clan = clan; Moving = false; OldPosition = new Position(0, 0); Destination = position; Direction = new Position(0, 0); MovementStartTime = new DateTime(); MovementTime = 0; if (clan == null) { Clan = GameManager.GetClan(0); } }
public static void LoadMaps() { using (var mySqlClient = SqlDatabaseManager.GetClient()) { var data = (DataTable)mySqlClient.ExecuteQueryTable("SELECT * FROM server_maps"); foreach (DataRow row in data.Rows) { int mapId = Convert.ToInt32(row["mapID"]); string name = Convert.ToString(row["name"]); int factionId = Convert.ToInt32(row["factionID"]); var npcs = JsonConvert.DeserializeObject <List <NpcsBase> >(row["npcs"].ToString()); var portals = JsonConvert.DeserializeObject <List <PortalBase> >(row["portals"].ToString()); var stations = JsonConvert.DeserializeObject <List <StationBase> >(row["stations"].ToString()); var options = JsonConvert.DeserializeObject <OptionsBase>(row["options"].ToString()); var spacemap = new Spacemap(mapId, name, factionId, npcs, portals, stations, options); GameManager.Spacemaps.TryAdd(spacemap.Id, spacemap); } } LoadBattleStations(); }
public static void Area(Spacemap map, Vector center, int radius, int amount, Types attackType, DamageType damageType = DamageType.DEFINED, bool playersOnly = true) { foreach (var entry in map.Entities.Where(x => x.Value.Position.DistanceTo(center) <= radius)) { if (entry.Value is Player && playersOnly || !playersOnly) { if (entry.Value.Invincible) { continue; } var damage = 0; switch (damageType) { case DamageType.DEFINED: damage = amount; break; case DamageType.PERCENTAGE: damage = (int)(entry.Value.CurrentHealth * amount / 100.0); break; } //TODO use Damage() method instead entry.Value.CurrentHealth -= damage; entry.Value.LastCombatTime = DateTime.Now; foreach (var session in AssembleSelectedSessions(entry.Value)) { Packet.Builder.AttackHitCommand(session, 0, entry.Value, damage, (short)attackType); } if (entry.Value.CurrentHealth <= 0 && entry.Value.EntityState == EntityStates.ALIVE) { entry.Value.Destroy(); } entry.Value.Updaters.Update(); } } }
public void Activate() { if (!Activated) { Activated = true; Destroyed = false; Spacemap = Owner.Spacemap; Invisible = Owner.Invisible; Position = new Position(Owner.Position.X, Owner.Position.Y); Owner.SendPacket("0|A|STM|msg_pet_activated"); Initialization(); Spacemap.AddCharacter(this); var tickId = -1; Program.TickManager.AddTick(this, out tickId); TickId = tickId; } else { Deactivate(); } }
public void InitiateVirtualWorld() { var getVWID = Spacemap.VirtualWorlds.FirstOrDefault(x => x.Key != 0 && x.Value == null); VWID = getVWID.Key; if (VWID == 0) { VWID = Spacemap.VirtualWorlds.Count; Spacemap.VirtualWorlds.Add(VWID, null); } Spacemap vwMap; Spacemap.Duplicate(Spacemap, out vwMap); Spacemap.VirtualWorlds[VWID] = vwMap; vwMap.CreateHealthStation(new Vector(10400, 6400)); vwMap.CreateRelayStation(new Vector(2500, 2000)); vwMap.CreateRelayStation(new Vector(6200, 11700)); vwMap.CreateRelayStation(new Vector(18300, 10900)); vwMap.CreateRelayStation(new Vector(18200, 4000)); Initiate(); }
public override void Die() { PlayerEffectsAssembly.CureInfection(true); MovementAssembly.Move(MovementAssembly.ActualPosition(), MovementAssembly.ActualPosition()); Lock(null); EntitiesLockedSafe(x => { if (x.Locked != null && x.Locked.ID == ID) { x.Lock(null); } }); ICommand killCommand = PacketBuilder.KillCommand(this); GameManager.Get(AttackTraceAssembly.CurrentMainAttacker, out PlayerController killer); Send(killCommand, PacketBuilder.KillScreen.KillScreenCommand(DestructionTypeModule.PLAYER, killer)); // send kill screen EntitesInRange(x => { if (x.ID == AttackTraceAssembly.CurrentMainAttacker) // killer // render rewards etc. { x.Send( killCommand, PacketBuilder.Legacy("0|A|STD|You killed " + Account.Username + "!") ); } else { x.Send(killCommand); } }); AttackTraceAssembly.Reset(); Spacemap?.Remove(this); // remove from spacemap TimerStop(); }
public void Deactivate(bool direct = false, bool destroyed = false) { if (Activated) { if (LastCombatTime.AddSeconds(10) < DateTime.Now || direct) { Owner.SendPacket("0|PET|D"); if (destroyed) { Owner.Settings.InGameSettings.petDestroyed = true; QueryManager.SavePlayer.Settings(Owner, "inGameSettings", Owner.Settings.InGameSettings); Owner.SendPacket("0|PET|Z"); CurrentShieldPoints = 0; UpdateStatus(); Owner.SendCommand(PetInitializationCommand.write(true, true, false)); Owner.SendCommand(PetUIRepairButtonCommand.write(true, 250)); } else { Owner.SendPacket("0|A|STM|msg_pet_deactivated"); } Activated = false; Deselection(); Spacemap.RemoveCharacter(this); InRangeCharacters.Clear(); Program.TickManager.RemoveTick(this); } else { Owner.SendPacket("0|A|STM|msg_pet_in_combat"); } } }
public void Activate() { if (!Activated && !Owner.Settings.InGameSettings.petDestroyed) { Activated = true; CurrentHitPoints = 2500; SetPosition(Owner.Position); Spacemap = Owner.Spacemap; Invisible = Owner.Invisible; Owner.SendPacket("0|A|STM|msg_pet_activated"); Initialization(GearId); Spacemap.AddCharacter(this); Program.TickManager.AddTick(this); } else { Deactivate(); } }
public static Position Random(Spacemap map, int minX = 0, int maxX = 0, int minY = 0, int maxY = 0) { if (minX == 0) { minX = map.Limits[0].X; } if (minY == 0) { minY = map.Limits[0].Y; } if (maxX == 0) { maxX = map.Limits[1].X; } if (maxY == 0) { maxY = map.Limits[1].Y; } var posX = Randoms.random.Next(minX, maxX); var posY = Randoms.random.Next(minY, maxY); return(new Position(posX, posY)); }
public void Dispose() { //GameClient.SendToSpacemap(Spacemap, netty.commands.old_client.LegacyModule.write("0|q|" + Hash)); Spacemap.RemoveObject(this); Disposed = true; }
public Ore(int id, string hash, OreTypes type, Vector pos, Spacemap map, int[] limits) : base(id, pos, map) { Hash = hash; Type = type; Limits = limits; }
public BonusBox(int collectableId, Position position, Spacemap spacemap, bool respawnable, Player toPlayer = null) : base(collectableId, position, spacemap, respawnable, toPlayer) { }
public PM00(int id, string hash, Vector pos, Spacemap map) : base(id, hash, pos, map) { }
public EpsilonGate(Spacemap coreMap, int wave) : base(coreMap, wave) { }