correct everything and some intention based checks
This commit is contained in:
@@ -19,8 +19,8 @@ Example:
|
||||
. = ..()
|
||||
AddElement( \
|
||||
/datum/element/contextual_screentip_bare_hands, \
|
||||
lmb_text = "Turn on", \
|
||||
rmb_text = "Turn off", \
|
||||
lmb_text = list(INTENT_HELP = "Turn on"), \
|
||||
rmb_text = list(INTENT_HELP = "Turn off"), \
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
@@ -5,20 +5,30 @@
|
||||
element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH
|
||||
id_arg_index = 3
|
||||
|
||||
/* How to use SandPoot's version of this:
|
||||
*
|
||||
* Combat mode will be checked first, then the intents for it, if the
|
||||
* current intent has not been set it defaults to the first item of the list.
|
||||
*
|
||||
* Otherwise if not in combat mode or no messages for it
|
||||
* will also try to get messages for the current intent
|
||||
* if failing to, will try to get the first item of the list.
|
||||
*/
|
||||
|
||||
/// If set, the text to show for LMB
|
||||
var/lmb_text
|
||||
var/list/lmb_text
|
||||
|
||||
/// If set, the text to show for RMB
|
||||
var/rmb_text
|
||||
var/list/rmb_text
|
||||
|
||||
/// If set, the text to show for LMB when in combat mode. Otherwise, defaults to lmb_text.
|
||||
var/lmb_text_combat_mode
|
||||
var/list/lmb_text_combat_mode
|
||||
|
||||
/// If set, the text to show for RMB when in combat mode. Otherwise, defaults to rmb_text.
|
||||
var/rmb_text_combat_mode
|
||||
var/list/rmb_text_combat_mode
|
||||
|
||||
// If you're curious about `use_named_parameters`, it's because you should use named parameters!
|
||||
// AddElement(/datum/element/contextual_screentip_bare_hands, lmb_text = "Do the thing")
|
||||
// AddElement(/datum/element/contextual_screentip_bare_hands, lmb_text = list(INTENT_HELP = "Do the thing"))
|
||||
/datum/element/contextual_screentip_bare_hands/Attach(
|
||||
datum/target,
|
||||
use_named_parameters,
|
||||
@@ -64,10 +74,31 @@
|
||||
if (!isnull(held_item))
|
||||
return NONE
|
||||
|
||||
if (!isnull(lmb_text))
|
||||
context[SCREENTIP_CONTEXT_LMB] = user.a_intent == INTENT_HARM ? lmb_text_combat_mode : lmb_text
|
||||
var/combat_mode = SEND_SIGNAL(user, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)
|
||||
|
||||
if (!isnull(rmb_text))
|
||||
context[SCREENTIP_CONTEXT_RMB] = user.a_intent == INTENT_HARM ? rmb_text_combat_mode : rmb_text
|
||||
if(combat_mode && length(lmb_text_combat_mode))
|
||||
if(lmb_text_combat_mode[user.a_intent])
|
||||
context[SCREENTIP_CONTEXT_LMB] = lmb_text_combat_mode[user.a_intent]
|
||||
else
|
||||
var/first_item = lmb_text_combat_mode[1]
|
||||
context[SCREENTIP_CONTEXT_LMB] = lmb_text_combat_mode[first_item]
|
||||
else if(length(lmb_text))
|
||||
if(lmb_text[user.a_intent])
|
||||
context[SCREENTIP_CONTEXT_LMB] = lmb_text[user.a_intent]
|
||||
else
|
||||
var/first_item = lmb_text[1]
|
||||
context[SCREENTIP_CONTEXT_LMB] = lmb_text[first_item]
|
||||
if(combat_mode && length(rmb_text_combat_mode))
|
||||
if(rmb_text_combat_mode[user.a_intent])
|
||||
context[SCREENTIP_CONTEXT_RMB] = rmb_text_combat_mode[user.a_intent]
|
||||
else
|
||||
var/first_item = rmb_text_combat_mode[1]
|
||||
context[SCREENTIP_CONTEXT_RMB] = rmb_text_combat_mode[first_item]
|
||||
else if(length(rmb_text))
|
||||
if(rmb_text[user.a_intent])
|
||||
context[SCREENTIP_CONTEXT_RMB] = rmb_text[user.a_intent]
|
||||
else
|
||||
var/first_item = rmb_text[1]
|
||||
context[SCREENTIP_CONTEXT_RMB] = rmb_text[first_item]
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
@@ -700,6 +700,10 @@
|
||||
/obj/machinery/door/airlock/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if(istype(held_item, /obj/item/stack/sheet/plasteel))
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Reinforce"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
switch (held_item?.tool_behaviour)
|
||||
if (TOOL_CROWBAR)
|
||||
if (panel_open)
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
/obj/machinery/door/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if (isnull(held_item))
|
||||
if (isnull(held_item) && !istype(src, /obj/machinery/door/firedoor)) // You cannot open/close with your hands
|
||||
context[SCREENTIP_CONTEXT_LMB] = density ? "Open" : "Close"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
|
||||
@@ -51,25 +51,16 @@
|
||||
|
||||
if (isnull(held_item))
|
||||
if (density)
|
||||
// This should be LMB/RMB one day
|
||||
if (user.a_intent == INTENT_HARM)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Knock"
|
||||
else
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Bash"
|
||||
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Knock"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
else
|
||||
return .
|
||||
|
||||
switch (held_item.tool_behaviour)
|
||||
if (TOOL_CROWBAR)
|
||||
if (density)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Close"
|
||||
else if (!welded)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Hold open"
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Open permanently"
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if(!welded)
|
||||
context[SCREENTIP_CONTEXT_LMB] = density ? "Open" : "Close"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_WELDER)
|
||||
context[SCREENTIP_CONTEXT_LMB] = welded ? "Unweld shut" : "Weld shut"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
@@ -79,9 +70,8 @@
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
if (TOOL_SCREWDRIVER)
|
||||
if (welded)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Unlock bolts"
|
||||
context[SCREENTIP_CONTEXT_LMB] = boltslocked ? "Unlock bolts" : "Lock bolts"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
return .
|
||||
|
||||
/obj/machinery/door/firedoor/proc/CalculateAffectingAreas()
|
||||
|
||||
@@ -51,11 +51,12 @@
|
||||
myarea = get_base_area(src)
|
||||
LAZYADD(myarea.firealarms, src)
|
||||
|
||||
AddElement( \
|
||||
/datum/element/contextual_screentip_bare_hands, \
|
||||
lmb_text = "Turn on", \
|
||||
rmb_text = "Turn off", \
|
||||
)
|
||||
/obj/machinery/firealarm/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if(isnull(held_item))
|
||||
context[SCREENTIP_CONTEXT_LMB] = triggered ? "Turn off" : "Turn on"
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
/obj/machinery/firealarm/Destroy()
|
||||
myarea.firereset(src)
|
||||
|
||||
@@ -572,6 +572,7 @@ GENETICS SCANNER
|
||||
name = "first aid analyzer"
|
||||
icon_state = "adv_spectrometer"
|
||||
desc = "A prototype MeLo-Tech medical scanner used to diagnose injuries and recommend treatment for serious wounds, but offers no further insight into the patient's health. You hope the final version is less annoying to read!"
|
||||
scanmode = SCANMODE_WOUND // Forces context to give correct tip.
|
||||
var/next_encouragement
|
||||
var/greedy
|
||||
|
||||
|
||||
@@ -30,24 +30,6 @@
|
||||
var/status_duration = 3 SECONDS //how long our status effects last for otherwise
|
||||
COOLDOWN_DECLARE(shove_cooldown)
|
||||
|
||||
/// The context to show when the baton is active and targetting a living thing
|
||||
var/context_living_target_active = "Stun"
|
||||
|
||||
/// The context to show when the baton is active and targetting a living thing in combat mode
|
||||
var/context_living_target_active_combat_mode = "Stun"
|
||||
|
||||
/// The context to show when the baton is inactive and targetting a living thing
|
||||
var/context_living_target_inactive = "Prod"
|
||||
|
||||
/// The context to show when the baton is inactive and targetting a living thing in combat mode
|
||||
var/context_living_target_inactive_combat_mode = "Attack"
|
||||
|
||||
/// The RMB context to show when the baton is active and targetting a living thing
|
||||
var/context_living_rmb_active = "Attack"
|
||||
|
||||
/// The RMB context to show when the baton is inactive and targetting a living thing
|
||||
var/context_living_rmb_inactive = "Attack"
|
||||
|
||||
/obj/item/melee/baton/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Right click attack while in combat mode to knockdown, but only once per [cooldown_duration / 10] seconds.</span>"
|
||||
@@ -183,19 +165,19 @@
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Attack"
|
||||
else
|
||||
if (turned_on)
|
||||
context[SCREENTIP_CONTEXT_RMB] = context_living_rmb_active
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Knockdown"
|
||||
|
||||
if (user.a_intent == INTENT_HARM)
|
||||
context[SCREENTIP_CONTEXT_LMB] = context_living_target_active_combat_mode
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Harmful stun"
|
||||
else
|
||||
context[SCREENTIP_CONTEXT_LMB] = context_living_target_active
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Stun"
|
||||
else
|
||||
context[SCREENTIP_CONTEXT_RMB] = context_living_rmb_inactive
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Knockdown" // DON'T TELL EM, PRANKED.
|
||||
|
||||
if (user.a_intent == INTENT_HARM)
|
||||
context[SCREENTIP_CONTEXT_LMB] = context_living_target_inactive_combat_mode
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Attack" // It's fine i guess...?
|
||||
else
|
||||
context[SCREENTIP_CONTEXT_LMB] = context_living_target_inactive
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Stun" // STILL DO NOT DARE TELLING THEM
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
|
||||
@@ -37,6 +37,16 @@
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced, /obj/structure/table/greyscale)
|
||||
|
||||
/obj/structure/table/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/barehanded_interactions = list(
|
||||
INTENT_HELP = "Slap",
|
||||
INTENT_HARM = "Slam"
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_bare_hands, rmb_text_combat_mode = barehanded_interactions)
|
||||
|
||||
/obj/structure/table/examine(mob/user)
|
||||
. = ..()
|
||||
. += deconstruction_hints(user)
|
||||
@@ -493,11 +503,11 @@
|
||||
if (!(flags_1 & NODECONSTRUCT_1))
|
||||
var/static/list/tool_behaviors = list(
|
||||
TOOL_SCREWDRIVER = list(
|
||||
SCREENTIP_CONTEXT_RMB = "Disassemble",
|
||||
SCREENTIP_CONTEXT_LMB = "Disassemble",
|
||||
),
|
||||
|
||||
TOOL_WRENCH = list(
|
||||
SCREENTIP_CONTEXT_RMB = "Deconstruct",
|
||||
SCREENTIP_CONTEXT_LMB = "Deconstruct",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
context[SCREENTIP_CONTEXT_LMB] = "CPR"
|
||||
if(INTENT_DISARM)
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Disarm"
|
||||
if(combat_mode)
|
||||
if(combat_mode && (src != user))
|
||||
context[SCREENTIP_CONTEXT_RMB] = "Shove"
|
||||
if(INTENT_GRAB)
|
||||
if(src != user)
|
||||
@@ -41,7 +41,7 @@
|
||||
context[SCREENTIP_CONTEXT_LMB] = "Attack"
|
||||
|
||||
// Did you know we cannot upgrade grabs from ctrl-click, that's cool
|
||||
if(pulledby != user)
|
||||
if((pulledby != user) && (src != user))
|
||||
context[SCREENTIP_CONTEXT_CTRL_LMB] = "Pull"
|
||||
// Happens on any intent i believe
|
||||
if((user == src) && combat_mode && lying)
|
||||
|
||||
Reference in New Issue
Block a user