From a765e5b0dbd7f0900c25345949f42f1a9ffa8bb1 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 15 Feb 2021 14:32:35 +0100 Subject: [PATCH] [MIRROR] Pirates are split into three different ghastly crews! (#3395) * Pirates are split into three different ghastly crews! (#56264) Co-authored-by: DeAndre Co-authored-by: itseasytosee <55666666+itseasytosee@ users.noreply.github.com> Co-authored-by: tgstation-server Co-authored-by: Aleksej Komarov Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Pirates are split into three different ghastly crews! Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: DeAndre Co-authored-by: itseasytosee <55666666+itseasytosee@ users.noreply.github.com> Co-authored-by: tgstation-server Co-authored-by: Aleksej Komarov Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> --- _maps/shuttles/pirate_default.dmm | 47 +- _maps/shuttles/pirate_dutchman.dmm | 1562 +++++++++++++++++ _maps/shuttles/pirate_silverscale.dmm | 1425 +++++++++++++++ code/datums/shuttles.dm | 8 + code/game/area/areas/shuttles.dm | 4 + code/game/objects/items/stacks/cannonballs.dm | 60 + code/game/objects/items/weaponry.dm | 14 + code/game/objects/structures/cannon.dm | 103 ++ .../objects/structures/ghost_role_spawners.dm | 69 +- code/game/objects/structures/statues.dm | 2 + code/modules/clothing/head/misc.dm | 10 + code/modules/clothing/outfits/standard.dm | 63 +- .../clothing/spacesuits/miscellaneous.dm | 23 +- code/modules/clothing/suits/miscellaneous.dm | 10 + code/modules/events/pirates.dm | 36 +- code/modules/hydroponics/fermenting_barrel.dm | 31 +- code/modules/language/language_holder.dm | 7 + code/modules/mob/living/carbon/human/human.dm | 3 + .../human/species_types/lizardpeople.dm | 35 + code/modules/projectiles/projectile/beams.dm | 9 +- .../projectiles/projectile/bullets/cannon.dm | 58 + code/modules/surgery/organs/tongue.dm | 78 + icons/mob/clothing/back.dmi | Bin 132848 -> 133102 bytes icons/mob/clothing/head.dmi | Bin 227864 -> 230160 bytes icons/mob/clothing/suit.dmi | Bin 422626 -> 426515 bytes icons/mob/inhands/clothing_lefthand.dmi | Bin 75819 -> 76318 bytes icons/mob/inhands/clothing_righthand.dmi | Bin 74456 -> 75185 bytes icons/mob/inhands/weapons/swords_lefthand.dmi | Bin 23818 -> 23983 bytes .../mob/inhands/weapons/swords_righthand.dmi | Bin 26889 -> 26967 bytes icons/obj/clothing/hats.dmi | Bin 112381 -> 112353 bytes icons/obj/clothing/suits.dmi | Bin 151469 -> 150146 bytes icons/obj/items_and_weapons.dmi | Bin 110754 -> 111007 bytes icons/obj/projectiles.dmi | Bin 129417 -> 129844 bytes icons/obj/stack_objects.dmi | Bin 46643 -> 48275 bytes icons/obj/structures.dmi | Bin 168555 -> 171703 bytes icons/obj/surgery.dmi | Bin 40956 -> 42659 bytes sound/weapons/gun/general/cannon.ogg | Bin 0 -> 16057 bytes strings/pirates.json | 130 +- tgstation.dme | 3 + 39 files changed, 3701 insertions(+), 89 deletions(-) create mode 100644 _maps/shuttles/pirate_dutchman.dmm create mode 100644 _maps/shuttles/pirate_silverscale.dmm create mode 100644 code/game/objects/items/stacks/cannonballs.dm create mode 100644 code/game/objects/structures/cannon.dm create mode 100644 code/modules/projectiles/projectile/bullets/cannon.dm create mode 100644 sound/weapons/gun/general/cannon.ogg 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 f149257ee135f23657c6285fe6a1c7eded0d72ae..29845d064523cb912a478f24d77be16fe52831d4 100644 GIT binary patch delta 5381 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 H@8$mhF_R}E delta 5132 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