mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 13:05:44 +01:00
Marshalling wands update (#21921)
# Summary This PR updates the marshalling wands and gives them intent based coloring. In addition, hold a second wand in your hand, the settings will be automatically synced. ## Changes - Update marshalling wand sprite (more the structure then the actual sprites). - Added color modes, updated text, added mechanical hints and two hand sync to marshall wands. - Added signal for mob intent changes (unused at the moment). - Adjusted Hangar Tech round start spawn points in the breakroom. - Added second marshalling wand to each Hangar Tech locker. ## Preview (Note this preview has been made prior further pixel adjustments, consider it a demo.) 
This commit is contained in:
@@ -48,3 +48,6 @@
|
||||
|
||||
/// For when bone is fixed with surgery
|
||||
#define COMSIG_BEGIN_SURGERY "begin_surgery"
|
||||
|
||||
/// For when the players intent changes
|
||||
#define COMSIG_INTENT_CHANGE "intent_change"
|
||||
|
||||
@@ -3,18 +3,34 @@
|
||||
desc = "A marshalling wand, used to direct air or space faring vessels during takeoff and landing."
|
||||
icon_state = "marshallingwand"
|
||||
item_state = "marshallingwand"
|
||||
build_from_parts = TRUE
|
||||
worn_overlay = "bulb"
|
||||
worn_overlay_color = LIGHT_COLOR_WHITE
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
light_system = MOVABLE_LIGHT
|
||||
light_color = LIGHT_COLOR_RED
|
||||
light_range = 2
|
||||
action_button_name = "Toggle Marshalling Wands"
|
||||
|
||||
/obj/item/flashlight/marshallingwand/mechanics_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "ALT-click the marshalling wand to turn it on and off. Everytime you turn it on it will be blue, signaling and idle intent."
|
||||
. += "Using the wand will change its color based of your intent. Each intent has a different output."
|
||||
. += "Holding two marshalling wands in your hands will mirror the state of one to the other, so that they are always in sync."
|
||||
|
||||
// Override brights. The marshalling wands are meant to be always bright, this will toggle the on and off instead.
|
||||
/obj/item/flashlight/marshallingwand/AltClick(mob/user)
|
||||
if(!use_check_and_message(user))
|
||||
if(!isturf(user.loc))
|
||||
to_chat(user, SPAN_WARNING("You cannot turn the light on while in this [user.loc].")) //To prevent some lighting anomalities.)
|
||||
to_chat(user, SPAN_WARNING("You cannot turn the light on while in this [user.loc].")) // To prevent some lighting anomalities.)
|
||||
return FALSE
|
||||
toggle()
|
||||
if(on)
|
||||
set_light_color(LIGHT_COLOR_BLUE) // Default to blue (stand-by) when turned on
|
||||
worn_overlay_color = light_color
|
||||
else
|
||||
worn_overlay_color = LIGHT_COLOR_WHITE
|
||||
update_icon()
|
||||
mirror_held_wands(src)
|
||||
user.update_action_buttons()
|
||||
return TRUE
|
||||
|
||||
@@ -22,16 +38,73 @@
|
||||
AltClick(usr)
|
||||
|
||||
/obj/item/flashlight/marshallingwand/attack_self(mob/user)
|
||||
// Are we holding one or two wands?
|
||||
var/wand_invariant = ""
|
||||
if(ismob(loc))
|
||||
var/mob/m = loc
|
||||
var/item = m.get_inactive_hand()
|
||||
if(item && istype(item, /obj/item/flashlight/marshallingwand))
|
||||
wand_invariant = "wands"
|
||||
else
|
||||
wand_invariant = "wand"
|
||||
|
||||
if(!on)
|
||||
to_chat(user, SPAN_WARNING("The wands need to be on before you can direct craft with them!"))
|
||||
to_chat(user, SPAN_WARNING("The [wand_invariant] need to be turned on before you can direct crafts with them!"))
|
||||
return
|
||||
|
||||
switch(user.a_intent)
|
||||
if(I_HELP)
|
||||
user.visible_message(SPAN_NOTICE("[user] points the marshalling wand forward, directing a pilot to take off."), SPAN_NOTICE("You point the marshalling wand forward, directing a pilot to take off."))
|
||||
set_light_color(LIGHT_COLOR_GREEN) // Green for go!
|
||||
if(I_DISARM)
|
||||
user.visible_message(SPAN_NOTICE("[user] waves the marshalling wand toward themself, directing a pilot to approach."), SPAN_NOTICE("You wave the marshalling wand toward yourself, directing a pilot to approach."))
|
||||
set_light_color(LIGHT_COLOR_BLUE) // Blue for stand-by - Idle while nothing is happening yet.
|
||||
if(I_GRAB)
|
||||
user.visible_message(SPAN_NOTICE("[user] holds the marshalling wand out, directing a pilot to cease movement."), SPAN_NOTICE("You hold the marshalling wand out, directing a pilot to cease movement."))
|
||||
set_light_color(LIGHT_COLOR_YELLOW) // Yellow for hold - Last checks are in progress. Prepare for takeoff!
|
||||
if(I_HURT)
|
||||
user.visible_message(SPAN_WARNING("[user] frantically waves the marshalling wand!"), SPAN_WARNING("You wave the marshalling wand frantically!"))
|
||||
set_light_color(LIGHT_COLOR_RED) // Stop! Craft is being serviced or shutting down.
|
||||
worn_overlay_color = light_color
|
||||
|
||||
switch(light_color)
|
||||
if(LIGHT_COLOR_GREEN)
|
||||
user.visible_message(SPAN_NOTICE("[user] quickly waves the marshalling [wand_invariant] forward, giving the craft the lift-off signal!"), SPAN_NOTICE("You wave the marshalling [wand_invariant] forward quickly, directing the craft to take off."))
|
||||
if(LIGHT_COLOR_BLUE)
|
||||
user.visible_message(SPAN_NOTICE("[user] holds the marshalling [wand_invariant] close to themselves, deck is idle, don't do any unexpected things!"), SPAN_NOTICE("You hold the marshalling [wand_invariant] close to yourself, signaling an idle stance..."))
|
||||
if(LIGHT_COLOR_YELLOW)
|
||||
user.visible_message(SPAN_WARNING("[user] holds the marshalling [wand_invariant] out to the sides, indicating that the craft is being checked before lift off, prepare for lift off!"), SPAN_WARNING("You hold the marshalling [wand_invariant] out to your sides, indicating that the craft is being prepared for lift off."))
|
||||
if(LIGHT_COLOR_RED)
|
||||
user.visible_message(SPAN_WARNING("[user] steadily holds the marshalling [wand_invariant] above their head in a cross! Hold all movement!"), SPAN_WARNING("You hold the marshalling [wand_invariant] in a cross above your head, signaling full stop."))
|
||||
|
||||
update_icon()
|
||||
mirror_held_wands(src)
|
||||
|
||||
/obj/item/flashlight/marshallingwand/update_icon()
|
||||
overlays.Cut()
|
||||
if(on)
|
||||
var/image/I = overlay_image(icon, "marshallingwand-overlay", light_color)
|
||||
I.blend_mode = BLEND_OVERLAY
|
||||
AddOverlays(I)
|
||||
icon_state = "[initial(icon_state)]-on"
|
||||
item_state = "[initial(icon_state)]-on"
|
||||
set_light_range_power_color(light_range, flashlight_power, light_color)
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
set_light_on(on)
|
||||
update_held_icon()
|
||||
|
||||
/obj/item/flashlight/marshallingwand/proc/mirror_held_wands(var/obj/item/flashlight/marshallingwand/source_wand)
|
||||
// If we are holding a wand in the other hand, make sure to mirror the state of this one to it, so that they are always in sync.
|
||||
if(ismob(loc))
|
||||
var/mob/m = loc
|
||||
var/item_act = m.get_active_hand()
|
||||
var/item_inact = m.get_inactive_hand()
|
||||
if(!item_act || !item_inact || !istype(item_act, /obj/item/flashlight/marshallingwand) || !istype(item_inact, /obj/item/flashlight/marshallingwand))
|
||||
return // Only one wand or different item, abort.
|
||||
var/obj/item/flashlight/marshallingwand/target_wand
|
||||
if(item_act == source_wand) // Check which one needs the update.
|
||||
target_wand = item_inact
|
||||
else
|
||||
target_wand = item_act
|
||||
target_wand.on = source_wand.on
|
||||
target_wand.set_light_color(source_wand.light_color)
|
||||
target_wand.worn_overlay_color = source_wand.worn_overlay_color
|
||||
target_wand.update_icon()
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
new /obj/item/clipboard(src)
|
||||
new /obj/item/storage/belt/utility(src)
|
||||
new /obj/item/flashlight/marshallingwand(src)
|
||||
new /obj/item/flashlight/marshallingwand(src)
|
||||
|
||||
// Machinist
|
||||
/obj/structure/closet/secure_closet/machinist
|
||||
|
||||
@@ -1252,6 +1252,7 @@ GLOBAL_LIST_INIT(organ_rel_size, list(
|
||||
|
||||
/mob/proc/set_intent(var/set_intent)
|
||||
a_intent = set_intent
|
||||
SEND_SIGNAL(src, COMSIG_INTENT_CHANGE, set_intent)
|
||||
|
||||
/mob/proc/get_accent_icon(var/datum/language/speaking, var/mob/hearer, var/force_accent)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
author: FabianK3
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Updated hangar tech marshalling wands. The marshalling wands now have color based of intent giving a clearer visual distinction on the action. In addition, holding two wands in your hands will automatically sync their settings."
|
||||
- qol: "Add the second missing marshalling wand to the tech closets."
|
||||
- qol: "Adjusted hangar tech round start spawn locations."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 106 KiB |
@@ -7622,6 +7622,9 @@
|
||||
/obj/effect/floor_decal/corner_wide/grey/diagonal,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/obj/effect/floor_decal/spline/plain/brown,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/horizon/operations/break_room)
|
||||
"aWW" = (
|
||||
@@ -31130,9 +31133,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 5
|
||||
},
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/obj/effect/floor_decal/corner/brown,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/operations/break_room)
|
||||
@@ -70633,9 +70633,6 @@
|
||||
/turf/simulated/floor/tiled/dark,
|
||||
/area/horizon/security/checkpoint)
|
||||
"jsO" = (
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/obj/effect/floor_decal/corner/brown{
|
||||
dir = 9
|
||||
},
|
||||
@@ -107217,12 +107214,6 @@
|
||||
},
|
||||
/turf/simulated/floor/reinforced,
|
||||
/area/horizon/weapons/grauwolf)
|
||||
"olw" = (
|
||||
/obj/structure/bed/stool/chair{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/operations/break_room)
|
||||
"oly" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -114228,6 +114219,15 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/command/bridge/upperdeck)
|
||||
"pgA" = (
|
||||
/obj/structure/bed/stool/chair{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/operations/break_room)
|
||||
"pgB" = (
|
||||
/obj/effect/floor_decal/corner/dark_green/full{
|
||||
dir = 1
|
||||
@@ -127324,6 +127324,9 @@
|
||||
/obj/structure/bed/stool/chair{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/operations/break_room)
|
||||
"qWr" = (
|
||||
@@ -162212,12 +162215,6 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/full,
|
||||
/area/horizon/storage/primary)
|
||||
"vCr" = (
|
||||
/obj/effect/landmark/start{
|
||||
name = "Hangar Technician"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/horizon/operations/break_room)
|
||||
"vCI" = (
|
||||
/obj/structure/sign/poster{
|
||||
pixel_y = 32
|
||||
@@ -268141,7 +268138,7 @@ nwj
|
||||
kiJ
|
||||
nwj
|
||||
rNQ
|
||||
vCr
|
||||
uGE
|
||||
aOf
|
||||
gAJ
|
||||
uVm
|
||||
@@ -268398,7 +268395,7 @@ djR
|
||||
lNh
|
||||
nwj
|
||||
fSu
|
||||
vCr
|
||||
uGE
|
||||
aOf
|
||||
gAJ
|
||||
uVm
|
||||
@@ -269681,8 +269678,8 @@ jkr
|
||||
pyM
|
||||
nwj
|
||||
lhf
|
||||
olw
|
||||
olw
|
||||
pgA
|
||||
pgA
|
||||
mzm
|
||||
cGa
|
||||
mRn
|
||||
|
||||
Reference in New Issue
Block a user