Files
Bubberstation/_maps/shuttles/emergency_rollerdome.dmm
lizardqueenlexi 1b8bcd0365 Basic drones (#79109)
## 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.
/🆑
2023-10-21 23:36:48 +00:00

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
"}