Merge branch 'master' into new-decal-painter
This commit is contained in:
@@ -581,6 +581,10 @@
|
||||
name = "Supply Request Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/cargo/request
|
||||
|
||||
/obj/item/circuitboard/computer/bounty
|
||||
name = "Nanotrasen Bounty Console (Computer Board)"
|
||||
build_path = /obj/machinery/computer/bounty
|
||||
|
||||
/obj/item/circuitboard/computer/ferry
|
||||
name = "Transport Ferry (Computer Board)"
|
||||
icon_state = "supply"
|
||||
|
||||
@@ -116,6 +116,38 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
if(inserted_item && (!isturf(loc)))
|
||||
. += "<span class='notice'>Ctrl-click to remove [inserted_item].</span>"
|
||||
|
||||
/obj/item/pda/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
|
||||
. = ..()
|
||||
|
||||
if(held_item)
|
||||
if(istype(held_item, /obj/item/cartridge) && !cartridge)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert Cartridge")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/card/id) && !id)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert ID")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/paicard) && !pai)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert pAI")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(is_type_in_list(held_item, contained_item) && !inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert [held_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(istype(held_item, /obj/item/photo))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan photo")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
if(id) // ID gets removed before inserted_item
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Remove ID")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
else if(inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Remove [inserted_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
if(inserted_item)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Remove [inserted_item]")
|
||||
. = CONTEXTUAL_SCREENTIP_SET
|
||||
return . || NONE
|
||||
|
||||
/obj/item/pda/Initialize(mapload)
|
||||
if(GLOB.pda_reskins)
|
||||
unique_reskin = GLOB.pda_reskins
|
||||
@@ -133,6 +165,8 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
new_overlays = TRUE
|
||||
update_icon()
|
||||
|
||||
register_context()
|
||||
|
||||
/obj/item/pda/reskin_obj(mob/M)
|
||||
. = ..()
|
||||
new_overlays = TRUE
|
||||
|
||||
@@ -91,6 +91,11 @@ GENETICS SCANNER
|
||||
var/scanmode = SCANMODE_HEALTH
|
||||
var/advanced = FALSE
|
||||
|
||||
/obj/item/healthanalyzer/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
register_item_context()
|
||||
|
||||
/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!</span>")
|
||||
return BRUTELOSS
|
||||
@@ -130,6 +135,24 @@ GENETICS SCANNER
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/healthanalyzer/add_item_context(
|
||||
obj/item/source,
|
||||
list/context,
|
||||
atom/target,
|
||||
)
|
||||
if (!isliving(target))
|
||||
return NONE
|
||||
|
||||
switch (scanmode)
|
||||
if (SCANMODE_HEALTH)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan health")
|
||||
if (SCANMODE_CHEMICAL)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan chemicals")
|
||||
if (SCANMODE_WOUND)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Scan wounds")
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
// Used by the PDA medical scanner too
|
||||
/proc/healthscan(mob/user, mob/living/M, mode = 1, advanced = FALSE)
|
||||
if(isliving(user) && (user.incapacitated() || user.eye_blind))
|
||||
@@ -549,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
|
||||
|
||||
|
||||
@@ -122,6 +122,21 @@
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/hovering_item_typechecks = list(
|
||||
/obj/item/stack/rods = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft wired rod"),
|
||||
),
|
||||
|
||||
/obj/item/stack/sheet/metal = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft bola"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>You start unwinding the cable restraints back into coil</span>")
|
||||
if(!do_after(user, 25, TRUE, user))
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
cell = new preload_cell_type(src)
|
||||
update_icon()
|
||||
|
||||
register_item_context()
|
||||
|
||||
/obj/item/melee/baton/DoRevenantThrowEffects(atom/target)
|
||||
switch_status()
|
||||
|
||||
@@ -155,6 +157,26 @@
|
||||
if(!interrupt)
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/baton/add_item_context(datum/source, list/context, atom/target, mob/living/user)
|
||||
if (isturf(target))
|
||||
return NONE
|
||||
|
||||
if (isobj(target))
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Attack")
|
||||
else
|
||||
if (turned_on)
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Knockdown")
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Stun")
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Harmful stun")
|
||||
else
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Knockdown") // DON'T TELL EM, PRANKED.
|
||||
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Stun") // STILL DO NOT DARE TELLING THEM
|
||||
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Attack") // It's fine i guess...?
|
||||
|
||||
return CONTEXTUAL_SCREENTIP_SET
|
||||
|
||||
/obj/item/melee/baton/alt_pre_attack(atom/A, mob/living/user, params)
|
||||
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
||||
return
|
||||
|
||||
@@ -583,6 +583,21 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb = list("hit", "bludgeoned", "whacked", "bonked")
|
||||
wound_bonus = -10
|
||||
|
||||
/obj/item/wirerod/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
var/static/list/hovering_item_typechecks = list(
|
||||
/obj/item/shard = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft spear"),
|
||||
),
|
||||
|
||||
/obj/item/assembly/igniter = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Craft stunprod"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
|
||||
|
||||
/obj/item/wirerod/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/shard))
|
||||
var/obj/item/spear/S = new /obj/item/spear
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
yolk.gib()
|
||||
QDEL_NULL(egg)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/ash_walker
|
||||
name = "ash walker egg"
|
||||
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within."
|
||||
@@ -835,7 +835,8 @@
|
||||
var/area/A = get_area(src)
|
||||
var/datum/outfit/O = new /datum/outfit/ghostcafe()
|
||||
O.equip(new_spawn, FALSE, new_spawn.client)
|
||||
SSjob.equip_loadout(null, new_spawn, FALSE)
|
||||
SSjob.equip_loadout(null, new_spawn)
|
||||
SSjob.post_equip_loadout(null, new_spawn)
|
||||
SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn)
|
||||
new_spawn.AddElement(/datum/element/ghost_role_eligibility, free_ghosting = TRUE)
|
||||
new_spawn.AddElement(/datum/element/dusts_on_catatonia)
|
||||
|
||||
@@ -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_ANY = "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)
|
||||
@@ -490,6 +500,19 @@
|
||||
// the sprites in the editor to see why.
|
||||
icon = smooth_icon
|
||||
|
||||
if (!(flags_1 & NODECONSTRUCT_1))
|
||||
var/static/list/tool_behaviors = list(
|
||||
TOOL_SCREWDRIVER = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Disassemble"),
|
||||
),
|
||||
|
||||
TOOL_WRENCH = list(
|
||||
SCREENTIP_CONTEXT_LMB = list(INTENT_ANY = "Deconstruct"),
|
||||
),
|
||||
)
|
||||
|
||||
AddElement(/datum/element/contextual_screentip_tools, tool_behaviors)
|
||||
|
||||
/obj/structure/table/wood/fancy/black
|
||||
icon_state = "fancy_table_black"
|
||||
buildstack = /obj/item/stack/tile/carpet/black
|
||||
@@ -704,7 +727,7 @@
|
||||
. = !density
|
||||
if(istype(caller))
|
||||
. = . || (caller.pass_flags & PASSTABLE)
|
||||
|
||||
|
||||
/obj/structure/rack/MouseDrop_T(obj/O, mob/user)
|
||||
. = ..()
|
||||
if ((!( istype(O, /obj/item) ) || user.get_active_held_item() != O))
|
||||
|
||||
Reference in New Issue
Block a user