From d2ab513332d2fac4f03ca9d669817c55d963aceb Mon Sep 17 00:00:00 2001
From: Ghom <42542238+Ghommie@users.noreply.github.com>
Date: Wed, 4 Sep 2024 12:50:04 +0200
Subject: [PATCH] Reintroducing my PRs that were lost in the wallening revert.
(#86439)
## About The Pull Request
This PR reintroduces #85759, #85892 and #85894.
#85892 has post-wallening arrows, but it isn't a big deal because they
fit the top-down or 3/4 style we've for a lot of things.
## Why It's Good For The Game
Reintroducing lost features and improvements. Remember to remove the
'Lost in the wallening revert' label from those PRs when this is merged.
## Changelog
N/A
---
.../IceRuins/icemoon_surface_pizza.dmm | 1 -
.../RandomRuins/SpaceRuins/garbagetruck1.dmm | 3 -
_maps/RandomZLevels/snowdin.dmm | 7 +-
.../map_files/IceBoxStation/IceBoxStation.dmm | 1 -
_maps/map_files/generic/CentCom.dmm | 2 +-
_maps/map_files/wawastation/wawastation.dmm | 1 -
.../signals_atom/signals_atom_movable.dm | 3 +
.../signals/signals_mob/signals_mob_main.dm | 2 -
code/controllers/subsystem/id_access.dm | 6 ++
code/datums/ai/oldhostile/hostile_tameable.dm | 6 +-
.../components/pet_commands/pet_command.dm | 6 +-
code/datums/components/riding/riding_mob.dm | 6 +-
code/datums/id_trim/_id_trim.dm | 5 +
code/datums/id_trim/admin.dm | 2 +
code/datums/id_trim/centcom.dm | 16 +++
code/datums/id_trim/jobs.dm | 17 +++
code/datums/id_trim/ruins.dm | 9 +-
code/datums/id_trim/syndicate.dm | 16 +++
code/game/machinery/dish_drive.dm | 2 -
.../objects/effects/spawners/random/trash.dm | 1 -
code/game/objects/items/cards_ids.dm | 28 +++++
code/game/objects/items/food/meatslab.dm | 4 +-
code/game/objects/items/food/pastries.dm | 4 -
code/game/objects/items/trash.dm | 4 -
.../antagonists/pirate/pirate_outfits.dm | 7 ++
code/modules/art/paintings.dm | 13 +++
code/modules/clothing/outfits/ert.dm | 10 ++
.../generic_skillchips/point.dm | 99 ++++++++++++++++++
.../mob_spawn/ghost_roles/space_roles.dm | 2 +
code/modules/point/point.dm | 19 ++--
code/modules/vending/games.dm | 1 +
icons/hud/screen_gen.dmi | Bin 112991 -> 112316 bytes
icons/obj/food/food.dmi | Bin 73792 -> 77882 bytes
icons/obj/food/meat.dmi | Bin 40488 -> 41186 bytes
icons/obj/food/mexican.dmi | Bin 8785 -> 8786 bytes
icons/obj/service/janitor.dmi | Bin 40093 -> 40350 bytes
tgstation.dme | 1 +
.../Scripts/85759_waffle_trash_begone.txt | 1 +
38 files changed, 260 insertions(+), 45 deletions(-)
create mode 100644 code/modules/library/skill_learning/generic_skillchips/point.dm
create mode 100644 tools/UpdatePaths/Scripts/85759_waffle_trash_begone.txt
diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm
index 0e78558d6f3..121f9e4ea45 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_pizza.dmm
@@ -300,7 +300,6 @@
/area/ruin/pizzeria)
"kr" = (
/obj/structure/table,
-/obj/item/trash/waffles,
/obj/effect/turf_decal/tile/blue/opposingcorners{
dir = 1
},
diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
index a81508dbe1f..6aca5d7938a 100644
--- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
+++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm
@@ -491,9 +491,6 @@
/area/ruin/space/has_grav/garbagetruck/foodwaste)
"xf" = (
/obj/item/trash/tray,
-/obj/item/trash/waffles,
-/obj/item/trash/waffles,
-/obj/item/trash/waffles,
/obj/item/food/grown/mushroom/plumphelmet,
/obj/structure/closet/crate/trashcart,
/mob/living/basic/mouse/rat,
diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm
index 141aaafa9f2..be1301a9fba 100644
--- a/_maps/RandomZLevels/snowdin.dmm
+++ b/_maps/RandomZLevels/snowdin.dmm
@@ -1909,11 +1909,6 @@
},
/turf/open/floor/iron/cafeteria,
/area/awaymission/snowdin/post/messhall)
-"ht" = (
-/obj/structure/table,
-/obj/item/trash/waffles,
-/turf/open/floor/iron/cafeteria,
-/area/awaymission/snowdin/post/messhall)
"hu" = (
/obj/structure/chair{
dir = 8
@@ -25007,7 +25002,7 @@ Kd
ex
fJ
gA
-ht
+hq
hW
iH
jz
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index c7ab41ccbbf..a47e7176c77 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -5685,7 +5685,6 @@
dir = 4
},
/obj/effect/decal/cleanable/dirt,
-/obj/item/trash/waffles,
/turf/open/floor/plating,
/area/station/maintenance/port/aft)
"bGm" = (
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index 52be04369f8..e730dea04bc 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -2616,7 +2616,7 @@
dir = 8
},
/obj/item/radio/intercom/syndicate{
- pixel_x = -32;
+ pixel_x = -32
},
/turf/open/floor/iron/grimy,
/area/centcom/central_command_areas/courtroom)
diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm
index 3dda65c9576..47ed0380935 100644
--- a/_maps/map_files/wawastation/wawastation.dmm
+++ b/_maps/map_files/wawastation/wawastation.dmm
@@ -13767,7 +13767,6 @@
"eTu" = (
/obj/effect/turf_decal/tile/neutral,
/obj/structure/table,
-/obj/item/trash/waffles,
/turf/open/floor/iron,
/area/station/hallway/primary/central)
"eTZ" = (
diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
index d81f02be63b..24d7cd0b170 100644
--- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
+++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_movable.dm
@@ -119,6 +119,9 @@
/// From base of area/Exited(): (area/left, direction)
#define COMSIG_MOVABLE_EXITED_AREA "movable_exited_area"
+///from base of /atom/movable/point_at: (atom/A, obj/effect/temp_visual/point/point)
+#define COMSIG_MOVABLE_POINTED "movable_pointed"
+
/// Sent to movables when they are being stolen by a spy: (mob/living/spy, datum/spy_bounty/bounty)
#define COMSIG_MOVABLE_SPY_STEALING "movable_spy_stealing"
/// Called when something is pushed by a living mob bumping it: (mob/living/pusher, push force)
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
index 4c9f02083d0..c6d19809cd1 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_main.dm
@@ -151,8 +151,6 @@
/// from base of mob/swap_hand(): ()
/// Performed after the hands are swapped.
#define COMSIG_MOB_SWAP_HANDS "mob_swap_hands"
-///from base of /mob/verb/pointed: (atom/A)
-#define COMSIG_MOB_POINTED "mob_pointed"
///Mob is trying to open the wires of a target [/atom], from /datum/wires/interactable(): (atom/target)
#define COMSIG_TRY_WIRES_INTERACT "try_wires_interact"
#define COMPONENT_CANT_INTERACT_WIRES (1<<0)
diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm
index 91cc7bc1ee5..b80e5718128 100644
--- a/code/controllers/subsystem/id_access.dm
+++ b/code/controllers/subsystem/id_access.dm
@@ -398,6 +398,8 @@ SUBSYSTEM_DEF(id_access)
id_card.clear_access()
id_card.trim = trim
+ id_card.big_pointer = trim.big_pointer
+ id_card.pointer_color = trim.pointer_color
if(copy_access)
id_card.access = trim.access.Copy()
@@ -441,6 +443,8 @@ SUBSYSTEM_DEF(id_access)
id_card.department_color_override = trim.department_color
id_card.department_state_override = trim.department_state
id_card.subdepartment_color_override = trim.subdepartment_color
+ id_card.big_pointer = trim.big_pointer
+ id_card.pointer_color = trim.pointer_color
if(!check_forged || !id_card.forged)
id_card.assignment = trim.assignment
@@ -461,6 +465,8 @@ SUBSYSTEM_DEF(id_access)
id_card.department_color_override = null
id_card.department_state_override = null
id_card.subdepartment_color_override = null
+ id_card.big_pointer = id_card.trim.big_pointer
+ id_card.pointer_color = id_card.trim.pointer_color
/**
* Adds the accesses associated with a trim to an ID card.
diff --git a/code/datums/ai/oldhostile/hostile_tameable.dm b/code/datums/ai/oldhostile/hostile_tameable.dm
index 1c30cb95487..0d68fe0abbe 100644
--- a/code/datums/ai/oldhostile/hostile_tameable.dm
+++ b/code/datums/ai/oldhostile/hostile_tameable.dm
@@ -77,14 +77,14 @@
if(pawn.Adjacent(pawn, new_friend))
new_friend.visible_message("[pawn] looks at [new_friend] in a friendly manner!", span_notice("[pawn] looks at you in a friendly manner!"))
set_blackboard_key(BB_HOSTILE_FRIEND, new_friend)
- RegisterSignal(new_friend, COMSIG_MOB_POINTED, PROC_REF(check_point))
+ RegisterSignal(new_friend, COMSIG_MOVABLE_POINTED, PROC_REF(check_point))
RegisterSignal(new_friend, COMSIG_MOB_SAY, PROC_REF(check_verbal_command))
/// Someone is being mean to us, take them off our friends (add actual enemies behavior later)
/datum/ai_controller/hostile_friend/proc/unfriend()
var/mob/living/old_friend = blackboard[BB_HOSTILE_FRIEND]
if(old_friend)
- UnregisterSignal(old_friend, list(COMSIG_MOB_POINTED, COMSIG_MOB_SAY))
+ UnregisterSignal(old_friend, list(COMSIG_MOVABLE_POINTED, COMSIG_MOB_SAY))
clear_blackboard_key(BB_HOSTILE_FRIEND)
/// Someone is looking at us, if we're currently carrying something then show what it is, and include a message if they're our friend
@@ -190,7 +190,7 @@
set_blackboard_key(BB_HOSTILE_ORDER_MODE, HOSTILE_COMMAND_ATTACK)
/// Someone we like is pointing at something, see if it's something we might want to interact with (like if they might want us to fetch something for them)
-/datum/ai_controller/hostile_friend/proc/check_point(mob/pointing_friend, atom/movable/pointed_movable)
+/datum/ai_controller/hostile_friend/proc/check_point(mob/pointing_friend, atom/movable/pointed_movable, obj/effect/temp_visual/point/point)
SIGNAL_HANDLER
var/mob/living/simple_animal/hostile/living_pawn = pawn
diff --git a/code/datums/components/pet_commands/pet_command.dm b/code/datums/components/pet_commands/pet_command.dm
index a8db88d3a44..52b4cc88349 100644
--- a/code/datums/components/pet_commands/pet_command.dm
+++ b/code/datums/components/pet_commands/pet_command.dm
@@ -186,14 +186,14 @@
/datum/pet_command/point_targeting/add_new_friend(mob/living/tamer)
. = ..()
- RegisterSignal(tamer, COMSIG_MOB_POINTED, PROC_REF(on_point))
+ RegisterSignal(tamer, COMSIG_MOVABLE_POINTED, PROC_REF(on_point))
/datum/pet_command/point_targeting/remove_friend(mob/living/unfriended)
. = ..()
- UnregisterSignal(unfriended, COMSIG_MOB_POINTED)
+ UnregisterSignal(unfriended, COMSIG_MOVABLE_POINTED)
/// Target the pointed atom for actions
-/datum/pet_command/point_targeting/proc/on_point(mob/living/friend, atom/pointed_atom)
+/datum/pet_command/point_targeting/proc/on_point(mob/living/friend, atom/pointed_atom, obj/effect/temp_visual/point/point)
SIGNAL_HANDLER
var/mob/living/parent = weak_parent.resolve()
diff --git a/code/datums/components/riding/riding_mob.dm b/code/datums/components/riding/riding_mob.dm
index 517aaf096ab..96d54ad92f1 100644
--- a/code/datums/components/riding/riding_mob.dm
+++ b/code/datums/components/riding/riding_mob.dm
@@ -513,9 +513,9 @@
/datum/component/riding/creature/leaper/Initialize(mob/living/riding_mob, force = FALSE, ride_check_flags = NONE, potion_boost = FALSE)
. = ..()
- RegisterSignal(riding_mob, COMSIG_MOB_POINTED, PROC_REF(attack_pointed))
+ RegisterSignal(riding_mob, COMSIG_MOVABLE_POINTED, PROC_REF(attack_pointed))
-/datum/component/riding/creature/leaper/proc/attack_pointed(mob/living/rider, atom/pointed)
+/datum/component/riding/creature/leaper/proc/attack_pointed(mob/living/rider, atom/pointed, obj/effect/temp_visual/point/point)
SIGNAL_HANDLER
if(!isclosedturf(pointed))
return
@@ -527,7 +527,7 @@
/datum/component/riding/leaper/handle_unbuckle(mob/living/rider)
. = ..()
- UnregisterSignal(rider, COMSIG_MOB_POINTED)
+ UnregisterSignal(rider, COMSIG_MOVABLE_POINTED)
/datum/component/riding/creature/raptor
require_minigame = TRUE
diff --git a/code/datums/id_trim/_id_trim.dm b/code/datums/id_trim/_id_trim.dm
index 067e2e38263..562232214b3 100644
--- a/code/datums/id_trim/_id_trim.dm
+++ b/code/datums/id_trim/_id_trim.dm
@@ -24,6 +24,11 @@
/// Accesses that this trim unlocks on a card that require wildcard slots to apply. If a card cannot accept all a trim's wildcard accesses, the card is incompatible with the trim.
var/list/wildcard_access = list()
+ ///If true, IDs with this trim will grant wearers with bigger arrows when pointing
+ var/big_pointer = FALSE
+ ///If set, IDs with this trim will give wearers arrows of different colors when pointing
+ var/pointer_color
+
/// Returns the SecHUD job icon state for whatever this object's ID card is, if it has one.
/obj/item/proc/get_sechud_job_icon_state()
var/obj/item/card/id/id_card = GetID()
diff --git a/code/datums/id_trim/admin.dm b/code/datums/id_trim/admin.dm
index 9de155c9a04..ee0cf1b977e 100644
--- a/code/datums/id_trim/admin.dm
+++ b/code/datums/id_trim/admin.dm
@@ -5,6 +5,8 @@
department_color = COLOR_CENTCOM_BLUE
subdepartment_color = COLOR_SERVICE_LIME
threat_modifier = -INFINITY
+ big_pointer = TRUE
+ pointer_color = COLOR_GREEN
/datum/id_trim/admin/New()
. = ..()
diff --git a/code/datums/id_trim/centcom.dm b/code/datums/id_trim/centcom.dm
index 5cc24f4bd6e..498a4de254e 100644
--- a/code/datums/id_trim/centcom.dm
+++ b/code/datums/id_trim/centcom.dm
@@ -7,6 +7,8 @@
department_color = COLOR_CENTCOM_BLUE
subdepartment_color = COLOR_CENTCOM_BLUE
threat_modifier = -10 // Centcom are legally allowed to do whatever they want
+ big_pointer = TRUE
+ pointer_color = COLOR_CENTCOM_BLUE
/// Trim for Centcom VIPs
/datum/id_trim/centcom/vip
@@ -20,6 +22,7 @@
trim_state = "trim_janitor"
department_color = COLOR_CENTCOM_BLUE
subdepartment_color = COLOR_SERVICE_LIME
+ big_pointer = FALSE
/// Trim for Centcom Thunderdome Overseers.
/datum/id_trim/centcom/thunderdome_overseer
@@ -35,10 +38,12 @@
/datum/id_trim/centcom/intern
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_WEAPONS)
assignment = "CentCom Intern"
+ big_pointer = FALSE
/// Trim for Centcom Head Interns. Different assignment, common station access added on.
/datum/id_trim/centcom/intern/head
assignment = "CentCom Head Intern"
+ big_pointer = TRUE
/datum/id_trim/centcom/intern/head/New()
. = ..()
@@ -49,11 +54,13 @@
/datum/id_trim/centcom/bounty_hunter
access = list(ACCESS_CENT_GENERAL)
assignment = "Bounty Hunter"
+ big_pointer = FALSE
/// Trim for Centcom Bartenders.
/datum/id_trim/centcom/bartender
access = list(ACCESS_CENT_GENERAL, ACCESS_CENT_LIVING, ACCESS_CENT_BAR)
assignment = JOB_CENTCOM_BARTENDER
+ big_pointer = FALSE
/// Trim for Centcom Medical Officers.
/datum/id_trim/centcom/medical_officer
@@ -68,6 +75,7 @@
/// Trim for Centcom Specops Officers. All Centcom and Station Access.
/datum/id_trim/centcom/specops_officer
assignment = JOB_CENTCOM_SPECIAL_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/specops_officer/New()
. = ..()
@@ -129,6 +137,7 @@
trim_state = "trim_securityofficer"
subdepartment_color = COLOR_SECURITY_RED
sechud_icon_state = SECHUD_SECURITY_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/security/New()
. = ..()
@@ -141,6 +150,7 @@
trim_state = "trim_stationengineer"
subdepartment_color = COLOR_ENGINEERING_ORANGE
sechud_icon_state = SECHUD_ENGINEERING_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/engineer/New()
. = ..()
@@ -153,6 +163,7 @@
trim_state = "trim_medicaldoctor"
subdepartment_color = COLOR_MEDICAL_BLUE
sechud_icon_state = SECHUD_MEDICAL_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/medical/New()
. = ..()
@@ -165,6 +176,7 @@
trim_state = "trim_chaplain"
subdepartment_color = COLOR_SERVICE_LIME
sechud_icon_state = SECHUD_RELIGIOUS_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/chaplain/New()
. = ..()
@@ -177,6 +189,7 @@
trim_state = "trim_ert_janitor"
subdepartment_color = COLOR_SERVICE_LIME
sechud_icon_state = SECHUD_JANITORIAL_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/janitor/New()
. = ..()
@@ -189,6 +202,7 @@
trim_state = "trim_clown"
subdepartment_color = COLOR_MAGENTA
sechud_icon_state = SECHUD_ENTERTAINMENT_RESPONSE_OFFICER
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/clown/New()
. = ..()
@@ -197,6 +211,8 @@
/datum/id_trim/centcom/ert/militia
assignment = "Frontier Militia"
+ big_pointer = FALSE
/datum/id_trim/centcom/ert/militia/general
assignment = "Frontier Militia General"
+ big_pointer = TRUE
diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm
index b5893380fde..a42018406b2 100644
--- a/code/datums/id_trim/jobs.dm
+++ b/code/datums/id_trim/jobs.dm
@@ -238,6 +238,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/captain
+ big_pointer = TRUE
+ pointer_color = COLOR_COMMAND_BLUE
/// Captain gets all station accesses hardcoded in because it's the Captain.
/datum/id_trim/job/captain/New()
@@ -360,6 +362,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/chief_engineer
+ big_pointer = TRUE
+ pointer_color = COLOR_ENGINEERING_ORANGE
/datum/id_trim/job/chief_medical_officer
assignment = JOB_CHIEF_MEDICAL_OFFICER
@@ -399,6 +403,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/chief_medical_officer
+ big_pointer = TRUE
+ pointer_color = COLOR_MEDICAL_BLUE
/datum/id_trim/job/clown
assignment = JOB_CLOWN
@@ -612,6 +618,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/head_of_personnel
+ big_pointer = TRUE
+ pointer_color = COLOR_SERVICE_LIME
/datum/id_trim/job/head_of_security
assignment = JOB_HEAD_OF_SECURITY
@@ -661,6 +669,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/head_of_security
+ big_pointer = TRUE
+ pointer_color = COLOR_SECURITY_RED
/datum/id_trim/job/head_of_security/refresh_trim_access()
. = ..()
@@ -893,6 +903,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/quartermaster
+ big_pointer = TRUE
+ pointer_color = COLOR_CARGO_BROWN
/datum/id_trim/job/research_director
assignment = JOB_RESEARCH_DIRECTOR
@@ -941,6 +953,8 @@
ACCESS_CHANGE_IDS,
)
job = /datum/job/research_director
+ big_pointer = TRUE
+ pointer_color = COLOR_SCIENCE_PINK
/datum/id_trim/job/roboticist
assignment = JOB_ROBOTICIST
@@ -1206,6 +1220,7 @@
extra_access = list()
template_access = list()
job = /datum/job/veteran_advisor
+ big_pointer = TRUE
/datum/id_trim/job/veteran_advisor/refresh_trim_access()
. = ..()
@@ -1275,3 +1290,5 @@
extra_access = list()
template_access = list()
job = /datum/job/human_ai
+ big_pointer = TRUE
+ pointer_color = COLOR_MODERATE_BLUE
diff --git a/code/datums/id_trim/ruins.dm b/code/datums/id_trim/ruins.dm
index e308287ec5c..1eccc77a985 100644
--- a/code/datums/id_trim/ruins.dm
+++ b/code/datums/id_trim/ruins.dm
@@ -72,6 +72,7 @@
/datum/id_trim/centcom/corpse/commander
assignment = "Commander"
access = list(ACCESS_CENT_CAPTAIN, ACCESS_CENT_GENERAL, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_STORAGE)
+ big_pointer = TRUE
/// Trim for various Centcom corpses.
/datum/id_trim/centcom/corpse/private_security
@@ -115,6 +116,7 @@
/datum/id_trim/pirate/captain
assignment = "Pirate Captain"
trim_state = "trim_captain"
+ big_pointer = TRUE
/datum/id_trim/pirate/silverscale
assignment = "Silver Scale Member"
@@ -130,6 +132,7 @@
/datum/id_trim/away/dangerous_research/head_occultist
assignment = "Head Occultist"
access = list(ACCESS_AWAY_SCIENCE, ACCESS_AWAY_COMMAND)
+ big_pointer = TRUE
//Trims for waystation.dmm space ruin
/datum/id_trim/away/waystation/cargo_technician
@@ -143,6 +146,7 @@
trim_state = "trim_quartermaster"
department_color = COLOR_CARGO_BROWN
access = list(ACCESS_AWAY_SUPPLY, ACCESS_AWAY_COMMAND)
+ big_pointer = TRUE
/datum/id_trim/away/waystation/security
assignment = "Waystation Security Officer"
@@ -162,8 +166,9 @@
/datum/id_trim/away/the_outlet/mad_manager
assignment = "The Mad Manager"
access = list(ACCESS_AWAY_GENERAL, ACCESS_AWAY_MEDICAL, ACCESS_AWAY_SEC)
+ big_pointer = TRUE
-//Haunted Trading Post IDs //
+//Haunted Trading Post IDs
/datum/id_trim/away/hauntedtradingpost
assignment = "Donk Co. Employee"
department_color = COLOR_ENGINEERING_ORANGE
@@ -174,4 +179,4 @@
/datum/id_trim/away/hauntedtradingpost/boss
assignment = "Donk Co. Executive"
access = list(ACCESS_SYNDICATE, ACCESS_AWAY_COMMAND)
-// //
+ big_pointer = TRUE
diff --git a/code/datums/id_trim/syndicate.dm b/code/datums/id_trim/syndicate.dm
index 9a3e0c5fc91..41c76aaf378 100644
--- a/code/datums/id_trim/syndicate.dm
+++ b/code/datums/id_trim/syndicate.dm
@@ -7,11 +7,14 @@
sechud_icon_state = SECHUD_SYNDICATE
access = list(ACCESS_SYNDICATE)
threat_modifier = 5 // Bad guy on deck
+ big_pointer = TRUE
+ pointer_color = COLOR_SYNDIE_RED
/// Trim for Syndicate mobs, outfits and corpses.
/datum/id_trim/syndicom/crew
assignment = "Syndicate Operative"
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
+ big_pointer = FALSE
/// Interdyne medical Staff
/datum/id_trim/syndicom/Interdyne/pharmacist
@@ -19,6 +22,8 @@
trim_state = "trim_medicaldoctor"
sechud_icon_state = SECHUD_SYNDICATE_INTERDYNE
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SURGERY)
+ big_pointer = FALSE
+ pointer_color = null
/// Interdyne head medical Staff
/datum/id_trim/syndicom/Interdyne/pharmacist_director
@@ -28,6 +33,8 @@
subdepartment_color = COLOR_SYNDIE_RED_HEAD
sechud_icon_state = SECHUD_SYNDICATE_INTERDYNE_HEAD
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SURGERY)
+ big_pointer = TRUE
+ pointer_color = COLOR_SYNDIE_RED_HEAD
/// Trim for the space IRS agents (why are they syndie access? I wouldn't worry about it.)
/datum/id_trim/syndicom/irs
@@ -37,11 +44,14 @@
subdepartment_color = COLOR_COMMAND_BLUE
sechud_icon_state = SECHUD_DEATH_COMMANDO
access = list(ACCESS_SYNDICATE, ACCESS_MAINT_TUNNELS)
+ big_pointer = FALSE
+ pointer_color = null
/datum/id_trim/syndicom/irs/auditor
assignment = "Internal Revenue Service Head Auditor"
trim_state = "trim_quartermaster"
sechud_icon_state = SECHUD_QUARTERMASTER
+ big_pointer = TRUE
/// Trim for Syndicate mobs, outfits and corpses.
/datum/id_trim/syndicom/captain
@@ -60,6 +70,8 @@
/datum/id_trim/battlecruiser/captain
assignment = "Syndicate Battlecruiser Captain"
access = list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER)
+ big_pointer = TRUE
+ pointer_color = COLOR_SYNDIE_RED
/// Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
/datum/id_trim/chameleon
@@ -79,6 +91,8 @@
/datum/id_trim/chameleon/operative/nuke_leader
assignment = "Syndicate Operative Leader"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER)
+ big_pointer = TRUE
+ pointer_color = COLOR_SYNDIE_RED
/// Trim for Chameleon ID cards. Many outfits, nuke ops and some corpses hold Chameleon ID cards.
/datum/id_trim/chameleon/operative/clown
@@ -89,3 +103,5 @@
/datum/id_trim/chameleon/operative/clown_leader
assignment = "Syndicate Entertainment Operative Leader"
access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER)
+ big_pointer = TRUE
+ pointer_color = COLOR_SYNDIE_RED
diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm
index b386ebb376f..74ca492657b 100644
--- a/code/game/machinery/dish_drive.dm
+++ b/code/game/machinery/dish_drive.dm
@@ -12,7 +12,6 @@
interaction_flags_click = ALLOW_SILICON_REACH
/// List of dishes the drive can hold
var/static/list/collectable_items = list(
- /obj/item/trash/waffles,
/obj/item/broken_bottle,
/obj/item/kitchen/fork,
/obj/item/plate,
@@ -24,7 +23,6 @@
)
/// List of items the drive detects as trash
var/static/list/disposable_items = list(
- /obj/item/trash/waffles,
/obj/item/broken_bottle,
/obj/item/plate_shard,
/obj/item/shard,
diff --git a/code/game/objects/effects/spawners/random/trash.dm b/code/game/objects/effects/spawners/random/trash.dm
index dfac8e4c0c8..9cf00c20ee3 100644
--- a/code/game/objects/effects/spawners/random/trash.dm
+++ b/code/game/objects/effects/spawners/random/trash.dm
@@ -89,7 +89,6 @@
/obj/item/trash/cnds = 1,
/obj/item/trash/syndi_cakes = 1,
/obj/item/trash/shrimp_chips = 1,
- /obj/item/trash/waffles = 1,
/obj/item/trash/tray = 1,
)
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 967e9ad6ade..0f716c84f68 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -104,6 +104,11 @@
/// Boolean value. If TRUE, the [Intern] tag gets prepended to this ID card when the label is updated.
var/is_intern = FALSE
+ ///If true, the wearer will have bigger arrow when pointing at things. Passed down by trims.
+ var/big_pointer = FALSE
+ ///If set, the arrow will have a different color.
+ var/pointer_color
+
/datum/armor/card_id
fire = 100
acid = 100
@@ -144,6 +149,29 @@
QDEL_NULL(my_store)
return ..()
+/obj/item/card/id/equipped(mob/user, slot)
+ . = ..()
+ if(slot == ITEM_SLOT_ID)
+ RegisterSignal(user, COMSIG_MOVABLE_POINTED, PROC_REF(on_pointed))
+
+/obj/item/card/id/proc/on_pointed(mob/living/user, atom/pointed, obj/effect/temp_visual/point/point)
+ SIGNAL_HANDLER
+ if((!big_pointer && !pointer_color) || HAS_TRAIT(user, TRAIT_UNKNOWN))
+ return
+ if(point.icon_state != /obj/effect/temp_visual/point::icon_state) //it differs from the original icon_state already.
+ return
+ if(big_pointer)
+ point.icon_state = "arrow_large"
+ if(pointer_color)
+ point.icon_state = "[point.icon_state]_white"
+ point.color = pointer_color
+ var/mutable_appearance/highlight = mutable_appearance(point.icon, "[point.icon_state]_highlights", appearance_flags = RESET_COLOR)
+ point.add_overlay(highlight)
+
+/obj/item/card/id/dropped(mob/user)
+ UnregisterSignal(user, COMSIG_MOVABLE_POINTED)
+ return ..()
+
/obj/item/card/id/get_id_examine_strings(mob/user)
. = ..()
. += list("[icon2html(get_cached_flat_icon(), user, extra_classes = "bigicon")]")
diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm
index 3f8cb918ece..ed391a57bd2 100644
--- a/code/game/objects/items/food/meatslab.dm
+++ b/code/game/objects/items/food/meatslab.dm
@@ -353,7 +353,7 @@
/obj/item/food/meat/rawbacon
name = "raw piece of bacon"
desc = "A raw piece of bacon."
- icon_state = "baconb"
+ icon_state = "bacon"
bite_consumption = 2
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 2,
@@ -369,7 +369,7 @@
/obj/item/food/meat/bacon
name = "piece of bacon"
desc = "A delicious piece of bacon."
- icon_state = "baconcookedb"
+ icon_state = "baconcooked"
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 2,
/datum/reagent/consumable/nutriment/vitamin = 1,
diff --git a/code/game/objects/items/food/pastries.dm b/code/game/objects/items/food/pastries.dm
index 83f30ab0b06..0b96101a99d 100644
--- a/code/game/objects/items/food/pastries.dm
+++ b/code/game/objects/items/food/pastries.dm
@@ -67,7 +67,6 @@
name = "waffles"
desc = "Mmm, waffles."
icon_state = "waffles"
- trash_type = /obj/item/trash/waffles
food_reagents = list(
/datum/reagent/consumable/nutriment = 8,
/datum/reagent/consumable/nutriment/vitamin = 2,
@@ -85,7 +84,6 @@
name = "\improper Soylent Green"
desc = "Not made of people. Honest." //Totally people.
icon_state = "soylent_green"
- trash_type = /obj/item/trash/waffles
food_reagents = list(
/datum/reagent/consumable/nutriment = 10,
/datum/reagent/consumable/nutriment/vitamin = 2,
@@ -100,7 +98,6 @@
name = "\improper Soylent Virdians"
desc = "Not made of people. Honest." //Actually honest for once.
icon_state = "soylent_yellow"
- trash_type = /obj/item/trash/waffles
food_reagents = list(
/datum/reagent/consumable/nutriment = 10,
/datum/reagent/consumable/nutriment/vitamin = 2,
@@ -115,7 +112,6 @@
name = "roffle waffles"
desc = "Waffles from Roffle. Co."
icon_state = "rofflewaffles"
- trash_type = /obj/item/trash/waffles
bite_consumption = 4
food_reagents = list(
/datum/reagent/consumable/nutriment = 8,
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index ff540932f31..82636c0ee85 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -85,10 +85,6 @@
desc = "In the Mothic Fleet every individual wrapper is carefully recycled and repurposed into fresh material. Over here they are more commonly dropped directly onto the floor."
icon_state = "moth_ration"
-/obj/item/trash/waffles
- name = "waffles tray"
- icon_state = "waffles"
-
/obj/item/trash/pistachios
name = "pistachios pack"
icon_state = "pistachios_pack"
diff --git a/code/modules/antagonists/pirate/pirate_outfits.dm b/code/modules/antagonists/pirate/pirate_outfits.dm
index 72318fe4987..14729908e65 100644
--- a/code/modules/antagonists/pirate/pirate_outfits.dm
+++ b/code/modules/antagonists/pirate/pirate_outfits.dm
@@ -55,6 +55,8 @@
head = /obj/item/clothing/head/helmet/space/pirate
+ id_trim = /datum/id_trim/pirate/captain
+
/datum/outfit/pirate/silverscale
name = "Silver Scale Member"
@@ -151,6 +153,8 @@
suit = /obj/item/clothing/suit/jacket/oversized
head = /obj/item/clothing/head/costume/crown
+ id_trim = /datum/id_trim/pirate/captain
+
/datum/outfit/pirate/medieval
name = "Medieval Warmonger"
@@ -181,3 +185,6 @@
belt = /obj/item/gun/magic/hook
l_pocket = /obj/item/tank/internals/emergency_oxygen
r_pocket = /obj/item/flashlight/lantern
+
+
+ skillchips = list(/obj/item/skillchip/big_pointer) //they don't have an id, so this is needed
diff --git a/code/modules/art/paintings.dm b/code/modules/art/paintings.dm
index afae5b5a4e4..2e330d31185 100644
--- a/code/modules/art/paintings.dm
+++ b/code/modules/art/paintings.dm
@@ -545,6 +545,8 @@
/obj/item/canvas/twentythree_twentythree,
/obj/item/canvas/twentyfour_twentyfour,
)
+ /// the type of wallframe it 'disassembles' into
+ var/wallframe_type = /obj/item/wallframe/painting
/obj/structure/sign/painting/Initialize(mapload, dir, building)
. = ..()
@@ -565,6 +567,16 @@
else
return ..()
+/obj/structure/sign/painting/knock_down(mob/living/user)
+ var/turf/drop_turf
+ if(user)
+ drop_turf = get_turf(user)
+ else
+ drop_turf = drop_location()
+ current_canvas?.forceMove(drop_turf)
+ var/obj/item/wallframe/frame = new wallframe_type(drop_turf)
+ frame.update_integrity(get_integrity()) //Transfer how damaged it is.
+
/obj/structure/sign/painting/examine(mob/user)
. = ..()
if(persistence_id)
@@ -768,6 +780,7 @@
/obj/item/canvas/thirtysix_twentyfour,
/obj/item/canvas/fortyfive_twentyseven,
)
+ wallframe_type = /obj/item/wallframe/painting/large
/obj/structure/sign/painting/large/Initialize(mapload)
. = ..()
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm
index 2aa61b00460..101cedfef88 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert.dm
@@ -104,6 +104,8 @@
l_pocket = /obj/item/healthanalyzer/advanced
additional_radio = /obj/item/encryptionkey/heads/cmo
+ skillchips = list(/obj/item/skillchip/entrails_reader)
+
/datum/outfit/centcom/ert/medic/alert
name = "ERT Medic - High Alert"
@@ -133,6 +135,9 @@
l_pocket = /obj/item/rcd_ammo/large
additional_radio = /obj/item/encryptionkey/heads/ce
+
+ skillchips = list(/obj/item/skillchip/job/engineer)
+
/datum/outfit/centcom/ert/engineer/alert
name = "ERT Engineer - High Alert"
@@ -520,6 +525,9 @@
glasses = /obj/item/clothing/glasses/hud/health/sunglasses
additional_radio = /obj/item/encryptionkey/heads/cmo
+
+ skillchips = list(/obj/item/skillchip/entrails_reader)
+
/datum/outfit/centcom/ert/marine/engineer
name = "Marine Engineer"
@@ -533,6 +541,8 @@
glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
additional_radio = /obj/item/encryptionkey/heads/ce
+ skillchips = list(/obj/item/skillchip/job/engineer)
+
/datum/outfit/centcom/militia
name = "Militia Man"
diff --git a/code/modules/library/skill_learning/generic_skillchips/point.dm b/code/modules/library/skill_learning/generic_skillchips/point.dm
new file mode 100644
index 00000000000..761a4822689
--- /dev/null
+++ b/code/modules/library/skill_learning/generic_skillchips/point.dm
@@ -0,0 +1,99 @@
+/**
+ * A skillchip that gives the user bigger arrows when pointing at things (like some id trims do).
+ * As a bonus, they can costumize the color of the arrow/pointer too.
+ */
+/obj/item/skillchip/big_pointer
+ name = "Kommand skillchip"
+ desc = "A biochip detailing various techniques employed by historical leaders to points at things like a true boss."
+ skill_name = "Enhanced pointing"
+ skill_description = "Learn to point at things in a more noticeable way."
+ skill_icon = FA_ICON_ARROW_DOWN
+ activate_message = span_notice("From \"The Definitive Compendium of Body Language for the Aspiring Leader\", page 164, paragraph 3...")
+ deactivate_message = span_notice("So, uh, yeah, how do I point at things again?")
+
+ ///The action for changing the pointer color
+ var/datum/action/change_pointer_color/action
+
+/obj/item/skillchip/big_pointer/Destroy()
+ action = null
+ return ..()
+
+/obj/item/skillchip/big_pointer/on_activate(mob/living/carbon/user, silent=FALSE)
+ . = ..()
+ RegisterSignal(user, COMSIG_MOVABLE_POINTED, PROC_REF(fancier_pointer))
+ if(!action)
+ action = new(src)
+ action.Grant(user)
+
+/obj/item/skillchip/big_pointer/on_deactivate(mob/living/carbon/user, silent=FALSE)
+ UnregisterSignal(user, COMSIG_MOVABLE_POINTED)
+ action?.arrow_color = null
+ action?.arrow_overlay = null
+ action?.Remove(user)
+ return ..()
+
+/obj/item/skillchip/big_pointer/proc/fancier_pointer(mob/living/user, atom/pointed, obj/effect/temp_visual/point/point)
+ SIGNAL_HANDLER
+ if(HAS_TRAIT(user, TRAIT_UNKNOWN))
+ return
+ point.cut_overlays()
+ if(!action.arrow_color)
+ point.icon_state = "arrow_large"
+ return
+ point.icon_state = "arrow_large_white"
+ point.color = action.arrow_color
+ var/mutable_appearance/highlight = mutable_appearance(point.icon, "arrow_large_white_highlights", appearance_flags = RESET_COLOR)
+ point.add_overlay(highlight)
+
+/datum/action/change_pointer_color
+ name = "Change Pointer Color"
+ desc = "Set your custom pointer color, or reset it to the default."
+ button_icon = /obj/effect/temp_visual/point::icon
+ button_icon_state = "arrow_large_still"
+ check_flags = AB_CHECK_CONSCIOUS
+ ///the color of our arrow
+ var/arrow_color
+ ///the arrow overlay shown on the button
+ var/mutable_appearance/arrow_overlay
+
+/datum/action/change_pointer_color/Destroy()
+ . = ..()
+ arrow_overlay = null
+
+/datum/action/change_pointer_color/Trigger(trigger_flags)
+ . = ..()
+ if(!.)
+ return
+ var/mob/user = owner
+ if(!arrow_color)
+ pick_color(user)
+ return
+ var/choice = tgui_alert(owner, "Reset or update pointer color?","Pointer Color", list("Reset","Update"))
+ if(user != owner || !choice || !IsAvailable(feedback = TRUE))
+ return
+ if(choice == "Update")
+ pick_color(user)
+ else
+ arrow_color = null
+ owner.balloon_alert(owner, "pointer reset")
+ build_all_button_icons(update_flags = UPDATE_BUTTON_ICON, force = TRUE)
+
+/datum/action/change_pointer_color/proc/pick_color(mob/user)
+ var/ncolor = input(owner, "Pick new color", "Pointer Color", arrow_color) as color|null
+ if(user != owner || !IsAvailable(feedback = TRUE))
+ return
+ arrow_color = ncolor
+ owner.balloon_alert(owner, "pointer updated")
+ build_all_button_icons(update_flags = UPDATE_BUTTON_ICON, force = TRUE)
+
+/datum/action/change_pointer_color/apply_button_icon(atom/movable/screen/movable/action_button/current_button, force = FALSE)
+ if(!arrow_color)
+ return ..()
+
+ current_button.icon = current_button.icon_state = null
+ current_button.cut_overlay(arrow_overlay)
+
+ arrow_overlay = mutable_appearance(icon = /obj/effect/temp_visual/point::icon, icon_state = "arrow_large_white_still")
+ arrow_overlay.color = arrow_color
+ arrow_overlay.overlays += mutable_appearance(icon = /obj/effect/temp_visual/point::icon, icon_state = "arrow_large_white_still_highlights", appearance_flags = RESET_COLOR)
+ current_button.add_overlay(arrow_overlay)
diff --git a/code/modules/mob_spawn/ghost_roles/space_roles.dm b/code/modules/mob_spawn/ghost_roles/space_roles.dm
index 79d028bdbcb..411f6bfd970 100644
--- a/code/modules/mob_spawn/ghost_roles/space_roles.dm
+++ b/code/modules/mob_spawn/ghost_roles/space_roles.dm
@@ -160,6 +160,8 @@
l_pocket = /obj/item/uplink/nuclear
r_pocket = /obj/item/modular_computer/pda/nukeops
+ skillchips = list(/obj/item/skillchip/disk_verifier)
+
/obj/effect/mob_spawn/ghost_role/human/syndicate/battlecruiser/captain
name = "Syndicate Battlecruiser Captain"
you_are_text = "You are the captain aboard the syndicate flagship: the SBC Starfury."
diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm
index 6e61b1154d5..681fbce2c6b 100644
--- a/code/modules/point/point.dm
+++ b/code/modules/point/point.dm
@@ -7,22 +7,30 @@
*
* Not intended as a replacement for the mob verb
*/
-/atom/movable/proc/point_at(atom/pointed_atom)
+/atom/movable/proc/point_at(atom/pointed_atom, intentional = FALSE)
if(!isturf(loc))
- return
+ return FALSE
if (pointed_atom in src)
create_point_bubble(pointed_atom)
- return
+ return FALSE
var/turf/tile = get_turf(pointed_atom)
if (!tile)
- return
+ return FALSE
var/turf/our_tile = get_turf(src)
var/obj/visual = new /obj/effect/temp_visual/point(our_tile, invisibility)
+ SEND_SIGNAL(src, COMSIG_MOVABLE_POINTED, pointed_atom, visual, intentional)
+
animate(visual, pixel_x = (tile.x - our_tile.x) * world.icon_size + pointed_atom.pixel_x, pixel_y = (tile.y - our_tile.y) * world.icon_size + pointed_atom.pixel_y, time = 1.7, easing = EASE_OUT)
+ return TRUE
+
+/mob/point_at(atom/pointed_atom, intentional = FALSE)
+ . = ..()
+ if(.)
+ face_atom(pointed_atom)
/atom/movable/proc/create_point_bubble(atom/pointed_atom)
var/mutable_appearance/thought_bubble = mutable_appearance(
@@ -109,7 +117,6 @@
if(client && !(pointing_at in view(client.view, src)))
return FALSE
- point_at(pointing_at)
+ point_at(pointing_at, TRUE)
- SEND_SIGNAL(src, COMSIG_MOB_POINTED, pointing_at)
return TRUE
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index 969ba6add45..d1a237eaf64 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -58,6 +58,7 @@
/obj/item/skillchip/sabrage = 2,
/obj/item/skillchip/useless_adapter = 5,
/obj/item/skillchip/wine_taster = 2,
+ /obj/item/skillchip/big_pointer = 2,
),
),
list(
diff --git a/icons/hud/screen_gen.dmi b/icons/hud/screen_gen.dmi
index 9792124d1b68c61b82d4ac8f4fa003b7c409be83..86383abbef1e2adc2dc1e71f9e1676e8582089d4 100644
GIT binary patch
literal 112316
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