Nova ports batch 1 (#26273)

* Map votes are no longer random (#43)

* Disables the annoying fear of Santa from the claustrophobia quirk (#51)

* Removes the job locks from all armbands except the sec armbands, and reflavors all armbands to not directly state this person is a member of x department (#62)

* [MODULAR] Removes Arbitrary Loadout Restrictions (#58)

* Removes an AM template from NorthStar as well as the prison curtain logic (#72)

* Bilingual now let's you take common (if you don't already have it) (#78)

* Period Era Re-Enactment: Basic autopunctuation (#84)

* [Semi-modular] Gives Xeno-hybrids some xeno-organs in trade for high temperature weakness (#91)

* The Thrill of the Hunt: Hemophage blood digestion changes (#93)

* Removes the ability for shocks to stop your heart (#116)

* Ghost cafe turf fixes (#161)

* ungatekeeps headshots (#170)

* Lo(v)re Wins: Mothic Language return (#186)

* Add Bone Greaves As Foot Clothing For Tribals (#197)

* Saving Private Oversized: Quirk balancing adjustments (#199)

* Over(sized) and Under: Oversized combat adjustments (#202)

* Shuttles no longer bolt their doors on transit (#203)

* Increases PAI description and OOC notes limit (#207)

* Makes headset sounds not insane (WHY DO THEY HAVE A RANGE OF 17 TI:LES?) (#215)

* Add Bone D6 For Tribals. (#217)

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Name <w4rd3nn@gmail.com>
Co-authored-by: Ephemeralis <Ephemeralis@users.noreply.github.com>
Co-authored-by: lila <sheepwiththemask@gmail.com>
Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Sable <102194057+Thlumyn@users.noreply.github.com>
Co-authored-by: goobliner <141452834+goobliner@users.noreply.github.com>
Co-authored-by: Lutowski <136726218+Lutowski@users.noreply.github.com>
Co-authored-by: FearfulFurnishing <139661819+FearfulFurnishing@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
This commit is contained in:
Useroth
2024-01-29 20:13:27 +00:00
committed by GitHub
co-authored by Bloop Name Ephemeralis lila nikothedude Sable goobliner Lutowski FearfulFurnishing SomeRandomOwl Paxilmaniac
parent f34a190878
commit 22bcdbf5f9
52 changed files with 495 additions and 384 deletions
+64 -196
View File
@@ -310,12 +310,7 @@
/turf/open/indestructible/hotelwood,
/area/centcom/holding/cafe)
"ahk" = (
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"ahs" = (
/obj/structure/flora/bush/leavy/style_2,
@@ -363,7 +358,7 @@
/obj/machinery/door/airlock{
id_tag = "CCD2"
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"ahQ" = (
/obj/structure/flora/bush/sparsegrass,
@@ -475,12 +470,7 @@
color = "#B22222";
name = "Curtain"
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"ajK" = (
/obj/structure/flora/rock/pile{
@@ -592,12 +582,7 @@
"alk" = (
/obj/item/bedsheet/dorms_double,
/obj/structure/bed/double,
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"alm" = (
/obj/effect/turf_decal/tile/blue{
@@ -775,9 +760,6 @@
},
/turf/open/floor/iron/freezer,
/area/centcom/holding/cafe)
"amF" = (
/turf/open/floor/carpet/royalblack,
/area/centcom/holding/cafe)
"amG" = (
/obj/structure/chair/sofa/corp/left,
/turf/open/floor/carpet/purple,
@@ -1115,7 +1097,7 @@
},
/obj/structure/bed/double/pod,
/obj/item/bedsheet/dorms_double,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aqy" = (
/obj/machinery/vending/wardrobe/cargo_wardrobe/ghost_cafe,
@@ -1221,12 +1203,7 @@
"asz" = (
/obj/structure/table/wood/fancy/blue,
/obj/machinery/light/directional/north,
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"asC" = (
/obj/effect/turf_decal/tile/blue{
@@ -1645,11 +1622,7 @@
light_range = 10;
nightshift_light_power = 10
},
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"axF" = (
/obj/structure/bed/dogbed,
@@ -2064,12 +2037,7 @@
/obj/structure/mirror{
pixel_y = 32
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aAY" = (
/obj/effect/turf_decal/tile/blue{
@@ -2150,7 +2118,7 @@
/obj/structure/chair/sofa/corp/right{
dir = 4
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aBH" = (
/obj/effect/turf_decal/tile/neutral{
@@ -2173,7 +2141,7 @@
/area/centcom/holding/cafe)
"aBT" = (
/obj/structure/table/wood,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aBW" = (
/obj/machinery/hydroponics/constructable,
@@ -3260,11 +3228,7 @@
light_range = 10;
nightshift_light_power = 10
},
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafedorms)
"aOZ" = (
/obj/machinery/light/directional/north,
@@ -3286,12 +3250,7 @@
/turf/open/indestructible/hotelwood,
/area/centcom/holding/cafe)
"aPx" = (
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aPC" = (
/obj/structure/railing{
@@ -3434,12 +3393,7 @@
/obj/structure/fireplace{
dir = 4
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aQR" = (
/obj/effect/turf_decal/stripes/line{
@@ -3540,11 +3494,7 @@
/obj/structure/toilet{
pixel_y = 14
},
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"aRC" = (
/obj/machinery/light/directional/north,
@@ -3824,7 +3774,7 @@
/obj/structure/chair/sofa/corp/left{
dir = 4
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"aUw" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3926,11 +3876,7 @@
/area/centcom/holding/cafepark)
"aVC" = (
/obj/machinery/shower/directional/west,
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafedorms)
"aVI" = (
/obj/structure/fake_stairs/directional/east,
@@ -4820,7 +4766,7 @@
/obj/structure/chair/sofa/corp{
dir = 4
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"bQZ" = (
/obj/structure/reagent_dispensers/plumbed,
@@ -4858,12 +4804,7 @@
/obj/structure/fireplace{
dir = 8
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"bTR" = (
/obj/structure/table/reinforced,
@@ -4979,7 +4920,7 @@
/area/centcom/interlink)
"bZt" = (
/obj/structure/chair/sofa/corp/corner,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"cal" = (
/obj/structure/railing{
@@ -5094,7 +5035,7 @@
/obj/structure/chair/sofa/corp/left{
dir = 8
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"cmh" = (
/obj/effect/turf_decal/siding{
@@ -5351,7 +5292,7 @@
/obj/structure/sign/painting/library_secure{
pixel_x = 32
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"cHY" = (
/obj/effect/turf_decal/weather/dirt{
@@ -5584,11 +5525,7 @@
/obj/structure/toilet{
pixel_y = 14
},
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"dbZ" = (
/obj/effect/turf_decal/weather/dirt{
@@ -5782,7 +5719,7 @@
/obj/structure/chair/sofa/corp/corner{
dir = 4
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"dzn" = (
/obj/structure/fence{
@@ -5827,7 +5764,7 @@
/area/centcom/interlink)
"dDF" = (
/obj/structure/chair/sofa/corp,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"dFj" = (
/obj/machinery/door/airlock/medical/glass{
@@ -6067,7 +6004,7 @@
id_tag = "CCD1"
},
/obj/structure/fans/tiny/invisible,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"dXe" = (
/obj/structure/flora/grass/jungle/b/style_2,
@@ -7009,7 +6946,7 @@
/area/centcom/interlink)
"fPs" = (
/obj/item/kirbyplants/random,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"fQt" = (
/mob/living/basic/crab{
@@ -7647,12 +7584,7 @@
/obj/structure/dresser{
pixel_y = 7
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"hbE" = (
/obj/structure/fence/interlink{
@@ -8456,7 +8388,7 @@
/area/centcom/interlink)
"ioZ" = (
/obj/machinery/light/directional/east,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"ipc" = (
/obj/structure/sign/poster/random/directional/east,
@@ -8598,11 +8530,7 @@
dir = 1
},
/obj/effect/turf_decal/siding/thinplating_new/end,
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"iCz" = (
/obj/structure/fans/tiny/invisible,
@@ -9346,7 +9274,7 @@
"jYf" = (
/obj/structure/table/wood,
/obj/item/paper_bin,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"jYy" = (
/obj/effect/turf_decal/sand,
@@ -11267,12 +11195,7 @@
/obj/structure/chair/sofa/corp/left{
dir = 8
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"nii" = (
/obj/structure/fireplace,
@@ -11429,12 +11352,7 @@
/obj/structure/chair/sofa/corp/right{
dir = 8
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"npe" = (
/obj/effect/turf_decal/tile/dark_blue/opposingcorners,
@@ -12391,7 +12309,7 @@
dir = 4
},
/obj/machinery/light/directional/west,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"pao" = (
/obj/effect/turf_decal/siding/thinplating_new/dark{
@@ -12412,7 +12330,7 @@
specialfunctions = 4
},
/obj/item/kirbyplants/random,
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"pbz" = (
/obj/effect/turf_decal/tile/blue{
@@ -13017,12 +12935,7 @@
/obj/structure/chair/sofa/corp/right{
dir = 4
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"pTO" = (
/obj/structure/table/reinforced,
@@ -13192,12 +13105,7 @@
/area/centcom/interlink)
"qfy" = (
/obj/structure/table/wood/fancy/blue,
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"qgh" = (
/obj/structure/stone_tile/surrounding,
@@ -13509,8 +13417,8 @@
/turf/open/floor/iron/white,
/area/centcom/interlink)
"qGA" = (
/obj/structure/closet/secure_closet/brig,
/obj/effect/turf_decal/tile/red/opposingcorners,
/obj/machinery/vending/wardrobe/sec_wardrobe,
/turf/open/floor/iron/dark,
/area/centcom/holding/cafe)
"qGW" = (
@@ -13522,12 +13430,7 @@
/obj/item/stack/sheet/mineral/wood/fifty,
/obj/item/stack/sheet/mineral/wood/fifty,
/obj/item/lighter,
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"qHJ" = (
/obj/structure/extinguisher_cabinet/directional/north,
@@ -13629,7 +13532,7 @@
/obj/structure/chair/sofa/corp{
dir = 8
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"qQl" = (
/obj/machinery/light/directional/south,
@@ -13711,11 +13614,7 @@
/area/centcom/holding/cafepark)
"qWc" = (
/obj/machinery/shower/directional/west,
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"qWv" = (
/obj/effect/turf_decal/tile/blue{
@@ -14589,12 +14488,7 @@
},
/obj/structure/bed/double,
/obj/item/bedsheet/dorms_double,
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"ssn" = (
/obj/machinery/status_display/shuttle{
@@ -14665,11 +14559,7 @@
"sys" = (
/obj/machinery/shower/directional/west,
/obj/structure/sink/directional/south,
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"sAC" = (
/obj/effect/turf_decal/box,
@@ -15164,11 +15054,7 @@
/turf/open/floor/fakebasalt,
/area/centcom/holding/cafepark)
"tky" = (
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafe)
"tlu" = (
/obj/effect/turf_decal/siding/wood{
@@ -16262,11 +16148,7 @@
/obj/structure/mirror{
pixel_y = 32
},
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafedorms)
"vui" = (
/obj/effect/turf_decal/siding/wood{
@@ -16589,12 +16471,7 @@
/obj/structure/chair/sofa/corp/left{
dir = 4
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafepark)
"vZv" = (
/obj/structure/window/reinforced/spawner/directional/south,
@@ -16896,11 +16773,7 @@
/area/centcom/holding/cafepark)
"wBX" = (
/obj/structure/sink/directional/south,
/turf/open/indestructible/hoteltile{
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
},
/turf/open/indestructible/bathroom,
/area/centcom/holding/cafedorms)
"wCl" = (
/obj/item/kirbyplants/random,
@@ -17241,7 +17114,7 @@
light_power = 10;
name = "Super Light"
},
/turf/open/floor/carpet/royalblack,
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"xgz" = (
/obj/effect/turf_decal/siding/wood{
@@ -17634,12 +17507,7 @@
/obj/structure/sign/painting/library_secure{
pixel_y = -32
},
/turf/open/indestructible/hotelwood{
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
},
/turf/open/indestructible/carpet,
/area/centcom/holding/cafe)
"xRx" = (
/obj/item/stack/sheet/mineral/wood/fifty,
@@ -56583,9 +56451,9 @@ aFP
ayI
ayI
dWE
amF
amF
amF
aPx
aPx
aPx
axD
tky
aqf
@@ -56841,7 +56709,7 @@ ayI
ayI
aqf
paJ
amF
aPx
cGX
aqf
qWc
@@ -63522,7 +63390,7 @@ dyU
bQR
paj
fPs
amF
aPx
aqf
aFP
ayI
@@ -63778,8 +63646,8 @@ aPZ
dDF
jYf
xga
amF
amF
aPx
aPx
aqf
aFP
ayI
@@ -64035,8 +63903,8 @@ aqf
bZt
qPy
clF
amF
amF
aPx
aPx
ahP
aFP
ayI
@@ -64291,9 +64159,9 @@ jeI
aqf
aqf
aqf
amF
amF
amF
aPx
aPx
aPx
aqf
kWr
ayI
@@ -64548,9 +64416,9 @@ jeI
aqf
dbn
axD
amF
amF
amF
aPx
aPx
aPx
aqf
lwv
lwv
@@ -64805,7 +64673,7 @@ jeI
aqf
sys
aqf
amF
aPx
ioZ
aqw
aqf
@@ -352,14 +352,6 @@ required_map = "north_star.dmm"
coordinates = [121, 109, 4]
trait_name = "Station"
# Northstar Prison
[templates.northstar_prison]
map_files = ["northstar_prison.dmm"]
directory = "_maps/skyrat/automapper/templates/northstar/"
required_map = "north_star.dmm"
coordinates = [149, 109, 4]
trait_name = "Station"
# Northstar NTR Office
[templates.northstar_ntrep_office]
map_files = ["northstar_ntrep_office.dmm"]
@@ -1,23 +0,0 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/obj/machinery/cryopod/prison/directional/west{
quiet = 1
},
/turf/template_noop,
/area/template_noop)
"r" = (
/obj/machinery/cryopod/prison/directional/north,
/turf/template_noop,
/area/template_noop)
"P" = (
/turf/template_noop,
/area/template_noop)
(1,1,1) = {"
r
P
P
P
P
a
"}
+1
View File
@@ -26,6 +26,7 @@
// Damage modifiers
#define OVERSIZED_HARM_DAMAGE_BONUS 5 /// Those with the oversized trait do 5 more damage.
#define OVERSIZED_KICK_EFFECTIVENESS_BONUS 5 /// Increased unarmed_effectiveness/stun threshold on oversized kicks.
#define FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, color="#04080F")
@@ -32,6 +32,9 @@ GLOBAL_LIST_INIT_TYPED(quirk_blacklist, /list/datum/quirk, list(
list(/datum/quirk/spacer_born, /datum/quirk/oversized),
list(/datum/quirk/feline_aspect, /datum/quirk/item_quirk/canine, /datum/quirk/item_quirk/avian),
list(/datum/quirk/all_nighter, /datum/quirk/heavy_sleeper),
list(/datum/quirk/light_drinker, /datum/quirk/drunkhealing),
list(/datum/quirk/oversized, /datum/quirk/freerunning),
list(/datum/quirk/oversized, /datum/quirk/item_quirk/settler),
//SKYRAT EDIT ADDITION END
))
@@ -205,3 +205,12 @@
/obj/item/stack/cable_coil = 2,
)
category = CAT_EQUIPMENT
/datum/crafting_recipe/bonedice
name = "Bone Die"
result = /obj/item/dice/d6/bone
time = 5 SECONDS
reqs = list(
/obj/item/stack/sheet/bone = 1,
)
category = CAT_EQUIPMENT
@@ -1,6 +1,6 @@
/datum/quirk/claustrophobia
name = "Claustrophobia"
desc = "You are terrified of small spaces and certain jolly figures. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe."
desc = "You are terrified of small spaces. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe." // SKYRAT EDIT CHANGE - ORIGINAL: desc = "You are terrified of small spaces and certain jolly figures. If you are placed inside any container, locker, or machinery, a panic attack sets in and you struggle to breathe."
icon = FA_ICON_BOX_OPEN
value = -4
medical_record_text = "Patient demonstrates a fear of tight spaces."
@@ -20,10 +20,12 @@
var/nick_spotted = FALSE
/* SKYRAT EDIT REMOVAL START
for(var/mob/living/carbon/human/possible_claus in view(5, quirk_holder))
if(evaluate_jolly_levels(possible_claus))
nick_spotted = TRUE
break
SKYRAT EDIT REMOVAL END */
if(!nick_spotted && isturf(quirk_holder.loc))
quirk_holder.clear_mood_event("claustrophobia")
+6
View File
@@ -107,6 +107,12 @@
icon_state = "de6"
microwave_riggable = FALSE // You can't melt wood in the microwave
/obj/item/dice/d6/bone
name = "bone die"
desc = "A die carved from a creature's bone. Dried blood marks the indented pits."
icon_state = "db6"
microwave_riggable = FALSE // You can't melt bone in the microwave
/obj/item/dice/d6/space
name = "space cube"
desc = "A die with six sides. 6 TIMES 255 TIMES 255 TILE TOTAL EXISTENCE, SQUARE YOUR MIND OF EDUCATED STUPID: 2 DOES NOT EXIST."
@@ -769,7 +769,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
// Sinew slapcrafting will mostly-sinew recipes, and bones will have mostly-bones recipes.
var/static/list/slapcraft_recipe_list = list(\
/datum/crafting_recipe/bonedagger, /datum/crafting_recipe/bonespear, /datum/crafting_recipe/boneaxe,\
/datum/crafting_recipe/bonearmor, /datum/crafting_recipe/skullhelm, /datum/crafting_recipe/bracers
/datum/crafting_recipe/bonearmor, /datum/crafting_recipe/skullhelm, /datum/crafting_recipe/bracers,
/datum/crafting_recipe/ash_recipe/bone_greaves,
)
AddComponent(
@@ -20,6 +20,7 @@
//we add uncommon as it's foreigner-only.
var/datum/language/uncommon/uncommon_language = /datum/language/uncommon
values += initial(uncommon_language.name)
values += /datum/language/common::name // SKYRAT EDIT ADDITION START - Let's you select common
for(var/datum/language/language_type as anything in GLOB.uncommon_roundstart_languages)
if(initial(language_type.name) in values)
@@ -339,7 +339,11 @@ Doesn't work on other aliens/AI.*/
span_notice("[owner] vomits up a thick purple substance and begins to shape it."),
span_notice("You shape a [choice] out of resin."),
)
//SKYRAT EDIT START - Roundstart xenohybrid organs
if(build_duration && !do_after(owner, build_duration))
owner.balloon_alert(owner, "interrupted!")
return
//SKYRAT EDIT END
new choice_path(owner.loc)
return TRUE
@@ -392,14 +392,6 @@
//Don't go further if the shock was blocked/too weak.
if(!.)
return
//SKYRAT EDIT BEGIN: MAKES POWERFUL SHOCKS HAVE A CHANCE TO STOP YOUR HEART. DANGER
if(can_heartattack() && !(flags & SHOCK_ILLUSION) && shock_damage >= 70)
if(shock_damage * siemens_coeff >= 1 && prob(30))//Higher chance to disrupt the pacemaker cells
var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART)
heart.Stop()
visible_message("<span class='danger'>[src.name] briefly twitches; before falling limp - their breathing irratic and chest spasming violently!</span>", \
"<span class='danger'>You feel your heart thump eratically; before ceasing to beat, a violent twitch overcoming your form!</span>", ignored_mobs=src)
//SKYRAT EDIT END
if(!(flags & SHOCK_ILLUSION))
if(shock_damage * siemens_coeff >= 5)
force_say()
+4
View File
@@ -222,6 +222,10 @@ GLOBAL_LIST_INIT(message_modes_stat_limits, list(
//Get which verb is prefixed to the message before radio but after most modifications
message_mods[SAY_MOD_VERB] = say_mod(message, message_mods)
// SKYRAT EDIT ADDITION START: autopunctuation
//ensure EOL punctuation exists and that word-bounded 'i' are capitalized before we do anything else
message = autopunct_bare(message)
// SKYRAT EDIT ADDITION END
//This is before anything that sends say a radio message, and after all important message type modifications, so you can scumb in alien chat or something
if(saymode && !saymode.handle_message(src, message, language))
return
-1
View File
@@ -553,7 +553,6 @@
color_override = "orange",
)
INVOKE_ASYNC(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, poll_hearts))
bolt_all_doors() //SKYRAT EDIT ADDITION
SSmapping.mapvote() //If no map vote has been run yet, start one.
if(!is_reserved_level(z))
+2 -2
View File
@@ -160,7 +160,7 @@
speaker.forceMove(run_loc_floor_bottom_left)
listener.forceMove(locate((run_loc_floor_bottom_left.x + distance), run_loc_floor_bottom_left.y, run_loc_floor_bottom_left.z))
var/pangram_quote = "The quick brown fox jumps over the lazy dog"
var/pangram_quote = "The quick brown fox jumps over the lazy dog." // SKYRAT EDIT CHANGE - account for autopunct in living_say.dm - ORIGINAL: var/pangram_quote = "The quick brown fox jumps over the lazy dog"
// speaking
speaker.say(pangram_quote)
@@ -201,7 +201,7 @@
listener_radio.set_frequency(FREQ_CENTCOM)
listener_radio.independent = TRUE
var/pangram_quote = "The quick brown fox jumps over the lazy dog"
var/pangram_quote = "The quick brown fox jumps over the lazy dog." // SKYRAT EDIT CHANGE - account for autopunct in living_say.dm - ORIGINAL: var/pangram_quote = "The quick brown fox jumps over the lazy dog"
speaker.say(pangram_quote)
TEST_ASSERT(handle_speech_result, "Handle speech signal was not fired (radio test)")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

@@ -0,0 +1,5 @@
//Any EOL char that isn't appropriate punctuation
GLOBAL_DATUM_INIT(has_no_eol_punctuation, /regex, regex(@"\w$"))
//All non-capitalized 'i' surrounded with whitespace (aka, 'hello >i< am a cat')
GLOBAL_DATUM_INIT(noncapital_i, /regex, regex(@"\b[i]\b", "g"))
@@ -0,0 +1,8 @@
/// Ensures sentences end in appropriate punctuation (a period if none exist)
/// and that all whitespace-bounded 'i' characters are capitalized.
/proc/autopunct_bare(input_text)
if (findtext(input_text, GLOB.has_no_eol_punctuation))
input_text += "."
input_text = replacetext(input_text, GLOB.noncapital_i, "I")
return input_text
@@ -0,0 +1,3 @@
//Map votes shouldn't be using weighted random
/datum/vote/map_vote
winner_method = VOTE_WINNER_METHOD_SIMPLE
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

@@ -15,6 +15,22 @@
bomb = 20
bio = 10
/datum/armor/ash_plates
melee = 15
bullet = 25
laser = 15
energy = 15
bomb = 20
bio = 10
/datum/armor/bone_greaves
melee = 15
bullet = 25
laser = 15
energy = 15
bomb = 20
bio = 50
/obj/item/clothing/head/ash_headdress
name = "ash headdress"
desc = "A headdress that shows the dominance of the walkers of ash."
@@ -102,3 +118,22 @@
name = "Decorated Ash Combat Plates"
result = /obj/item/clothing/under/costume/gladiator/ash_walker/ash_plates/decorated
category = CAT_CLOTHING
/obj/item/clothing/shoes/bone_greaves
name = "bone greaves"
desc = "For when you're expecting to step on spiky things. Offers modest protection to your feet."
icon = 'modular_skyrat/modules/ashwalkers/icons/shoes.dmi'
worn_icon = 'modular_skyrat/modules/ashwalkers/icons/feet.dmi'
worn_icon_digi = 'modular_skyrat/modules/ashwalkers/icons/feet_digi.dmi'
icon_state = "bone_greaves"
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION
armor_type = /datum/armor/bone_greaves
/datum/crafting_recipe/ash_recipe/bone_greaves
name = "Bone Greaves"
result = /obj/item/clothing/shoes/bone_greaves
reqs = list(
/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1,
)
category = CAT_CLOTHING
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -102,11 +102,6 @@
desired_atom = /obj/effect/landmark/start/customs_agent
target_areas = list(/area/station/security/checkpoint/supply, /area/station/cargo/storage)
/datum/area_spawn_over/prison_curtains
desired_atom = /obj/structure/curtain/cloth/prison
over_atoms = list(/obj/structure/window/reinforced/fulltile, /obj/machinery/door/airlock/security/glass, /obj/machinery/door/airlock/public/glass)
target_areas = list(/area/station/security/prison/safe)
/datum/area_spawn/corrections_officer_landmark
desired_atom = /obj/effect/landmark/start/corrections_officer
target_areas = list(/area/station/security/brig, /area/station/security/prison/)
@@ -6,3 +6,27 @@
/obj/item/clothing/accessory/skilt/armourless
armor_type = /datum/armor/none
/obj/item/clothing/accessory/armband/cargo/nonsec
name = "brown armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is brown."
/obj/item/clothing/accessory/armband/engine/nonsec
name = "orange armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is orange with a reflective strip!"
/obj/item/clothing/accessory/armband/science/nonsec
name = "purple armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is purple."
/obj/item/clothing/accessory/armband/hydro/nonsec
name = "green-blue armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is green and blue."
/obj/item/clothing/accessory/armband/med/nonsec
name = "white armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is white."
/obj/item/clothing/accessory/armband/medblue/nonsec
name = "white-blue armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is white and blue."
@@ -24,13 +24,22 @@
//Cyberpunk PI Costume - Sprites from Eris
/obj/item/clothing/head/fedora/det_hat/cybergoggles //Subset of detective fedora so that detectives dont have to sacrifice candycorns for style
name = "type-34C semi-enclosed headwear"
desc = "Civilian model of a popular helmet used by certain law enforcement agencies. It does not have any armor plating, but has a neo-laminated fiber lining."
name = "type-34P semi-enclosed headwear"
desc = "A popular helmet used by certain law enforcement agencies. It has minor armor plating and a neo-laminated fiber lining."
icon = 'modular_skyrat/master_files/icons/obj/clothing/hats.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/head.dmi'
icon_state = "cyberpunkgoggle"
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
/obj/item/clothing/head/fedora/det_hat/cybergoggles/civilian //Actually civilian with no armor for drip purposes only
name = "type-34C semi-enclosed headwear"
desc = "The civilian model of a popular helmet used by certain law enforcement agencies. It has no armor plating."
icon = 'modular_skyrat/master_files/icons/obj/clothing/hats.dmi'
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/head.dmi'
icon_state = "cyberpunkgoggle"
armor_type = /datum/armor/none
supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
/obj/item/clothing/head/hats/intern/developer
name = "intern beancap"
@@ -161,9 +161,14 @@
/datum/job/proc/has_required_languages(datum/preferences/pref)
if(!required_languages)
return TRUE
for(var/lang in required_languages)
// if we have a bilingual quirk, check that as well
var/bilingual_pref
if(/datum/quirk/bilingual::name in pref.all_quirks)
bilingual_pref = pref.read_preference(/datum/preference/choiced/language)
for(var/datum/language/lang as anything in required_languages)
//Doesnt have language, or the required "level" is too low (understood, while needing spoken)
if(!pref.languages[lang] || pref.languages[lang] < required_languages[lang])
if((!pref.languages[lang] || pref.languages[lang] < required_languages[lang]) && bilingual_pref != lang.name) // SKYRAT EDIT - check the bilingual quirk
return FALSE
return TRUE
@@ -90,4 +90,3 @@
/datum/language/common = list(LANGUAGE_ATOM),
/datum/language/canilunzt = list(LANGUAGE_ATOM)
)
@@ -1,14 +1,21 @@
/datum/language/moffic
name = "Chitin-Click"
desc = "A popular non-Human language that finds extensive use by various types of anthropomorphic invertebrates the likes of Mothpeople and other types of insects. It consists of complex flutters, chittering, antenna movements, and sparse guttural syllables. In modern Sol standard writing, some of its sounds have been compared to Ancient Swedish (Dating back to the Human 19th century)."
/datum/language/chitinclick
name = "Chitinclick"
desc = "A popular non-Human language that finds extensive use by various types of anthropomorphic invertebrates. It consists of complex flutters, chittering, antenna movements, and sparse guttural syllables."
key = "C"
space_chance = 30
space_chance = 40
//References some replaced languages.
syllables = list(
// Original
"chi", "cha", "at", "mo", "kli", "ac", "f", "cli", "fz", "fs",
"a", "ak", "ae", "ai", "az", "ba", "bz", "bu", "bh", "br", "bi",
"c", "ca", "ci", "ch", "chk", "cr", "cl", "ce", "cu", "cli", "cla",
"du", "dr", "dri", "de", "do", "dza", "dk", "g", "ga", "gr", "dz",
"gi", "gchk", "i", "ii", "ik", "it", "il", "ie", "iz", "ir", "io",
"pi", "pz", "pe", "po", "phk", "k", "kz", "kl", "ka", "kli", "kh",
"kch", "vh", "vr", "vz", "veh", "mr", "mz", "mi", "ma", "mhk", "zz",
"ze", "zu", "zo", "za", "nz", "zi", "fz", "fr", "f", "fi", "click",
"chit", "rr", "ru", "ra", "rzz", "ri", "re",
// Buzzwords
"zz", "buzz", "ZZ",
// Moffic
"ø", "öh", "ää", "år", "käyt", "dår", "ån", "næ", "møt", "om", "när",
)
icon_state = "chitinclick"
icon = 'modular_skyrat/master_files/icons/misc/language.dmi'
@@ -0,0 +1,20 @@
/datum/language/moffic
name = "Mothic"
desc = "Spoken colloquially by the Mothfolk of Va Lumla, the early iteration of Mothic emerged when Fueljacks relied on their receptors for simple, one-worded pheromones to communicate, and navigate the often fatal maintenance tunnels sprawled throughout the fleet. \
The moths developed gesticulation through antennas and wings to convey deeper intent, with mandibles providing emotional context through clicks and trills. \
After First Contact, human speakers managed to achieve a similar effect from clicking their tongue to roof, and steer the tone with the width of their mouth while using their hands in place of antennas. \
It is informally spoken, deploying many slangs and shorthands from Common. Has phonetic resemblance to Italian."
space_chance = 40
// Syllables derived from Italian.
syllables = list(
"a", "an", "ar", "ave", "avo", "are", "ale", "be", "buo", "ca", "cie", "cr",
"ch", "che", "co", "cco", "ce", "cu", "ci", "ccia", "ccio", "da", "di", "do",
"e", "é", "ere", "ette", "fa", "fu", "fo", "gi", "gio", "gn", "go", "gu", "ni",
"gri", "ia", "iei", "ile", "imo", "l", "la", "lla", "le", "li", "lia", "lio",
"lo", "lu", "me", "mi", "mo", "mos", "na", "ne", "no", "nuo", "o", "ò", "oi",
"or", "os", "otto", "qua", "que", "qui", "pi", "po", "rò", "sa", "se", "si",
"sto", "ua", "ue", "ui", "un", "ta", "tra", "te", "tri", "tre", "tro", "to",
"ti", "va", "vi", "ve", "vo", "veni", "ver", "tu", "dru", "bi", "en", "je",
"dici", "tru", "zo", "ze", "ul", "bo", "ba", "gh", "ino", "etta", "i", "in",
"chh", "rio", "ie", "bar", "bas", "die", "ter", "pa", "pe", "pu", "fe", "fi",
)
@@ -1,8 +1,7 @@
/// Maximum an Hemophage will drain, they will drain less if they hit their cap.
#define HEMOPHAGE_DRAIN_AMOUNT 50
/// The multiplier for blood received by Hemophages out of humans with ckeys.
#define BLOOD_DRAIN_MULTIPLIER_CKEY 1.5
#define BLOOD_DRAIN_MULTIPLIER_CKEY 1.15
/datum/component/organ_corruption/tongue
corruptable_organ_type = /obj/item/organ/internal/tongue
@@ -102,11 +101,20 @@
// We start by checking that the victim is a human and they have a client, so we can give them the
// beneficial status effect for drinking higher-quality blood.
var/is_target_human_with_client = istype(victim, /mob/living/carbon/human) && victim.client
var/horrible_feeding = FALSE
if(ismonkey(victim))
is_target_human_with_client = FALSE // Sorry, not going to get the status effect from monkeys, even if they have a client in them.
hemophage.add_mood_event("gross_food", /datum/mood_event/disgust/hemophage_feed_monkey) // drinking from a monkey is inherently gross, like, REALLY gross
hemophage.adjust_disgust(DISGUST_LEVEL_GROSS + 15, DISGUST_LEVEL_MAXEDOUT)
blood_volume_difference = BLOOD_VOLUME_NORMAL - hemophage.blood_volume
horrible_feeding = TRUE
if(istype(victim, /mob/living/carbon/human/species/monkey))
is_target_human_with_client = FALSE // yep you're still not getting the status effect from humonkeys either. your tumour knows.
hemophage.add_mood_event("gross_food", /datum/mood_event/disgust/hemophage_feed_humonkey)
hemophage.adjust_disgust(DISGUST_LEVEL_GROSS / 4, DISGUST_LEVEL_GROSS) // it's still gross but nowhere near as bad, though.
horrible_feeding = TRUE
StartCooldown()
@@ -129,18 +137,36 @@
log_combat(hemophage, victim, "drained [drained_blood]u of blood from", addition = " (NEW BLOOD VOLUME: [victim.blood_volume] cL)")
victim.show_message(span_danger("[hemophage] drains some of your blood!"))
to_chat(hemophage, span_notice("You drink some blood from [victim]![is_target_human_with_client ? " That tasted particularly good!" : ""]"))
if(horrible_feeding)
if(istype(victim, /mob/living/carbon/human/species/monkey))
to_chat(hemophage, span_notice("You take tentative draws of blood from [victim], each mouthful awash with the taste of ozone and a strange artificial twinge."))
else
to_chat(hemophage, span_warning("You choke back tepid mouthfuls of foul blood from [victim]. The taste is absolutely vile."))
else
to_chat(hemophage, span_notice("You pull greedy gulps of precious lifeblood from [victim]'s veins![is_target_human_with_client ? " That tasted particularly good!" : ""]"))
playsound(hemophage, 'sound/items/drink.ogg', 30, TRUE, -2)
// just let the hemophage know they're capped out on blood if they're trying to go for an exsanguinate and wondering why it isn't working
if(drained_blood != HEMOPHAGE_DRAIN_AMOUNT && hemophage.blood_volume >= (BLOOD_VOLUME_MAXIMUM - HEMOPHAGE_DRAIN_AMOUNT))
to_chat(hemophage, span_boldnotice("Your thirst is temporarily slaked, and you can digest no more new blood for the moment."))
if(victim.blood_volume <= BLOOD_VOLUME_OKAY)
to_chat(hemophage, span_warning("That definitely left them looking pale..."))
to_chat(victim, span_warning("A groaning lethargy creeps into your muscles as you begin to feel slightly clammy...")) //let the victim know too
if(is_target_human_with_client)
hemophage.apply_status_effect(/datum/status_effect/blood_thirst_satiated)
hemophage.add_mood_event("drank_human_blood", /datum/mood_event/hemophage_feed_human) // absolutely scrumptious
hemophage.clear_mood_event("gross_food") // it's a real palate cleanser, you know
hemophage.disgust *= 0.85 //also clears a little bit of disgust too
if(!victim.blood_volume || victim.blood_volume < BLOOD_VOLUME_SURVIVE)
to_chat(hemophage, span_warning("You finish off [victim]'s blood supply."))
// for this to ever occur, the hemophage actually has to be decently hungry, otherwise they'll cap their own blood reserves and be unable to pull it off.
if(!victim.blood_volume || victim.blood_volume <= BLOOD_VOLUME_SURVIVE)
to_chat(hemophage, span_boldwarning("A final sputter of blood trickles from [victim]'s collapsing veins as your terrible hunger drains them almost completely dry."))
else if ((victim.blood_volume + HEMOPHAGE_DRAIN_AMOUNT) <= BLOOD_VOLUME_SURVIVE)
to_chat(hemophage, span_warning("A sense of hesitation gnaws: you know for certain that taking much more blood from [victim] WILL kill them. <b>...but another part of you sees only opportunity.</b>"))
#undef HEMOPHAGE_DRAIN_AMOUNT
@@ -0,0 +1,19 @@
/datum/mood_event/hemophage_feed_human
description = "I slaked my hunger on fresh, vital blood. That felt good!"
mood_change = 2
timeout = 5 MINUTES
/datum/mood_event/disgust/hemophage_feed_monkey
description = "I had to feed off a gibbering monkey... what have I become?"
mood_change = -4
timeout = 5 MINUTES
/datum/mood_event/disgust/hemophage_feed_humonkey
description = "Somehow I know deep down that humonkey blood is no substitute for the real thing..."
mood_change = -1
timeout = 5 MINUTES
/datum/mood_event/disgust/hemophage_feed_synthesized_blood
description = "My last blood meal was artificial and tasted... wrong."
mood_change = -2
timeout = 5 MINUTES
@@ -85,6 +85,10 @@
var/datum/reagent/blood/blood = reagents.has_reagent(/datum/reagent/blood)
if(blood)
blood.metabolization_rate = BLOOD_METABOLIZATION_RATE
var/blood_DNA = blood.data["blood_DNA"]
if (!blood_DNA) //does the blood we're digesting have any DNA? if it doesn't, it's artificial, and that's gross.
src.owner.adjust_disgust(DISGUST_LEVEL_GROSS / 16, DISGUST_LEVEL_VERYGROSS)
src.owner.add_mood_event("gross_food", /datum/mood_event/disgust/hemophage_feed_synthesized_blood)
return ..()
@@ -2,7 +2,7 @@
// A cloning mistake, crossing human and xenomorph DNA
name = "Xenomorph Hybrid"
id = SPECIES_XENO
family_heirlooms = list(/obj/item/toy/plush/rouny, /obj/item/toy/toy_xeno)
family_heirlooms = list(/obj/item/toy/plush/rouny, /obj/item/clothing/mask/facehugger/toy)
inherent_traits = list(
TRAIT_ADVANCEDTOOLUSER,
TRAIT_CAN_STRIP,
@@ -10,7 +10,17 @@
TRAIT_MUTANT_COLORS,
)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID
mutantbrain = /obj/item/organ/internal/brain/xeno_hybrid
mutanttongue = /obj/item/organ/internal/tongue/xeno_hybrid
mutantliver = /obj/item/organ/internal/liver/xeno_hybrid
mutantstomach = /obj/item/organ/internal/stomach/xeno_hybrid
mutant_organs = list(
/obj/item/organ/internal/alien/plasmavessel/roundstart,
/obj/item/organ/internal/alien/resinspinner/roundstart,
/obj/item/organ/internal/alien/hivenode,
)
exotic_blood = /datum/reagent/toxin/acid
heatmod = 2.5
mutant_bodyparts = list()
external_organs = list()
payday_modifier = 1.0
@@ -42,6 +52,25 @@
/datum/species/xeno/get_species_lore()
return list(placeholder_lore)
/datum/species/xeno/create_pref_unique_perks()
var/list/to_add = list()
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "biohazard",
SPECIES_PERK_NAME = "Xenomorphic Biology",
SPECIES_PERK_DESC = "Xeno-hybrids inherit organs from their primal ascendants."
))
to_add += list(list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "fire",
SPECIES_PERK_NAME = "High Temperature Weakness",
SPECIES_PERK_DESC = "A partial silicone structure and acid blood make the xeno-hybrid species extremely weak to heat."
))
return to_add
/datum/species/xeno/prepare_human_for_preview(mob/living/carbon/human/xeno)
var/xeno_color = "#525288"
xeno.dna.features["mcolor"] = xeno_color
@@ -52,3 +81,60 @@
xeno.dna.mutant_bodyparts["xenohead"] = list(MUTANT_INDEX_NAME = "Standard", MUTANT_INDEX_COLOR_LIST = list(xeno_color, xeno_color, xeno_color))
regenerate_organs(xeno, src, visual_only = TRUE)
xeno.update_body(TRUE)
///Xenomorph organs modified to suit roundstart styling
#define BUILD_DURATION 0.5 SECONDS
//Plasma vessel
/obj/item/organ/internal/alien/plasmavessel/roundstart
stored_plasma = 55
max_plasma = 55
plasma_rate = 2
heal_rate = 0
actions_types = list(
/datum/action/cooldown/alien/make_structure/plant_weeds/roundstart,
/datum/action/cooldown/alien/transfer,
)
/datum/action/cooldown/alien/make_structure/plant_weeds
var/build_duration = 0 SECONDS //regular aliens can build instantly
/datum/action/cooldown/alien/make_structure/plant_weeds/roundstart
build_duration = BUILD_DURATION //hybrids are a bit slower
/datum/action/cooldown/alien/make_structure/plant_weeds/Activate(atom/target)
if(build_duration && !do_after(owner, build_duration))
owner.balloon_alert(owner, "interrupted!")
return
return ..()
//Resin spinner
/obj/item/organ/internal/alien/resinspinner/roundstart
actions_types = list(/datum/action/cooldown/alien/make_structure/resin/roundstart)
/datum/action/cooldown/alien/make_structure/resin
var/build_duration = 0 SECONDS
/datum/action/cooldown/alien/make_structure/resin/roundstart
build_duration = BUILD_DURATION
//Non-modularly checked in `code\modules\mob\living\carbon\alien\adult\alien_powers.dm`
//Organ resprites
/obj/item/organ/internal/brain/xeno_hybrid
icon_state = "brain-x" //rebranding
/obj/item/organ/internal/stomach/xeno_hybrid
icon_state = "stomach-x"
/obj/item/organ/internal/liver/xeno_hybrid
icon_state = "liver-x"
//Liver modification (xenohybrids can process plasma!)
/obj/item/organ/internal/liver/xeno_hybrid/handle_chemical(mob/living/carbon/owner, datum/reagent/toxin/chem, seconds_per_tick, times_fired)
. = ..()
if(. & COMSIG_MOB_STOP_REAGENT_CHECK)
return
if(chem.type == /datum/reagent/toxin/plasma)
chem.toxpwr = 0
#undef BUILD_DURATION
@@ -13,3 +13,22 @@
name = "nitrogen-filled plating"
desc = "Vox box certified."
initial_gas_mix = "n2=104;TEMP=293.15"
/turf/open/indestructible/bathroom
icon = 'modular_skyrat/modules/ghostcafe/icons/floors.dmi';
icon_state = "titanium_blue_old";
name = "bathroom floor"
footstep = FOOTSTEP_FLOOR
tiled_dirt = FALSE
/turf/open/indestructible/carpet
desc = "It's really cozy! Great for soft paws!";
icon = 'modular_skyrat/modules/ghostcafe/icons/carpet_royalblack.dmi';
icon_state = "carpet";
name = "soft carpet"
bullet_bounce_sound = null
footstep = FOOTSTEP_CARPET
barefootstep = FOOTSTEP_CARPET_BAREFOOT
clawfootstep = FOOTSTEP_CARPET_BAREFOOT
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
@@ -38,6 +38,10 @@
worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/accessories.dmi'
icon_state = "armband_lopland"
/obj/item/clothing/accessory/armband/deputy/lopland/nonsec
name = "blue armband"
desc = "An armband, worn to signify proficiency in a skill or association with a department. This one is blue."
/obj/item/clothing/accessory/armband/deputy/lopland
desc = "A Peacekeeper-blue armband, showing the wearer to be certified by Lopland as a top-of-their-class Security Officer."
@@ -51,39 +51,38 @@ GLOBAL_LIST_INIT(loadout_accessory, generate_loadout_items(/datum/loadout_item/a
*/
/datum/loadout_item/accessory/armband_medblue
name = "Medical Armband (blue stripe)"
item_path = /obj/item/clothing/accessory/armband/medblue
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY, JOB_CORONER)
name = "Blue-White Armband"
item_path = /obj/item/clothing/accessory/armband/medblue/nonsec
/datum/loadout_item/accessory/armband_med
name = "Medical Armband (white)"
item_path = /obj/item/clothing/accessory/armband/med
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY, JOB_CORONER)
name = "White Armband"
item_path = /obj/item/clothing/accessory/armband/med/nonsec
/datum/loadout_item/accessory/armband_cargo
name = "Cargo Armband"
item_path = /obj/item/clothing/accessory/armband/cargo
restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT)
name = "Brown Armband"
item_path = /obj/item/clothing/accessory/armband/cargo/nonsec
/datum/loadout_item/accessory/armband_engineering
name = "Engineering Armband"
item_path = /obj/item/clothing/accessory/armband/engine
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD)
name = "Orange Armband"
item_path = /obj/item/clothing/accessory/armband/engine/nonsec
/datum/loadout_item/accessory/armband_security_nonsec
name = "Blue Armband"
item_path = /obj/item/clothing/accessory/armband/deputy/lopland/nonsec
/datum/loadout_item/accessory/armband_security
name = "Security Armband"
item_path = /obj/item/clothing/accessory/armband/deputy/lopland
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE)
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/accessory/armband_security_deputy
name = "Security Deputy Armband"
item_path = /obj/item/clothing/accessory/armband/deputy
restricted_roles = list(JOB_CORRECTIONS_OFFICER)
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/accessory/armband_science
name = "Science Armband"
item_path = /obj/item/clothing/accessory/armband/science
restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_SCIENCE_GUARD)
name = "Purple Armband"
item_path = /obj/item/clothing/accessory/armband/science/nonsec
/*
* ARMOURLESS
@@ -63,6 +63,10 @@ GLOBAL_LIST_INIT(loadout_glasses, generate_loadout_items(/datum/loadout_item/gla
name = "Modern Glasses"
item_path = /obj/item/clothing/glasses/regular/betterunshit
/datum/loadout_item/glasses/prescription_glasses/kim
name = "Binoclard Lenses"
item_path = /obj/item/clothing/glasses/regular/kim
/*
* COSMETIC GLASSES
*/
@@ -78,6 +78,10 @@ GLOBAL_LIST_INIT(loadout_gloves, generate_loadout_items(/datum/loadout_item/glov
name = "Evening Gloves"
item_path = /obj/item/clothing/gloves/evening
/datum/loadout_item/gloves/kim
name = "Aerostatic Gloves"
item_path = /obj/item/clothing/gloves/kim
/datum/loadout_item/gloves/maid
name = "Maid Arm Covers"
item_path = /obj/item/clothing/gloves/maid
@@ -464,27 +464,22 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea
/datum/loadout_item/head/trekcap
name = "Officer's Cap (White)"
item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL)
/datum/loadout_item/head/trekcapcap
name = "Officer's Cap (Black)"
item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/black
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY)
/datum/loadout_item/head/trekcapmedisci
name = "MedSci Officer's Cap (Blue)"
item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/medsci
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PSYCHOLOGIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_ORDERLY, JOB_CORONER)
/datum/loadout_item/head/trekcapeng
name = "Eng Officer's Cap (Yellow)"
item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/eng
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_ENGINEERING_GUARD, JOB_CUSTOMS_AGENT)
/datum/loadout_item/head/trekcapsec
name = "Officer's Cap (Red)"
item_path = /obj/item/clothing/head/hats/caphat/parade/fedcap/sec
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_STATION_ENGINEER, JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT)
/*
* JOB-LOCKED
@@ -527,9 +522,8 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/blasthelmet
name = "General's Helmet"
name = "Blast Helmet"
item_path = /obj/item/clothing/head/hats/imperial/helmet
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_CORRECTIONS_OFFICER, JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/navybluehoscap
name = "Head of Security's Naval Cap"
@@ -546,35 +540,34 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea
item_path = /obj/item/clothing/head/beret/sec/navywarden
restricted_roles = list(JOB_WARDEN)
/datum/loadout_item/head/cybergoggles //Cyberpunk-P.I. Outfit
/datum/loadout_item/head/cybergoggles_civ
name = "Type-34C Forensics Headwear"
item_path = /obj/item/clothing/head/fedora/det_hat/cybergoggles/civilian
/datum/loadout_item/head/cybergoggles //Cyberpunk-P.I. Outfit
name = "Type-34P Forensics Headwear"
item_path = /obj/item/clothing/head/fedora/det_hat/cybergoggles
restricted_roles = list(JOB_DETECTIVE)
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/head/nursehat
name = "Nurse Hat"
item_path = /obj/item/clothing/head/costume/nursehat
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST)
/datum/loadout_item/head/imperial_generic
name = "Grey Naval Officer Cap"
item_path = /obj/item/clothing/head/hats/imperial
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/head/imperial_grey
name = "Dark Grey Naval Officer Cap"
item_path = /obj/item/clothing/head/hats/imperial/grey
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/head/imperial_red
name = "Red Naval Officer Cap"
item_path = /obj/item/clothing/head/hats/imperial/red
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/imperial_white
name = "White Naval Officer Cap"
item_path = /obj/item/clothing/head/hats/imperial/white
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER)
/datum/loadout_item/head/azulea_oldblood
name = "Oldblood's Royal cap"
@@ -595,50 +588,38 @@ GLOBAL_LIST_INIT(loadout_helmets, generate_loadout_items(/datum/loadout_item/hea
/datum/loadout_item/head/atmos_beret
name = "Atmospherics Beret"
item_path = /obj/item/clothing/head/beret/atmos
restricted_roles = list(
JOB_ATMOSPHERIC_TECHNICIAN,
JOB_CHIEF_ENGINEER,
)
/datum/loadout_item/head/engi_beret
name = "Engineering Beret"
item_path = /obj/item/clothing/head/beret/engi
restricted_roles = list(JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER, JOB_ENGINEERING_GUARD)
/datum/loadout_item/head/cargo_beret
name = "Supply Beret"
item_path = /obj/item/clothing/head/beret/cargo
restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT)
/datum/loadout_item/head/beret_med
name = "Medical Beret"
item_path = /obj/item/clothing/head/beret/medical
restricted_roles = list(JOB_MEDICAL_DOCTOR,JOB_VIROLOGIST, JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_ORDERLY, JOB_CORONER)
/datum/loadout_item/head/beret_paramedic
name = "Paramedic Beret"
item_path = /obj/item/clothing/head/beret/medical/paramedic
restricted_roles = list(JOB_PARAMEDIC, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_viro
name = "Virologist Beret"
item_path = /obj/item/clothing/head/beret/medical/virologist
restricted_roles = list(JOB_VIROLOGIST, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_chem
name = "Chemist Beret"
item_path = /obj/item/clothing/head/beret/medical/chemist
restricted_roles = list(JOB_CHEMIST, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/head/beret_sci
name = "Scientist Beret"
item_path = /obj/item/clothing/head/beret/science
restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENCE_GUARD)
/datum/loadout_item/head/beret_robo
name = "Roboticist Beret"
item_path = /obj/item/clothing/head/beret/science/fancy/robo
restricted_roles = list(JOB_ROBOTICIST, JOB_RESEARCH_DIRECTOR)
/*
* FAMILIES
@@ -121,7 +121,6 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/discoproper
name = "Horrible Necktie"
item_path = /obj/item/clothing/neck/tie/disco
restricted_roles = list(JOB_DETECTIVE)
/*
* COLLARS
@@ -282,7 +281,6 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/stethoscope
name = "Stethoscope"
item_path = /obj/item/clothing/neck/stethoscope
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER)
/datum/loadout_item/neck/maid
name = "Maid Neck Cover"
@@ -295,12 +293,12 @@ GLOBAL_LIST_INIT(loadout_necks, generate_loadout_items(/datum/loadout_item/neck)
/datum/loadout_item/neck/holobadge
name = "Holobadge"
item_path = /obj/item/clothing/accessory/badge/holo
restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_HEAD_OF_SECURITY)
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/neck/holobadge_cord
name = "Holobadge with Lanyard"
item_path = /obj/item/clothing/accessory/badge/holo/cord
restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE, JOB_WARDEN, JOB_HEAD_OF_SECURITY)
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER)
/*
* DONATOR
@@ -194,6 +194,10 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes
name = "Green Snakeskin Shoes"
item_path = /obj/item/clothing/shoes/discoshoes
/datum/loadout_item/shoes/kim
name = "Aerostatic Shoes"
item_path = /obj/item/clothing/shoes/kim
/datum/loadout_item/shoes/dominaheels
name = "Dominant Heels"
item_path = /obj/item/clothing/shoes/latex_heels/domina_heels
@@ -215,6 +219,10 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes
name = "Roller Skates"
item_path = /obj/item/clothing/shoes/wheelys/rollerskates
/datum/loadout_item/shoes/jingleshoes
name = "Jester Shoes"
item_path = /obj/item/clothing/shoes/jester_shoes
/*
* SEASONAL
*/
@@ -233,7 +241,7 @@ GLOBAL_LIST_INIT(loadout_shoes, generate_loadout_items(/datum/loadout_item/shoes
*/
/datum/loadout_item/shoes/jester
name = "Jester Shoes"
name = "Clown's Jester Shoes"
item_path = /obj/item/clothing/shoes/clown_shoes/jester
restricted_roles = list(JOB_CLOWN)
@@ -119,7 +119,6 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/labcoat_medical
name = "Medical Labcoat"
item_path = /obj/item/clothing/suit/toggle/labcoat/medical
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER)
/*
* PONCHOS
@@ -455,7 +454,10 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/discojacket
name = "Disco Ass Blazer"
item_path = /obj/item/clothing/suit/discoblazer
restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/suit/kimjacket
name = "Aerostatic Bomber Jacket"
item_path = /obj/item/clothing/suit/kimjacket
/datum/loadout_item/suit/cardigan
name = "Cardigan"
@@ -537,58 +539,48 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/coat_med
name = "Medical Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/medical
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_ORDERLY) // Reserved for Medical Doctors, Orderlies, and their boss, the Chief Medical Officer
/datum/loadout_item/suit/coat_paramedic
name = "Paramedic Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/medical/paramedic
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC) // Reserved for Paramedics and their boss, the Chief Medical Officer
/datum/loadout_item/suit/coat_robotics
name = "Robotics Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/science/robotics
restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_ROBOTICIST)
/datum/loadout_item/suit/coat_sci
name = "Science Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/science
restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_SCIENCE_GUARD) // Reserved for the Science Departement
/datum/loadout_item/suit/coat_eng
name = "Engineering Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ENGINEERING_GUARD) // Reserved for Station Engineers, Engineering Guards, and their boss, the Chief Engineer
/datum/loadout_item/suit/coat_atmos
name = "Atmospherics Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN) // Reserved for Atmos Techs and their boss, the Chief Engineer
/datum/loadout_item/suit/coat_hydro
name = "Hydroponics Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/hydro
restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BOTANIST) // Reserved for Botanists and their boss, the Head of Personnel
/datum/loadout_item/suit/coat_bar
name = "Bartender Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/skyrat/bartender
restricted_roles = list(JOB_HEAD_OF_PERSONNEL, JOB_BARTENDER) //Reserved for Bartenders and their boss, the Head of Personnel
/datum/loadout_item/suit/coat_cargo
name = "Cargo Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/cargo
restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_CUSTOMS_AGENT) // Reserved for Cargo Techs, Customs Agents, and their boss, the Quartermaster
/datum/loadout_item/suit/coat_miner
name = "Mining Winter Coat"
item_path = /obj/item/clothing/suit/hooded/wintercoat/miner
restricted_roles = list(JOB_QUARTERMASTER, JOB_SHAFT_MINER) // Reserved for Miners and their boss, the Quartermaster
// JACKETS
/datum/loadout_item/suit/navybluejacketofficer
name = "Security Officer's Navy Blue Formal Jacket"
item_path = /obj/item/clothing/suit/jacket/officer/blue
restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) // I aint making a medic one, maybe i'll add some rank thing from cm or civ for it
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/suit/navybluejacketwarden
name = "Warden's Navy Blue Formal Jacket"
@@ -603,7 +595,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/security_jacket
name = "Security Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/sec
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE) //Not giving this one to COs because it's actually better than the one they spawn with
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY) //Not giving this one to COs because it's actually better than the one they spawn with
/datum/loadout_item/suit/brit
name = "High Vis Armored Vest"
@@ -613,7 +605,7 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/british_jacket
name = "Peacekeeper Officer Coat"
item_path = /obj/item/clothing/suit/british_officer
restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_WARDEN, JOB_DETECTIVE)
restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER)
/datum/loadout_item/suit/offdep_jacket
name = "Off-Department Jacket"
@@ -622,27 +614,22 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/engi_jacket
name = "Engineering Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/engi
restricted_roles = list(JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD)
/datum/loadout_item/suit/sci_jacket
name = "Science Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/sci
restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_SCIENCE_GUARD)
/datum/loadout_item/suit/med_jacket
name = "Medbay Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/med
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_ORDERLY)
/datum/loadout_item/suit/supply_jacket
name = "Supply Jacket"
item_path = /obj/item/clothing/suit/toggle/jacket/supply
restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT)
/datum/loadout_item/suit/cargo_gorka_jacket
name = "Cargo Gorka Jacket"
item_path = /obj/item/clothing/suit/toggle/cargo_tech
restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT)
/datum/loadout_item/suit/qm_jacket
name = "Quartermaster's Overcoat"
@@ -653,7 +640,6 @@ GLOBAL_LIST_INIT(loadout_exosuits, generate_loadout_items(/datum/loadout_item/su
/datum/loadout_item/suit/labcoat_highvis
name = "High-Vis Labcoat"
item_path = /obj/item/clothing/suit/toggle/labcoat/skyrat/highvis
restricted_roles = list(JOB_CHIEF_MEDICAL_OFFICER, JOB_PARAMEDIC, JOB_ATMOSPHERIC_TECHNICIAN, JOB_DETECTIVE, JOB_CHEMIST, JOB_ORDERLY) // And now chemist and orderly get it too.
/*
* FAMILIES
@@ -33,7 +33,6 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys))
/datum/loadout_item/toys/narsie
name = "Nar'sie Plushie"
item_path = /obj/item/toy/plush/narplush
restricted_roles = list(JOB_CHAPLAIN)
/datum/loadout_item/toys/nukie
name = "Nukie Plushie"
@@ -50,7 +49,6 @@ GLOBAL_LIST_INIT(loadout_toys, generate_loadout_items(/datum/loadout_item/toys))
/datum/loadout_item/toys/ratvar
name = "Ratvar Plushie"
item_path = /obj/item/toy/plush/ratplush
restricted_roles = list(JOB_CHAPLAIN)
/datum/loadout_item/toys/rouny
name = "Rouny Plushie"
@@ -96,23 +96,18 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/impcommand
name = "Light Grey Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/impcom
name = "Grey Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/grey
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/impred
name = "Red Officer's Naval Jumpsuit"
item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/red
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER) //NT Reps would never wear red, it's unbefitting
/datum/loadout_item/under/jumpsuit/impcomtrous
name = "Grey Officer's Naval Jumpsuit (Trousers)"
item_path = /obj/item/clothing/under/rank/captain/skyrat/imperial/generic/pants
restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_QUARTERMASTER, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_NT_REP)
/datum/loadout_item/under/jumpsuit/security_trousers
name = "Security Trousers"
@@ -132,37 +127,30 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/disco
name = "Superstar Cop Uniform"
item_path = /obj/item/clothing/under/rank/security/detective/disco
restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/under/jumpsuit/kim
name = "Aerostatic Suit"
item_path = /obj/item/clothing/under/rank/security/detective/kim
restricted_roles = list(JOB_DETECTIVE)
/datum/loadout_item/under/jumpsuit/paramed_light
name = "Light Paramedic Uniform"
item_path = /obj/item/clothing/under/rank/medical/paramedic/skyrat/light
restricted_roles = list(JOB_PARAMEDIC)
/datum/loadout_item/under/jumpsuit/paramed_light_skirt
name = "Light Paramedic Skirt"
item_path = /obj/item/clothing/under/rank/medical/paramedic/skyrat/light/skirt
restricted_roles = list(JOB_PARAMEDIC)
/datum/loadout_item/under/jumpsuit/chemist_formal
name = "Chemist's Formal Jumpsuit"
item_path = /obj/item/clothing/under/rank/medical/chemist/skyrat/formal
restricted_roles = list(JOB_CHEMIST)
/datum/loadout_item/under/jumpsuit/chemist_formal_skirt
name = "Chemist's Formal Jumpskirt"
item_path = /obj/item/clothing/under/rank/medical/chemist/skyrat/formal/skirt
restricted_roles = list(JOB_CHEMIST)
/datum/loadout_item/under/jumpsuit/hlscientist
name = "Ridiculous Scientist Outfit"
item_path = /obj/item/clothing/under/rank/rnd/scientist/skyrat/hlscience
restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR)
/datum/loadout_item/under/jumpsuit/rd_jumpsuit
name = "Research Director's Jumpsuit"
@@ -177,7 +165,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/cargo
name = "Cargo Technician's Jumpsuit"
item_path = /obj/item/clothing/under/rank/cargo/tech
restricted_roles = list(JOB_CARGO_TECHNICIAN, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT)
/datum/loadout_item/under/jumpsuit/cargo/skirt
name = "Cargo Technician's Skirt"
@@ -199,22 +186,18 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/jumpsuit/utility_eng
name = "Engineering Utility Uniform"
item_path = /obj/item/clothing/under/rank/engineering/engineer/skyrat/utility
restricted_roles = list(JOB_STATION_ENGINEER,JOB_ATMOSPHERIC_TECHNICIAN, JOB_CHIEF_ENGINEER, JOB_ENGINEERING_GUARD)
/datum/loadout_item/under/jumpsuit/utility_med
name = "Medical Utility Uniform"
item_path = /obj/item/clothing/under/rank/medical/doctor/skyrat/utility
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_PARAMEDIC, JOB_CHEMIST, JOB_VIROLOGIST, JOB_GENETICIST, JOB_CHIEF_MEDICAL_OFFICER, JOB_PSYCHOLOGIST, JOB_ORDERLY)
/datum/loadout_item/under/jumpsuit/utility_sci
name = "Science Utility Uniform"
item_path = /obj/item/clothing/under/rank/rnd/scientist/skyrat/utility
restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_SCIENCE_GUARD)
/datum/loadout_item/under/jumpsuit/utility_cargo
name = "Supply Utility Uniform"
item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/utility
restricted_roles = list(JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_QUARTERMASTER, JOB_CUSTOMS_AGENT)
/datum/loadout_item/under/jumpsuit/utility_sec
name = "Security Utility Uniform"
@@ -566,32 +549,26 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/blacknwhite
name = "Classic Prisoner Jumpsuit"
item_path = /obj/item/clothing/under/rank/prisoner/classic
restricted_roles = list(JOB_PRISONER)
/datum/loadout_item/under/miscellaneous/redscrubs
name = "Red Scrubs"
item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/red
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/bluescrubs
name = "Blue Scrubs"
item_path = /obj/item/clothing/under/rank/medical/scrubs/blue
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/greenscrubs
name = "Green Scrubs"
item_path = /obj/item/clothing/under/rank/medical/scrubs/green
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/purplescrubs
name = "Purple Scrubs"
item_path = /obj/item/clothing/under/rank/medical/scrubs/purple
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/whitescrubs
name = "White Scrubs"
item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/white
restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_VIROLOGIST, JOB_PARAMEDIC)
/datum/loadout_item/under/miscellaneous/gear_harness
name = "Gear Harness"
@@ -604,27 +581,22 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/cargo_casual
name = "Cargo Tech Casualwear"
item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/casualman
restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/cargo_shorts
name = "Cargo Tech Shorts"
item_path = /obj/item/clothing/under/rank/cargo/tech/alt
restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/cargo_black
name = "Black Cargo Uniform"
item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/evil
restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/cargo_turtle
name = "Cargo Turtleneck"
item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/turtleneck
restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/cargo_skirtle
name = "Cargo Skirtleneck"
item_path = /obj/item/clothing/under/rank/cargo/tech/skyrat/turtleneck/skirt
restricted_roles = list(JOB_CARGO_TECHNICIAN)
/datum/loadout_item/under/miscellaneous/qm_skirtle
name = "Quartermaster's Skirtleneck"
@@ -651,7 +623,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/miscellaneous/mech_suit
name = "Mech Suit"
item_path = /obj/item/clothing/under/costume/mech_suit
restricted_roles = list(JOB_ROBOTICIST)
/*
* FORMAL UNDERSUITS
@@ -879,7 +850,6 @@ GLOBAL_LIST_INIT(loadout_miscunders, generate_loadout_items(/datum/loadout_item/
/datum/loadout_item/under/formal/designer_inferno
name = "Designer Inferno Suit"
item_path = /obj/item/clothing/under/suit/skyrat/inferno/beeze
restricted_roles = list(JOB_LAWYER)
/datum/loadout_item/under/formal/pencil
name = "Black Pencilskirt"
@@ -14,7 +14,6 @@
var/affecting = crossing_human.get_bodypart(BODY_ZONE_HEAD)
crossing_human.apply_damage(15, BRUTE, affecting)
crossing_human.Knockdown(20)
crossing_human.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15) //We do a bit of brain damage
crossing_human.visible_message(span_warning("[crossing_human] slams their head into the frame of [src] with a sickening thud!"), \
span_userdanger("You slam your head against [src]!")
)
@@ -21,15 +21,12 @@
human_holder.maptext_height = 32 * human_holder.dna.features["body_size"] //Adjust runechat height
human_holder.dna.update_body_size()
human_holder.mob_size = MOB_SIZE_LARGE
var/obj/item/bodypart/arm/left/left_arm = human_holder.get_bodypart(BODY_ZONE_L_ARM)
if(left_arm)
left_arm.unarmed_damage_low += OVERSIZED_HARM_DAMAGE_BONUS
left_arm.unarmed_damage_high += OVERSIZED_HARM_DAMAGE_BONUS
var/obj/item/bodypart/arm/right/right_arm = human_holder.get_bodypart(BODY_ZONE_R_ARM)
if(right_arm)
right_arm.unarmed_damage_low += OVERSIZED_HARM_DAMAGE_BONUS
right_arm.unarmed_damage_high += OVERSIZED_HARM_DAMAGE_BONUS
RegisterSignal(human_holder, COMSIG_CARBON_POST_ATTACH_LIMB, PROC_REF(on_gain_limb)) // make sure we handle this when new ones are applied
// just dummy call our current limbs to have less duplication (by having more duplication ahueheu)
for(var/obj/item/bodypart/bodypart as anything in human_holder.bodyparts)
on_gain_limb(src, bodypart, special = FALSE)
human_holder.blood_volume_normal = BLOOD_VOLUME_OVERSIZED
human_holder.physiology.hunger_mod *= OVERSIZED_HUNGER_MOD //50% hungrier
@@ -57,18 +54,48 @@
var/obj/item/bodypart/arm/left/left_arm = human_holder.get_bodypart(BODY_ZONE_L_ARM)
if(left_arm)
left_arm.unarmed_damage_low -= OVERSIZED_HARM_DAMAGE_BONUS
left_arm.unarmed_damage_high -= OVERSIZED_HARM_DAMAGE_BONUS
left_arm.unarmed_damage_high = initial(left_arm.unarmed_damage_high)
var/obj/item/bodypart/arm/right/right_arm = human_holder.get_bodypart(BODY_ZONE_R_ARM)
if(right_arm)
right_arm.unarmed_damage_low -= OVERSIZED_HARM_DAMAGE_BONUS
right_arm.unarmed_damage_high -= OVERSIZED_HARM_DAMAGE_BONUS
right_arm.unarmed_damage_high = initial(right_arm.unarmed_damage_high)
var/obj/item/bodypart/leg/left_leg = human_holder.get_bodypart(BODY_ZONE_L_LEG)
if (left_leg)
left_leg.unarmed_effectiveness = initial(left_leg.unarmed_effectiveness)
var/obj/item/bodypart/leg/right_leg = human_holder.get_bodypart(BODY_ZONE_R_LEG)
if (right_leg)
right_leg.unarmed_effectiveness = initial(right_leg.unarmed_effectiveness)
for(var/obj/item/bodypart/bodypart as anything in human_holder.bodyparts)
bodypart.name = replacetext(bodypart.name, "oversized ", "")
UnregisterSignal(human_holder, COMSIG_CARBON_POST_ATTACH_LIMB)
human_holder.blood_volume_normal = BLOOD_VOLUME_NORMAL
human_holder.physiology.hunger_mod /= OVERSIZED_HUNGER_MOD
human_holder.remove_movespeed_modifier(/datum/movespeed_modifier/oversized)
/datum/quirk/oversized/proc/on_gain_limb(datum/source, obj/item/bodypart/gained, special)
SIGNAL_HANDLER
if(findtext(gained.name, "oversized"))
return
// Oversized arms have a higher damage maximum. Pretty simple.
if(istype(gained, /obj/item/bodypart/arm))
var/obj/item/bodypart/arm/new_arm = gained
new_arm.unarmed_damage_high = initial(new_arm.unarmed_damage_high) + OVERSIZED_HARM_DAMAGE_BONUS
// Before this, we never actually did anything with Oversized legs.
// This brings their unarmed_effectiveness up to 20 from 15, which is on par with mushroom legs.
// Functionally, this makes their prone kicks more accurate and increases the chance of extending prone knockdown... but only while the victim is already prone.
else if(istype(gained, /obj/item/bodypart/leg))
var/obj/item/bodypart/leg/new_leg = gained
new_leg.unarmed_effectiveness = initial(new_leg.unarmed_effectiveness) + OVERSIZED_KICK_EFFECTIVENESS_BONUS
gained.name = "oversized " + gained.name
/datum/movespeed_modifier/oversized
multiplicative_slowdown = OVERSIZED_SPEED_SLOWDOWN
@@ -1,5 +1,8 @@
/obj/item/radio/headset
/// The sound that plays when someone uses the headset
var/radiosound = 'modular_skyrat/modules/radiosound/sound/radio/common.ogg'
/// The volume of the radio sound we make
var/radio_sound_volume = 25
/obj/item/radio/headset/syndicate //disguised to look like a normal headset for stealth ops
radiosound = 'modular_skyrat/modules/radiosound/sound/radio/syndie.ogg'
@@ -7,7 +10,7 @@
/obj/item/radio/headset/headset_sec
radiosound = 'modular_skyrat/modules/radiosound/sound/radio/security.ogg'
/obj/item/radio/headset/talk_into(mob/living/M, message, channel, list/spans, datum/language/language, list/message_mods, direct = TRUE)
/obj/item/radio/headset/talk_into(mob/living/mob_in_question, message, channel, list/spans, datum/language/language, list/message_mods, direct = TRUE)
if(radiosound && listening)
playsound(M, radiosound, rand(20, 30), 0, 0, SOUND_FALLOFF_EXPONENT)
playsound(mob_in_question, radiosound, radio_sound_volume, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT)
. = ..()
+5
View File
@@ -6172,7 +6172,9 @@
#include "interface\fonts\tiny_unicode.dm"
#include "interface\fonts\vcr_osd_mono.dm"
#include "modular_skyrat\master_files\code\_globalvars\configuration.dm"
#include "modular_skyrat\master_files\code\_globalvars\regexes.dm"
#include "modular_skyrat\master_files\code\_globalvars\religion.dm"
#include "modular_skyrat\master_files\code\_globalvars\text.dm"
#include "modular_skyrat\master_files\code\_globalvars\lists\ambience.dm"
#include "modular_skyrat\master_files\code\_globalvars\lists\chat.dm"
#include "modular_skyrat\master_files\code\_onclick\cyborg.dm"
@@ -6224,6 +6226,7 @@
#include "modular_skyrat\master_files\code\datums\traits\negative.dm"
#include "modular_skyrat\master_files\code\datums\traits\neutral.dm"
#include "modular_skyrat\master_files\code\datums\votes\_vote_datum.dm"
#include "modular_skyrat\master_files\code\datums\votes\map_vote.dm"
#include "modular_skyrat\master_files\code\game\atoms.dm"
#include "modular_skyrat\master_files\code\game\sound.dm"
#include "modular_skyrat\master_files\code\game\effects\spawners\random\structure.dm"
@@ -7057,6 +7060,7 @@
#include "modular_skyrat\modules\customization\modules\language\common.dm"
#include "modular_skyrat\modules\customization\modules\language\gutter.dm"
#include "modular_skyrat\modules\customization\modules\language\monkey.dm"
#include "modular_skyrat\modules\customization\modules\language\mothic.dm"
#include "modular_skyrat\modules\customization\modules\language\mushroom.dm"
#include "modular_skyrat\modules\customization\modules\language\nekomimetic.dm"
#include "modular_skyrat\modules\customization\modules\language\panslavic.dm"
@@ -7137,6 +7141,7 @@
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\corrupted_stomach.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\corrupted_tongue.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_actions.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_moods.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_organs.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_species.dm"
#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species\hemophage\hemophage_status_effects.dm"
+2 -2
View File
@@ -86,7 +86,7 @@ const InputDisplay = (props) => {
</Box>
<Input
fluid
maxLength={100}
maxLength={500} /* SKYRAT EDIT: ORIGINAL 100 */
value={description}
onChange={(e, value) => setInput({ ...input, description: value })}
/>
@@ -97,7 +97,7 @@ const InputDisplay = (props) => {
</Box>
<Input
fluid
maxLength={100}
maxLength={500} /* SKYRAT EDIT: ORIGINAL 100 */
value={comments}
onChange={(e, value) => setInput({ ...input, comments: value })}
/>
@@ -6,6 +6,8 @@ export const headshot: Feature<string> = {
description:
'Requires a link ending with .png, .jpeg, or .jpg, starting with \
https://, and hosted on Gyazo or Discord. Renders the image underneath \
your character preview in the examine more window.',
your character preview in the examine more window. \
Image larger than 250x250 will be resized to 250x250. \
Aim for 250x250 whenever possible',
component: FeatureShortTextInput,
};