public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 2) { shell.WriteLine(Loc.GetString("Wrong number of arguments.")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("EntityUid must be a number.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent <MindComponent>(out var mindComponent)) { shell.WriteLine(Loc.GetString("Target entity does not have a mind (did you forget to make sentient?)")); return; } if (!IoCManager.Resolve <IPlayerManager>().TryGetSessionByUsername(args[1], out var session)) { shell.WriteLine(Loc.GetString("Target player does not exist")); return; } // hm, does player have a mind? if not we may need to give them one var playerCData = session.ContentData(); if (playerCData == null) { shell.WriteLine(Loc.GetString("Target player does not have content data (wtf?)")); return; } var mind = playerCData.Mind; if (mind == null) { mind = new Mind(session.UserId) { CharacterName = target.Name }; playerCData.Mind = mind; } mind.TransferTo(target); }
public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) { if (args.Length < 1) { shell.SendText(player, Loc.GetString("Wrong number of arguments.")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.SendText(player, Loc.GetString("EntityUid must be a number.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.SendText(player, Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent <InventoryComponent>(out var inventoryComponent)) { shell.SendText(player, Loc.GetString("Target entity does not have an inventory!")); return; } if (args.Length == 1) { var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.SendText(player, Loc.GetString("Invalid outfit id")); return; } foreach (var slot in inventoryComponent.Slots) { inventoryComponent.ForceUnequip(slot); var gearStr = startingGear.GetGear(slot, null); if (gearStr != "") { var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); inventoryComponent.Equip(slot, equipmentEntity.GetComponent <ItemComponent>(), false); } } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 2) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } var target = entityManager.GetEntity(eUid); if (!target.HasComponent <MindComponent>()) { shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message")); return; } if (!IoCManager.Resolve <IPlayerManager>().TryGetSessionByUsername(args[1], out var session)) { shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist")); return; } // hm, does player have a mind? if not we may need to give them one var playerCData = session.ContentData(); if (playerCData == null) { shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-content-data-message")); return; } var mind = playerCData.Mind; if (mind == null) { mind = new Mind.Mind(session.UserId) { CharacterName = target.Name }; playerCData.Mind = mind; } mind.TransferTo(target); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { var sandboxManager = IoCManager.Resolve <ISandboxManager>(); var adminManager = IoCManager.Resolve <IAdminManager>(); if (shell.IsClient && (!sandboxManager.IsSandboxEnabled && !adminManager.HasAdminFlag((IPlayerSession)shell.Player !, AdminFlags.Mapping))) { shell.WriteError("You are not currently able to use mapping commands."); } if (args.Length != 3) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); if (!int.TryParse(args[0], out var targetId)) { shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); return; } var eUid = new EntityUid(targetId); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent(out NodeContainerComponent? nodeContainerComponent)) { shell.WriteLine(Loc.GetString("shell-entity-is-not-node-container")); return; } if (!Enum.TryParse(args[1], out NodeGroupID nodeGroupId)) { shell.WriteLine(Loc.GetString("shell-node-group-is-invalid")); return; } var color = Color.TryFromHex(args[2]); if (!color.HasValue) { shell.WriteError(Loc.GetString("shell-invalid-color-hex")); return; } PaintNodes(nodeContainerComponent, nodeGroupId, color.Value); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("Server cannot do this."); return; } if (args.Length != 1) { shell.WriteLine(Loc.GetString("Wrong number of arguments.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); if (!int.TryParse(args[0], out var targetId)) { shell.WriteLine(Loc.GetString("Argument must be a number.")); return; } var eUid = new EntityUid(targetId); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent(out MindComponent? mindComponent)) { shell.WriteLine(Loc.GetString("Target entity is not a mob!")); return; } var mind = player.ContentData()?.Mind; DebugTools.AssertNotNull(mind); var oldEntity = mind !.CurrentEntity; mindComponent.Mind?.TransferTo(null); mind.TransferTo(target); DebugTools.AssertNotNull(oldEntity); if (oldEntity !.HasComponent <GhostComponent>()) { oldEntity.Delete(); } }
private void HandleExamine(ICommonSession session, GridCoordinates coords, EntityUid uid) { if (!uid.IsValid() || !_entityManager.TryGetEntity(uid, out var entity)) { return; } DoExamine(entity); }
private bool OnCopy(ICommonSession?session, EntityCoordinates coords, EntityUid uid) { if (!CanSandbox()) { return(false); } // Try copy entity. if (uid.IsValid() && EntityManager.TryGetComponent(uid, out MetaDataComponent? comp) && !comp.EntityDeleted) { if (comp.EntityPrototype == null || comp.EntityPrototype.NoSpawn || comp.EntityPrototype.Abstract) { return(false); } if (_placementManager.Eraser) { _placementManager.ToggleEraser(); } _placementManager.BeginPlacing(new() { EntityType = comp.EntityPrototype.ID, IsTile = false, TileType = 0, PlacementOption = comp.EntityPrototype.PlacementMode }); return(true); } // Try copy tile. if (!_mapManager.TryFindGridAt(coords.ToMap(EntityManager), out var grid) || !grid.TryGetTileRef(coords, out var tileRef)) { return(false); } if (_placementManager.Eraser) { _placementManager.ToggleEraser(); } _placementManager.BeginPlacing(new() { EntityType = null, IsTile = true, TileType = tileRef.Tile.TypeId, PlacementOption = nameof(AlignTileAny) }); return(true); }
public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) { if (player == null) { shell.SendText((IPlayerSession)null, "Server cannot do this."); return; } if (args.Length != 1) { shell.SendText(player, Loc.GetString("Wrong number of arguments.")); return; } var mind = player.ContentData().Mind; var entityManager = IoCManager.Resolve <IEntityManager>(); if (!int.TryParse(args[0], out var targetId)) { shell.SendText(player, Loc.GetString("Argument must be a number.")); return; } var eUid = new EntityUid(targetId); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.SendText(player, Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent(out MindComponent mindComponent)) { shell.SendText(player, Loc.GetString("Target entity is not a mob!")); return; } var oldEntity = mind.CurrentEntity; mindComponent.Mind?.TransferTo(null); mind.TransferTo(target); if (oldEntity.HasComponent <GhostComponent>()) { oldEntity.Delete(); } }
/// <summary> /// Verifies that this set of coordinates can be currently resolved to a location. /// </summary> /// <param name="entityManager">Entity Manager containing the entity Id.</param> /// <returns><see langword="true" /> if this set of coordinates can be currently resolved to a location, otherwise <see langword="false" />.</returns> public bool IsValid(IEntityManager entityManager) { if (!EntityId.IsValid() || !entityManager.EntityExists(EntityId)) { return(false); } if (!float.IsFinite(Position.X) || !float.IsFinite(Position.Y)) { return(false); } return(true); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var target = new EntityUid(entityUid); if (!target.IsValid() || !entityManager.EntityExists(target)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } if (!entityManager.HasComponent <InventoryComponent?>(target)) { shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory"))); return; } if (args.Length == 1) { if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } if (!SetOutfit(target, args[1], entityManager)) { shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); } }
public bool ValidateEntityTarget(EntityUid user, EntityUid target, EntityTargetAction action) { if (!target.IsValid() || Deleted(target)) { return(false); } if (action.Whitelist != null && !action.Whitelist.IsValid(target, EntityManager)) { return(false); } if (action.CheckCanInteract && !_actionBlockerSystem.CanInteract(user, target)) { return(false); } if (user == target) { return(action.CanTargetSelf); } if (!action.CheckCanAccess) { // even if we don't check for obstructions, we may still need to check the range. var xform = Transform(user); var targetXform = Transform(target); if (xform.MapID != targetXform.MapID) { return(false); } if (action.Range <= 0) { return(true); } return((xform.WorldPosition - targetXform.WorldPosition).Length <= action.Range); } if (_interactionSystem.InRangeUnobstructed(user, target, range: action.Range) && _containerSystem.IsInSameOrParentContainer(user, target)) { return(true); } return(_interactionSystem.CanAccessViaStorage(user, target)); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (player == null) { shell.WriteLine("shell-server-cannot"); return; } if (args.Length != 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); if (!int.TryParse(args[0], out var targetId)) { shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); return; } var eUid = new EntityUid(targetId); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent(out MindComponent? mindComponent)) { shell.WriteLine(Loc.GetString("shell-entity-is-not-mob")); return; } var mind = player.ContentData()?.Mind; DebugTools.AssertNotNull(mind); mindComponent.Mind?.TransferTo(null); mind !.TransferTo(target); }
private void HandleExamine(ICommonSession session, GridCoordinates coords, EntityUid uid) { if (!uid.IsValid() || !_entityManager.TryGetEntity(uid, out var examined)) { return; } var playerEntity = _playerManager.LocalPlayer.ControlledEntity; if (playerEntity == null || !CanExamine(playerEntity, examined)) { return; } DoExamine(examined); }
public void LogVerb(Verb verb, EntityUid user, EntityUid target, bool forced) { // first get the held item. again. EntityUid usedUid = default; if (EntityManager.TryGetComponent(user, out SharedHandsComponent? hands) && hands.TryGetActiveHeldEntity(out var heldEntity)) { usedUid = heldEntity; if (usedUid != default && EntityManager.TryGetComponent(usedUid, out HandVirtualItemComponent? pull)) { usedUid = pull.BlockingEntity; } } // get all the entities if (!user.IsValid() || !target.IsValid()) { return; } EntityUid?used = null; if (usedUid != default) { EntityManager.EntityExists(usedUid); } // then prepare the basic log message body var verbText = $"{verb.Category?.Text} {verb.Text}".Trim(); var logText = forced ? $"was forced to execute the '{verbText}' verb targeting " // let's not frame people, eh? : $"executed '{verbText}' verb targeting "; // then log with entity information if (used != null) { _logSystem.Add(LogType.Verb, verb.Impact, $"{user} {logText} {target} while holding {used}"); } else { _logSystem.Add(LogType.Verb, verb.Impact, $"{user} {logText} {target}"); } }
private bool HandleExamine(ICommonSession?session, EntityCoordinates coords, EntityUid uid) { if (!uid.IsValid() || !EntityManager.TryGetEntity(uid, out var examined)) { return(false); } var playerEntity = _playerManager.LocalPlayer?.ControlledEntity; if (playerEntity == null || !CanExamine(playerEntity, examined)) { return(false); } DoExamine(examined); return(true); }
public void LogVerb(Verb verb, EntityUid user, EntityUid target, bool forced) { // first get the held item. again. EntityUid usedUid = default; if (EntityManager.TryGetComponent(user, out SharedHandsComponent? hands) && hands.TryGetActiveHeldEntity(out var heldEntity)) { usedUid = heldEntity; if (usedUid != default && EntityManager.TryGetComponent(usedUid, out HandVirtualItemComponent? pull)) { usedUid = pull.BlockingEntity; } } // get all the entities if (!user.IsValid() || !target.IsValid()) { return; } EntityUid?used = null; if (usedUid != default) { EntityManager.EntityExists(usedUid); } var verbText = $"{verb.Category?.Text} {verb.Text}".Trim(); // lets not frame people, eh? var executionText = forced ? "was forced to execute" : "executed"; if (used == null) { _logSystem.Add(LogType.Verb, verb.Impact, $"{ToPrettyString(user):user} {executionText} the [{verbText:verb}] verb targeting {ToPrettyString(target):target}"); } else { _logSystem.Add(LogType.Verb, verb.Impact, $"{ToPrettyString(user):user} {executionText} the [{verbText:verb}] verb targeting {ToPrettyString(target):target} while holding {ToPrettyString(used.Value):held}"); } }
public void InvalidatePosition(EntityUid gridId, Vector2i pos, bool fixVacuum = false) { if (!gridId.IsValid()) { return; } var query = EntityManager.GetEntityQuery <AirtightComponent>(); _explosionSystem.UpdateAirtightMap(gridId, pos, query); // TODO make atmos system use query _atmosphereSystem.UpdateAdjacent(gridId, pos); _atmosphereSystem.InvalidateTile(gridId, pos); if (fixVacuum) { _atmosphereSystem.FixVacuum(gridId, pos); } }
private void HandleExamine(ICommonSession session, GridCoordinates coords, EntityUid uid) { if (!uid.IsValid() || !_entityManager.TryGetEntity(uid, out var entity)) { return; } var playerEntity = _playerManager.LocalPlayer.ControlledEntity; if (playerEntity == null) { return; } if ((entity.Transform.WorldPosition - playerEntity.Transform.WorldPosition).LengthSquared > ExamineRangeSquared) { return; } DoExamine(entity); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (shell.Player is not IPlayerSession player) { shell.WriteLine("shell-server-cannot"); return; } if (args.Length != 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var targetId)) { shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); return; } var target = new EntityUid(targetId); if (!target.IsValid() || !_entities.EntityExists(target)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } if (!_entities.HasComponent <MindComponent>(target)) { shell.WriteLine(Loc.GetString("shell-entity-is-not-mob")); return; } var mind = player.ContentData()?.Mind; DebugTools.AssertNotNull(mind); mind !.TransferTo(target); }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var target = new EntityUid(entityUid); if (!target.IsValid() || !entityManager.EntityExists(target)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } if (!entityManager.TryGetComponent <InventoryComponent?>(target, out var inventoryComponent)) { shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory"))); return; } if (args.Length == 1) { if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); return; } HumanoidCharacterProfile?profile = null; // Check if we are setting the outfit of a player to respect the preferences if (entityManager.TryGetComponent <ActorComponent?>(target, out var actorComponent)) { var userId = actorComponent.PlayerSession.UserId; var preferencesManager = IoCManager.Resolve <IServerPreferencesManager>(); var prefs = preferencesManager.GetPreferences(userId); profile = prefs.SelectedCharacter as HumanoidCharacterProfile; } var invSystem = EntitySystem.Get <InventorySystem>(); if (invSystem.TryGetSlots(target, out var slotDefinitions, inventoryComponent)) { foreach (var slot in slotDefinitions) { invSystem.TryUnequip(target, slot.Name, true, true, inventoryComponent); var gearStr = startingGear.GetGear(slot.Name, profile); if (gearStr == string.Empty) { continue; } var equipmentEntity = entityManager.SpawnEntity(gearStr, entityManager.GetComponent <TransformComponent>(target).Coordinates); if (slot.Name == "id" && entityManager.TryGetComponent <PDAComponent?>(equipmentEntity, out var pdaComponent) && pdaComponent.ContainedID != null) { pdaComponent.ContainedID.FullName = entityManager.GetComponent <MetaDataComponent>(target).EntityName; } invSystem.TryEquip(target, equipmentEntity, slot.Name, true, inventory: inventoryComponent); } } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); return; } // Get player entity if (!IoCManager.Resolve <IPlayerManager>().TryGetSessionByUsername(args[0], out var session)) { shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist")); return; } if (session.AttachedEntity is not { } user) { shell.WriteLine(Loc.GetString("Selected player doesn't controll any entity")); return; } // Get target item EntityUid?uplinkEntity = null; var entityManager = IoCManager.Resolve <IEntityManager>(); if (args.Length >= 2) { if (!int.TryParse(args[1], out var itemID)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var eUid = new EntityUid(itemID); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } uplinkEntity = eUid; } // Get TC count var configManager = IoCManager.Resolve <IConfigurationManager>(); var tcCount = configManager.GetCVar(CCVars.TraitorStartingBalance); // Get account var uplinkAccount = new UplinkAccount(tcCount, user); var accounts = entityManager.EntitySysManager.GetEntitySystem <UplinkAccountsSystem>(); accounts.AddNewAccount(uplinkAccount); // Finally add uplink if (!entityManager.EntitySysManager.GetEntitySystem <UplinkSystem>() .AddUplink(user, uplinkAccount, uplinkEntity)) { shell.WriteLine(Loc.GetString("Failed to add uplink to the player")); return; } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("Wrong number of arguments.")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("EntityUid must be a number.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent <InventoryComponent>(out var inventoryComponent)) { shell.WriteLine(Loc.GetString("Target entity does not have an inventory!")); return; } if (args.Length == 1) { if (!(shell.Player is IPlayerSession player)) { shell.WriteError( Loc.GetString( "This does not work from the server console. You must pass the outfit id aswell.")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.WriteLine(Loc.GetString("Invalid outfit id")); return; } HumanoidCharacterProfile?profile = null; // Check if we are setting the outfit of a player to respect the preferences if (target.TryGetComponent <IActorComponent>(out var actorComponent)) { var userId = actorComponent.playerSession.UserId; var preferencesManager = IoCManager.Resolve <IServerPreferencesManager>(); var prefs = preferencesManager.GetPreferences(userId); profile = prefs.SelectedCharacter as HumanoidCharacterProfile; } foreach (var slot in inventoryComponent.Slots) { inventoryComponent.ForceUnequip(slot); var gearStr = startingGear.GetGear(slot, profile); if (gearStr == "") { continue; } var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); if (slot == EquipmentSlotDefines.Slots.IDCARD && equipmentEntity.TryGetComponent <PDAComponent>(out var pdaComponent) && pdaComponent.ContainedID != null) { pdaComponent.ContainedID.FullName = target.Name; } inventoryComponent.Equip(slot, equipmentEntity.GetComponent <ItemComponent>(), false); } }