public override void OnVariableSet(DreamObject dreamObject, string variableName, DreamValue variableValue, DreamValue oldVariableValue) { base.OnVariableSet(dreamObject, variableName, variableValue, oldVariableValue); if (variableName == "key" || variableName == "ckey") { if (_playerManager.TryGetSessionByUsername(variableValue.GetValueAsString(), out var session)) { var connection = _dreamManager.GetConnectionBySession(session); connection.MobDreamObject = dreamObject; } } else if (variableName == "see_invisible") { //TODO } else if (variableName == "client" && variableValue != oldVariableValue) { var newClient = variableValue.GetValueAsDreamObject(); var oldClient = oldVariableValue.GetValueAsDreamObject(); if (newClient != null) { _dreamManager.GetConnectionFromClient(newClient).MobDreamObject = dreamObject; } else if (oldClient != null) { _dreamManager.GetConnectionFromClient(oldClient).MobDreamObject = null; } } }
private void OnEntityClicked(EntityClickedEvent e, EntitySessionEventArgs sessionEvent) { DreamObject atom = _atomManager.GetAtomFromEntity(e.EntityUid); if (atom == null) { return; } IPlayerSession session = (IPlayerSession)sessionEvent.SenderSession; var client = _dreamManager.GetConnectionBySession(session).ClientDreamObject; var usr = client.GetVariable("mob").GetValueAsDreamObject(); client.SpawnProc("Click", ConstructClickArguments(atom, e), usr: usr); }