diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm
index fd841ba258..b4c616243f 100644
--- a/code/__DEFINES/layers_planes.dm
+++ b/code/__DEFINES/layers_planes.dm
@@ -193,3 +193,6 @@
#define SPLASHSCREEN_LAYER 90
#define SPLASHSCREEN_PLANE 90
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"
+
+///Layer for screentips
+#define SCREENTIP_LAYER 40
diff --git a/code/__DEFINES/screentips.dm b/code/__DEFINES/screentips.dm
index 4918db85ce..e9615bb4ee 100644
--- a/code/__DEFINES/screentips.dm
+++ b/code/__DEFINES/screentips.dm
@@ -31,5 +31,15 @@
/// Screentips are only enabled when they have context
#define SCREENTIP_PREFERENCE_CONTEXT_ONLY "Only with tips"
+/// Screentips enabled, no context
+#define SCREENTIP_PREFERENCE_NO_CONTEXT "Enabled without tips"
+
/// Regardless of intent
#define INTENT_ANY "any"
+
+GLOBAL_LIST_INIT(screentip_pref_options, list(
+ SCREENTIP_PREFERENCE_DISABLED,
+ SCREENTIP_PREFERENCE_ENABLED,
+ SCREENTIP_PREFERENCE_CONTEXT_ONLY,
+ SCREENTIP_PREFERENCE_NO_CONTEXT
+))
diff --git a/code/__HELPERS/screentips.dm b/code/__HELPERS/screentips.dm
index dfd3390ab4..aeceb0d41c 100644
--- a/code/__HELPERS/screentips.dm
+++ b/code/__HELPERS/screentips.dm
@@ -18,7 +18,7 @@ GLOBAL_LIST_INIT_TYPED(screentip_context_icons, /image, prepare_screentip_contex
/proc/build_context(list/context, key, allow_image)
var/list/to_add
for(var/intent in context[key])
- var/key_help = "[length(key) > 3 ? copytext(key, 1, -3) : ""]"
+ var/key_help = "[length(key) > 3 ? "[copytext(key, 1, -3)][allow_image ? " " : ""]" : ""]"
var/icon = "[copytext(key, -3)]-[intent]"
if(allow_image)
icon = "\icon[GLOB.screentip_context_icons[icon]]"
diff --git a/code/_onclick/hud/screentip.dm b/code/_onclick/hud/screentip.dm
index 43b728ade6..5128448561 100644
--- a/code/_onclick/hud/screentip.dm
+++ b/code/_onclick/hud/screentip.dm
@@ -6,6 +6,7 @@
maptext_height = 480
maptext_width = 480
maptext = ""
+ layer = SCREENTIP_LAYER
/atom/movable/screen/screentip/Initialize(mapload, _hud)
. = ..()
diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm
index 816c1cbb7e..07c55bd6ef 100644
--- a/code/datums/chatmessage.dm
+++ b/code/datums/chatmessage.dm
@@ -200,7 +200,6 @@
message.maptext_height = mheight
message.maptext_x = (CHAT_MESSAGE_WIDTH - owner.bound_width) * -0.5
message.maptext = MAPTEXT(complete_text)
- message.pixel_x = -target.pixel_x //Dogborgs and other wide boys have a pixel offset. This accounts for that
// View the message
LAZYADDASSOC(owned_by.seen_messages, message_loc, src)
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 0cc033cf2a..a1754ef4d1 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -722,6 +722,7 @@
return
//new size detected
holder.resize = features["body_size"] / old_size
+ holder.maptext_height = 32 * features["body_size"] // Adjust runechat height
holder.update_transform()
if(iscarbon(holder))
var/mob/living/carbon/C = holder
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index ad7b29ebab..702097c60f 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -1489,7 +1489,7 @@
var/extra_lines = 0
var/extra_context = ""
- if (isliving(user) || isovermind(user) || isaicamera(user))
+ if ((isliving(user) || isovermind(user) || isaicamera(user)) && (user.client.prefs.screentip_pref != SCREENTIP_PREFERENCE_NO_CONTEXT))
var/obj/item/held_item = user.get_active_held_item()
var/allow_images = user.client.prefs.screentip_allow_images
diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index 16f72bf1fb..2700109c77 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -62,6 +62,8 @@
icon = 'icons/effects/64x64.dmi'
icon_state = "drake_statue"
pixel_x = -16
+ maptext_height = 64
+ maptext_width = 64
density = TRUE
deconstructible = FALSE
layer = EDGED_TURF_LAYER
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 31a066830d..a72a083974 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -3124,14 +3124,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(pickedOutlineColor != pickedOutlineColor)
outline_color = pickedOutlineColor // nullable
if("screentip_pref")
- var/choice = tgalert(user, "Choose your screentip preference", "Screentipping?", "Yes", "Context Only", "No")
- switch(choice)
- if("Yes")
- screentip_pref = SCREENTIP_PREFERENCE_ENABLED
- if("Context Only")
- screentip_pref = SCREENTIP_PREFERENCE_CONTEXT_ONLY
- else
- screentip_pref = SCREENTIP_PREFERENCE_DISABLED
+ var/choice = input(user, "Choose your screentip preference", "Screentipping?", screentip_pref) as null|anything in GLOB.screentip_pref_options
+ if(choice)
+ screentip_pref = choice
if("screentip_color")
var/pickedScreentipColor = input(user, "Choose your screentip color.", "General Preference", screentip_color) as color|null
if(pickedScreentipColor)
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 16725d3516..57cea5e612 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -546,6 +546,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
modless_key_bindings = sanitize_islist(modless_key_bindings, list())
favorite_outfits = SANITIZE_LIST(favorite_outfits)
screentip_color = sanitize_hexcolor(screentip_color, 6, 1, initial(screentip_color))
+ screentip_pref = sanitize_inlist(screentip_pref, GLOB.screentip_pref_options, SCREENTIP_PREFERENCE_ENABLED)
//SKYRAT CHANGES BEGIN
see_chat_emotes = sanitize_integer(see_chat_emotes, 0, 1, initial(see_chat_emotes))
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 7717180e6c..7e1c669e49 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -4,6 +4,8 @@
status_flags = 0
unique_name = 0
pixel_x = -16
+ maptext_height = 64
+ maptext_width = 64
bubble_icon = "alienroyal"
mob_size = MOB_SIZE_LARGE
layer = LARGE_MOB_LAYER //above most mobs, but below speechbubbles
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index 5520efb93b..def5dc8c76 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -49,6 +49,8 @@ Difficulty: Hard
melee_queue_distance = 20 // as far as possible really, need this because of blood warp
ranged = 1
pixel_x = -32
+ maptext_height = 96
+ maptext_width = 96
gender = MALE
del_on_death = 1
crusher_loot = list(/obj/structure/closet/crate/necropolis/bubblegum/crusher)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index eb6c29df5f..9e8497f968 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -44,6 +44,8 @@ Difficulty: Very Hard
move_to_delay = 10
ranged = 1
pixel_x = -32
+ maptext_height = 96
+ maptext_width = 96
del_on_death = TRUE
achievement_type = /datum/award/achievement/boss/colossus_kill
crusher_achievement_type = /datum/award/achievement/boss/colossus_crusher
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index 926b31b8c3..5bbb39b3e4 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -59,6 +59,8 @@ Difficulty: Medium
move_to_delay = 5
ranged = 1
pixel_x = -16
+ maptext_height = 64
+ maptext_width = 64
crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher)
loot = list(/obj/structure/closet/crate/necropolis/dragon)
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30, /obj/item/reagent_containers/food/snacks/meat/slab/dragon = 5)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 03a63c5283..c65698b862 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -48,6 +48,8 @@ SHITCODE AHEAD. BE ADVISED. Also comment extravaganza
score_achievement_type = /datum/award/score/legion_score
pixel_y = -16
pixel_x = -32
+ maptext_height = 96
+ maptext_width = 96
loot = list(/obj/item/stack/sheet/bone = 3)
vision_range = 10
wander = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
index f8931aa27b..53e4d0d64f 100644
--- a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
@@ -49,6 +49,8 @@
mob_size = MOB_SIZE_LARGE
armour_penetration = 30
pixel_x = -16
+ maptext_height = 64
+ maptext_width = 64
turns_per_move = 5
movement_type = FLYING
health_doll_icon = "spacedragon"
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 67ab3817ae..0f0f853036 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -245,6 +245,7 @@
S = S.split_stack(amount=2)
if(S)
glass_type = S
+ S.moveToNullspace()
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.")
if(tracker)
diff --git a/icons/UI_Icons/screentips/cursor_hints.dmi b/icons/UI_Icons/screentips/cursor_hints.dmi
index 9533d240a5..f314166d43 100644
Binary files a/icons/UI_Icons/screentips/cursor_hints.dmi and b/icons/UI_Icons/screentips/cursor_hints.dmi differ
diff --git a/icons/UI_Icons/screentips/full_mouse.dmi b/icons/UI_Icons/screentips/full_mouse.dmi
index 32e0b8f67c..a055b4ae3f 100644
Binary files a/icons/UI_Icons/screentips/full_mouse.dmi and b/icons/UI_Icons/screentips/full_mouse.dmi differ