diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 9831d029b8b..281adc0823c 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -16679,9 +16679,6 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/machinery/pinpointer_dispenser{ - pixel_y = 32 - }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aQJ" = ( @@ -49555,6 +49552,11 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) +"fxH" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/pinpointer_dispenser, +/turf/open/floor/plating, +/area/hallway/secondary/entry) "fBs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/wood, @@ -65848,7 +65850,7 @@ aKj aLw aLw aLw -aLw +fxH aQI aNh czK diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 34496964db9..497db92b89b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -89539,10 +89539,10 @@ /obj/structure/window/reinforced{ dir = 1 }, -/mob/living/carbon/monkey, /obj/effect/turf_decal/stripes/end{ dir = 8 }, +/mob/living/carbon/monkey, /turf/open/floor/plasteel/dark, /area/science/genetics) "djC" = ( @@ -89560,11 +89560,11 @@ name = "'Monkey Pen"; req_access_txt = "9" }, -/mob/living/carbon/monkey, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/mob/living/carbon/monkey, /turf/open/floor/plasteel/dark, /area/science/genetics) "djD" = ( @@ -89579,11 +89579,11 @@ name = "Monkey Pen"; req_access_txt = "9" }, -/mob/living/carbon/monkey, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/mob/living/carbon/monkey, /turf/open/floor/plasteel/dark, /area/science/genetics) "djE" = ( @@ -89594,10 +89594,10 @@ /obj/structure/window/reinforced{ dir = 1 }, -/mob/living/carbon/monkey, /obj/effect/turf_decal/stripes/end{ dir = 4 }, +/mob/living/carbon/monkey, /turf/open/floor/plasteel/dark, /area/science/genetics) "djF" = ( @@ -115390,18 +115390,6 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing/chamber) -"oJM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/machinery/pinpointer_dispenser, -/turf/open/floor/plasteel/white/corner{ - dir = 1 - }, -/area/hallway/secondary/entry) "oMw" = ( /obj/docking_port/stationary/public_mining_dock{ dir = 4 @@ -116494,6 +116482,11 @@ }, /turf/open/space/basic, /area/space/nearstation) +"vVy" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/pinpointer_dispenser, +/turf/open/floor/plating, +/area/hallway/secondary/entry) "wav" = ( /obj/machinery/door/airlock/external{ name = "External Docking Port" @@ -155718,8 +155711,8 @@ aaa aaa aaa aaa -aaO -oJM +vVy +ajw akg akL aaO diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index 5a47b806211..f6716360318 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -46587,10 +46587,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"pfp" = ( -/obj/machinery/pinpointer_dispenser, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) "pfT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -50321,6 +50317,10 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/computer) +"wVU" = ( +/obj/machinery/pinpointer_dispenser, +/turf/closed/wall, +/area/security/checkpoint) "wXV" = ( /obj/structure/lattice, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -85825,8 +85825,8 @@ acc acc acc acc -acc -pfp +wVU +aty bwq aMl aty diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index f11c7bb2cb7..a8545911149 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -25213,14 +25213,6 @@ }, /turf/open/floor/plasteel/dark, /area/medical/genetics/cloning) -"aNJ" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/dark, -/area/medical/genetics/cloning) "aNK" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -31890,8 +31882,8 @@ /turf/open/floor/plasteel/dark, /area/science/xenobiology) "aXb" = ( -/mob/living/carbon/monkey, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/mob/living/carbon/monkey, /turf/open/floor/grass, /area/science/genetics) "aXc" = ( @@ -36739,7 +36731,6 @@ }, /obj/structure/window/reinforced, /obj/effect/turf_decal/box/corners, -/mob/living/carbon/monkey, /obj/structure/sink/puddle, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ dir = 8 @@ -36747,6 +36738,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/mob/living/carbon/monkey, /turf/open/floor/grass, /area/science/genetics) "bdT" = ( @@ -68639,7 +68631,6 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/pinpointer_dispenser, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bYO" = ( @@ -93938,6 +93929,11 @@ /obj/machinery/navbeacon/wayfinding, /turf/open/floor/plasteel/dark, /area/science/research) +"xIs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/pinpointer_dispenser, +/turf/open/floor/plating, +/area/hallway/secondary/exit/departure_lounge) (1,1,1) = {" aaa @@ -113579,7 +113575,7 @@ cvJ amh anV aNH -aNJ +and apW aBi avG @@ -113836,7 +113832,7 @@ czM cwy anW aNt -aNJ +and aqo aMd avI @@ -133940,7 +133936,7 @@ bYe bTs bSQ bXB -bPe +xIs bYN bWX bXc diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index a17cb27f61f..ff7765bd6a3 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -54606,7 +54606,6 @@ /area/science/genetics) "crW" = ( /obj/structure/bed/roller, -/mob/living/carbon/monkey, /obj/machinery/door/window/westleft{ base_state = "right"; dir = 1; @@ -54615,6 +54614,7 @@ pixel_y = 2; req_access_txt = "9" }, +/mob/living/carbon/monkey, /turf/open/floor/plasteel/dark, /area/science/genetics) "crZ" = ( @@ -73011,22 +73011,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) -"iGQ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/machinery/pinpointer_dispenser, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"iHl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/vending/tool, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/engine/storage_shared) "iKA" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -75623,6 +75607,11 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/starboard) +"ttW" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/pinpointer_dispenser, +/turf/open/floor/plating, +/area/quartermaster/sorting) "twp" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -94050,8 +94039,8 @@ beV bgH biE bkh -dmH -iGQ +ttW +bnW bqn bsy bub diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 58dc2621ba0..e0a26570f74 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -473,8 +473,6 @@ SUBSYSTEM_DEF(job) if(ishuman(living_mob)) var/mob/living/carbon/human/wageslave = living_mob living_mob.add_memory("Your account ID is [wageslave.account_id].") - if(living_mob.client.player_age < 7 && !living_mob.has_quirk(/datum/quirk/needswayfinder)) - living_mob.add_quirk(/datum/quirk/needswayfinder, TRUE) if(job && living_mob) job.after_spawn(living_mob, M, joined_late) // note: this happens before the mob has a key! M will always have a client, H might not. diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index b4d29ef7594..1bc39fd3580 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -41,3 +41,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) badquirk = TRUE if(badquirk) cli.prefs.save_character() + + // Assign wayfinding pinpointer granting quirk if they're new + if(cli.calc_exp_type(EXP_TYPE_LIVING) < 1200 && !user.has_quirk(/datum/quirk/needswayfinder)) + user.add_quirk(/datum/quirk/needswayfinder, TRUE) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 05276760352..0f86aa5b9c1 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -137,7 +137,7 @@ /datum/quirk/needswayfinder name = "Navigationally Challenged" - desc = "Due to a lack of familiarity with certain station layouts, you will start with a wayfinding pinpointer where available." + desc = "Lacking familiarity with certain stations, you start with a wayfinding pinpointer where available." value = 0 medical_record_text = "Patient demonstrates a keen ability to get lost." diff --git a/code/game/objects/items/wayfinding.dm b/code/game/objects/items/wayfinding.dm index b992a79b1ad..7a0b2f10cd0 100644 --- a/code/game/objects/items/wayfinding.dm +++ b/code/game/objects/items/wayfinding.dm @@ -5,20 +5,21 @@ desc = "Having trouble finding your way? This machine dispenses pinpointers that point to common locations." density = FALSE layer = HIGH_OBJ_LAYER - pixel_y = 32 var/list/obj/item/pinpointer/wayfinding/pinpointers = list() + var/spawn_cooldown = 1200 //deciseconds per person to spawn another pinpointer /obj/machinery/pinpointer_dispenser/attack_hand(mob/living/carbon/user) - if(user.name in pinpointers) - to_chat(user, "There's already a pinpointer registered to [user.name]!") + if(world.time < pinpointers[user.real_name]) + var/secsleft = (pinpointers[user.real_name] - world.time) / 10 + to_chat(user, "You need to wait [secsleft/60 > 1 ? "[round(secsleft/60)] minute\s" : "[round(secsleft)] second\s"].") return to_chat(user, "You take a pinpointer from [src].") var/obj/item/pinpointer/wayfinding/P = new /obj/item/pinpointer/wayfinding(get_turf(src)) user.put_in_hands(P) - P.owner = user.name - pinpointers[user.name] = P + P.owner = user.real_name + pinpointers[user.real_name] = world.time + spawn_cooldown /obj/item/pinpointer/wayfinding //For new players or new stations to help players find their way around name = "wayfinding pinpointer" @@ -30,14 +31,11 @@ /obj/item/pinpointer/wayfinding/attack_self(mob/living/user) if(active) toggle_on() - user.visible_message("[user] deactivates [user.p_their()] pinpointer.", "You deactivate your pinpointer.") + to_chat(user, "You deactivate your pinpointer.") return if (!owner) - owner = user.name - else if(owner != user.name) - to_chat(user, "The pinpointer doesn't respond. It seems to only recognise its owner.") - return + owner = user.real_name if(beacons.len) beacons.Cut() @@ -45,7 +43,7 @@ beacons[B.codes["wayfinding"]] = B if(!beacons.len) - user.visible_message("[user]'s pinpointer fails to detect a signal.", "Your pinpointer fails to detect a signal.") + to_chat(user, "Your pinpointer fails to detect a signal.") return var/A = input(user, "", "Pinpoint") in sortNames(beacons) @@ -54,7 +52,7 @@ target = beacons[A] toggle_on() - user.visible_message("[user] activates [user.p_their()] pinpointer.", "You activate your pinpointer.") + to_chat(user, "You activate your pinpointer.") /obj/item/pinpointer/wayfinding/examine(mob/user) . = ..() diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index aac7e116ba9..afb6b83789b 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -142,6 +142,7 @@ return TRUE //Available in 0 days = available right now = player is old enough to play. return FALSE + /datum/job/proc/available_in_days(client/C) if(!C) return 0