correct everything and some intention based checks

This commit is contained in:
SandPoot
2023-02-08 02:17:57 -03:00
parent ed06e686e1
commit 1b1154260c
10 changed files with 79 additions and 60 deletions
+2 -2
View File
@@ -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
+4
View File
@@ -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)
+1 -1
View File
@@ -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
+5 -15
View File
@@ -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()
+6 -5
View File
@@ -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
+6 -24
View File
@@ -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
+12 -2
View File
@@ -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)