mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
## About The Pull Request Fixes #68825 Fixes #72249 Fixes #70184 Converts maintenance drones to use the basic mob framework. As drones don't use AI, this was mostly a perfunctory conversion, but I took the opportunity to clean up drone code a bit and fixed a few bugs. Noteworthy changes: - Drones now have a `can_unhack` field. This is set to FALSE on syndrones, because unhacking them doesn't make them stop being evil but does cause some weirdness. Syndrones are unused right now, but you never know. - Drones use the Dextrous component for hand-having. - Drones no longer have an internal ID card, instead being given all-access with the `simple_access` component. - Picking up drones now works the same as for other mobs, instead of pointlessly copying the code into `attack_hand`. As a consequence, it is now possible to punch drones if you want to for some reason. - Drones can now reboot/cannibalize dead drones without being in combat mode. - Cannibalizing a drone that contains a client no longer runtimes - the client is ghosted ahead of time. - Drones now have TRAIT_ADVANCEDTOOLUSER, allowing them to properly interact with machines. - Trying to screwdriver a dead drone now gives a balloon alert about why you can't do that. In addition to these changes, I cleaned up the code quite a bit, organizing things better and placing more useful comments throughout. And removing a hell of a lot of single-letter variable names. I will note that this PR does _not_ address #72129. The issue there is that sprites for drones-as-hats are entirely nonexistent, and I'm not a spriter. It shouldn't be too hard to fix if someone makes dronehat sprites, though! ## Why It's Good For The Game Kills 8 more simple animals. In addition to that, drones were clearly a bit neglected, so this fixes them up a bit and makes the code a little bit clearer. Maybe not that much clearer, but it's something. It certainly leaves them in a better place for further work if anyone wants to do that. Plus, a bunch of bugs and other jankiness are fixed now, which is nice. ## Changelog 🆑 refactor: Maintenance Drones now use the basic mob framework. This shouldn't come with any noticeable gameplay changes, but please report any bugs. fix: Drones can now interact normally with electrified doors. fix: Drones' built-in tools can no longer be placed in storage objects and/or thrown on the floor. fix: Drones can now perform right-click interactions correctly, such as deconstructing reinforced windows. fix: Drones can now reboot or cannibalize other drones without being in combat mode. /🆑
704 lines
11 KiB
Plaintext
704 lines
11 KiB
Plaintext
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
|
"cc" = (
|
|
/obj/structure/railing,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"ce" = (
|
|
/obj/effect/turf_decal/siding/wood,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"cs" = (
|
|
/obj/structure/railing/corner{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"cP" = (
|
|
/obj/effect/spawner/random/entertainment/arcade,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"dJ" = (
|
|
/obj/structure/railing/corner/end/flip,
|
|
/obj/structure/railing/corner/end{
|
|
dir = 1
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"eR" = (
|
|
/obj/item/kirbyplants/potty{
|
|
name = "Cake plant"
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"fX" = (
|
|
/obj/structure/chair/stool/bar/directional/east,
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"hD" = (
|
|
/obj/machinery/door/airlock/gold/glass,
|
|
/obj/effect/mapping_helpers/airlock/access/all/command/general,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"hF" = (
|
|
/turf/closed/wall/mineral/plastitanium/nodiagonal,
|
|
/area/shuttle/escape)
|
|
"hM" = (
|
|
/obj/machinery/jukebox/disco/indestructible,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"hZ" = (
|
|
/obj/structure/table,
|
|
/obj/machinery/chem_dispenser/drinks/beer{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"im" = (
|
|
/obj/structure/chair/comfy/lime,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"jD" = (
|
|
/obj/structure/rack,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/obj/item/clothing/shoes/wheelys/rollerskates,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"ln" = (
|
|
/obj/machinery/vending/games,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"mP" = (
|
|
/obj/effect/turf_decal/siding/wood/corner,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"ns" = (
|
|
/obj/structure/etherealball,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"nw" = (
|
|
/obj/effect/spawner/random/vending/snackvend,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"nN" = (
|
|
/obj/structure/railing/corner/end{
|
|
dir = 4
|
|
},
|
|
/obj/structure/railing/corner/end{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"nT" = (
|
|
/obj/machinery/computer/atmos_alert{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"od" = (
|
|
/obj/machinery/power/shuttle_engine/propulsion,
|
|
/turf/open/floor/plating/airless,
|
|
/area/shuttle/escape)
|
|
"pa" = (
|
|
/obj/structure/railing{
|
|
dir = 5
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"pj" = (
|
|
/turf/template_noop,
|
|
/area/template_noop)
|
|
"pI" = (
|
|
/obj/machinery/light/directional/west,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"qU" = (
|
|
/obj/machinery/light/directional/east,
|
|
/obj/structure/table,
|
|
/obj/machinery/chem_dispenser/drinks{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"rX" = (
|
|
/obj/effect/spawner/random/entertainment/arcade,
|
|
/obj/machinery/light/directional/north,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"ss" = (
|
|
/obj/docking_port/mobile/emergency{
|
|
name = "Uncle Pete's Rollerdome"
|
|
},
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 8
|
|
},
|
|
/obj/machinery/door/airlock/grunge,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"tG" = (
|
|
/turf/closed/wall/mineral/plastitanium,
|
|
/area/shuttle/escape)
|
|
"uN" = (
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"vq" = (
|
|
/obj/machinery/computer/emergency_shuttle{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"wf" = (
|
|
/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium,
|
|
/turf/open/floor/plating/elevatorshaft,
|
|
/area/shuttle/escape)
|
|
"wn" = (
|
|
/obj/structure/table/wood,
|
|
/obj/item/clothing/head/soft/green{
|
|
flipped = 1;
|
|
pixel_x = 7;
|
|
pixel_y = 6
|
|
},
|
|
/obj/item/clothing/glasses/sunglasses,
|
|
/obj/item/clothing/suit/costume/hawaiian,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"xK" = (
|
|
/obj/structure/chair/comfy/brown{
|
|
dir = 4
|
|
},
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"ys" = (
|
|
/obj/structure/railing/corner/end/flip{
|
|
dir = 4
|
|
},
|
|
/obj/structure/railing/corner/end/flip{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"ze" = (
|
|
/obj/structure/railing/corner,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"zs" = (
|
|
/obj/structure/railing{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"zt" = (
|
|
/obj/structure/table/wood,
|
|
/obj/item/storage/fancy/cigarettes/cigars/havana{
|
|
pixel_y = 11
|
|
},
|
|
/obj/item/lighter{
|
|
pixel_x = 6;
|
|
pixel_y = -2
|
|
},
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"zx" = (
|
|
/obj/effect/spawner/structure/window/reinforced,
|
|
/turf/open/floor/plating,
|
|
/area/shuttle/escape)
|
|
"zZ" = (
|
|
/obj/structure/railing{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"Au" = (
|
|
/obj/structure/table/reinforced,
|
|
/obj/item/storage/box/drinkingglasses{
|
|
pixel_y = 13
|
|
},
|
|
/obj/item/storage/box/drinkingglasses{
|
|
pixel_y = 5;
|
|
pixel_x = 7
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"AT" = (
|
|
/obj/structure/etherealball,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"Cg" = (
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"Cx" = (
|
|
/obj/machinery/vending/boozeomat,
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"Dh" = (
|
|
/obj/item/reagent_containers/cup/glass/shaker{
|
|
pixel_y = 14;
|
|
pixel_x = 11
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"DR" = (
|
|
/obj/structure/railing{
|
|
dir = 6
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"Hi" = (
|
|
/obj/structure/table/wood,
|
|
/obj/item/flashlight/lamp/green{
|
|
pixel_y = 14;
|
|
pixel_x = -3
|
|
},
|
|
/obj/item/reagent_containers/cup/glass/bottle/whiskey{
|
|
pixel_y = 10;
|
|
pixel_x = 8
|
|
},
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"HA" = (
|
|
/obj/structure/table,
|
|
/obj/item/pizzabox/meat{
|
|
pixel_y = 11
|
|
},
|
|
/obj/item/pizzabox/meat{
|
|
pixel_y = 17
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"HB" = (
|
|
/obj/structure/railing/corner{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"HS" = (
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"Jq" = (
|
|
/obj/machinery/computer/security{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"JR" = (
|
|
/obj/structure/table/reinforced,
|
|
/obj/item/storage/bag/tray{
|
|
pixel_y = 5
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"Ky" = (
|
|
/obj/structure/table/reinforced,
|
|
/obj/item/pizzabox/mushroom{
|
|
pixel_y = 11;
|
|
pixel_x = -7
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"KJ" = (
|
|
/obj/machinery/power/shuttle_engine/heater,
|
|
/obj/structure/window/reinforced/spawner/directional/north,
|
|
/turf/open/floor/plating/airless,
|
|
/area/shuttle/escape)
|
|
"Ms" = (
|
|
/obj/structure/railing/corner{
|
|
dir = 1
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"Ow" = (
|
|
/obj/structure/railing{
|
|
dir = 1
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_a,
|
|
/area/shuttle/escape)
|
|
"Ox" = (
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"OG" = (
|
|
/obj/machinery/computer/communications{
|
|
dir = 8
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"ON" = (
|
|
/obj/machinery/vending/donksofttoyvendor,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"Qf" = (
|
|
/obj/machinery/computer/crew{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"Qv" = (
|
|
/obj/structure/table/reinforced,
|
|
/obj/item/pizzabox/meat{
|
|
pixel_y = -1
|
|
},
|
|
/obj/item/pizzabox/pineapple{
|
|
pixel_y = 7;
|
|
pixel_x = 6
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"QO" = (
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 8
|
|
},
|
|
/obj/machinery/door/airlock/grunge,
|
|
/turf/open/floor/wood,
|
|
/area/shuttle/escape)
|
|
"Ry" = (
|
|
/obj/structure/railing{
|
|
dir = 9
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"RN" = (
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"SR" = (
|
|
/obj/structure/table/reinforced,
|
|
/obj/effect/fun_balloon/sentience/emergency_shuttle{
|
|
group_name = "snack bar drone at Uncle Pete's Rollerdome"
|
|
},
|
|
/obj/item/food/cake/birthday{
|
|
pixel_y = 7
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"TU" = (
|
|
/obj/structure/railing{
|
|
dir = 10
|
|
},
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
"We" = (
|
|
/obj/structure/chair/comfy/brown{
|
|
dir = 8
|
|
},
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"Wg" = (
|
|
/obj/effect/spawner/random/vending/colavend,
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 4
|
|
},
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"Yr" = (
|
|
/obj/machinery/light/directional/south,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"Zf" = (
|
|
/mob/living/basic/drone/snowflake/bardrone,
|
|
/turf/open/floor/wood/parquet,
|
|
/area/shuttle/escape)
|
|
"Zo" = (
|
|
/obj/effect/turf_decal/siding/wood{
|
|
dir = 6
|
|
},
|
|
/obj/effect/turf_decal/siding/wood/corner,
|
|
/turf/open/floor/eighties,
|
|
/area/shuttle/escape)
|
|
"ZN" = (
|
|
/obj/structure/railing/corner/end/flip{
|
|
dir = 1
|
|
},
|
|
/obj/structure/railing/corner/end,
|
|
/turf/open/floor/light/colour_cycle/dancefloor_b,
|
|
/area/shuttle/escape)
|
|
|
|
(1,1,1) = {"
|
|
pj
|
|
pj
|
|
pj
|
|
pj
|
|
tG
|
|
tG
|
|
tG
|
|
wf
|
|
tG
|
|
ss
|
|
tG
|
|
wf
|
|
wf
|
|
wf
|
|
tG
|
|
hF
|
|
tG
|
|
QO
|
|
tG
|
|
wf
|
|
tG
|
|
pj
|
|
"}
|
|
(2,1,1) = {"
|
|
pj
|
|
tG
|
|
tG
|
|
tG
|
|
hF
|
|
AT
|
|
mP
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
ns
|
|
Cg
|
|
pI
|
|
nw
|
|
tG
|
|
tG
|
|
"}
|
|
(3,1,1) = {"
|
|
tG
|
|
tG
|
|
nT
|
|
Qf
|
|
zx
|
|
ln
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Ry
|
|
zZ
|
|
ZN
|
|
zZ
|
|
TU
|
|
Cg
|
|
Cg
|
|
Cg
|
|
mP
|
|
Ox
|
|
Wg
|
|
KJ
|
|
od
|
|
"}
|
|
(4,1,1) = {"
|
|
wf
|
|
Hi
|
|
We
|
|
We
|
|
zx
|
|
cP
|
|
Cg
|
|
Cg
|
|
Ry
|
|
Ms
|
|
RN
|
|
HS
|
|
RN
|
|
HB
|
|
TU
|
|
Cg
|
|
mP
|
|
Zo
|
|
uN
|
|
eR
|
|
KJ
|
|
od
|
|
"}
|
|
(5,1,1) = {"
|
|
wf
|
|
vq
|
|
Cg
|
|
Cg
|
|
zx
|
|
cP
|
|
Cg
|
|
Cg
|
|
Ow
|
|
RN
|
|
HS
|
|
RN
|
|
HS
|
|
RN
|
|
cc
|
|
jD
|
|
ce
|
|
uN
|
|
fX
|
|
fX
|
|
KJ
|
|
od
|
|
"}
|
|
(6,1,1) = {"
|
|
wf
|
|
im
|
|
Cg
|
|
Yr
|
|
zx
|
|
rX
|
|
Cg
|
|
Cg
|
|
nN
|
|
HS
|
|
RN
|
|
hM
|
|
RN
|
|
HS
|
|
ys
|
|
Cg
|
|
ce
|
|
fX
|
|
Qv
|
|
JR
|
|
KJ
|
|
od
|
|
"}
|
|
(7,1,1) = {"
|
|
wf
|
|
wn
|
|
Cg
|
|
Cg
|
|
hD
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Ow
|
|
RN
|
|
HS
|
|
RN
|
|
HS
|
|
RN
|
|
cc
|
|
jD
|
|
ce
|
|
JR
|
|
Ky
|
|
uN
|
|
KJ
|
|
od
|
|
"}
|
|
(8,1,1) = {"
|
|
wf
|
|
zt
|
|
xK
|
|
xK
|
|
zx
|
|
ON
|
|
Cg
|
|
Cg
|
|
pa
|
|
cs
|
|
RN
|
|
HS
|
|
RN
|
|
ze
|
|
DR
|
|
Cg
|
|
ce
|
|
SR
|
|
Zf
|
|
uN
|
|
KJ
|
|
od
|
|
"}
|
|
(9,1,1) = {"
|
|
tG
|
|
tG
|
|
Jq
|
|
OG
|
|
zx
|
|
ln
|
|
Cg
|
|
Cg
|
|
Cg
|
|
pa
|
|
zs
|
|
dJ
|
|
zs
|
|
DR
|
|
Cg
|
|
Cg
|
|
ce
|
|
Au
|
|
Dh
|
|
HA
|
|
KJ
|
|
od
|
|
"}
|
|
(10,1,1) = {"
|
|
pj
|
|
tG
|
|
tG
|
|
tG
|
|
hF
|
|
ns
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
Cg
|
|
AT
|
|
Cx
|
|
qU
|
|
hZ
|
|
tG
|
|
tG
|
|
"}
|
|
(11,1,1) = {"
|
|
pj
|
|
pj
|
|
pj
|
|
pj
|
|
tG
|
|
tG
|
|
tG
|
|
wf
|
|
tG
|
|
tG
|
|
tG
|
|
wf
|
|
wf
|
|
wf
|
|
tG
|
|
tG
|
|
tG
|
|
wf
|
|
tG
|
|
wf
|
|
tG
|
|
pj
|
|
"}
|