Index: ps/trunk/binaries/data/config/default.cfg =================================================================== --- ps/trunk/binaries/data/config/default.cfg +++ ps/trunk/binaries/data/config/default.cfg @@ -167,6 +167,7 @@ ; > HOTKEYS ONLY chat = Return ; Toggle chat window teamchat = "T" ; Toggle chat window in team chat mode +privatechat = "L" ; Toggle chat window and select the previous private chat partner ; > QUICKSAVE quicksave = "Shift+F5" Index: ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json =================================================================== --- ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json +++ ps/trunk/binaries/data/mods/public/gui/credits/texts/programming.json @@ -145,6 +145,7 @@ {"nick": "Offensive ePeen", "name": "Jared Ryan Bills"}, {"nick": "Ols", "name": "Oliver Whiteman"}, {"nick": "olsner", "name": "Simon Brenner"}, + {"nick": "OptimusShepard", "name": "Pirmin Stanglmeier"}, {"nick": "otero"}, {"name": "Nick Owens"}, {"nick": "Palaxin", "name": "David A. Freitag"}, Index: ps/trunk/binaries/data/mods/public/gui/manual/intro.txt =================================================================== --- ps/trunk/binaries/data/mods/public/gui/manual/intro.txt +++ ps/trunk/binaries/data/mods/public/gui/manual/intro.txt @@ -62,6 +62,7 @@ ESC: Close all dialogs (chat, menu) or clear selected units Enter/return: Open/send chat T: Send team chat +L: Chat with the previously selected private chat partner Pause: Pause/resume the game Delete: Delete currently selected units/buildings Shift + Delete: Delete currently selected units/buildings without confirmation Index: ps/trunk/binaries/data/mods/public/gui/session/hotkeys/misc.xml =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/hotkeys/misc.xml +++ ps/trunk/binaries/data/mods/public/gui/session/hotkeys/misc.xml @@ -5,11 +5,15 @@ - openChat(false); + openChat(); - openChat(true); + openChat(g_IsObserver ? "/observers" : "/allies"); + + + + openChat(g_LastChatAddressee); Index: ps/trunk/binaries/data/mods/public/gui/session/menu.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/menu.js +++ ps/trunk/binaries/data/mods/public/gui/session/menu.js @@ -203,7 +203,7 @@ }); } -function openChat(teamChat = false) +function openChat(command = "") { if (g_Disconnected) return; @@ -211,7 +211,6 @@ closeOpenDialogs(); let chatAddressee = Engine.GetGUIObjectByName("chatAddressee"); - let command = teamChat ? (g_IsObserver ? "/observers" : "/allies") : ""; chatAddressee.selected = chatAddressee.list_data.indexOf(command); Engine.GetGUIObjectByName("chatInput").focus(); Index: ps/trunk/binaries/data/mods/public/gui/session/messages.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/messages.js +++ ps/trunk/binaries/data/mods/public/gui/session/messages.js @@ -30,6 +30,11 @@ var g_ChatTimers = []; /** + * Command to send to the previously selected private chat partner. + */ +var g_LastChatAddressee = ""; + +/** * Handle all netmessage types that can occur. */ var g_NetMessageTypes = { @@ -750,6 +755,10 @@ if (chatAddressee.selected > 0 && (text.indexOf("/") != 0 || text.indexOf("/me ") == 0)) text = chatAddressee.list_data[chatAddressee.selected] + " " + text; + let selectedChat = chatAddressee.list_data[chatAddressee.selected] + if (selectedChat.startsWith("/msg")) + g_LastChatAddressee = selectedChat; + submitChatDirectly(text); } Index: ps/trunk/binaries/data/mods/public/gui/session/session.js =================================================================== --- ps/trunk/binaries/data/mods/public/gui/session/session.js +++ ps/trunk/binaries/data/mods/public/gui/session/session.js @@ -387,7 +387,8 @@ "\n" + (g_IsObserver ? translate("Press %(hotkey)s to open the observer chat.") : translate("Press %(hotkey)s to open the ally chat.")), - "teamchat"); + "teamchat") + + colorizeHotkey("\n" + translate("Press %(hotkey)s to open the previously selected private chat."), "privatechat"); Engine.GetGUIObjectByName("idleWorkerButton").tooltip = colorizeHotkey("%(hotkey)s" + " ", "selection.idleworker") +