diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index e1fcefdd97f..70a8c331a68 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -70,12 +70,19 @@ #define ui_movi "EAST-2:26,SOUTH:5" #define ui_acti "EAST-3:24,SOUTH:5" #define ui_combat_toggle "EAST-3:24,SOUTH:5" +#define ui_floor_change "BOTTOM+1:8,RIGHT-1:28" #define ui_zonesel "EAST-1:28,SOUTH:5" #define ui_acti_alt "EAST-1:28,SOUTH:5" //alternative intent switcher for when the interface is hidden (F12) #define ui_crafting "EAST-4:22,SOUTH:5" #define ui_building "EAST-4:22,SOUTH:21" #define ui_language_menu "EAST-4:6,SOUTH:21" #define ui_navigate_menu "EAST-4:6,SOUTH:5" +#define ui_memories_menu "EAST-4:6,SOUTH:5" + +//basic mob-unique ui +#define ui_basic_combat_toggle "EAST-1:28,SOUTH:6" +#define ui_basic_language_menu "BOTTOM+1:26,RIGHT-1:28" +#define ui_basic_memories_menu "BOTTOM+1:26,RIGHT-1:12" //Upper left (action buttons) #define ui_action_palette "WEST+0:23,NORTH-1:5" @@ -114,6 +121,7 @@ #define ui_human_navigate "EAST-3:7,SOUTH+1:7" #define ui_human_language "EAST-3:7,SOUTH+1:24" #define ui_human_area "EAST-3:24,SOUTH+1:24" +#define ui_human_memories_area "EAST-4:22,SOUTH+1:7" //Drones #define ui_drone_drop "CENTER+1:18,SOUTH:5" @@ -123,7 +131,7 @@ //Cyborgs #define ui_borg_health "EAST-1:28,CENTER-1:15" -#define ui_borg_pull "EAST-2:26,SOUTH+1:7" +#define ui_borg_pull "EAST-3:26,SOUTH:5" #define ui_borg_radio "EAST-1:28,SOUTH+1:7" #define ui_borg_intents "EAST-2:26,SOUTH:5" #define ui_borg_lamp "CENTER-3:16, SOUTH:5" @@ -132,11 +140,11 @@ #define ui_inv2 "CENTER-1 :16,SOUTH:5" #define ui_inv3 "CENTER :16,SOUTH:5" #define ui_borg_module "CENTER+1:16,SOUTH:5" -#define ui_borg_store "CENTER+2:16,SOUTH:5" -#define ui_borg_camera "CENTER+3:21,SOUTH:5" -#define ui_borg_alerts "CENTER+4:21,SOUTH:5" -#define ui_borg_language_menu "CENTER+4:19,SOUTH+1:6" -#define ui_borg_navigate_menu "CENTER+4:3,SOUTH+1:6" +#define ui_borg_camera "CENTER+2:16,SOUTH:5" +#define ui_borg_alerts "CENTER+3:16,SOUTH:5" +#define ui_borg_language_menu "EAST-2:26,SOUTH+1:8" +#define ui_borg_navigate_menu "EAST-2:10,SOUTH+1:8" +#define ui_borg_memories_menu "EAST-2:26,SOUTH+1:24" #define ui_borg_floor_changer "EAST-1:28,SOUTH+1:39" //Aliens @@ -144,9 +152,10 @@ #define ui_alienplasmadisplay "EAST,CENTER-2:15" #define ui_alien_queen_finder "EAST,CENTER-3:15" #define ui_alien_storage_r "CENTER+1:18,SOUTH:5" -#define ui_alien_language_menu "EAST-4:20,SOUTH:5" -#define ui_alien_navigate_menu "EAST-4:4,SOUTH:5" -#define ui_alien_floor_change "EAST-3:24, SOUTH:24" +#define ui_alien_language_menu "EAST-4:22,SOUTH:5" +#define ui_alien_navigate_menu "EAST-4:6,SOUTH:5" +#define ui_alien_memories_menu "EAST-4:22,SOUTH:1:20" +#define ui_alien_floor_change "EAST-3:24,SOUTH:20" //AI #define ui_ai_core "BOTTOM:6,RIGHT-4" @@ -154,7 +163,8 @@ #define ui_ai_announcement "BOTTOM:6,RIGHT-2" #define ui_ai_state_laws "BOTTOM:6,RIGHT-1" #define ui_ai_mod_int "BOTTOM:6,RIGHT" -#define ui_ai_language_menu "BOTTOM+1:8,RIGHT-1:30" +#define ui_ai_language_menu "BOTTOM+1:6,RIGHT-1:30" +#define ui_ai_memories_menu "BOTTOM+1:22,RIGHT-1:30" #define ui_ai_crew_monitor "BOTTOM:6,CENTER-1" #define ui_ai_crew_manifest "BOTTOM:6,CENTER" @@ -188,6 +198,7 @@ #define ui_pai_radio "SOUTH:5,EAST-1:28" #define ui_pai_language_menu "SOUTH:1:37,EAST-1:12" #define ui_pai_navigate_menu "SOUTH:1:37,EAST-1:28" +#define ui_pai_memories_menu "SOUTH:5:50,EAST-1:28" //Ghosts #define ui_ghost_spawners_menu "SOUTH:6,CENTER-3:24" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 1e50b838289..728439e5fad 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -244,9 +244,16 @@ // Language menu using = new /atom/movable/screen/language_menu(null, src) + using.icon = ui_style using.screen_loc = ui_ai_language_menu static_inventory += using +// Memories + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_ai_memories_menu + static_inventory += using + // Z-level floor change using = new /atom/movable/screen/ai/floor_indicator(null, src) //These come with their own predefined screen locs static_inventory += using diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 9609ff4977f..822fe712850 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -65,13 +65,20 @@ static_inventory += floor_change using = new/atom/movable/screen/language_menu(null, src) + using.icon = ui_style using.screen_loc = ui_alien_language_menu static_inventory += using using = new /atom/movable/screen/navigate(null, src) + using.icon = ui_style using.screen_loc = ui_alien_navigate_menu static_inventory += using + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_alien_memories_menu + static_inventory += using + using = new /atom/movable/screen/drop(null, src) using.icon = ui_style using.screen_loc = ui_drop_throw diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index c49c97e5ec4..3331ac8c790 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -45,6 +45,10 @@ using.screen_loc = ui_alien_navigate_menu static_inventory += using + using = new /atom/movable/screen/memories(null, src) + using.screen_loc = ui_alien_memories_menu + static_inventory += using + zone_select = new /atom/movable/screen/zone_sel/alien(null, src) zone_select.update_appearance() static_inventory += zone_select diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index b6d2d439c06..14b332d0c3c 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -141,6 +141,9 @@ hud_icon_state = "darkness_vision" relevant_flag = GHOST_DARKNESS_LEVEL +/datum/hud/ghost + ui_style = 'icons/hud/screen_ghost.dmi' + /datum/hud/ghost/New(mob/owner) ..() var/atom/movable/screen/using @@ -173,11 +176,13 @@ using.screen_loc = ui_ghost_minigames static_inventory += using - using = new /atom/movable/screen/language_menu/ghost(null, src) + using = new /atom/movable/screen/language_menu(null, src) + using.icon = ui_style using.screen_loc = ui_ghost_language_menu static_inventory += using - floor_change = new /atom/movable/screen/floor_changer/vertical/ghost(null, src) + floor_change = new /atom/movable/screen/floor_changer/vertical(null, src) + floor_change.icon = ui_style floor_change.screen_loc = ui_ghost_floor_changer static_inventory += floor_change diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 41367d95d81..b4b4bc0af17 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -349,9 +349,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( screenmob.client.screen += open_containers screenmob.client.screen += toggle_palette - if(action_intent) - action_intent.screen_loc = initial(action_intent.screen_loc) //Restore intent selection to the original position - if(HUD_STYLE_REDUCED) //Reduced HUD hud_shown = FALSE //Governs behavior of other procs if(static_inventory.len) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 3ccab614996..b156a01eeb2 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -71,6 +71,11 @@ using.screen_loc = ui_human_area static_inventory += using + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_human_memories_area + static_inventory += using + action_intent = new /atom/movable/screen/combattoggle/flashy(null, src) action_intent.icon = ui_style action_intent.screen_loc = ui_combat_toggle diff --git a/code/_onclick/hud/living.dm b/code/_onclick/hud/living.dm index e0d684a4bd5..e9237d6dbb5 100644 --- a/code/_onclick/hud/living.dm +++ b/code/_onclick/hud/living.dm @@ -1,6 +1,3 @@ -/datum/hud/living - ui_style = 'icons/hud/screen_gen.dmi' - /datum/hud/living/New(mob/living/owner) ..() @@ -11,15 +8,28 @@ static_inventory += pull_icon action_intent = new /atom/movable/screen/combattoggle/flashy(null, src) - action_intent.icon = 'icons/hud/screen_midnight.dmi' - action_intent.screen_loc = ui_combat_toggle + action_intent.icon = ui_style + action_intent.screen_loc = ui_basic_combat_toggle static_inventory += action_intent floor_change = new /atom/movable/screen/floor_changer(null, src) - floor_change.icon = 'icons/hud/screen_midnight.dmi' + floor_change.icon = ui_style + floor_change.screen_loc = ui_floor_change static_inventory += floor_change - //mob health doll! assumes whatever sprite the mob is + var/atom/movable/screen/using + + using = new /atom/movable/screen/language_menu(null, src) + using.icon = ui_style + using.screen_loc = ui_basic_language_menu + static_inventory += using + + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_basic_memories_menu + static_inventory += using + + //mob health doll assumes whatever sprite the mob is healthdoll = new /atom/movable/screen/healthdoll/living(null, src) infodisplay += healthdoll diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index cfdd235a503..498d58dccb2 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -6,23 +6,29 @@ name = "cyborg module" icon_state = "nomod" -/atom/movable/screen/robot/Click() +/atom/movable/screen/robot/Click(location, control, params) if(isobserver(usr)) return TRUE -/atom/movable/screen/robot/module/Click() - //observers can look at borg's inventories - var/mob/living/silicon/robot/robot_owner = hud.mymob - if(robot_owner.model.type != /obj/item/robot_model) - if(usr.active_storage == robot_owner.model.atom_storage) - robot_owner.model.atom_storage.hide_contents(usr) - else - robot_owner.model.atom_storage.open_storage(usr) - return TRUE +/atom/movable/screen/robot/module/Click(location, control, params) . = ..() - if(.) + var/mob/living/silicon/robot/robot_owner = hud.mymob + if(robot_owner.model.type == /obj/item/robot_model) + if(.) + return + robot_owner.pick_model() return - robot_owner.pick_model() + var/list/modifiers = params2list(params) + if(robot_owner.module_active && !LAZYACCESS(modifiers, RIGHT_CLICK) && !.) + robot_owner.uneq_active() + return + + //observers can look at borg's inventories, so we ignore parent return value here, unlike everywhere else. + if(usr.active_storage == robot_owner.model.atom_storage) + robot_owner.model.atom_storage.hide_contents(usr) + else + robot_owner.model.atom_storage.open_storage(usr) + return TRUE /atom/movable/screen/robot/module1 name = "module1" @@ -64,17 +70,6 @@ var/mob/living/silicon/robot/R = usr R.radio.interact(R) -/atom/movable/screen/robot/store - name = "store" - icon_state = "store" - screen_loc = ui_borg_store - -/atom/movable/screen/robot/store/Click() - if(..()) - return - var/mob/living/silicon/robot/R = usr - R.uneq_active() - /datum/hud/robot ui_style = 'icons/hud/screen_cyborg.dmi' @@ -86,14 +81,22 @@ // Language using = new/atom/movable/screen/language_menu(null, src) + using.icon = ui_style using.screen_loc = ui_borg_language_menu static_inventory += using // Navigation using = new /atom/movable/screen/navigate(null, src) + using.icon = ui_style using.screen_loc = ui_borg_navigate_menu static_inventory += using +// Memories + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_borg_memories_menu + static_inventory += using + //Radio using = new /atom/movable/screen/robot/radio(null, src) using.screen_loc = ui_borg_radio @@ -148,7 +151,7 @@ //Combat Mode action_intent = new /atom/movable/screen/combattoggle/robot(null, src) action_intent.icon = ui_style - action_intent.screen_loc = ui_combat_toggle + action_intent.screen_loc = ui_borg_intents static_inventory += action_intent floor_change = new /atom/movable/screen/floor_changer(null, src) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 42a9e4f5c68..533099c3918 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -165,8 +165,18 @@ /atom/movable/screen/language_menu/Click() usr.get_language_holder().open_language_menu(usr) -/atom/movable/screen/language_menu/ghost - icon = 'icons/hud/screen_ghost.dmi' +/atom/movable/screen/memories + name = "Memories" + icon = 'icons/hud/screen_midnight.dmi' + icon_state = "memories" + screen_loc = ui_memories_menu + mouse_over_pointer = MOUSE_HAND_POINTER + +/atom/movable/screen/memories/Click() + if(!isliving(usr)) + return TRUE + var/mob/living/daydreamer = usr + daydreamer.open_memory_panel() /atom/movable/screen/inventory /// The identifier for the slot. It has nothing to do with ID cards. @@ -393,9 +403,6 @@ icon_state = "floor_change_v" vertical = TRUE -/atom/movable/screen/floor_changer/vertical/ghost - icon = 'icons/hud/screen_ghost.dmi' - /atom/movable/screen/spacesuit name = "Space suit cell status" icon_state = "spacesuit_0" diff --git a/code/datums/storage/storage_interface.dm b/code/datums/storage/storage_interface.dm index 3f3c6c56e0c..1f358af00ef 100644 --- a/code/datums/storage/storage_interface.dm +++ b/code/datums/storage/storage_interface.dm @@ -127,24 +127,11 @@ ///Silicon subtype of storage interface used by their model storage. /datum/storage_interface/silicon - var/atom/movable/screen/robot/store/store var/obj/item/robot_model/robot_model /datum/storage_interface/silicon/New(ui_style, datum/storage/parent_storage, mob/user) . = ..() robot_model = parent_storage.real_location - if(iscyborg(user)) - store = new(null, user.hud_used) - -/datum/storage_interface/silicon/Destroy(force) - QDEL_NULL(store) - return ..() - -/datum/storage_interface/silicon/list_ui_elements(initializing = FALSE) - if(initializing || isnull(store)) - return ..() - //we're purposely excluding 'store' from having its icon changed from initialization. - return ..() + store /datum/storage_interface/silicon/add_items( screen_start_x, diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 9cbaeb0dd45..11f5de5190b 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -110,7 +110,7 @@ /obj/item/stack/update_name(updates) . = ..() - maptext = (ismob(loc) || loc?.atom_storage) ? MAPTEXT("[amount]") : "" + maptext = (ismob(loc) || loc?.atom_storage) ? MAPTEXT("[get_amount()]") : "" /obj/item/stack/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) . = ..() @@ -571,7 +571,10 @@ if(check && is_zero_amount(delete_if_zero = TRUE)) return FALSE if(is_cyborg) - return source.use_charge(used * cost) + if(source.use_charge(used * cost)) + update_appearance(UPDATE_NAME) + return TRUE + return FALSE if (amount < used) return FALSE amount -= used diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 8349c159488..d7a320c6e67 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -71,7 +71,7 @@ //this is the cyborg equivalent of dropped(), though we call that too in doUnEquip. item_dropping.cyborg_unequip(src) deselect_module(module_num) - + playsound_local(src, SFX_RUSTLE, 40, TRUE) /mob/living/silicon/robot/update_held_items() . = ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a29d7b07969..4a690abbf16 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1607,6 +1607,18 @@ mind.memory_panel = new(usr, mind) mind.memory_panel.ui_interact(usr) +///Shows a tgui window with memories +/mob/proc/open_memory_panel() + if(!mind) + var/fail_message = "You have no mind!" + if(isobserver(src)) + fail_message += " You have to be in the current round at some point to have one." + to_chat(src, span_warning(fail_message)) + return + if(!mind.memory_panel) + mind.memory_panel = new(usr, mind) + mind.memory_panel.ui_interact(usr) + /datum/memory_panel var/datum/mind/mind_reference var/client/holder //client of whoever is using this datum diff --git a/code/modules/pai/hud.dm b/code/modules/pai/hud.dm index cb7a5c9df39..fb1fd483116 100644 --- a/code/modules/pai/hud.dm +++ b/code/modules/pai/hud.dm @@ -177,6 +177,9 @@ var/mob/living/silicon/pai/pAI = usr pAI.radio.interact(usr) +/datum/hud/pai + ui_style = 'icons/hud/screen_pai.dmi' + /datum/hud/pai/New(mob/living/silicon/pai/owner) ..() var/atom/movable/screen/using @@ -213,11 +216,19 @@ // Language menu using = new /atom/movable/screen/language_menu(null, src) + using.icon = ui_style using.screen_loc = ui_pai_language_menu static_inventory += using +// Memories + using = new /atom/movable/screen/memories(null, src) + using.icon = ui_style + using.screen_loc = ui_pai_memories_menu + static_inventory += using + // Navigation using = new /atom/movable/screen/navigate(null, src) + using.icon = ui_style using.screen_loc = ui_pai_navigate_menu static_inventory += using diff --git a/icons/hud/screen_ai.dmi b/icons/hud/screen_ai.dmi index ea456ca3947..683db60b419 100644 Binary files a/icons/hud/screen_ai.dmi and b/icons/hud/screen_ai.dmi differ diff --git a/icons/hud/screen_alien.dmi b/icons/hud/screen_alien.dmi index 43a3f9e6dcb..4331616facd 100644 Binary files a/icons/hud/screen_alien.dmi and b/icons/hud/screen_alien.dmi differ diff --git a/icons/hud/screen_clockwork.dmi b/icons/hud/screen_clockwork.dmi index 7af6be4602f..1f8d7a1f165 100644 Binary files a/icons/hud/screen_clockwork.dmi and b/icons/hud/screen_clockwork.dmi differ diff --git a/icons/hud/screen_cyborg.dmi b/icons/hud/screen_cyborg.dmi index d9ed854db12..5cad689a235 100644 Binary files a/icons/hud/screen_cyborg.dmi and b/icons/hud/screen_cyborg.dmi differ diff --git a/icons/hud/screen_detective.dmi b/icons/hud/screen_detective.dmi index 5188b3b8fd9..5ac768712bf 100644 Binary files a/icons/hud/screen_detective.dmi and b/icons/hud/screen_detective.dmi differ diff --git a/icons/hud/screen_glass.dmi b/icons/hud/screen_glass.dmi index c0ac804fc8b..80fc95c2d7d 100644 Binary files a/icons/hud/screen_glass.dmi and b/icons/hud/screen_glass.dmi differ diff --git a/icons/hud/screen_midnight.dmi b/icons/hud/screen_midnight.dmi index e382bbca0d6..b932aa1ed93 100644 Binary files a/icons/hud/screen_midnight.dmi and b/icons/hud/screen_midnight.dmi differ diff --git a/icons/hud/screen_operative.dmi b/icons/hud/screen_operative.dmi index 7b472e907e5..2d2192e6423 100644 Binary files a/icons/hud/screen_operative.dmi and b/icons/hud/screen_operative.dmi differ diff --git a/icons/hud/screen_pai.dmi b/icons/hud/screen_pai.dmi index 3af44930e0a..87863739160 100644 Binary files a/icons/hud/screen_pai.dmi and b/icons/hud/screen_pai.dmi differ diff --git a/icons/hud/screen_plasmafire.dmi b/icons/hud/screen_plasmafire.dmi index e6602b9e42b..8ab8f2e4e54 100644 Binary files a/icons/hud/screen_plasmafire.dmi and b/icons/hud/screen_plasmafire.dmi differ diff --git a/icons/hud/screen_retro.dmi b/icons/hud/screen_retro.dmi index 8273eb5e963..de495e8a408 100644 Binary files a/icons/hud/screen_retro.dmi and b/icons/hud/screen_retro.dmi differ diff --git a/icons/hud/screen_slimecore.dmi b/icons/hud/screen_slimecore.dmi index 9f25a0ea510..561b8151342 100644 Binary files a/icons/hud/screen_slimecore.dmi and b/icons/hud/screen_slimecore.dmi differ diff --git a/icons/hud/screen_trasenknox.dmi b/icons/hud/screen_trasenknox.dmi index 93ad3c08ce8..b8dfed363b7 100644 Binary files a/icons/hud/screen_trasenknox.dmi and b/icons/hud/screen_trasenknox.dmi differ