public void execute(GameSession gameSession, byte[] bytes) { var read = new UnEquipModuleRequest(); read.readCommand(bytes); var player = gameSession.Player; var battleStation = player.Spacemap.GetActivatableMapEntity(read.battleStationId) as BattleStation; if (battleStation != null) { if (player.Position.DistanceTo(battleStation.Position) > 700) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.OUT_OF_RANGE)); return; } var module = battleStation.EquippedStationModule[player.Clan.Id].Where(x => x.ItemId == read.itemId).FirstOrDefault(); if (module != null) { if (module.OwnerId != player.Id) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.ITEM_NOT_OWNED)); return; } module.Remove(); battleStation.Click(gameSession); } } }
public void execute(GameSession gameSession, byte[] bytes) { var read = new BuildStationRequest(); read.readCommand(bytes); var player = gameSession.Player; var battleStation = player.Spacemap.GetActivatableMapEntity(read.battleStationId) as BattleStation; if (battleStation != null) { if (player.Position.DistanceTo(battleStation.Position) > 700) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.OUT_OF_RANGE)); return; } if (battleStation.EquippedStationModule[player.Clan.Id].Count != 10 || battleStation.InBuildingState || battleStation.Clan.Id != 0) { return; } if (battleStation.Destroyed) { battleStation.Destroyed = false; } battleStation.InBuildingState = true; battleStation.Clan = player.Clan; foreach (var module in battleStation.EquippedStationModule[player.Clan.Id]) { module.Clan = player.Clan; module.FactionId = module.Clan.FactionId; } battleStation.FactionId = battleStation.Clan.FactionId; battleStation.BuildTimeInMinutes = 0; battleStation.buildTime = DateTime.Now; Program.TickManager.AddTick(battleStation); battleStation.AddVisualModifier(VisualModifierCommand.BATTLESTATION_CONSTRUCTING, 0, "", 0, true); player.SendCommand(BattleStationBuildingStateCommand.write(battleStation.Id, battleStation.Id, battleStation.Name, (int)TimeSpan.FromMinutes(battleStation.BuildTimeInMinutes).TotalSeconds, 3600, battleStation.Clan.Name, new FactionModule((short)battleStation.FactionId))); QueryManager.BattleStations.BattleStation(battleStation); QueryManager.BattleStations.Modules(battleStation); } }
public void execute(GameSession gameSession, byte[] bytes) { var read = new EquipModuleRequest(); read.readCommand(bytes); var player = gameSession.Player; var battleStation = player.Spacemap.GetActivatableMapEntity(read.battleStationId) as BattleStation; if (battleStation != null) { if (player.Position.DistanceTo(battleStation.Position) > 700) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.OUT_OF_RANGE)); return; } if (!battleStation.EquippedStationModule.ContainsKey(player.Clan.Id)) { battleStation.EquippedStationModule[player.Clan.Id] = new List <Satellite>(); } else { if (battleStation.EquippedStationModule[player.Clan.Id].Count >= 10) { return; } } if (battleStation.EquippedStationModule[player.Clan.Id].Where(x => !x.Installed && x.OwnerId == player.Id).ToList().Count > 0) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.EQUIP_OF_SAME_PLAYER_RUNNING)); return; } var module = player.Storage.BattleStationModules.Where(x => x.Id == read.itemId).FirstOrDefault(); if (module != null) { if (module.Type == StationModuleModule.DEFLECTOR && read.slotId != 1 || module.Type != StationModuleModule.DEFLECTOR && read.slotId == 1) { return; } if (module.Type == StationModuleModule.HULL && read.slotId != 0 || module.Type != StationModuleModule.HULL && read.slotId == 0) { return; } if ((module.Type == StationModuleModule.DEFLECTOR || module.Type == StationModuleModule.HULL || module.Type == StationModuleModule.REPAIR || module.Type == StationModuleModule.DAMAGE_BOOSTER || module.Type == StationModuleModule.EXPERIENCE_BOOSTER || module.Type == StationModuleModule.HONOR_BOOSTER) && battleStation.EquippedStationModule[player.Clan.Id].Where(x => x.Type == module.Type).Count() >= 1) { return; } var equippedModule = battleStation.EquippedStationModule[player.Clan.Id].Where(x => x.SlotId == read.slotId).FirstOrDefault(); if (read.replace || equippedModule != null) { if (read.replace && equippedModule.OwnerId != player.Id) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.ITEM_NOT_OWNED)); return; } else if (!read.replace && !equippedModule.Installed && equippedModule.OwnerId != player.Id) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.CONCURRENT_EQUIP)); return; } equippedModule.Remove(false, false); if (battleStation.AssetTypeId == AssetTypeModule.BATTLESTATION) { equippedModule.Spacemap.Activatables.TryRemove(equippedModule.Id, out var activatable); GameManager.SendCommandToMap(equippedModule.Spacemap.Id, AssetRemoveCommand.write(equippedModule.GetAssetType(), equippedModule.Id)); } } int designId = module.Type == StationModuleModule.REPAIR ? 3 : module.Type == StationModuleModule.LASER_HIGH_RANGE ? 4 : module.Type == StationModuleModule.LASER_MID_RANGE ? 5 : module.Type == StationModuleModule.LASER_LOW_RANGE ? 6 : module.Type == StationModuleModule.ROCKET_LOW_ACCURACY ? 8 : module.Type == StationModuleModule.ROCKET_MID_ACCURACY ? 7 : module.Type == StationModuleModule.HONOR_BOOSTER ? 9 : module.Type == StationModuleModule.DAMAGE_BOOSTER ? 10 : module.Type == StationModuleModule.EXPERIENCE_BOOSTER ? 11 : 0; var satellite = new Satellite(battleStation, player.Id, Satellite.GetName(module.Type), designId, module.Id, read.slotId, module.Type, Satellite.GetPosition(battleStation.Position, read.slotId)); satellite.InstallationSecondsLeft = battleStation.AssetTypeId == AssetTypeModule.BATTLESTATION ? 0 : 0; module.InUse = true; battleStation.EquippedStationModule[player.Clan.Id].Add(satellite); if (battleStation.AssetTypeId == AssetTypeModule.BATTLESTATION) { satellite.AddVisualModifier(VisualModifierCommand.BATTLESTATION_INSTALLING, 0, "", 0, true); satellite.Spacemap.Activatables.TryAdd(satellite.Id, satellite); foreach (var character in satellite.Spacemap.Characters.Values) { if (character is Player) { short relationType = character.Clan.Id != 0 && satellite.Clan.Id != 0 ? satellite.Clan.GetRelation(character.Clan) : (short)0; (character as Player).SendCommand(satellite.GetAssetCreateCommand(relationType)); } } } battleStation.Click(gameSession); QueryManager.SavePlayer.Modules(player); QueryManager.BattleStations.Modules(battleStation); //send command to other players } } }
public void ThrowError(GameSession session) { session.Client.Send(BattleStationErrorCommand.write(BattleStationErrorCommand.ITEM_NOT_OWNED).Bytes); }