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 9792124d1b6..86383abbef1 100644 Binary files a/icons/hud/screen_gen.dmi and b/icons/hud/screen_gen.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 683260704f5..ad7421dbf6d 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/meat.dmi b/icons/obj/food/meat.dmi index fee496f47b5..ca3007749e7 100644 Binary files a/icons/obj/food/meat.dmi and b/icons/obj/food/meat.dmi differ diff --git a/icons/obj/food/mexican.dmi b/icons/obj/food/mexican.dmi index ba02c15a0b5..772d6b2e3fc 100644 Binary files a/icons/obj/food/mexican.dmi and b/icons/obj/food/mexican.dmi differ diff --git a/icons/obj/service/janitor.dmi b/icons/obj/service/janitor.dmi index 0e301808323..b340aa54cee 100644 Binary files a/icons/obj/service/janitor.dmi and b/icons/obj/service/janitor.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a30827afc65..ca400936f09 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4473,6 +4473,7 @@ #include "code\modules\library\skill_learning\skill_station.dm" #include "code\modules\library\skill_learning\skillchip.dm" #include "code\modules\library\skill_learning\generic_skillchips\matrix_taunt.dm" +#include "code\modules\library\skill_learning\generic_skillchips\point.dm" #include "code\modules\library\skill_learning\generic_skillchips\rod_suplex.dm" #include "code\modules\library\skill_learning\job_skillchips\_job.dm" #include "code\modules\library\skill_learning\job_skillchips\chef.dm" diff --git a/tools/UpdatePaths/Scripts/85759_waffle_trash_begone.txt b/tools/UpdatePaths/Scripts/85759_waffle_trash_begone.txt new file mode 100644 index 00000000000..105c7b76d7e --- /dev/null +++ b/tools/UpdatePaths/Scripts/85759_waffle_trash_begone.txt @@ -0,0 +1 @@ +/obj/item/trash/waffles : @DELETE \ No newline at end of file