Merge pull request #15962 from SandPoot/contextual-screentips
Contextual screentips -- Screentips now show you what items/objects can do
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
GLOB.carbon_list += src
|
||||
blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio)
|
||||
add_movespeed_modifier(/datum/movespeed_modifier/carbon_crawling)
|
||||
register_context()
|
||||
|
||||
/mob/living/carbon/Destroy()
|
||||
//This must be done first, so the mob ghosts correctly before DNA etc is nulled
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/mob/living/carbon/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if (!isnull(held_item))
|
||||
return .
|
||||
|
||||
if (!ishuman(user))
|
||||
return .
|
||||
|
||||
var/combat_mode = SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)
|
||||
|
||||
if(user == src)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HELP, "Check injuries")
|
||||
else if(!lying)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HELP, "Comfort")
|
||||
else if (health >= 0 && !HAS_TRAIT(src, TRAIT_FAKEDEATH))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HELP, "Shake")
|
||||
else
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HELP, "CPR")
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_DISARM, "Disarm")
|
||||
if(combat_mode && (src != user))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_DISARM, "Shove")
|
||||
|
||||
if(src != user)
|
||||
if (pulledby == user)
|
||||
switch (user.grab_state)
|
||||
if (GRAB_PASSIVE)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_GRAB, "Grip")
|
||||
if (GRAB_AGGRESSIVE)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_GRAB, "Choke")
|
||||
if (GRAB_NECK)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_GRAB, "Strangle")
|
||||
else
|
||||
return .
|
||||
else
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_GRAB, "Pull")
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Attack")
|
||||
|
||||
// Monkeys cannot be grabbed harder using ctrl-click, don't ask.
|
||||
if((pulledby != user) && (src != user))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Pull")
|
||||
// Happens on any intent i believe
|
||||
if((user == src) && combat_mode && lying)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Force to get up")
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
@@ -0,0 +1,36 @@
|
||||
/mob/living/carbon/human/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if (!ishuman(user))
|
||||
return .
|
||||
|
||||
var/aim_for_mouth = user.zone_selected == "mouth"
|
||||
var/target_on_help = a_intent == INTENT_HELP
|
||||
var/target_aiming_for_mouth = zone_selected == "mouth"
|
||||
var/target_restrained = restrained()
|
||||
var/same_dir = (dir & user.dir)
|
||||
var/aim_for_groin = user.zone_selected == "groin"
|
||||
var/target_aiming_for_groin = zone_selected == "groin"
|
||||
|
||||
if(aim_for_mouth && (target_on_help || target_restrained || target_aiming_for_mouth))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_DISARM, "Slap face")
|
||||
|
||||
else if(aim_for_groin && (src == user || lying || same_dir) && (target_on_help || target_restrained || target_aiming_for_groin))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_DISARM, "Slap ass")
|
||||
|
||||
// Humans can actually be upgrade grabbed using ctrl-click
|
||||
if(src != user)
|
||||
if (pulledby == user)
|
||||
switch (user.grab_state)
|
||||
if (GRAB_PASSIVE)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Grip")
|
||||
if (GRAB_AGGRESSIVE)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Choke")
|
||||
if (GRAB_NECK)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Strangle")
|
||||
else
|
||||
return .
|
||||
else
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Pull")
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
Reference in New Issue
Block a user