private void OnMindAdded(EntityUid uid, DroneComponent drone, MindAddedMessage args) { UpdateDroneAppearance(uid, DroneStatus.On); _popupSystem.PopupEntity(Loc.GetString("drone-activated"), uid, Filter.Pvs(uid)); if (drone.AlreadyAwoken == false) { var spawnCoord = Transform(uid).Coordinates; if (drone.Tools.Count == 0) { return; } if (TryComp <HandsComponent>(uid, out var hands) && hands.Count >= drone.Tools.Count) { foreach (var entry in drone.Tools) { var item = EntityManager.SpawnEntity(entry.PrototypeId, spawnCoord); AddComp <UnremoveableComponent>(item); hands.PutInHand(item); drone.ToolUids.Add(item); } } drone.AlreadyAwoken = true; } }
private void OnMindAdded(EntityUid uid, PAIComponent pai, MindAddedMessage args) { // Mind was added, shutdown the ghost role stuff so it won't get in the way if (EntityManager.HasComponent <GhostTakeoverAvailableComponent>(uid)) { EntityManager.RemoveComponent <GhostTakeoverAvailableComponent>(uid); } UpdatePAIAppearance(uid, PAIStatus.On); }
private void OnMindAdded(EntityUid uid, DroneComponent drone, MindAddedMessage args) { UpdateDroneAppearance(uid, DroneStatus.On); _popupSystem.PopupEntity(Loc.GetString("drone-activated"), uid, Filter.Pvs(uid), PopupType.Large); if (drone.AlreadyAwoken == false) { var spawnCoord = Transform(uid).Coordinates; if (drone.Tools.Count == 0) { return; } if (TryComp <HandsComponent>(uid, out var hands) && hands.Count >= drone.Tools.Count) { var items = EntitySpawnCollection.GetSpawns(drone.Tools, _robustRandom); foreach (var entry in items) { var item = Spawn(entry, spawnCoord); AddComp <UnremoveableComponent>(item); if (!_handsSystem.TryPickupAnyHand(uid, item, checkActionBlocker: false)) { QueueDel(item); Logger.Error($"Drone ({ToPrettyString(uid)}) failed to pick up innate item ({ToPrettyString(item)})"); continue; } drone.ToolUids.Add(item); } } if (TryComp <ActionsComponent>(uid, out var actions) && TryComp <UnpoweredFlashlightComponent>(uid, out var flashlight)) { _actionsSystem.AddAction(uid, flashlight.ToggleAction, null, actions); } drone.AlreadyAwoken = true; } }