diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 8b01da7a0f6..e4c1c064bd2 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -349,6 +349,9 @@ /area/shuttle/pirate) "aD" = ( /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/shuttle/pirate) "aF" = ( @@ -428,6 +431,9 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/shuttle/pirate) "aO" = ( @@ -789,15 +795,16 @@ /turf/open/floor/plating, /area/shuttle/pirate) "bP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plating, /area/shuttle/pirate) "bQ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, /turf/open/floor/plating, /area/shuttle/pirate) "bX" = ( @@ -914,6 +921,9 @@ /obj/item/grenade/smokebomb{ pixel_x = 5 }, +/obj/structure/sign/poster/contraband/bountyhunters{ + pixel_y = 32 + }, /turf/open/floor/pod/light, /area/shuttle/pirate) "ep" = ( @@ -1087,10 +1097,25 @@ /obj/effect/mapping_helpers/airlock/cutaiwire, /turf/open/floor/wood, /area/shuttle/pirate) -"Gk" = ( +"ED" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/suit_storage_unit/pirate, /obj/effect/decal/cleanable/dirt, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plating, +/area/shuttle/pirate) +"Gk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shower{ + name = "decontamination shower"; + pixel_y = 12 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/window{ + dir = 4 + }, +/obj/machinery/door/window{ + name = "Decontamination" + }, /turf/open/floor/plating, /area/shuttle/pirate) "JT" = ( @@ -1112,6 +1137,14 @@ }, /turf/open/floor/pod/light, /area/shuttle/pirate) +"Ni" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) "Oe" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/effect/turf_decal/tile/bar, @@ -1274,7 +1307,7 @@ yi aj aj Gk -aS +Ni aF aI aJ @@ -1381,7 +1414,7 @@ aj yi aj aj -Gk +ED aS bZ bo diff --git a/_maps/shuttles/pirate_dutchman.dmm b/_maps/shuttles/pirate_dutchman.dmm new file mode 100644 index 00000000000..dd5e29c590f --- /dev/null +++ b/_maps/shuttles/pirate_dutchman.dmm @@ -0,0 +1,1562 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate/flying_dutchman) +"ad" = ( +/obj/effect/turf_decal/siding/wood/end, +/obj/structure/cannon{ + dir = 1 + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 8; + name = "wooden railing" + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate/flying_dutchman) +"af" = ( +/turf/template_noop, +/area/template_noop) +"ak" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/wood{ + dir = 1 + }, +/obj/effect/mob_spawn/human/pirate/skeleton/gunner, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"am" = ( +/obj/structure/railing{ + color = "#4C3117"; + dir = 5; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/stack/cannonball/fourteen, +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"an" = ( +/obj/structure/railing{ + color = "#4C3117"; + dir = 9; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/table/wood, +/obj/item/melee/baseball_bat{ + desc = "Throw the plank! Arr..."; + icon_state = "baseball_bat_metal"; + name = "knocking stick"; + pixel_y = 4 + }, +/obj/item/binoculars{ + pixel_x = 6; + pixel_y = 1 + }, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"ao" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"aw" = ( +/obj/machinery/computer/monitor/secret{ + dir = 8 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"aB" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"aK" = ( +/obj/structure/railing{ + color = "#4C3117"; + dir = 5; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/machinery/light/floor, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"aO" = ( +/obj/structure/railing{ + color = "#4C3117"; + dir = 9; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/light/floor, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"aZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/closet/cabinet, +/obj/item/storage/bag/money/vault, +/obj/item/stack/sheet/mineral/gold{ + amount = 3; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 8; + pixel_x = 2; + pixel_y = -1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"be" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"bn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"bu" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 8; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"by" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"bO" = ( +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"co" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"da" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"dc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/storage/box/lethalshot, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"dM" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/grenade/smokebomb{ + pixel_x = 5 + }, +/obj/item/grenade/smokebomb{ + pixel_x = -5 + }, +/obj/item/paper/crumpled/muddy/fluff/cannon_instructions, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"dZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/fermenting_barrel, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"en" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"eA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"eG" = ( +/obj/structure/mineral_door/wood{ + color = "#6b6536" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"fH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/table/wood, +/obj/item/stack/cannonball/fourteen, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"fW" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"fY" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"gq" = ( +/obj/machinery/computer/shuttle/pirate{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"gP" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/comfy/shuttle, +/obj/effect/mob_spawn/human/pirate/skeleton/captain, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"gQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/closet/cabinet, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/restraints/handcuffs/cable/zipties, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"gS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/light/small, +/obj/structure/fermenting_barrel/gunpowder, +/obj/item/reagent_containers/glass/bucket/wooden, +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"hz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"hV" = ( +/obj/structure/table/wood, +/obj/machinery/recharger{ + pixel_y = 2 + }, +/obj/item/stack/cannonball/emp{ + pixel_x = -8 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"it" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"km" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"kz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"mG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"ny" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/machinery/light/floor, +/turf/open/space/basic, +/area/shuttle/pirate/flying_dutchman) +"pG" = ( +/obj/structure/window/shuttle/survival_pod, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"rd" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"rN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"sa" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"sc" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/headpike/bone, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"sf" = ( +/obj/machinery/door/airlock/vault{ + color = "#825427"; + name = "ye olde strong door" + }, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"sC" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"tt" = ( +/obj/machinery/piratepad, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"tH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"uk" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 8; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"uw" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/structure/cannon{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate/flying_dutchman) +"uR" = ( +/obj/machinery/power/tracker{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/airless/solarpanel, +/area/shuttle/pirate/flying_dutchman) +"vi" = ( +/obj/structure/railing{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/obj/structure/railing{ + color = "#4C3117"; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"vt" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"vw" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"vT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/fluff{ + density = 1; + desc = "Ha ha ha, you fool!"; + icon = 'icons/obj/stack_objects.dmi'; + icon_state = "sheet-gold_3"; + name = "fool's gold" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"xA" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ + dir = 1; + x_offset = -4; + y_offset = -8 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"yy" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"zw" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"zE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/light/floor, +/obj/structure/fluff{ + density = 1; + desc = "Ha ha ha, you fool!"; + icon = 'icons/obj/stack_objects.dmi'; + icon_state = "sheet-silver_2"; + name = "fool's silver" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"zO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Ac" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/light/small, +/obj/structure/fermenting_barrel/gunpowder, +/obj/item/reagent_containers/glass/bucket/wooden, +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"BK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/light/floor, +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" + }, +/obj/item/coin/silver{ + name = "doubloon" + }, +/obj/item/coin/silver{ + name = "doubloon" + }, +/obj/item/coin/silver{ + name = "doubloon" + }, +/obj/item/coin/silver{ + name = "doubloon" + }, +/obj/item/coin/silver{ + name = "doubloon" + }, +/obj/item/coin/gold{ + name = "doubloon" + }, +/obj/item/coin/gold{ + name = "doubloon" + }, +/obj/item/coin/gold{ + name = "doubloon" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Cv" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Da" = ( +/obj/structure/festivus{ + anchored = 1; + color = "#825427"; + name = "mast"; + pixel_x = -16; + pixel_y = 2 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/shuttle/pirate/flying_dutchman) +"Dr" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + desc = "Rum with ghostly properties that can help the drinker enter the spirit realm. It has fermented under the sea of space for ages."; + name = "Ghost Pirate Rum"; + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_x = 4 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/lighter{ + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"EU" = ( +/obj/machinery/shuttle_scrambler, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"EX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Fv" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Fz" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/table/wood, +/obj/item/stack/cannonball/fourteen, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"FK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Gr" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Gt" = ( +/obj/structure/cable, +/turf/closed/wall/mineral/wood/nonmetal, +/area/shuttle/pirate/flying_dutchman) +"Hh" = ( +/obj/machinery/computer/piratepad_control{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"Jp" = ( +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 2 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"JY" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Ki" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"KZ" = ( +/obj/structure/table/wood, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/gun/energy/laser{ + pixel_y = 3 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Le" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Lt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/gun/energy/laser{ + pixel_y = 3 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"LD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/machinery/light/floor, +/obj/docking_port/stationary{ + dir = 8; + dwidth = 11; + height = 16; + id = "pirateship_home"; + name = "Deep Space"; + width = 17 + }, +/obj/docking_port/mobile/pirate{ + dheight = 7; + dir = 8; + dwidth = 18; + height = 6; + launch_status = 0; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Pirate Ship"; + port_direction = 4; + preferred_direction = 8; + width = 13 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Ms" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"NG" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/railing/corner{ + color = "#4C3117"; + name = "wooden railing" + }, +/obj/machinery/light/small, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Oe" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/shuttle/pirate/flying_dutchman) +"OL" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Pm" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"PS" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/claymore/cutlass{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/claymore/cutlass, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Qa" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 8; + name = "wooden railing" + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"RO" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"RQ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"RY" = ( +/obj/machinery/power/solar/fake, +/obj/structure/cable, +/turf/open/floor/iron/airless/solarpanel, +/area/shuttle/pirate/flying_dutchman) +"Sp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/stack/cannonball/shellball/seven, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"St" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/blue/airless, +/area/shuttle/pirate/flying_dutchman) +"SV" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/cannon{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate/flying_dutchman) +"Uk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" + }, +/obj/item/food/grown/sugarcane, +/obj/item/food/grown/sugarcane, +/obj/item/food/grown/sugarcane, +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Vm" = ( +/obj/structure/railing/corner{ + color = "#4C3117"; + dir = 4; + name = "wooden railing" + }, +/obj/structure/railing/corner{ + color = "#4C3117"; + name = "wooden railing" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"VF" = ( +/obj/machinery/loot_locator, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"WB" = ( +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"WQ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"WR" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/shuttle/pirate/flying_dutchman) +"WS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"Yr" = ( +/obj/structure/closet/cabinet{ + anchored = 1; + desc = "What kind of scary things could be here?"; + name = "Davy Jones' Locker" + }, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/restraints/legcuffs/bola, +/obj/item/gun/energy/laser, +/obj/item/megaphone, +/obj/item/melee/chainofcommand/tailwhip/kitty, +/obj/item/claymore/cutlass, +/turf/open/floor/carpet/royalblack/airless, +/area/shuttle/pirate/flying_dutchman) +"Ys" = ( +/obj/effect/mob_spawn/human/pirate/skeleton, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"ZL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/railing{ + color = "#4C3117"; + dir = 1; + name = "wooden railing" + }, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) +"ZZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/wood/airless, +/area/shuttle/pirate/flying_dutchman) + +(1,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +uR +af +af +af +af +"} +(2,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +uR +af +af +af +af +af +af +af +ny +af +RY +RY +RY +"} +(3,1,1) = {" +af +af +af +af +af +af +af +af +af +af +RY +RY +ny +af +af +af +af +af +af +af +Oe +RY +RY +Oe +ny +"} +(4,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +Oe +Oe +RY +af +af +af +af +af +af +Oe +Oe +Oe +Oe +af +"} +(5,1,1) = {" +af +af +af +af +af +af +af +af +af +af +RY +RY +Oe +af +af +af +af +af +af +af +af +Oe +RY +RY +af +"} +(6,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +Oe +Oe +af +af +WR +pG +SV +WR +af +ny +af +af +af +"} +(7,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +ny +Gt +pG +SV +WR +Fz +vw +WR +WR +Gt +WR +WR +af +"} +(8,1,1) = {" +af +af +af +af +af +ZL +ZZ +rN +WR +WR +WR +WR +WR +WR +Fz +OL +hz +fY +Gr +WR +VF +tt +Hh +WR +WR +"} +(9,1,1) = {" +af +af +af +aO +bu +by +WB +Le +be +Uk +dZ +BK +pG +gQ +fY +WB +WB +WB +Gr +WR +WR +Ms +vt +Yr +WR +"} +(10,1,1) = {" +af +af +an +ao +WB +eA +en +Ki +sa +WB +WB +NG +WR +WS +RO +Sp +dM +KZ +Le +Ac +WR +Fv +rN +Jp +WR +"} +(11,1,1) = {" +ac +ad +ak +WB +it +fW +St +Da +da +WB +WB +RQ +eG +WS +Gr +Da +dc +Ys +WB +Gr +sf +WS +gP +gq +WR +"} +(12,1,1) = {" +af +af +am +aB +WB +km +sC +mG +bn +WB +WB +uk +WR +WS +Le +Lt +PS +hV +RO +gS +WR +tH +kz +Dr +WR +"} +(13,1,1) = {" +af +af +af +aK +Cv +zw +RO +EX +Vm +sc +vT +zE +pG +aZ +yy +WB +WB +WB +Gr +WR +WR +Ms +WQ +xA +WR +"} +(14,1,1) = {" +af +af +af +af +af +zO +LD +WR +vi +WR +WR +WR +WR +WR +fH +rd +FK +yy +Gr +WR +EU +bO +aw +WR +WR +"} +(15,1,1) = {" +af +af +af +af +af +af +af +af +Qa +af +af +af +ny +Gt +pG +uw +WR +fH +Pm +WR +WR +Gt +WR +WR +af +"} +(16,1,1) = {" +af +af +af +af +af +af +af +af +co +af +af +af +Oe +Oe +af +af +WR +pG +uw +WR +af +ny +af +af +af +"} +(17,1,1) = {" +af +af +af +af +af +af +af +af +JY +af +RY +RY +Oe +af +af +af +af +af +af +af +af +Oe +RY +RY +af +"} +(18,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +Oe +Oe +RY +af +af +af +af +af +af +Oe +Oe +Oe +Oe +af +"} +(19,1,1) = {" +af +af +af +af +af +af +af +af +af +af +RY +RY +ny +af +af +af +af +af +af +af +Oe +RY +RY +Oe +ny +"} +(20,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +uR +af +af +af +af +af +af +af +ny +af +RY +RY +RY +"} +(21,1,1) = {" +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +af +uR +af +af +af +af +"} diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm new file mode 100644 index 00000000000..065969480d0 --- /dev/null +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -0,0 +1,1425 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"am" = ( +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"au" = ( +/obj/machinery/door/airlock/silver/glass, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"aA" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/bag/money/vault, +/obj/item/stack/sheet/mineral/gold{ + amount = 3; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 8; + pixel_x = 2; + pixel_y = -1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"aZ" = ( +/obj/machinery/suit_storage_unit/pirate, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"bZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"cE" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"cH" = ( +/obj/machinery/door/airlock/silver, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"de" = ( +/obj/machinery/door/airlock/external/glass{ + id_tag = "pirateportexternal" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"dI" = ( +/obj/structure/dresser, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"dT" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"ei" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"em" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"eK" = ( +/obj/structure/shuttle/engine/router, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"eU" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"fj" = ( +/obj/machinery/computer/shuttle/pirate{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"fN" = ( +/obj/structure/dresser, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"gg" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"ht" = ( +/obj/machinery/door/airlock/silver, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"hu" = ( +/obj/structure/chair/stool, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"hW" = ( +/obj/machinery/piratepad, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"iY" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"je" = ( +/turf/template_noop, +/area/template_noop) +"jm" = ( +/obj/machinery/door/airlock/external/glass{ + id_tag = "piratestarboardexternal" + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 13; + height = 3; + id = "pirateship_home"; + name = "Deep Space"; + width = 26 + }, +/obj/docking_port/mobile/pirate{ + dir = 4; + dwidth = 13; + height = 3; + launch_status = 0; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Silverscale Cruiser"; + preferred_direction = 4; + width = 26 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"jo" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/pirate) +"jG" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"jQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"ko" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"ky" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/mirror{ + pixel_y = 26 + }, +/obj/structure/sink{ + pixel_y = 17 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"kF" = ( +/obj/effect/turf_decal/trimline/yellow/warning, +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + faction = list("pirate") + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"kU" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"lk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"lu" = ( +/obj/item/storage/secure/safe{ + pixel_x = 6; + pixel_y = 32 + }, +/obj/effect/mob_spawn/human/pirate/silverscale/captain{ + dir = 8 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"lL" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"mz" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/open/space/basic, +/area/shuttle/pirate) +"mI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"nh" = ( +/obj/machinery/computer/monitor/secret{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"nB" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + faction = list("pirate") + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"nY" = ( +/obj/machinery/door/airlock/external/glass{ + id_tag = "pirateportexternal" + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"pk" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 8; + faction = list("pirate") + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"pU" = ( +/obj/machinery/door/airlock/silver, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"qA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"rB" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/pirate) +"te" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"ue" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"uP" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet/black, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"vw" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"vz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"vM" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"vP" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + faction = list("pirate") + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"wa" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"xe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"xj" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 9; + pixel_y = 9 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"xs" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/pirate) +"xO" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"xR" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/melee/transforming/energy/sword/saber/purple{ + pixel_y = 12 + }, +/obj/item/melee/transforming/energy/sword/saber/purple{ + pixel_x = 8; + pixel_y = 7 + }, +/obj/item/melee/transforming/energy/sword/saber/purple{ + pixel_x = 17 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"zB" = ( +/obj/structure/table/glass, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"zN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"zQ" = ( +/obj/machinery/door/airlock/external/glass{ + id_tag = "piratestarboardexternal" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Ae" = ( +/obj/machinery/shuttle_scrambler, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Ai" = ( +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Aj" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"AE" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/open/space/basic, +/area/shuttle/pirate) +"AR" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/mirror{ + pixel_y = 26 + }, +/obj/structure/sink{ + pixel_y = 17 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"BK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"BO" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Ch" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"CH" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"CP" = ( +/obj/machinery/power/smes/engineering{ + charge = 1e+006 + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"CW" = ( +/obj/machinery/vending/boozeomat/all_access{ + onstation = 0 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Df" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Dt" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/light/floor, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"DX" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"Gr" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Gy" = ( +/obj/structure/table/glass, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/reagent_containers/food/drinks/bottle/patron{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = -10; + pixel_y = 7 + }, +/obj/item/reagent_containers/food/drinks/bottle/grappa{ + pixel_x = 10; + pixel_y = 15 + }, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/machinery/light_switch{ + pixel_y = 22 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"HD" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "silverbridge" + }, +/turf/open/floor/plating, +/area/shuttle/pirate) +"HS" = ( +/obj/structure/musician/piano{ + icon_state = "piano" + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Ig" = ( +/obj/structure/table/glass, +/obj/machinery/chem_dispenser/drinks{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Is" = ( +/obj/machinery/computer/piratepad_control{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Jc" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/bottle/wine{ + pixel_y = 6 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Jq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"JL" = ( +/obj/structure/bookcase/random/nonfiction, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"JV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"Kq" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Lk" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"LQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"Mo" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/pirate{ + dir = 8; + x_offset = 10; + y_offset = 5 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Mu" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"MA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"Nm" = ( +/obj/machinery/loot_locator, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"NI" = ( +/obj/machinery/door/airlock/silver, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Oo" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/drinks/bottle/tequila{ + pixel_x = 10; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/bottle/hcider{ + layer = 3.1; + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + layer = 3.2; + pixel_x = -15; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/drinks/shaker{ + pixel_x = 1; + pixel_y = 13 + }, +/obj/item/reagent_containers/food/drinks/bottle/gin{ + pixel_x = -10; + pixel_y = 15 + }, +/obj/item/reagent_containers/food/drinks/bottle/wine{ + layer = 3.1; + pixel_x = 3; + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Ox" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"OT" = ( +/obj/machinery/door/airlock/silver, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Pg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Qm" = ( +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"QI" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"QO" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet/black, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"QU" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + aidisabled = 1; + dir = 1; + name = "Pirate Corvette APC"; + pixel_y = 23 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 4 + }, +/obj/item/flashlight/seclite, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/obj/item/multitool, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"RE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/mob_spawn/human/pirate/silverscale/gunner{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"RF" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"RH" = ( +/obj/structure/fireplace, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"RO" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/gun/ballistic/rifle/boltaction{ + pixel_y = 5 + }, +/obj/item/gun/ballistic/rifle/boltaction, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"RY" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Sh" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + faction = list("pirate") + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Si" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Su" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Sv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"TT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"TV" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 8; + faction = list("pirate") + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 10 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Ut" = ( +/obj/structure/rack, +/obj/item/stack/sheet/mineral/wood{ + amount = 10 + }, +/obj/item/lighter, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"UJ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Vw" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Ww" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/pirate) +"Wy" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"Xw" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/storage/fancy/cigarettes/cigars{ + pixel_y = 5 + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_y = 7 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 9 + }, +/obj/item/lighter, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -8 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"XB" = ( +/obj/machinery/vending/boozeomat/all_access{ + onstation = 0 + }, +/obj/machinery/light/small, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"XX" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"Yj" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/storage/box/lethalshot, +/obj/item/gun/ballistic/shotgun/doublebarrel, +/turf/open/floor/pod/dark, +/area/shuttle/pirate) +"YD" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "silverbridge"; + name = "Window Shutters Control"; + pixel_y = -5 + }, +/obj/item/radio/intercom{ + pixel_y = 5 + }, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) +"YL" = ( +/obj/effect/mob_spawn/human/pirate/silverscale{ + dir = 8 + }, +/turf/open/floor/carpet/royalblack, +/area/shuttle/pirate) +"ZD" = ( +/obj/machinery/door/airlock/silver/glass, +/obj/effect/mapping_helpers/airlock/cutaiwire, +/turf/open/floor/iron/dark, +/area/shuttle/pirate) + +(1,1,1) = {" +je +je +rB +nY +rB +Gr +Gr +lL +je +jG +Gr +Gr +rB +jm +rB +je +je +"} +(2,1,1) = {" +je +BO +rB +TT +rB +Mu +Mu +Mu +UJ +Mu +Mu +Mu +rB +TT +rB +vw +je +"} +(3,1,1) = {" +je +AE +rB +jQ +rB +Ww +Ww +Ww +eK +Ww +Ww +Ww +rB +zN +rB +AE +je +"} +(4,1,1) = {" +pk +rB +rB +de +rB +HD +HD +HD +rB +HD +HD +HD +rB +zQ +rB +rB +TV +"} +(5,1,1) = {" +rB +rB +Su +Si +rB +aZ +aZ +aZ +Is +Yj +RO +xR +rB +Si +QI +rB +rB +"} +(6,1,1) = {" +rB +CP +Lk +Df +ht +te +te +te +hW +te +te +te +cH +Df +wa +ko +rB +"} +(7,1,1) = {" +rB +QU +Pg +qA +rB +RY +Qm +Qm +Ox +Qm +Qm +RY +rB +xe +wa +Wy +rB +"} +(8,1,1) = {" +rB +rB +au +rB +rB +rB +OT +rB +rB +rB +OT +rB +rB +rB +au +rB +rB +"} +(9,1,1) = {" +HD +JL +fT +cE +xs +HS +kU +iY +Jc +gg +kU +aA +xs +Kq +fT +Gy +HD +"} +(10,1,1) = {" +HD +Ut +fT +CH +xs +hu +am +eU +Xw +DX +am +dT +xs +Ai +fT +Oo +HD +"} +(11,1,1) = {" +rB +RH +ue +lk +ZD +Ai +am +eU +xj +DX +am +Ai +ZD +ei +Ch +CW +rB +"} +(12,1,1) = {" +HD +Ai +ue +Aj +jo +lk +am +am +am +am +am +ei +jo +bZ +Ch +zB +HD +"} +(13,1,1) = {" +HD +XX +fT +CH +xs +Nm +Vw +vz +Dt +vz +YD +Ae +xs +Ai +fT +Ig +HD +"} +(14,1,1) = {" +rB +rB +pU +rB +rB +HD +HD +Mo +fj +nh +HD +HD +rB +rB +pU +rB +rB +"} +(15,1,1) = {" +rB +dI +Sv +XB +rB +kF +HD +HD +HD +HD +HD +Sh +rB +fN +Sv +uP +rB +"} +(16,1,1) = {" +rB +vM +BK +MA +HD +xO +je +je +je +je +je +RF +HD +LQ +JV +YL +rB +"} +(17,1,1) = {" +rB +rB +QO +mI +HD +je +je +je +je +je +je +je +HD +Jq +RE +rB +rB +"} +(18,1,1) = {" +je +rB +lu +Sv +rB +je +je +je +je +je +je +je +rB +Sv +uP +rB +je +"} +(19,1,1) = {" +je +rB +rB +NI +rB +je +je +je +je +je +je +je +rB +NI +rB +rB +je +"} +(20,1,1) = {" +je +em +rB +ky +rB +je +je +je +je +je +je +je +rB +AR +rB +em +je +"} +(21,1,1) = {" +je +mz +rB +rB +rB +je +je +je +je +je +je +je +rB +rB +rB +mz +je +"} +(22,1,1) = {" +je +je +nB +rB +rB +je +je +je +je +je +je +je +rB +rB +vP +je +je +"} +(23,1,1) = {" +je +je +je +rB +rB +je +je +je +je +je +je +je +rB +rB +je +je +je +"} +(24,1,1) = {" +je +je +je +rB +rB +je +je +je +je +je +je +je +rB +rB +je +je +je +"} +(25,1,1) = {" +je +je +je +je +rB +je +je +je +je +je +je +je +rB +je +je +je +je +"} +(26,1,1) = {" +je +je +je +je +rB +je +je +je +je +je +je +je +rB +je +je +je +je +"} +(27,1,1) = {" +je +je +je +je +rB +je +je +je +je +je +je +je +rB +je +je +je +je +"} diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 1e7181c415b..c80007e3bd0 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -648,6 +648,14 @@ suffix = "default" name = "pirate ship (Default)" +/datum/map_template/shuttle/pirate/silverscale + suffix = "silverscale" + name = "pirate ship (Silver Scales)" + +/datum/map_template/shuttle/pirate/dutchman + suffix = "dutchman" + name = "pirate ship (Flying Dutchman)" + /datum/map_template/shuttle/hunter/space_cop suffix = "space_cop" name = "Police Spacevan" diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 650d35c3dc7..7e359bd256c 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -55,6 +55,10 @@ name = "Pirate Shuttle" requires_power = TRUE +/area/shuttle/pirate/flying_dutchman + name = "Flying Dutchman" + requires_power = FALSE + ////////////////////////////Bounty Hunter Shuttles//////////////////////////// /area/shuttle/hunter diff --git a/code/game/objects/items/stacks/cannonballs.dm b/code/game/objects/items/stacks/cannonballs.dm new file mode 100644 index 00000000000..4eefdc45b42 --- /dev/null +++ b/code/game/objects/items/stacks/cannonballs.dm @@ -0,0 +1,60 @@ +/obj/item/stack/cannonball + name = "cannonballs" + desc = "A stack of heavy plasteel cannonballs. Gunnery for the space age!" + icon_state = "cannonballs" + max_amount = 14 + singular_name = "cannonball" + merge_type = /obj/item/stack/cannonball + throwforce = 10 + flags_1 = CONDUCT_1 + custom_materials = list(/datum/material/alloy/plasteel=MINERAL_MATERIAL_AMOUNT) + resistance_flags = FIRE_PROOF + throw_speed = 5 + throw_range = 3 + ///the type of projectile this type of cannonball item turns into. + var/obj/projectile/projectile_type = /obj/projectile/bullet/cannonball + +/obj/item/stack/cannonball/update_icon_state() + if(amount == 1) + icon_state = "[initial(icon_state)]" + else + icon_state = "[initial(icon_state)]_[min(amount, 14)]" + + +/obj/item/stack/cannonball/fourteen + amount = 14 + +/obj/item/stack/cannonball/shellball + name = "explosive shellballs" + singular_name = "explosive shellball" + desc = "An explosive anti-materiel and counter-battery projectile cannonball. Makes great work out of any wall, for easy entrances." + color = "#FF0000" + merge_type = /obj/item/stack/cannonball/shellball + projectile_type = /obj/projectile/bullet/cannonball/explosive + +/obj/item/stack/cannonball/shellball/seven + amount = 7 + +/obj/item/stack/cannonball/shellball/fourteen + amount = 14 + +/obj/item/stack/cannonball/emp + name = "malfunction shots" + singular_name = "malfunction shot" + icon_state = "emp_cannonballs" + desc = "A shot filled with two chambers that combine on impact, creating a chemical EMP. What does any of that mean? Who knows. Modern piracy really lost its soul with these newfangled things." + max_amount = 4 + merge_type = /obj/item/stack/cannonball/emp + projectile_type = /obj/projectile/bullet/cannonball/emp + +/obj/item/stack/cannonball/the_big_one + name = "\"The Biggest Ones\"" + singular_name = "\"The Biggest One\"" + desc = "An insane amount of explosives jammed into a massive cannonball. The last cannonball you'll ever fire in a fight, mostly because there'll be nothing left to shoot at afterwards." + max_amount = 5 + icon_state = "biggest_cannonballs" + merge_type = /obj/item/stack/cannonball/the_big_one + projectile_type = /obj/projectile/bullet/cannonball/biggest_one + +/obj/item/stack/cannonball/the_big_one/five + amount = 5 diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 6aa1cd472d0..dfa85a944ef 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -81,6 +81,20 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) +//statistically similar to e-cutlasses +/obj/item/claymore/cutlass + name = "cutlass" + desc = "A piratey sword used by buckaneers to \"negotiate\" the transfer of treasure." + icon_state = "cutlass" + inhand_icon_state = "cutlass" + worn_icon_state = "cutlass" + slot_flags = ITEM_SLOT_BACK + force = 30 + throwforce = 20 + throw_speed = 3 + throw_range = 5 + armour_penetration = 35 + /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." flags_1 = CONDUCT_1 diff --git a/code/game/objects/structures/cannon.dm b/code/game/objects/structures/cannon.dm new file mode 100644 index 00000000000..b9a9b9596da --- /dev/null +++ b/code/game/objects/structures/cannon.dm @@ -0,0 +1,103 @@ +/obj/structure/cannon + name = "cannon" + desc = "Holemaker Deluxe: A sporty model with a good stop power. Any cannon enthusiast should be expected to start here." + density = TRUE + anchored = TRUE + icon_state = "falconet_patina" + max_integrity = 300 + var/obj/item/stack/cannonball/loaded_cannonball = null + var/charge_ignited = FALSE + var/fire_delay = 15 + var/charge_size = 15 + var/fire_sound = 'sound/weapons/gun/general/cannon.ogg' + +/obj/structure/cannon/Initialize() + . = ..() + create_reagents(charge_size) + +/obj/structure/cannon/proc/fire() + for(var/mob/shaken_mob in urange(10, src)) + if(shaken_mob.stat == CONSCIOUS) + shake_camera(shaken_mob, 3, 1) + + playsound(src, fire_sound, 50, TRUE) + if(loaded_cannonball) + var/obj/projectile/fired_projectile = new loaded_cannonball.projectile_type(get_turf(src)) + QDEL_NULL(loaded_cannonball) + fired_projectile.firer = src + fired_projectile.fired_from = src + fired_projectile.fire(dir2angle(dir)) + reagents.remove_all() + charge_ignited = FALSE + +/obj/structure/cannon/attackby(obj/item/W, mob/user, params) + if(charge_ignited) + to_chat(user, "[src] is about to fire!") + return + var/ignition_message = W.ignition_effect(src, user) + + if(istype(W, /obj/item/stack/cannonball)) + if(loaded_cannonball) + to_chat(user, "[src] is already loaded!") + else + var/obj/item/stack/cannonball/cannoneers_balls = W + loaded_cannonball = new cannoneers_balls.type(src, 1) + loaded_cannonball.copy_evidences(cannoneers_balls) + to_chat(user, "You load a [cannoneers_balls.singular_name] into [src].") + cannoneers_balls.use(1, transfer = TRUE) + return + + else if(ignition_message) + if(!reagents.has_reagent(/datum/reagent/gunpowder,15)) + to_chat(user, "[src] needs at least 15u of gunpowder to fire!") + return + visible_message(ignition_message) + log_game("Cannon fired by [key_name(user)] in [AREACOORD(src)]") + addtimer(CALLBACK(src, .proc/fire), fire_delay) + charge_ignited = TRUE + return + + else if(istype(W, /obj/item/reagent_containers)) + var/obj/item/reagent_containers/powder_keg = W + if(!(powder_keg.reagent_flags & OPENCONTAINER)) + return ..() + if(istype(powder_keg, /obj/item/reagent_containers/glass/rag)) + return ..() + + if(!powder_keg.reagents.total_volume) + to_chat(user, "[powder_keg] is empty!") + return + else if(!powder_keg.reagents.has_reagent(/datum/reagent/gunpowder, charge_size)) + to_chat(user, "[powder_keg] doesn't have at least 15u of gunpowder to fill [src]!") + return + if(reagents.has_reagent(/datum/reagent/gunpowder, charge_size)) + to_chat(user, "[src] already contains a full charge of powder! It would be unwise to add more.") + return + powder_keg.reagents.trans_id_to(src, /datum/reagent/gunpowder, amount = charge_size) + to_chat(user, "You load [src] with a charge of powder from [powder_keg].") + return + if(W.tool_behaviour == TOOL_WRENCH) + if(default_unfasten_wrench(user, W, time = 2 SECONDS)) + return + ..() + +/obj/item/paper/crumpled/muddy/fluff/cannon_instructions + name = "Mast of Cannon's Past's Cannon Instructions" + desc = "A quickly written note detailing the basics of firing a cannon. Who wrote this?" + info = @{" + +Ye don't know how to load cannon, and ye call yerself a fearsome pirate? I think ye be more alike a space sailor under the space monarchy's flag! Alas, everyone must learn how to blast holes in enemy ships. And thus:
+ +
HOW YE FIRES A CANNON:
+ +BE STEP ONE: LOAD THE LEAD BALL O' YE CHOICE!
+BE STEP TWO: LOAD 15U PIRATE STANDARD CHARGE O' GUNPOWDER!
+BE STEP THREE: LIGHT THE FUSE WITH SOMETHING, AND LET ER' RIP!
+ +
CANNONBALL TYPES:
+ +REGULAR CANNONBALL: A fine choice for killing landlubbers! Will take off any limb it hits, and most certainly down anyone hit in the chest! If they are not directly hit, they will be at least hurt by the shrapnel!
+EXPLOSIVE SHELLBALL: The most elegant in breaching (er killin', if you're good at aimin') tools, ye be packing this shell with many scuppering chemicals! Just make sure to not fire it when ye be close to target!
+MALFUNCTION SHOT: A very gentle "cannonball" dart at first glance, but make no mistake: This is their worst nightmare! Enjoy an easy boarding process while all their machines are broken and all their weapons unloaded from an EMP!
+THE BIGGEST ONE: A shellball, but much bigger. Ye won't be seein' much of these as they were discontinued for sinkin' the firer's ship as often as it sunk the scallywag's ship. Very big boom! If ye have one, ye have been warned! + "} diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 4a859de9351..ab269cd665d 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -578,6 +578,8 @@ new/obj/structure/showcase/machinery/oldpod/used(drop_location()) return ..() +///Pirates + /obj/effect/mob_spawn/human/pirate name = "space pirate sleeper" desc = "A cryo sleeper smelling faintly of rum." @@ -585,7 +587,6 @@ icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" mob_name = "a space pirate" - mob_species = /datum/species/skeleton outfit = /datum/outfit/pirate/space roundstart = FALSE death = FALSE @@ -595,28 +596,82 @@ short_desc = "You are a space pirate." flavour_text = "The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot." assignedrole = "Space Pirate" - var/rank = "Mate" + ///Rank of the pirate on the ship, it's used in generating pirate names! + var/rank = "Deserter" + ///Whether or not it will spawn a fluff structure upon opening. + var/spawn_oldpod = TRUE /obj/effect/mob_spawn/human/pirate/special(mob/living/new_spawn) - new_spawn.fully_replace_character_name(new_spawn.real_name,generate_pirate_name()) + new_spawn.fully_replace_character_name(new_spawn.real_name, generate_pirate_name(new_spawn.gender)) new_spawn.mind.add_antag_datum(/datum/antagonist/pirate) -/obj/effect/mob_spawn/human/pirate/proc/generate_pirate_name() +/obj/effect/mob_spawn/human/pirate/proc/generate_pirate_name(spawn_gender) var/beggings = strings(PIRATE_NAMES_FILE, "beginnings") var/endings = strings(PIRATE_NAMES_FILE, "endings") return "[rank] [pick(beggings)][pick(endings)]" /obj/effect/mob_spawn/human/pirate/Destroy() - new/obj/structure/showcase/machinery/oldpod/used(drop_location()) + if(spawn_oldpod) + new /obj/structure/showcase/machinery/oldpod/used(drop_location()) return ..() /obj/effect/mob_spawn/human/pirate/captain - rank = "Captain" - outfit = /datum/outfit/pirate/space/captain + rank = "Renegade Leader" + outfit = /datum/outfit/pirate/captain /obj/effect/mob_spawn/human/pirate/gunner + rank = "Rogue" + +/obj/effect/mob_spawn/human/pirate/skeleton + name = "pirate remains" + desc = "Some unanimated bones. They feel like they could spring to life any moment!" + random = TRUE + density = FALSE + icon = 'icons/effects/blood.dmi' + icon_state = "remains" + spawn_oldpod = FALSE + mob_name = "a space pirate" + mob_species = /datum/species/skeleton + outfit = /datum/outfit/pirate + rank = "Mate" + +/obj/effect/mob_spawn/human/pirate/skeleton/captain + rank = "Captain" + outfit = /datum/outfit/pirate/captain + +/obj/effect/mob_spawn/human/pirate/skeleton/gunner rank = "Gunner" +/obj/effect/mob_spawn/human/pirate/silverscale + name = "elegant sleeper" + desc = "Cozy. You get the feeling you aren't supposed to be here, though..." + random = TRUE + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper" + mob_name = "a space pirate" + mob_species = /datum/species/lizard/silverscale + outfit = /datum/outfit/pirate/silverscale + rank = "High-born" + +/obj/effect/mob_spawn/human/pirate/silverscale/generate_pirate_name(spawn_gender) + var/first_name + switch(gender) + if(MALE) + first_name = pick(GLOB.lizard_names_male) + if(FEMALE) + first_name = pick(GLOB.lizard_names_female) + else + first_name = pick(GLOB.lizard_names_male + GLOB.lizard_names_female) + + return "[rank] [first_name]-Silverscale" + +/obj/effect/mob_spawn/human/pirate/silverscale/captain + rank = "Old-guard" + outfit = /datum/outfit/pirate/silverscale/captain + +/obj/effect/mob_spawn/human/pirate/silverscale/gunner + rank = "Top-drawer" + //Forgotten syndicate ship /obj/effect/mob_spawn/human/syndicatespace diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 1935e6692e5..1c0a43da63b 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -550,6 +550,8 @@ Moving interrupts return ..() /obj/structure/statue/custom/proc/set_visuals(model_appearance) + if(content_ma) + QDEL_NULL(content_ma) content_ma = new content_ma.appearance = model_appearance content_ma.pixel_x = 0 diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index d2f782bf239..94c7890c890 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -152,6 +152,11 @@ user.remove_language(/datum/language/piratespeak/, TRUE, TRUE, LANGUAGE_HAT) to_chat(user, "You can no longer speak like a pirate.") +/obj/item/clothing/head/pirate/armored + armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) + strip_delay = 40 + equip_delay_other = 20 + /obj/item/clothing/head/pirate/captain name = "pirate captain hat" icon_state = "hgpiratecap" @@ -164,6 +169,11 @@ inhand_icon_state = "bandana" dynamic_hair_suffix = "" +/obj/item/clothing/head/bandana/armored + armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) + strip_delay = 40 + equip_delay_other = 20 + /obj/item/clothing/head/bowler name = "bowler-hat" desc = "Gentleman, elite aboard!" diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 667cfdb54a1..fbc4fe8ac5c 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -121,33 +121,70 @@ uniform = /obj/item/clothing/under/costume/pirate shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/pirate - head = /obj/item/clothing/head/bandana + suit = /obj/item/clothing/suit/pirate/armored + head = /obj/item/clothing/head/bandana/armored + ears = /obj/item/radio/headset/syndicate glasses = /obj/item/clothing/glasses/eyepatch +/datum/outfit/pirate/post_equip(mob/living/carbon/human/equipped) + equipped.faction |= "pirate" + + var/obj/item/radio/outfit_radio = equipped.ears + if(outfit_radio) + outfit_radio.set_frequency(FREQ_SYNDICATE) + outfit_radio.freqlock = TRUE + + var/obj/item/card/id/outfit_id = equipped.wear_id + if(outfit_id) + outfit_id.registered_name = equipped.real_name + outfit_id.update_label() + +/datum/outfit/pirate/captain + name = "Space Pirate Captain" + + head = /obj/item/clothing/head/pirate/armored + /datum/outfit/pirate/space + name = "Space Pirate (EVA)" suit = /obj/item/clothing/suit/space/pirate head = /obj/item/clothing/head/helmet/space/pirate/bandana mask = /obj/item/clothing/mask/breath suit_store = /obj/item/tank/internals/oxygen - ears = /obj/item/radio/headset/syndicate id = /obj/item/card/id /datum/outfit/pirate/space/captain + name = "Space Pirate Captain (EVA)" + head = /obj/item/clothing/head/helmet/space/pirate -/datum/outfit/pirate/post_equip(mob/living/carbon/human/H) - H.faction |= "pirate" +/datum/outfit/pirate/silverscale + name = "Silver Scale Member" - var/obj/item/radio/R = H.ears - if(R) - R.set_frequency(FREQ_SYNDICATE) - R.freqlock = TRUE + head = /obj/item/clothing/head/collectable/tophat + glasses = /obj/item/clothing/glasses/monocle + uniform = /obj/item/clothing/under/suit/charcoal + shoes = /obj/item/clothing/shoes/laceup + suit = /obj/item/clothing/suit/armor/vest/alt + gloves = /obj/item/clothing/gloves/color/black - var/obj/item/card/id/W = H.wear_id - if(W) - W.registered_name = H.real_name - W.update_label() + id = /obj/item/card/id/silver + + ///special fluff for the ID's job + var/scale_assignment = "Silver Scale Member" + +/datum/outfit/pirate/silverscale/post_equip(mob/living/carbon/human/equipped) + ..() + var/obj/item/card/id/outfit_id = equipped.wear_id + if(outfit_id) + outfit_id.assignment = scale_assignment + outfit_id.update_label() + +/datum/outfit/pirate/silverscale/captain + mask = /obj/item/clothing/mask/cigarette/cigar/havana + l_pocket = /obj/item/lighter + head = /obj/item/clothing/head/crown + + scale_assignment = "Silver Scale VIP" /datum/outfit/tunnel_clown name = "Tunnel Clown" diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index be97c251a42..3d4060f7608 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -131,28 +131,23 @@ Contains: //Space pirate outfit /obj/item/clothing/head/helmet/space/pirate - name = "pirate hat" - desc = "Yarr." - icon_state = "pirate" - inhand_icon_state = "pirate" + name = "modified EVA helmet" + desc = "A modified helmet to allow space pirates to intimidate their customers whilst staying safe from the void. Comes with some additional protection." + icon_state = "spacepirate" + inhand_icon_state = "spacepiratehelmet" armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) - flags_inv = HIDEHAIR strip_delay = 40 equip_delay_other = 20 - flags_cover = HEADCOVERSEYES /obj/item/clothing/head/helmet/space/pirate/bandana - name = "pirate bandana" - icon_state = "bandana" - inhand_icon_state = "bandana" + icon_state = "spacebandana" + inhand_icon_state = "spacepiratehelmet" /obj/item/clothing/suit/space/pirate - name = "pirate coat" - desc = "Yarr." - icon_state = "pirate" - inhand_icon_state = "pirate" + name = "modified EVA suit" + desc = "A modified suit to allow space pirates to board shuttles and stations while avoiding the maw of the void. Comes with additional protection, and is lighter to move in." + icon_state = "spacepirate" w_class = WEIGHT_CLASS_NORMAL - flags_inv = 0 allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) slowdown = 0 armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 63f3934a63c..0423b87460c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -54,12 +54,22 @@ allowed = list(/obj/item/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum) species_exception = list(/datum/species/golem) +/obj/item/clothing/suit/pirate/armored + armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) + strip_delay = 40 + equip_delay_other = 20 + /obj/item/clothing/suit/pirate/captain name = "pirate captain coat" desc = "Yarr." icon_state = "hgpirate" inhand_icon_state = "hgpirate" +/obj/item/clothing/suit/pirate/captain/armored + armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, RAD = 30, FIRE = 60, ACID = 75) + strip_delay = 40 + equip_delay_other = 20 + /obj/item/clothing/suit/cyborg_suit name = "cyborg suit" diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 819fdef6193..a5a0a2a753c 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -8,6 +8,10 @@ earliest_start = 30 MINUTES gamemode_blacklist = list("nuclear") +#define PIRATES_ROGUES "Rogues" +#define PIRATES_SILVERSCALES "Silverscales" +#define PIRATES_DUTCHMAN "Flying Dutchman" + /datum/round_event_control/pirates/preRunEvent() if (!SSmapping.empty_space) return EVENT_CANT_RUN @@ -20,11 +24,20 @@ var/payoff = 0 var/payoff_min = 20000 var/paid_off = FALSE + var/pirate_type + var/ship_template var/ship_name = "Space Privateers Association" var/shuttle_spawned = FALSE /datum/round_event/pirates/setup() - ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names")) + pirate_type = pick(PIRATES_ROGUES, PIRATES_SILVERSCALES, PIRATES_DUTCHMAN) + switch(pirate_type) + if(PIRATES_ROGUES) + ship_name = pick(strings(PIRATE_NAMES_FILE, "rogue_names")) + if(PIRATES_SILVERSCALES) + ship_name = pick(strings(PIRATE_NAMES_FILE, "silverscale_names")) + if(PIRATES_DUTCHMAN) + ship_name = "Flying Dutchman" /datum/round_event/pirates/announce(fake) priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", SSstation.announcer.get_rand_report_sound()) @@ -34,9 +47,22 @@ var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) if(D) payoff = max(payoff_min, FLOOR(D.account_balance * 0.80, 1000)) - threat.title = "Business proposition" - threat.content = "This is [ship_name]. Pay up [payoff] credits or you'll walk the plank." - threat.possible_answers = list("We'll pay.","No way.") + switch(pirate_type) + if(PIRATES_ROGUES) + ship_template = /datum/map_template/shuttle/pirate/default + threat.title = "Sector protection offer" + threat.content = "Greetings from the [ship_name]. Your sector needs protection, how about you pay us [payoff] credits, or else you may be left wide open to an attack." + threat.possible_answers = list("We'll pay.","That sounds like a scam.") + if(PIRATES_SILVERSCALES) + ship_template = /datum/map_template/shuttle/pirate/silverscale + threat.title = "Tribute to high society" + threat.content = "This is the [ship_name]. The Silver Scales wish for some tribute from your plebeian lizards. [payoff] credits should do the trick." + threat.possible_answers = list("We'll pay.","Tribute? Really? Go away.") + if(PIRATES_DUTCHMAN) + ship_template = /datum/map_template/shuttle/pirate/dutchman + threat.title = "Business proposition" + threat.content = "Ahoy! This be the [ship_name]. Cough up [payoff] credits or you'll walk the plank." + threat.possible_answers = list("We'll pay.","We will not be extorted.") threat.answer_callback = CALLBACK(src,.proc/answered) SScommunications.send_message(threat,unique = TRUE) @@ -68,7 +94,7 @@ var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew?", ROLE_TRAITOR) shuffle_inplace(candidates) - var/datum/map_template/shuttle/pirate/default/ship = new + var/datum/map_template/shuttle/pirate/ship = new ship_template var/x = rand(TRANSITIONEDGE,world.maxx - TRANSITIONEDGE - ship.width) var/y = rand(TRANSITIONEDGE,world.maxy - TRANSITIONEDGE - ship.height) var/z = SSmapping.empty_space.z_value diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index 5d1f8f3fc30..cba44aa4022 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -8,6 +8,7 @@ pressure_resistance = 2 * ONE_ATMOSPHERE max_integrity = 300 var/open = FALSE + var/can_open = TRUE var/speed_multiplier = 1 //How fast it distills. Defaults to 100% (1.0). Lower is better. /obj/structure/fermenting_barrel/Initialize() @@ -57,15 +58,16 @@ return ..() /obj/structure/fermenting_barrel/attack_hand(mob/user) - open = !open - if(open) - reagents.flags &= ~(DRAINABLE) - reagents.flags |= REFILLABLE | TRANSPARENT - to_chat(user, "You open [src], letting you fill it.") - else - reagents.flags |= DRAINABLE - reagents.flags &= ~(REFILLABLE | TRANSPARENT) - to_chat(user, "You close [src], letting you draw from its tap.") + if(can_open) + open = !open + if(open) + reagents.flags &= ~(DRAINABLE) + reagents.flags |= REFILLABLE | TRANSPARENT + to_chat(user, "You open [src], letting you fill it.") + else + reagents.flags |= DRAINABLE + reagents.flags &= ~(REFILLABLE | TRANSPARENT) + to_chat(user, "You close [src], letting you draw from its tap.") update_icon() /obj/structure/fermenting_barrel/update_icon_state() @@ -80,3 +82,14 @@ reqs = list(/obj/item/stack/sheet/mineral/wood = 8) time = 50 category = CAT_PRIMAL + +//lil gunpowder barrel fer pirates since it's a nice reagent holder + +/obj/structure/fermenting_barrel/gunpowder + name = "gunpowder barrel" + desc = "A large wooden barrel for holding gunpowder. You'll need to take from this to load the cannons." + can_open = FALSE + +/obj/structure/fermenting_barrel/gunpowder/Initialize() + . = ..() + reagents.add_reagent(/datum/reagent/gunpowder, 250) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index d9e6a9efd3b..456610dbf90 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -272,6 +272,13 @@ Key procs /datum/language_holder/lizard/ash selected_language = /datum/language/draconic +/datum/language_holder/lizard/silver + understood_languages = list(/datum/language/uncommon = list(LANGUAGE_ATOM), + /datum/language/draconic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/uncommon = list(LANGUAGE_ATOM), + /datum/language/draconic = list(LANGUAGE_ATOM)) + selected_language = /datum/language/uncommon + /datum/language_holder/monkey understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/monkey = list(LANGUAGE_ATOM)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6b27d34a5cf..16e3d509778 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1301,6 +1301,9 @@ /mob/living/carbon/human/species/lizard/ashwalker race = /datum/species/lizard/ashwalker +/mob/living/carbon/human/species/lizard/silverscale + race = /datum/species/lizard/silverscale + /mob/living/carbon/human/species/ethereal race = /datum/species/ethereal diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index c5ef15d6ad7..49afe452903 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -115,3 +115,38 @@ Lizard subspecies: ASHWALKERS species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE,HAS_FLESH,HAS_BONE) inherent_traits = list(TRAIT_ADVANCEDTOOLUSER,TRAIT_CHUNKYFINGERS,TRAIT_NOBREATH) species_language_holder = /datum/language_holder/lizard/ash + +/* +Lizard subspecies: SILVER SCALED +*/ +/datum/species/lizard/silverscale + name = "Silver Scale" + id = "silverlizard" + limbs_id = "lizard" + inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE + inherent_traits = list(TRAIT_ADVANCEDTOOLUSER,TRAIT_HOLY,TRAIT_NOBREATH,TRAIT_VIRUSIMMUNE,TRAIT_WINE_TASTER) + species_language_holder = /datum/language_holder/lizard/silver + mutanttongue = /obj/item/organ/tongue/lizard/silver + armor = 10 //very light silvery scales soften blows + changesource_flags = MIRROR_BADMIN | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN + ///stored mutcolor for when we turn back off of a silverscale. + var/old_mutcolor + ///stored eye color for when we turn back off of a silverscale. + var/old_eyecolor + +/datum/species/lizard/silverscale/on_species_gain(mob/living/carbon/C, datum/species/old_species) + var/mob/living/carbon/human/new_silverscale = C + old_mutcolor = C.dna.features["mcolor"] + old_eyecolor = new_silverscale.eye_color + new_silverscale.dna.features["mcolor"] = "eeeeee" + new_silverscale.eye_color = "0000a0" + ..() + new_silverscale.add_filter("silver_glint", 2, list("type" = "outline", "color" = "#ffffff63", "size" = 2)) + +/datum/species/lizard/silverscale/on_species_loss(mob/living/carbon/C) + var/mob/living/carbon/human/was_silverscale = C + was_silverscale.dna.features["mcolor"] = old_mutcolor + was_silverscale.eye_color = old_eyecolor + + was_silverscale.remove_filter("silver_glint") + ..() diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 14330405f3a..31cb0e096fc 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -124,12 +124,13 @@ /obj/projectile/beam/pulse/heavy name = "heavy pulse laser" icon_state = "pulse1_bl" - var/life = 20 + projectile_piercing = ALL + var/pierce_hits = 2 /obj/projectile/beam/pulse/heavy/on_hit(atom/target, blocked = FALSE) - life -= 10 - if(life > 0) - . = BULLET_ACT_FORCE_PIERCE + if(pierce_hits <= 0) + projectile_piercing = NONE + pierce_hits -= 1 ..() /obj/projectile/beam/emitter diff --git a/code/modules/projectiles/projectile/bullets/cannon.dm b/code/modules/projectiles/projectile/bullets/cannon.dm new file mode 100644 index 00000000000..cdaf7e32875 --- /dev/null +++ b/code/modules/projectiles/projectile/bullets/cannon.dm @@ -0,0 +1,58 @@ +/obj/projectile/bullet/cannonball + name = "cannonball" + icon_state = "cannonball" + damage = 110 //gets set to 100 before first mob impact. + sharpness = NONE + wound_bonus = 0 + projectile_piercing = ALL + dismemberment = 0 + paralyze = 5 SECONDS + stutter = 10 SECONDS + embedding = null + hitsound = 'sound/effects/meteorimpact.ogg' + hitsound_wall = 'sound/weapons/sonic_jackhammer.ogg' + +/obj/projectile/bullet/cannonball/on_hit(atom/target, blocked = FALSE) + damage -= 10 + if(damage < 40) + projectile_piercing = NONE //so it finishes its rampage + if(blocked == 100) + return ..() + if(isobj(target)) + var/obj/hit_object = target + hit_object.take_damage(80, BRUTE, BULLET, FALSE) + else if(isclosedturf(target)) + damage -= max(damage - 30, 10) //lose extra momentum from busting through a wall + var/turf/closed/hit_turf = target + hit_turf.ScrapeAway() + return ..() + +/obj/projectile/bullet/cannonball/explosive + name = "explosive shell" + color = "#FF0000" + projectile_piercing = NONE + damage = 40 //set to 30 before first mob impact, but they're gonna be gibbed by the explosion + +/obj/projectile/bullet/cannonball/explosive/on_hit(atom/target, blocked = FALSE) + explosion(target, 2, 3, 4) + . = ..() + +/obj/projectile/bullet/cannonball/emp + name = "malfunction shot" + icon_state = "emp_cannonball" + projectile_piercing = NONE + damage = 15 //very low + +/obj/projectile/bullet/cannonball/emp/on_hit(atom/target, blocked = FALSE) + empulse(src, 4, 10) + . = ..() + +/obj/projectile/bullet/cannonball/biggest_one + name = "\"The Biggest One\"" + icon_state = "biggest_one" + damage = 70 //low pierce + +/obj/projectile/bullet/cannonball/biggest_one/on_hit(atom/target, blocked = FALSE) + if(projectile_piercing == NONE) + explosion(target, GLOB.MAX_EX_DEVESTATION_RANGE, GLOB.MAX_EX_HEAVY_RANGE, GLOB.MAX_EX_LIGHT_RANGE, GLOB.MAX_EX_FLASH_RANGE) + . = ..() diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 6630c23c29a..2d27dc073d3 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -98,6 +98,84 @@ message = lizard_eckS.Replace(message, "ECKS$1") speech_args[SPEECH_MESSAGE] = message +/obj/item/organ/tongue/lizard/silver + name = "silver tongue" + desc = "A genetic branch of the high society Silver Scales that gives them their silverizing properties. To them, it is everything, and society traitors have their tongue forcibly revoked. Oddly enough, it itself is just blue." + icon_state = "silvertongue" + actions_types = list(/datum/action/item_action/organ_action/statue) + +/datum/action/item_action/organ_action/statue + name = "Become Statue" + desc = "Become an elegant silver statue. Its durability and yours are directly tied together, so make sure you're careful." + COOLDOWN_DECLARE(ability_cooldown) + + var/obj/structure/statue/custom/statue + +/datum/action/item_action/organ_action/statue/New(Target) + . = ..() + statue = new + RegisterSignal(statue, COMSIG_PARENT_QDELETING, .proc/statue_destroyed) + +/datum/action/item_action/organ_action/statue/Destroy() + UnregisterSignal(statue, COMSIG_PARENT_QDELETING) + QDEL_NULL(statue) + . = ..() + +/datum/action/item_action/organ_action/statue/Trigger() + . = ..() + if(!iscarbon(owner)) + to_chat(owner, "Your body rejects the powers of the tongue!") + return + var/mob/living/carbon/becoming_statue = owner + if(becoming_statue.health < 1) + to_chat(becoming_statue, "You are too weak to become a statue!") + return + if(!COOLDOWN_FINISHED(src, ability_cooldown)) + to_chat(becoming_statue, "You just used the ability, wait a little bit!") + return + var/is_statue = becoming_statue.loc == statue + to_chat(becoming_statue, "You begin to [is_statue ? "break free from the statue" : "make a glorious pose as you become a statue"]!") + if(!do_after(becoming_statue, (is_statue ? 5 : 30), target = get_turf(becoming_statue))) + to_chat(becoming_statue, "Your transformation is interrupted!") + COOLDOWN_START(src, ability_cooldown, 3 SECONDS) + return + COOLDOWN_START(src, ability_cooldown, 10 SECONDS) + + if(statue.name == initial(statue.name)) //statue has not been set up + statue.name = "statue of [becoming_statue.real_name]" + statue.desc = "statue depicting [becoming_statue.real_name]" + statue.set_custom_materials(list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT*5)) + + if(is_statue) + statue.visible_message("[statue] becomes animated!") + becoming_statue.forceMove(get_turf(statue)) + statue.moveToNullspace() + UnregisterSignal(becoming_statue, COMSIG_MOVABLE_MOVED) + else + becoming_statue.visible_message("[becoming_statue] hardens into a silver statue.", "You have become a silver statue!") + statue.set_visuals(becoming_statue.appearance) + statue.forceMove(get_turf(becoming_statue)) + becoming_statue.forceMove(statue) + statue.obj_integrity = becoming_statue.health + RegisterSignal(becoming_statue, COMSIG_MOVABLE_MOVED, .proc/human_left_statue) + + //somehow they used an exploit/teleportation to leave statue, lets clean up +/datum/action/item_action/organ_action/statue/proc/human_left_statue(atom/movable/mover, atom/oldloc, direction) + SIGNAL_HANDLER + + statue.moveToNullspace() + UnregisterSignal(mover, COMSIG_MOVABLE_MOVED) + +/datum/action/item_action/organ_action/statue/proc/statue_destroyed(datum/source) + to_chat(owner, "Your existence as a living creature snaps as your statue form crumbles!") + if(iscarbon(owner)) + //drop everything, just in case + var/mob/living/carbon/dying_carbon = owner + for(var/obj/item/dropped in dying_carbon) + if(!dying_carbon.dropItemToGround(dropped)) + qdel(dropped) + qdel(owner) + /obj/item/organ/tongue/fly name = "proboscis" desc = "A freakish looking meat tube that apparently can take in liquids." diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index f149257ee13..29845d06452 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 44db94d2076..43ae7d396dc 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 6b7d4e83c54..5db947c6021 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index 40d325eaed9..1324bc555af 100644 Binary files a/icons/mob/inhands/clothing_lefthand.dmi and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index c361d7157d3..e4445618832 100644 Binary files a/icons/mob/inhands/clothing_righthand.dmi and b/icons/mob/inhands/clothing_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 5057a666a48..fcc79c88591 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index db8aeaeb66b..240e8929d5c 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6558725d85d..eace8ba5210 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 923235a47dd..7c4c1b780c7 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 6242bbcc2d8..c8bd87329ba 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 5287db56d30..897e18c46f4 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 477b59e461c..1fb26cfbb12 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index b70485d5d57..e356325799f 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index be7380efcf8..2a48819511f 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/sound/weapons/gun/general/cannon.ogg b/sound/weapons/gun/general/cannon.ogg new file mode 100644 index 00000000000..feb30293b6c Binary files /dev/null and b/sound/weapons/gun/general/cannon.ogg differ diff --git a/strings/pirates.json b/strings/pirates.json index 5c90fa5d5dd..ac5a96241f5 100644 --- a/strings/pirates.json +++ b/strings/pirates.json @@ -1,31 +1,101 @@ { - "beginnings":[ - "Star", - "Oort", - "Comet", - "Pulsar", - "Plasma", - "Void", - "Space", - "Solar", - "Laser", - "Ion" - ], - "endings":[ - "keel", - "beard", - "bilge", - "hull", - "hook", - "flag", - "deck", - "salt", - "knot", - "fish", - "helm" - ], - "ship_names":[ - "Space Queen's Revenge", - "Syndicate Privateer" - ] -} \ No newline at end of file + "beginnings":[ + "Comet", + "Ion", + "Laser", + "Oort", + "Plasma", + "Pulsar", + "Solar", + "Space", + "Star", + "Void" + ], + "endings":[ + "beard", + "bilge", + "deck", + "fish", + "flag", + "helm", + "hook", + "hull", + "keel", + "knot", + "salt" + ], + "rogue_names":[ + "Abyssal Titan", + "Ashes to Ashes", + "Asteroid Blaster", + "Asteroid Dragger", + "Bellowing Spacedragon", + "Blargbeam Solar-slider", + "Blood Money", + "Cosmic Gunboat", + "Customer Service", + "Deadman's Switch", + "Diplomacy Disputer", + "Driftbeam", + "Echoing Laughter", + "Electric Boogaloo", + "Fat Leg", + "Heaven's Cavaliers", + "I Am Become Death", + "I Love the Bomb", + "Ickity Pickety Startooth Knuckle Dragger", + "John Ship", + "Lizard Melter", + "Lost in Deep Space", + "Missile Rack", + "Moth Splatterer", + "New Sins for Old", + "One Last Job", + "Paint Asteroids Red", + "Pastafarianism", + "Raging Meteor", + "Reverse Far Leap", + "Scourge of the Milky Way", + "Silicon Policy", + "Space Grease", + "Space Justice", + "Space Pearl", + "Star Scraper", + "War as a Business", + "Xenophobia", + "Space Queen's Revenge", + "Syndicate Privateer" + ], + "silverscale_names":[ + "Antelope's Run", + "Aristocrat's Principle", + "Aristocratic Tributary", + "Bane of Serfs", + "Benevolence of the Serpentine", + "Casus Belli", + "Celestial Lizardhawk", + "Divine Space Wind", + "Empire Sprawl", + "Guiding Hand", + "His Majesty's Chosen", + "Home Away from Home", + "Jewel of Tizira", + "Manifest Destiny", + "Necessary Evil", + "Pearly Gates", + "Pinnacle of the Stratocracy", + "Prince Regent", + "Right to Rule", + "Ruling Body", + "Serpentine Dominion", + "Silver Fox", + "Silver Sterling", + "Silverchain's Sovereignty", + "Spaceflower", + "Status Quo", + "Swords and Sandals", + "Thesaurus Terror", + "Archduke's Silver Ring", + "Silver Steed" + ] +} diff --git a/tgstation.dme b/tgstation.dme index eec81a74bc7..ba9e1bd07bf 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1239,6 +1239,7 @@ #include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\stacks\ammonia_crystals.dm" #include "code\game\objects\items\stacks\bscrystal.dm" +#include "code\game\objects\items\stacks\cannonballs.dm" #include "code\game\objects\items\stacks\cash.dm" #include "code\game\objects\items\stacks\license_plates.dm" #include "code\game\objects\items\stacks\medical.dm" @@ -1291,6 +1292,7 @@ #include "code\game\objects\structures\artstuff.dm" #include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\cannon.dm" #include "code\game\objects\structures\chess.dm" #include "code\game\objects\structures\destructible_structures.dm" #include "code\game\objects\structures\displaycase.dm" @@ -2903,6 +2905,7 @@ #include "code\modules\projectiles\projectile\bullets.dm" #include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\bullets\_incendiary.dm" +#include "code\modules\projectiles\projectile\bullets\cannon.dm" #include "code\modules\projectiles\projectile\bullets\dart_syringe.dm" #include "code\modules\projectiles\projectile\bullets\dnainjector.dm" #include "code\modules\projectiles\projectile\bullets\grenade.dm"