mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-08 22:50:51 +01:00
Merge branch 'Skyrat-SS13:master' into master
This commit is contained in:
@@ -3,9 +3,11 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- 'project/**'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- 'project/**'
|
||||
jobs:
|
||||
run_linters:
|
||||
if: "!contains(github.event.head_commit.message, '[ci skip]')"
|
||||
|
||||
@@ -3,6 +3,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- 'project/**'
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
@@ -9,6 +9,7 @@ on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- 'project/**'
|
||||
jobs:
|
||||
has_515_compatibility:
|
||||
name: Has 515 Compatibility
|
||||
|
||||
@@ -238,7 +238,6 @@
|
||||
"fm" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden,
|
||||
/obj/machinery/computer/order_console/mining{
|
||||
uses_ltsrbt = 0;
|
||||
forced_express = 1;
|
||||
express_cost_multiplier = 1
|
||||
},
|
||||
|
||||
@@ -4873,7 +4873,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/computer/order_console/mining{
|
||||
uses_ltsrbt = 0;
|
||||
forced_express = 1;
|
||||
express_cost_multiplier = 1
|
||||
},
|
||||
|
||||
@@ -4735,7 +4735,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/order_console/mining{
|
||||
uses_ltsrbt = 0;
|
||||
forced_express = 1;
|
||||
express_cost_multiplier = 1
|
||||
},
|
||||
|
||||
@@ -4152,7 +4152,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/computer/order_console/mining{
|
||||
uses_ltsrbt = 0;
|
||||
forced_express = 1;
|
||||
express_cost_multiplier = 1
|
||||
},
|
||||
|
||||
@@ -4502,7 +4502,6 @@
|
||||
},
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/machinery/computer/order_console/mining{
|
||||
uses_ltsrbt = 0;
|
||||
forced_express = 1;
|
||||
express_cost_multiplier = 1
|
||||
},
|
||||
|
||||
@@ -2918,6 +2918,21 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/warden)
|
||||
"aZv" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 1;
|
||||
id = "ordnancebridge"
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "ordnancebridge";
|
||||
pixel_x = -24;
|
||||
req_one_access = list("maint_tunnels","science")
|
||||
},
|
||||
/obj/effect/turf_decal/caution/stand_clear{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/lesser)
|
||||
"aZL" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -3906,14 +3921,6 @@
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/ordnance/burnchamber)
|
||||
"bqy" = (
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/clipboard,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/ordnance/office)
|
||||
"bqJ" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -7312,16 +7319,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/supply/qm,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/greater)
|
||||
"cJU" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/door/window/right/directional/south{
|
||||
dir = 8;
|
||||
name = "Jim Norton's Quebecois Coffee";
|
||||
req_one_access = list("service","maint_tunnels")
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/green/line,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/cafeteria)
|
||||
"cKd" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/warning{
|
||||
dir = 4
|
||||
@@ -7826,6 +7823,19 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/security/prison)
|
||||
"cUp" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/plate,
|
||||
/obj/item/candle,
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/item/radio{
|
||||
desc = "An old handheld radio. You could use it, if you really wanted to.";
|
||||
icon_state = "radio";
|
||||
name = "old radio";
|
||||
pixel_y = 15
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/space_hut)
|
||||
"cUw" = (
|
||||
/obj/machinery/power/apc/auto_name/directional/east,
|
||||
/obj/structure/cable,
|
||||
@@ -9209,12 +9219,6 @@
|
||||
/obj/effect/spawner/random/engineering/flashlight,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/office)
|
||||
"dtp" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/candle,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/exit/departure_lounge)
|
||||
"dtB" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{
|
||||
dir = 8
|
||||
@@ -9366,20 +9370,6 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/fore)
|
||||
"dwD" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/door/airlock{
|
||||
name = "Custodial Closet"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/mapping_helpers/airlock/access/all/service/janitor,
|
||||
/obj/effect/landmark/navigate_destination/janitor,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"dwJ" = (
|
||||
/obj/structure/lattice,
|
||||
/obj/effect/spawner/random/structure/grille,
|
||||
@@ -9541,6 +9531,12 @@
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"dBV" = (
|
||||
/obj/docking_port/stationary/escape_pod{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"dBZ" = (
|
||||
/obj/item/clothing/head/cone{
|
||||
pixel_x = -4;
|
||||
@@ -10218,25 +10214,6 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"dOo" = (
|
||||
/obj/structure/safe,
|
||||
/obj/item/storage/secure/briefcase/riches,
|
||||
/obj/item/storage/backpack/duffelbag/syndie/hitman,
|
||||
/obj/item/card/id/advanced/silver/reaper,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/ballistic/revolver/russian,
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/book{
|
||||
desc = "An undeniably handy book.";
|
||||
icon_state = "bookknock";
|
||||
name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes"
|
||||
},
|
||||
/obj/effect/turf_decal/bot_white/left,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/command/nuke_storage)
|
||||
"dOs" = (
|
||||
/obj/structure/sign/warning/no_smoking,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -11124,6 +11101,10 @@
|
||||
"ecO" = (
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/service/library)
|
||||
"edl" = (
|
||||
/obj/docking_port/stationary/escape_pod,
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"edo" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/paper_bin,
|
||||
@@ -13694,6 +13675,15 @@
|
||||
/obj/effect/spawner/random/decoration/showcase,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/corporate_showroom)
|
||||
"faB" = (
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/genetics)
|
||||
"faD" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -13736,13 +13726,6 @@
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"fbO" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Surgery C Maintenance"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/greater)
|
||||
"fbP" = (
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/structure/cable,
|
||||
@@ -17027,6 +17010,20 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics/garden)
|
||||
"gpv" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/door/airlock{
|
||||
name = "Custodial Closet"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/obj/effect/mapping_helpers/airlock/access/all/service/janitor,
|
||||
/obj/effect/landmark/navigate_destination/janitor,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"gpB" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/iron,
|
||||
@@ -19095,6 +19092,18 @@
|
||||
"hbv" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/medical/coldroom)
|
||||
"hbC" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/purple,
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet/directional/south,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/research)
|
||||
"hbK" = (
|
||||
/turf/closed/wall,
|
||||
/area/station/maintenance/department/science/xenobiology)
|
||||
@@ -19944,19 +19953,6 @@
|
||||
/obj/item/radio/intercom/directional/west,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/bar)
|
||||
"hsh" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/plate,
|
||||
/obj/item/candle,
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/item/radio{
|
||||
desc = "An old handheld radio. You could use it, if you really wanted to.";
|
||||
icon_state = "radio";
|
||||
name = "old radio";
|
||||
pixel_y = 15
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/space_hut)
|
||||
"hsp" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -20082,12 +20078,6 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"hup" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Medbay Maintenance"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/aft)
|
||||
"huq" = (
|
||||
/obj/machinery/modular_computer/console/preset/id{
|
||||
dir = 4
|
||||
@@ -20395,15 +20385,6 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/medical/break_room)
|
||||
"hyI" = (
|
||||
/obj/item/kirbyplants/random,
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/airalarm/directional/east,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/genetics)
|
||||
"hyN" = (
|
||||
/obj/structure/sign/warning/secure_area,
|
||||
/turf/closed/wall/r_wall,
|
||||
@@ -21719,6 +21700,17 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/service)
|
||||
"hYh" = (
|
||||
/obj/machinery/computer/scan_consolenew{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/west,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/genetics)
|
||||
"hYr" = (
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable,
|
||||
@@ -23066,6 +23058,11 @@
|
||||
/obj/effect/spawner/random/food_or_drink/donkpockets,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/aft)
|
||||
"iuD" = (
|
||||
/obj/effect/spawner/random/vending/snackvend,
|
||||
/obj/machinery/newscaster/directional/west,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/hallway/primary/central)
|
||||
"iuJ" = (
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
|
||||
dir = 4
|
||||
@@ -24135,11 +24132,6 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/lesser)
|
||||
"iLG" = (
|
||||
/obj/effect/spawner/random/vending/snackvend,
|
||||
/obj/machinery/newscaster/directional/west,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/hallway/primary/central)
|
||||
"iLH" = (
|
||||
/obj/machinery/flasher/directional/west{
|
||||
id = "Cell 1"
|
||||
@@ -25701,6 +25693,16 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/security/office)
|
||||
"jkE" = (
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 6
|
||||
},
|
||||
/obj/structure/table,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/holosign_creator/atmos,
|
||||
/obj/item/holosign_creator/atmos,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/science/ordnance/office)
|
||||
"jkT" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
@@ -25923,18 +25925,6 @@
|
||||
/obj/structure/extinguisher_cabinet/directional/north,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/surgery/theatre)
|
||||
"jox" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = -6;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/phone{
|
||||
pixel_x = 6;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"jpr" = (
|
||||
/obj/structure/rack,
|
||||
/obj/effect/spawner/random/techstorage/command_all,
|
||||
@@ -26818,21 +26808,6 @@
|
||||
/obj/effect/landmark/blobstart,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/warehouse)
|
||||
"jDf" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 1;
|
||||
id = "ordnancebridge"
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "ordnancebridge";
|
||||
pixel_x = -24;
|
||||
req_one_access = list("maint_tunnels","science")
|
||||
},
|
||||
/obj/effect/turf_decal/caution/stand_clear{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/lesser)
|
||||
"jDk" = (
|
||||
/obj/effect/spawner/random/entertainment/arcade,
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
@@ -27960,18 +27935,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/command/heads_quarters/ce)
|
||||
"jWu" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/tile/purple,
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/extinguisher_cabinet/directional/south,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_y = 2
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/science/research)
|
||||
"jWR" = (
|
||||
/obj/item/radio/intercom/directional/east,
|
||||
/obj/effect/turf_decal/siding/wood{
|
||||
@@ -29915,6 +29878,13 @@
|
||||
/obj/machinery/light/directional/south,
|
||||
/turf/open/floor/wood,
|
||||
/area/station/service/library)
|
||||
"kJT" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Surgery C Maintenance"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/greater)
|
||||
"kKd" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -30442,6 +30412,21 @@
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port)
|
||||
"kRF" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 4;
|
||||
id = "ordnancebridge"
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "ordnancebridge";
|
||||
pixel_y = 24;
|
||||
req_one_access = list("maint_tunnels","science")
|
||||
},
|
||||
/obj/effect/turf_decal/caution/stand_clear{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/lesser)
|
||||
"kRV" = (
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 4
|
||||
@@ -39477,21 +39462,6 @@
|
||||
/obj/effect/landmark/start/chemist,
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/pharmacy)
|
||||
"oas" = (
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
dir = 4;
|
||||
id = "ordnancebridge"
|
||||
},
|
||||
/obj/machinery/button/door{
|
||||
id = "ordnancebridge";
|
||||
pixel_y = 24;
|
||||
req_one_access = list("maint_tunnels","science")
|
||||
},
|
||||
/obj/effect/turf_decal/caution/stand_clear{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/lesser)
|
||||
"oaw" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/structure/cable,
|
||||
@@ -40995,14 +40965,6 @@
|
||||
/obj/effect/turf_decal/tile/green/fourcorners,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/service/hydroponics)
|
||||
"oBN" = (
|
||||
/obj/item/candle,
|
||||
/obj/machinery/light_switch/directional/north,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/chapel)
|
||||
"oBO" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/landmark/start/medical_doctor,
|
||||
@@ -42702,6 +42664,12 @@
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/command/gateway)
|
||||
"pig" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/candle,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/hallway/secondary/exit/departure_lounge)
|
||||
"piw" = (
|
||||
/obj/effect/landmark/start/cyborg,
|
||||
/obj/machinery/holopad/secure,
|
||||
@@ -45021,14 +44989,6 @@
|
||||
},
|
||||
/turf/open/floor/circuit/telecomms,
|
||||
/area/station/science/xenobiology)
|
||||
"pZj" = (
|
||||
/obj/item/candle,
|
||||
/obj/machinery/light_switch/directional/west,
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/chapel)
|
||||
"pZn" = (
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 8
|
||||
@@ -45362,6 +45322,41 @@
|
||||
dir = 1
|
||||
},
|
||||
/area/station/service/chapel)
|
||||
"qgc" = (
|
||||
/obj/structure/closet/crate/secure/weapon{
|
||||
desc = "A secure clothing crate.";
|
||||
name = "formal uniform crate";
|
||||
req_access = list("armory")
|
||||
},
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/under/rank/security/warden/formal,
|
||||
/obj/item/clothing/suit/jacket/warden/blue,
|
||||
/obj/item/clothing/under/rank/security/head_of_security/formal,
|
||||
/obj/item/clothing/suit/jacket/hos/blue,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navywarden,
|
||||
/obj/item/clothing/head/hats/hos/beret/navyhos,
|
||||
/obj/structure/extinguisher_cabinet/directional/east,
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/lockers)
|
||||
"qgf" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -46710,6 +46705,14 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/medical/general,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/aft/greater)
|
||||
"qER" = (
|
||||
/obj/item/candle,
|
||||
/obj/machinery/light_switch/directional/west,
|
||||
/obj/effect/decal/cleanable/cobweb,
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/chapel)
|
||||
"qFj" = (
|
||||
/obj/structure/table,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
@@ -48141,10 +48144,6 @@
|
||||
},
|
||||
/turf/open/floor/engine,
|
||||
/area/station/science/cytology)
|
||||
"rec" = (
|
||||
/obj/docking_port/stationary/escape_pod,
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"ret" = (
|
||||
/obj/effect/spawner/random/trash/garbage{
|
||||
spawn_scatter_radius = 1
|
||||
@@ -48220,6 +48219,18 @@
|
||||
/obj/effect/spawner/random/decoration/showcase,
|
||||
/turf/open/floor/carpet,
|
||||
/area/station/command/corporate_showroom)
|
||||
"rgL" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/reagent_containers/cup/glass/mug/britcup{
|
||||
pixel_x = -6;
|
||||
pixel_y = 11
|
||||
},
|
||||
/obj/item/phone{
|
||||
pixel_x = 6;
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/iron,
|
||||
/area/station/cargo/drone_bay)
|
||||
"rgN" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/trimline/brown/filled/line{
|
||||
@@ -59513,41 +59524,6 @@
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"uXE" = (
|
||||
/obj/structure/closet/crate/secure/weapon{
|
||||
desc = "A secure clothing crate.";
|
||||
name = "formal uniform crate";
|
||||
req_access = list("armory")
|
||||
},
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/under/rank/security/officer/formal,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/suit/jacket/officer/blue,
|
||||
/obj/item/clothing/under/rank/security/warden/formal,
|
||||
/obj/item/clothing/suit/jacket/warden/blue,
|
||||
/obj/item/clothing/under/rank/security/head_of_security/formal,
|
||||
/obj/item/clothing/suit/jacket/hos/blue,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navywarden,
|
||||
/obj/item/clothing/head/hats/hos/beret/navyhos,
|
||||
/obj/structure/extinguisher_cabinet/directional/east,
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/blue/half/contrasted,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/lockers)
|
||||
"uXG" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Psychology Maintenance"
|
||||
@@ -59890,20 +59866,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/cafeteria,
|
||||
/area/station/service/kitchen)
|
||||
"veo" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
/obj/item/cigbutt/cigarbutt,
|
||||
/obj/item/candle{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/storage/box/matches{
|
||||
pixel_x = 1;
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/abandoned)
|
||||
"veO" = (
|
||||
/obj/effect/turf_decal/tile/blue/anticorner/contrasted{
|
||||
dir = 8
|
||||
@@ -60027,17 +59989,6 @@
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/chemistry)
|
||||
"vhq" = (
|
||||
/obj/machinery/computer/scan_consolenew{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/siding/purple{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/light/directional/west,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/science/genetics)
|
||||
"vht" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 9
|
||||
@@ -60070,6 +60021,14 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/security/evidence)
|
||||
"vhE" = (
|
||||
/obj/item/candle,
|
||||
/obj/machinery/light_switch/directional/north,
|
||||
/obj/effect/decal/cleanable/cobweb/cobweb2,
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/chapel)
|
||||
"vhI" = (
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
@@ -62649,12 +62608,6 @@
|
||||
/obj/effect/mapping_helpers/broken_floor,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/starboard/greater)
|
||||
"waq" = (
|
||||
/obj/docking_port/stationary/escape_pod{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/space/basic,
|
||||
/area/space)
|
||||
"was" = (
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -64735,6 +64688,25 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/department/engine)
|
||||
"wOQ" = (
|
||||
/obj/structure/safe,
|
||||
/obj/item/storage/secure/briefcase/riches,
|
||||
/obj/item/storage/backpack/duffelbag/syndie/hitman,
|
||||
/obj/item/card/id/advanced/silver/reaper,
|
||||
/obj/item/lazarus_injector,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/ballistic/revolver/russian,
|
||||
/obj/item/ammo_box/a357,
|
||||
/obj/item/clothing/neck/stethoscope,
|
||||
/obj/item/book{
|
||||
desc = "An undeniably handy book.";
|
||||
icon_state = "bookknock";
|
||||
name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes"
|
||||
},
|
||||
/obj/effect/turf_decal/bot_white/left,
|
||||
/obj/effect/turf_decal/tile/neutral/fourcorners,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/ai_monitored/command/nuke_storage)
|
||||
"wOR" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
@@ -66547,6 +66519,20 @@
|
||||
/obj/effect/spawner/random/bureaucracy/pen,
|
||||
/turf/open/floor/iron,
|
||||
/area/station/engineering/gravity_generator)
|
||||
"xvT" = (
|
||||
/obj/effect/decal/cleanable/dirt/dust,
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
/obj/item/cigbutt/cigarbutt,
|
||||
/obj/item/candle{
|
||||
pixel_x = -5
|
||||
},
|
||||
/obj/item/storage/box/matches{
|
||||
pixel_x = 1;
|
||||
pixel_y = -1
|
||||
},
|
||||
/turf/open/floor/iron/white,
|
||||
/area/station/medical/abandoned)
|
||||
"xvZ" = (
|
||||
/obj/structure/extinguisher_cabinet/directional/east,
|
||||
/turf/open/floor/iron/freezer,
|
||||
@@ -68737,6 +68723,12 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/hallway/secondary/entry)
|
||||
"ykp" = (
|
||||
/obj/machinery/door/airlock/maintenance{
|
||||
name = "Medbay Maintenance"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/aft)
|
||||
"ykI" = (
|
||||
/obj/effect/landmark/start/hangover,
|
||||
/turf/open/floor/engine{
|
||||
@@ -68750,6 +68742,16 @@
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
/turf/open/floor/plating,
|
||||
/area/station/maintenance/port/fore)
|
||||
"ykR" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/door/window/right/directional/south{
|
||||
dir = 8;
|
||||
name = "Jim Norton's Quebecois Coffee";
|
||||
req_one_access = list("service","maint_tunnels")
|
||||
},
|
||||
/obj/effect/turf_decal/trimline/green/line,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/station/service/cafeteria)
|
||||
"ykS" = (
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
|
||||
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
|
||||
@@ -78459,7 +78461,7 @@ tkr
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
rec
|
||||
edl
|
||||
cSk
|
||||
auJ
|
||||
jMZ
|
||||
@@ -80316,7 +80318,7 @@ tsd
|
||||
tsd
|
||||
tsd
|
||||
hUN
|
||||
hsh
|
||||
cUp
|
||||
jIR
|
||||
lMJ
|
||||
gQK
|
||||
@@ -87520,7 +87522,7 @@ tzE
|
||||
ucc
|
||||
tSw
|
||||
tSw
|
||||
fbO
|
||||
kJT
|
||||
tSw
|
||||
tSw
|
||||
tSw
|
||||
@@ -87785,7 +87787,7 @@ bEL
|
||||
keq
|
||||
scb
|
||||
suz
|
||||
veo
|
||||
xvT
|
||||
tSw
|
||||
vUM
|
||||
bhS
|
||||
@@ -88285,7 +88287,7 @@ sWO
|
||||
oxW
|
||||
dqN
|
||||
vlH
|
||||
hup
|
||||
ykp
|
||||
miy
|
||||
tFr
|
||||
nMf
|
||||
@@ -89233,7 +89235,7 @@ fru
|
||||
wrG
|
||||
uzb
|
||||
phP
|
||||
jox
|
||||
rgL
|
||||
jXu
|
||||
tfR
|
||||
jXu
|
||||
@@ -90527,7 +90529,7 @@ rlU
|
||||
vis
|
||||
mCi
|
||||
ixT
|
||||
dOo
|
||||
wOQ
|
||||
rlU
|
||||
aaa
|
||||
aEH
|
||||
@@ -90829,7 +90831,7 @@ sVY
|
||||
sVY
|
||||
sVY
|
||||
sVY
|
||||
iLG
|
||||
iuD
|
||||
xxk
|
||||
ahr
|
||||
bMY
|
||||
@@ -91052,7 +91054,7 @@ vvH
|
||||
cFp
|
||||
guX
|
||||
mgl
|
||||
cJU
|
||||
ykR
|
||||
wAj
|
||||
pPH
|
||||
hSg
|
||||
@@ -91646,7 +91648,7 @@ bsZ
|
||||
rJI
|
||||
taX
|
||||
tSw
|
||||
pZj
|
||||
qER
|
||||
gmX
|
||||
lHK
|
||||
tey
|
||||
@@ -93188,7 +93190,7 @@ tSw
|
||||
tSw
|
||||
xWF
|
||||
tSw
|
||||
oBN
|
||||
vhE
|
||||
iZi
|
||||
kVN
|
||||
qri
|
||||
@@ -93702,10 +93704,10 @@ tSw
|
||||
tSw
|
||||
sGA
|
||||
tSw
|
||||
dtp
|
||||
pig
|
||||
fgl
|
||||
btx
|
||||
dtp
|
||||
pig
|
||||
otu
|
||||
otu
|
||||
otu
|
||||
@@ -94091,7 +94093,7 @@ isc
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
rec
|
||||
edl
|
||||
tYS
|
||||
lgS
|
||||
jKq
|
||||
@@ -97031,7 +97033,7 @@ cId
|
||||
rQl
|
||||
oIg
|
||||
wBq
|
||||
vhq
|
||||
hYh
|
||||
vKW
|
||||
jNX
|
||||
jxW
|
||||
@@ -97188,7 +97190,7 @@ aaa
|
||||
rrt
|
||||
aaa
|
||||
ahj
|
||||
uXE
|
||||
qgc
|
||||
sCi
|
||||
kiW
|
||||
rfb
|
||||
@@ -98055,7 +98057,7 @@ bBo
|
||||
gwf
|
||||
gfZ
|
||||
gqm
|
||||
hyI
|
||||
faB
|
||||
cDA
|
||||
jrb
|
||||
lkL
|
||||
@@ -99098,7 +99100,7 @@ wna
|
||||
oFX
|
||||
lWN
|
||||
hND
|
||||
jDf
|
||||
aZv
|
||||
iKL
|
||||
nFa
|
||||
nFa
|
||||
@@ -101159,7 +101161,7 @@ svS
|
||||
svS
|
||||
svS
|
||||
svS
|
||||
oas
|
||||
kRF
|
||||
dKC
|
||||
anS
|
||||
lMJ
|
||||
@@ -102166,7 +102168,7 @@ fnh
|
||||
mMX
|
||||
moF
|
||||
klT
|
||||
bqy
|
||||
jkE
|
||||
svS
|
||||
dKC
|
||||
lMW
|
||||
@@ -106017,7 +106019,7 @@ gcV
|
||||
nNe
|
||||
nbS
|
||||
aHM
|
||||
jWu
|
||||
hbC
|
||||
oWk
|
||||
ddu
|
||||
wmi
|
||||
@@ -106257,7 +106259,7 @@ unL
|
||||
uNd
|
||||
unL
|
||||
unL
|
||||
dwD
|
||||
gpv
|
||||
unL
|
||||
tUn
|
||||
tUn
|
||||
@@ -106695,7 +106697,7 @@ aaa
|
||||
aaa
|
||||
szp
|
||||
aaa
|
||||
waq
|
||||
dBV
|
||||
aaa
|
||||
szp
|
||||
szp
|
||||
@@ -114707,7 +114709,7 @@ dgm
|
||||
dgB
|
||||
fJy
|
||||
aaa
|
||||
waq
|
||||
dBV
|
||||
aaa
|
||||
fJy
|
||||
oAQ
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new"
|
||||
///from base of turf/proc/onShuttleMove(): (turf/new_turf)
|
||||
#define COMSIG_TURF_ON_SHUTTLE_MOVE "turf_on_shuttle_move"
|
||||
///from base of /datum/turf_reservation/proc/Release: (datum/turf_reservation/reservation)
|
||||
#define COMSIG_TURF_RESERVATION_RELEASED "turf_reservation_released"
|
||||
///from /turf/open/temperature_expose(datum/gas_mixture/air, exposed_temperature)
|
||||
#define COMSIG_TURF_EXPOSE "turf_expose"
|
||||
///from /turf/proc/immediate_calculate_adjacent_turfs()
|
||||
|
||||
@@ -34,6 +34,8 @@ GLOBAL_VAR_INIT(glide_size_multiplier, 1.0)
|
||||
#define MOVEMENT_LOOP_IGNORE_PRIORITY (1<<1)
|
||||
///Should we override the loop's glide?
|
||||
#define MOVEMENT_LOOP_IGNORE_GLIDE (1<<2)
|
||||
///Should we not update our movables dir on move?
|
||||
#define MOVEMENT_LOOP_NO_DIR_UPDATE (1<<3)
|
||||
|
||||
//Index defines for movement bucket data packets
|
||||
#define MOVEMENT_BUCKET_TIME 1
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#define IGNORE_DIGITIGRADE (1<<18)
|
||||
/// Has contextual screentips when HOVERING OVER OTHER objects
|
||||
#define ITEM_HAS_CONTEXTUAL_SCREENTIPS (1 << 19)
|
||||
/// No blood overlay is allowed to appear on this item, and it cannot gain blood DNA forensics
|
||||
#define NO_BLOOD_ON_ITEM (1 << 20)
|
||||
|
||||
// Flags for the clothing_flags var on /obj/item/clothing
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#define TRANSIT_REQUEST 1
|
||||
#define TRANSIT_READY 2
|
||||
|
||||
#define SHUTTLE_TRANSIT_BORDER 8
|
||||
#define SHUTTLE_TRANSIT_BORDER 16
|
||||
|
||||
#define PARALLAX_LOOP_TIME 25
|
||||
#define HYPERSPACE_END_TIME 5
|
||||
|
||||
@@ -204,6 +204,7 @@
|
||||
#define FIRE_PRIORITY_FLUIDS 20
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_NPC 20
|
||||
#define FIRE_PRIORITY_HYPERSPACE_DRIFT 20
|
||||
#define FIRE_PRIORITY_NPC_MOVEMENT 21
|
||||
#define FIRE_PRIORITY_NPC_ACTIONS 22
|
||||
#define FIRE_PRIORITY_PATHFINDING 23
|
||||
|
||||
@@ -319,6 +319,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
/// Increases chance of getting special traumas, makes them harder to cure
|
||||
#define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost"
|
||||
#define TRAIT_SPACEWALK "spacewalk"
|
||||
/// Sanity trait to keep track of when we're in hyperspace and add the appropriate element if we werent
|
||||
#define TRAIT_HYPERSPACED "hyperspaced"
|
||||
///Gives the movable free hyperspace movement without being pulled during shuttle transit
|
||||
#define TRAIT_FREE_HYPERSPACE_MOVEMENT "free_hyperspace_movement"
|
||||
/// Gets double arcade prizes
|
||||
#define TRAIT_GAMERGOD "gamer-god"
|
||||
#define TRAIT_GIANT "giant"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#define STYLE_TAUR_PAW (1<<3)
|
||||
#define STYLE_TAUR_HOOF (1<<4)
|
||||
#define STYLE_TAUR_ALL (STYLE_TAUR_SNAKE|STYLE_TAUR_PAW|STYLE_TAUR_HOOF)
|
||||
#define STYLE_TESHARI (1<<6) //teshari clothes and shit
|
||||
|
||||
// We don't use the HUD for these, they have their own menu.
|
||||
#define LEWD_SLOT_VAGINA (1<<0)
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
///List of all vars that will not be copied over when using duplicate_object()
|
||||
GLOBAL_LIST_INIT(duplicate_forbidden_vars, list(
|
||||
"actions",
|
||||
"active_hud_list",
|
||||
"active_timers",
|
||||
"AIStatus",
|
||||
"appearance",
|
||||
"area",
|
||||
"atmos_adjacent_turfs",
|
||||
"bodyparts",
|
||||
"ckey",
|
||||
"comp_lookup",
|
||||
"computer_id",
|
||||
"contents",
|
||||
"cooldowns",
|
||||
"datum_components",
|
||||
"external_organs",
|
||||
"external_organs_slot",
|
||||
"group",
|
||||
"hand_bodyparts",
|
||||
"held_items",
|
||||
"hud_list",
|
||||
"implants",
|
||||
"important_recursive_contents",
|
||||
"internal_organs",
|
||||
"internal_organs_slot",
|
||||
"key",
|
||||
"lastKnownIP",
|
||||
"loc",
|
||||
"locs",
|
||||
"managed_overlays",
|
||||
"managed_vis_overlays",
|
||||
"overlays",
|
||||
"overlays_standing",
|
||||
"parent",
|
||||
"parent_type",
|
||||
"power_supply",
|
||||
"quirks",
|
||||
"reagents",
|
||||
"signal_procs",
|
||||
"status_traits",
|
||||
"stat",
|
||||
"tag",
|
||||
"tgui_shared_states",
|
||||
"type",
|
||||
"vars",
|
||||
"verbs",
|
||||
"x", "y", "z",
|
||||
))
|
||||
GLOBAL_PROTECT(duplicate_forbidden_vars)
|
||||
|
||||
/**
|
||||
* # duplicate_object
|
||||
*
|
||||
* Makes a copy of an item and transfers most vars over, barring GLOB.duplicate_forbidden_vars
|
||||
* Args:
|
||||
* original - Atom being duplicated
|
||||
* spawning_location - Turf where the duplicated atom will be spawned at.
|
||||
*/
|
||||
/proc/duplicate_object(atom/original, turf/spawning_location)
|
||||
RETURN_TYPE(original.type)
|
||||
if(!original)
|
||||
return
|
||||
|
||||
var/atom/made_copy = new original.type(spawning_location)
|
||||
|
||||
for(var/atom_vars in original.vars - GLOB.duplicate_forbidden_vars)
|
||||
if(islist(original.vars[atom_vars]))
|
||||
var/list/var_list = original.vars[atom_vars]
|
||||
made_copy.vars[atom_vars] = var_list.Copy()
|
||||
continue
|
||||
else if(istype(original.vars[atom_vars], /datum) || ismob(original.vars[atom_vars]))
|
||||
continue // this would reference the original's object, that will break when it is used or deleted.
|
||||
made_copy.vars[atom_vars] = original.vars[atom_vars]
|
||||
|
||||
if(isliving(made_copy))
|
||||
if(iscarbon(made_copy))
|
||||
var/mob/living/carbon/original_carbon = original
|
||||
var/mob/living/carbon/copied_carbon = made_copy
|
||||
//transfer DNA over (also body features), then update skin color.
|
||||
original_carbon.dna.transfer_identity(copied_carbon, transfer_SE = TRUE)
|
||||
copied_carbon.updateappearance(mutcolor_update = TRUE)
|
||||
|
||||
var/mob/living/original_living = original
|
||||
//transfer implants, we do this so the original's implants being removed won't destroy ours.
|
||||
for(var/obj/item/implant/original_implants as anything in original_living.implants)
|
||||
var/obj/item/implant/copied_implant = new original_implants.type
|
||||
copied_implant.implant(made_copy, silent = TRUE, force = TRUE)
|
||||
//transfer quirks, we do this because transfering the original's quirks keeps the 'owner' as the original.
|
||||
for(var/datum/quirk/original_quirks as anything in original_living.quirks)
|
||||
original_living.add_quirk(original_quirks.type)
|
||||
|
||||
return made_copy
|
||||
@@ -189,6 +189,7 @@ DEFINE_BITFIELD(item_flags, list(
|
||||
"SLOWS_WHILE_IN_HAND" = SLOWS_WHILE_IN_HAND,
|
||||
"SURGICAL_TOOL" = SURGICAL_TOOL,
|
||||
"XENOMORPH_HOLDABLE" = XENOMORPH_HOLDABLE,
|
||||
"NO_BLOOD_ON_ITEM" = NO_BLOOD_ON_ITEM,
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(flags_inv, list(
|
||||
|
||||
@@ -57,6 +57,3 @@ GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/comp
|
||||
|
||||
GLOBAL_LIST_EMPTY(roundstart_station_borgcharger_areas) // List of area names of roundstart station cyborg rechargers, for the low charge/no charge cyborg screen alert tooltips.
|
||||
GLOBAL_LIST_EMPTY(roundstart_station_mechcharger_areas) // List of area names of roundstart station mech rechargers, for the low charge/no charge mech screen alert tooltips.
|
||||
|
||||
///List of all types of '/obj/machinery/mining_ltsrbt'
|
||||
GLOBAL_LIST_EMPTY(mining_ltsrbt)
|
||||
|
||||
@@ -26,11 +26,11 @@ SUBSYSTEM_DEF(materials)
|
||||
new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE),
|
||||
new /datum/stack_recipe("Sink Frame", /obj/structure/sinkframe, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE),
|
||||
new /datum/stack_recipe("Material floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE, category = CAT_TILES),
|
||||
new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 50, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS),
|
||||
new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS),
|
||||
)
|
||||
///List of stackcrafting recipes for materials using rigid recipes
|
||||
var/list/rigid_stack_recipes = list(
|
||||
new /datum/stack_recipe("Carving block", /obj/structure/carving_block, 5, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_STRUCTURE),
|
||||
new /datum/stack_recipe("Carving block", /obj/structure/carving_block, 5, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_STRUCTURE),
|
||||
)
|
||||
|
||||
///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
///This subsystem handles the hyperspace shuttle pull movement loops
|
||||
MOVEMENT_SUBSYSTEM_DEF(hyperspace_drift)
|
||||
name = "Hyperspace Drift"
|
||||
priority = FIRE_PRIORITY_HYPERSPACE_DRIFT
|
||||
flags = SS_NO_INIT|SS_TICKER
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
@@ -104,12 +104,12 @@ SUBSYSTEM_DEF(movement)
|
||||
smash_bucket(bucket_time = loop.timer) // We can't pass an index in for context because we don't know our position
|
||||
|
||||
/datum/controller/subsystem/movement/proc/add_loop(datum/move_loop/add)
|
||||
add.start_loop()
|
||||
add.loop_started()
|
||||
if(QDELETED(add))
|
||||
return
|
||||
queue_loop(add)
|
||||
|
||||
/datum/controller/subsystem/movement/proc/remove_loop(datum/move_loop/remove)
|
||||
dequeue_loop(remove)
|
||||
remove.stop_loop()
|
||||
remove.loop_stopped()
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
var/timer = 0
|
||||
///Is this loop running or not
|
||||
var/running = FALSE
|
||||
///Track if we're currently paused
|
||||
var/paused = FALSE
|
||||
|
||||
/datum/move_loop/New(datum/movement_packet/owner, datum/controller/subsystem/movement/controller, atom/moving, priority, flags, datum/extra_info)
|
||||
src.owner = owner
|
||||
@@ -51,7 +53,8 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/move_loop/proc/start_loop()
|
||||
///Called when a loop is starting by a movement subsystem
|
||||
/datum/move_loop/proc/loop_started()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_MOVELOOP_START)
|
||||
running = TRUE
|
||||
@@ -62,7 +65,8 @@
|
||||
return
|
||||
timer = world.time + delay
|
||||
|
||||
/datum/move_loop/proc/stop_loop()
|
||||
///Called when a loop is stopped, doesn't stop the loop itself
|
||||
/datum/move_loop/proc/loop_stopped()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
running = FALSE
|
||||
SEND_SIGNAL(src, COMSIG_MOVELOOP_STOP)
|
||||
@@ -126,6 +130,25 @@
|
||||
/datum/move_loop/proc/move()
|
||||
return FALSE
|
||||
|
||||
|
||||
///Pause our loop untill restarted with resume_loop()
|
||||
/datum/move_loop/proc/pause_loop()
|
||||
if(!controller || !running || paused) //we dead
|
||||
return
|
||||
|
||||
//Dequeue us from our current bucket
|
||||
controller.dequeue_loop(src)
|
||||
paused = TRUE
|
||||
|
||||
///Resume our loop after being paused by pause_loop()
|
||||
/datum/move_loop/proc/resume_loop()
|
||||
if(!controller || !running || !paused)
|
||||
return
|
||||
|
||||
controller.queue_loop(src)
|
||||
timer = world.time
|
||||
paused = FALSE
|
||||
|
||||
///Removes the atom from some movement subsystem. Defaults to SSmovement
|
||||
/datum/controller/subsystem/move_manager/proc/stop_looping(atom/movable/moving, datum/controller/subsystem/movement/subsystem = SSmovement)
|
||||
var/datum/movement_packet/our_info = moving.move_packet
|
||||
@@ -168,7 +191,7 @@
|
||||
|
||||
/datum/move_loop/move/move()
|
||||
var/atom/old_loc = moving.loc
|
||||
moving.Move(get_step(moving, direction), direction)
|
||||
moving.Move(get_step(moving, direction), direction, FALSE, !(flags & MOVEMENT_LOOP_NO_DIR_UPDATE))
|
||||
// We cannot rely on the return value of Move(), we care about teleports and it doesn't
|
||||
// Moving also can be null on occasion, if the move deleted it and therefor us
|
||||
return old_loc != moving?.loc
|
||||
@@ -376,7 +399,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/move_loop/has_target/jps/start_loop()
|
||||
/datum/move_loop/has_target/jps/loop_started()
|
||||
. = ..()
|
||||
INVOKE_ASYNC(src, PROC_REF(recalculate_path))
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
/// what slots it needs to be equipped to to work
|
||||
var/slot_equip
|
||||
|
||||
/datum/component/onwear_mood/Initialize(datum/mood_event/saved_event, examine_string, slot_equip = ITEM_SLOT_ON_BODY)
|
||||
/datum/component/onwear_mood/Initialize(datum/mood_event/saved_event_type, examine_string, slot_equip = ITEM_SLOT_ON_BODY)
|
||||
|
||||
if(!isitem(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
@@ -0,0 +1,158 @@
|
||||
|
||||
//Below defines are for the is_holding_on proc to see how well they're holding on and respond accordingly
|
||||
///Instead of a high move force we just get launched away dramatically because we're that hopeless
|
||||
#define SUPER_NOT_HOLDING_ON 0
|
||||
///We're not holdin on and will get thrown off
|
||||
#define NOT_HOLDING_ON 1
|
||||
///We're holding on, but will be pulled slowly
|
||||
#define CLINGING 2
|
||||
///We're holding on really well and aren't suffering from any pull
|
||||
#define ALL_GOOD 3
|
||||
|
||||
///Gets added to all movables that enter hyperspace and are supposed to suffer from "hyperspace drift"
|
||||
///This lets people fly around shuttles during transit using jetpacks, or cling to the side if they got a spacesuit
|
||||
///Dumping into deepspace is handled by the hyperspace turf, not the component.
|
||||
///Not giving something this component while on hyperspace is safe, it just means free movement like carps
|
||||
/datum/component/shuttle_cling
|
||||
///The direction we push stuff towards
|
||||
var/direction
|
||||
///Path to the hyperspace tile, so we know if we're in hyperspace
|
||||
var/hyperspace_type = /turf/open/space/transit
|
||||
|
||||
///Our moveloop, handles the transit pull
|
||||
var/datum/move_loop/move/hyperloop
|
||||
|
||||
///If we can "hold on", how often do we move?
|
||||
var/clinging_move_delay = 1 SECONDS
|
||||
///If we can't hold onto anything, how fast do we get pulled away?
|
||||
var/not_clinging_move_delay = 0.2 SECONDS
|
||||
|
||||
/datum/component/shuttle_cling/Initialize(direction)
|
||||
. = ..()
|
||||
|
||||
if(!ismovable(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
src.direction = direction
|
||||
|
||||
ADD_TRAIT(parent, TRAIT_HYPERSPACED, src)
|
||||
|
||||
RegisterSignals(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UNBUCKLE, COMSIG_ATOM_NO_LONGER_PULLED), PROC_REF(update_state))
|
||||
|
||||
hyperloop = SSmove_manager.move(moving = parent, direction = direction, delay = not_clinging_move_delay, subsystem = SShyperspace_drift, priority = MOVEMENT_ABOVE_SPACE_PRIORITY, flags = MOVEMENT_LOOP_START_FAST | MOVEMENT_LOOP_NO_DIR_UPDATE)
|
||||
|
||||
update_state(parent) //otherwise we'll get moved 1 tile before we can correct ourselves, which isnt super bad but just looks jank
|
||||
|
||||
///Check if we're in hyperspace and our state in hyperspace
|
||||
/datum/component/shuttle_cling/proc/update_state()
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(!is_on_hyperspace(parent))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/should_loop = FALSE
|
||||
|
||||
switch(is_holding_on(parent))
|
||||
if(SUPER_NOT_HOLDING_ON)
|
||||
launch_very_hard(parent)
|
||||
should_loop = TRUE
|
||||
if(NOT_HOLDING_ON)
|
||||
hyperloop.set_delay(not_clinging_move_delay)
|
||||
should_loop = TRUE
|
||||
hyperloop.direction = direction //we're not close to anything so reset direction if we got diagonalized
|
||||
if(CLINGING)
|
||||
hyperloop.set_delay(clinging_move_delay)
|
||||
should_loop = TRUE
|
||||
update_drift_direction(parent)
|
||||
if(ALL_GOOD)
|
||||
should_loop = FALSE
|
||||
|
||||
//Do pause/unpause/nothing for the hyperloop
|
||||
if(should_loop && hyperloop.paused)
|
||||
hyperloop.resume_loop()
|
||||
else if(!should_loop && !hyperloop.paused)
|
||||
hyperloop.pause_loop()
|
||||
|
||||
///Check if we're "holding on" to the shuttle
|
||||
/datum/component/shuttle_cling/proc/is_holding_on(atom/movable/movee)
|
||||
if(movee.pulledby || !isturf(movee.loc))
|
||||
return ALL_GOOD
|
||||
|
||||
if(!isliving(movee))
|
||||
if(is_tile_solid(get_step(movee, direction))) //something is blocking us so do the cool drift
|
||||
return CLINGING
|
||||
return SUPER_NOT_HOLDING_ON
|
||||
|
||||
var/mob/living/living = movee
|
||||
|
||||
//Check if we can interact with stuff (checks for alive, arms, stun, etc)
|
||||
if(!living.canUseTopic(living, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE, need_hands = TRUE))
|
||||
return NOT_HOLDING_ON
|
||||
|
||||
if(living.buckled)
|
||||
return ALL_GOOD
|
||||
|
||||
for(var/atom/handlebar in range(living, 1))
|
||||
if(isclosedturf(handlebar))
|
||||
return CLINGING
|
||||
if(isobj(handlebar))
|
||||
var/obj/object = handlebar
|
||||
if(object.anchored && object.density)
|
||||
return CLINGING
|
||||
return NOT_HOLDING_ON
|
||||
|
||||
///Are we on a hyperspace tile? There's some special bullshit with lattices so we just wrap this check
|
||||
/datum/component/shuttle_cling/proc/is_on_hyperspace(atom/movable/clinger)
|
||||
if(istype(clinger.loc, hyperspace_type) && !(locate(/obj/structure/lattice) in clinger.loc))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
///Launch the atom very hard, away from hyperspace
|
||||
/datum/component/shuttle_cling/proc/launch_very_hard(atom/movable/byebye)
|
||||
byebye.safe_throw_at(get_edge_target_turf(byebye, direction), 200, 1, spin = TRUE, force = MOVE_FORCE_EXTREMELY_STRONG)
|
||||
|
||||
///Check if we arent just being blocked, and if we are give us some diagonal push so we cant just infinitely cling to the front
|
||||
/datum/component/shuttle_cling/proc/update_drift_direction(atom/movable/clinger)
|
||||
var/turf/potential_blocker = get_step(clinger, direction)
|
||||
//We are not being blocked, so just give us cardinal drift
|
||||
if(!is_tile_solid(potential_blocker))
|
||||
hyperloop.direction = direction
|
||||
return
|
||||
|
||||
//We're already moving diagonally
|
||||
if(hyperloop.direction != direction)
|
||||
var/side_dir = hyperloop.direction - direction
|
||||
|
||||
if(is_tile_solid(get_step(clinger, side_dir)))
|
||||
hyperloop.direction = direction + turn(side_dir, 180) //We're bumping a wall to the side, so switch to the other side_dir (yes this adds pingpong protocol)
|
||||
return
|
||||
|
||||
//Get the directions from the side of our current drift direction (so if we have drift south, get all cardinals and remove north and south, leaving only east and west)
|
||||
var/side_dirs = shuffle(GLOB.cardinals - direction - turn(direction, 180))
|
||||
|
||||
//We check if one side is solid
|
||||
if(!is_tile_solid(get_step(clinger, side_dirs[1])))
|
||||
hyperloop.direction = direction + side_dirs[1]
|
||||
else //if one side isnt solid, send it to the other side (it can also be solid but we dont care cause we're boxed in then and not like itll matter much then)
|
||||
hyperloop.direction = direction + side_dirs[2]
|
||||
|
||||
///Check if it's a closed turf or contains a dense object
|
||||
/datum/component/shuttle_cling/proc/is_tile_solid(turf/maybe_solid)
|
||||
if(isclosedturf(maybe_solid))
|
||||
return TRUE
|
||||
for(var/obj/blocker in maybe_solid.contents)
|
||||
if(blocker.density)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/component/shuttle_cling/Destroy(force, silent)
|
||||
REMOVE_TRAIT(parent, TRAIT_HYPERSPACED, src)
|
||||
QDEL_NULL(hyperloop)
|
||||
|
||||
return ..()
|
||||
|
||||
#undef SUPER_NOT_HOLDING_ON
|
||||
#undef NOT_HOLDING_ON
|
||||
#undef CLINGING
|
||||
#undef ALL_GOOD
|
||||
@@ -417,23 +417,33 @@
|
||||
alert_type = null
|
||||
duration = -1
|
||||
|
||||
/datum/status_effect/neck_slice/on_apply()
|
||||
if(!ishuman(owner))
|
||||
return FALSE
|
||||
if(!owner.get_bodypart(BODY_ZONE_HEAD))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/neck_slice/tick()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
var/obj/item/bodypart/throat = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(H.stat == DEAD || !throat)
|
||||
H.remove_status_effect(/datum/status_effect/neck_slice)
|
||||
var/obj/item/bodypart/throat = owner.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(owner.stat == DEAD || !throat) // they can lose their head while it's going.
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
var/still_bleeding = FALSE
|
||||
for(var/thing in throat.wounds)
|
||||
var/datum/wound/W = thing
|
||||
if(W.wound_type == WOUND_SLASH && W.severity > WOUND_SEVERITY_MODERATE)
|
||||
for(var/datum/wound/bleeding_thing as anything in throat.wounds)
|
||||
if(bleeding_thing.wound_type == WOUND_SLASH && bleeding_thing.severity > WOUND_SEVERITY_MODERATE)
|
||||
still_bleeding = TRUE
|
||||
break
|
||||
if(!still_bleeding)
|
||||
H.remove_status_effect(/datum/status_effect/neck_slice)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(prob(10))
|
||||
H.emote(pick("gasp", "gag", "choke"))
|
||||
owner.emote(pick("gasp", "gag", "choke"))
|
||||
|
||||
/datum/status_effect/neck_slice/get_examine_text()
|
||||
return span_warning("[owner.p_their(TRUE)] neck is cut and is bleeding profusely!")
|
||||
|
||||
/mob/living/proc/apply_necropolis_curse(set_curse)
|
||||
var/datum/status_effect/necropolis_curse/C = has_status_effect(/datum/status_effect/necropolis_curse)
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
// Here's where we rewrite how byond handles movement except slightly different
|
||||
// To be removed on step_ conversion
|
||||
// All this work to prevent a second bump
|
||||
/atom/movable/Move(atom/newloc, direction, glide_size_override = 0)
|
||||
/atom/movable/Move(atom/newloc, direction, glide_size_override = 0, update_dir = TRUE)
|
||||
. = FALSE
|
||||
if(!newloc || newloc == loc)
|
||||
return
|
||||
@@ -524,7 +524,7 @@
|
||||
if(!direction)
|
||||
direction = get_dir(src, newloc)
|
||||
|
||||
if(set_dir_on_move && dir != direction && !face_mouse) // SKYRAT EDIT CHANGE
|
||||
if(set_dir_on_move && dir != direction && update_dir && !face_mouse) // SKYRAT EDIT - && !face_mouse
|
||||
setDir(direction)
|
||||
|
||||
var/is_multi_tile_object = is_multi_tile_object(src)
|
||||
@@ -589,7 +589,7 @@
|
||||
|
||||
////////////////////////////////////////
|
||||
|
||||
/atom/movable/Move(atom/newloc, direct, glide_size_override = 0)
|
||||
/atom/movable/Move(atom/newloc, direct, glide_size_override = 0, update_dir = TRUE)
|
||||
var/atom/movable/pullee = pulling
|
||||
var/turf/current_turf = loc
|
||||
if(!moving_from_pull)
|
||||
@@ -650,7 +650,7 @@
|
||||
moving_diagonally = SECOND_DIAG_STEP
|
||||
. = step(src, SOUTH)
|
||||
if(moving_diagonally == SECOND_DIAG_STEP)
|
||||
if(!. && set_dir_on_move && !face_mouse) // SKYRAT EDIT CHANGE
|
||||
if(!. && set_dir_on_move && update_dir && !face_mouse) // SKYRAT EDIT CHANGE - && !face_mouse
|
||||
setDir(first_step_dir)
|
||||
else if(!inertia_moving)
|
||||
newtonian_move(direct)
|
||||
@@ -691,7 +691,7 @@
|
||||
|
||||
last_move = direct
|
||||
|
||||
if(set_dir_on_move && dir != direct && !face_mouse) // SKYRAT EDIT CHANGE
|
||||
if(set_dir_on_move && dir != direct && update_dir && !face_mouse) // SKYRAT EDIT CHANGE - && !face_mouse)
|
||||
setDir(direct)
|
||||
if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc, direct, glide_size_override)) //movement failed due to buckled mob(s)
|
||||
. = FALSE
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
. += span_notice("The status display reads: Storing up to <b>[materials.max_amount]</b> material units.<br>Material consumption at <b>[creation_efficiency*100]%</b>.")
|
||||
|
||||
/obj/machinery/autolathe/proc/can_build(datum/design/D, amount = 1)
|
||||
if(length(D.make_reagents))
|
||||
if(D.make_reagent)
|
||||
return FALSE
|
||||
|
||||
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : creation_efficiency)
|
||||
|
||||
@@ -214,15 +214,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24)
|
||||
/obj/machinery/button/door/indestructible
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
/datum/armor/machinery_button
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
bomb = 10
|
||||
fire = 90
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/button/door/setup_device()
|
||||
if(!device)
|
||||
if(normaldoorcontrol)
|
||||
@@ -321,15 +312,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24)
|
||||
device_type = /obj/item/assembly/control/curtain
|
||||
var/sync_doors = TRUE
|
||||
|
||||
/datum/armor/machinery_button
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
bomb = 10
|
||||
fire = 90
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/button/curtain/setup_device()
|
||||
var/obj/item/assembly/control/curtain = device
|
||||
curtain.sync_doors = sync_doors
|
||||
@@ -366,15 +348,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24)
|
||||
/// The specific lift id of the tram we're calling.
|
||||
var/lift_id = MAIN_STATION_TRAM
|
||||
|
||||
/datum/armor/machinery_button
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
bomb = 10
|
||||
fire = 90
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/button/tram/setup_device()
|
||||
var/obj/item/assembly/control/tram/tram_device = device
|
||||
tram_device.initial_id = id
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
CATEGORY_SAUCES_REAGENTS,
|
||||
)
|
||||
|
||||
/obj/machinery/computer/order_console/cook/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE)
|
||||
/obj/machinery/computer/order_console/cook/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
|
||||
say("Thank you for your purchase! It will arrive on the next cargo shuttle!")
|
||||
radio.talk_into(src, "The kitchen has ordered groceries which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel)
|
||||
for(var/datum/orderable_item/ordered_item in groceries)
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
circuit = /obj/item/circuitboard/computer/order_console/mining/golem
|
||||
forced_express = TRUE
|
||||
express_cost_multiplier = 1
|
||||
uses_ltsrbt = FALSE
|
||||
order_categories = list(
|
||||
CATEGORY_GOLEM,
|
||||
CATEGORY_MINING,
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define MINING_SHIPPING_MULTIPLIER 0.65
|
||||
#define GET_MINING_SHIPPING_MULTIPLIER(cost) round(cost * MINING_SHIPPING_MULTIPLIER,5)
|
||||
|
||||
/obj/machinery/computer/order_console/mining
|
||||
name = "mining equipment order console"
|
||||
desc = "An equipment shop for miners, points collected at an ore redemption machine can be spent here."
|
||||
@@ -8,8 +11,12 @@
|
||||
circuit = /obj/item/circuitboard/computer/order_console/mining
|
||||
|
||||
cooldown_time = 10 SECONDS //just time to let you know your order went through.
|
||||
express_cost_multiplier = 1.5
|
||||
uses_ltsrbt = TRUE
|
||||
express_cost_multiplier = 1
|
||||
purchase_tooltip = @{"Your purchases will arrive at cargo,
|
||||
and hopefully get delivered by them.
|
||||
35% cheaper than express delivery."}
|
||||
express_tooltip = @{"Sends your purchases instantly."}
|
||||
|
||||
order_categories = list(
|
||||
CATEGORY_MINING,
|
||||
CATEGORY_CONSUMABLES,
|
||||
@@ -20,16 +27,15 @@
|
||||
/obj/machinery/computer/order_console/mining/purchase_items(obj/item/card/id/card, express = FALSE)
|
||||
var/final_cost = get_total_cost()
|
||||
var/failure_message = "Sorry, but you do not have enough mining points."
|
||||
if(express)
|
||||
final_cost *= express_cost_multiplier
|
||||
failure_message += "Remember, Express upcharges the cost!"
|
||||
if(!express)
|
||||
final_cost = GET_MINING_SHIPPING_MULTIPLIER(final_cost)
|
||||
if(final_cost <= card.mining_points)
|
||||
card.mining_points -= final_cost
|
||||
return TRUE
|
||||
say(failure_message)
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE)
|
||||
/obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
|
||||
var/list/things_to_order = list()
|
||||
for(var/datum/orderable_item/item as anything in groceries)
|
||||
things_to_order[item.item_path] = groceries[item]
|
||||
@@ -53,25 +59,14 @@
|
||||
cost_type = "mp",
|
||||
can_be_cancelled = FALSE,
|
||||
)
|
||||
if(ltsrbt_delivered)
|
||||
var/obj/machinery/mining_ltsrbt/ltsrbt
|
||||
for(var/obj/machinery/mining_ltsrbt/all_ltsrbts as anything in GLOB.mining_ltsrbt)
|
||||
if(all_ltsrbts.machine_stat & (NOPOWER|BROKEN|MAINT)) //not functional
|
||||
continue
|
||||
if(!all_ltsrbts.enabled) //not enabled
|
||||
continue
|
||||
ltsrbt = all_ltsrbts
|
||||
break
|
||||
if(ltsrbt && ltsrbt.recieve_order(new_order))
|
||||
return
|
||||
say("Found no functional mining LTSRBTs. If there is one, it is likely destroyed, powered down, or under maintenance. Your delivery has instead been rerouted to Cargo.")
|
||||
else
|
||||
say("Thank you for your purchase! It will arrive on the next cargo shuttle!")
|
||||
say("Thank you for your purchase! It will arrive on the next cargo shuttle!")
|
||||
radio.talk_into(src, "A shaft miner has ordered equipment which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel)
|
||||
SSshuttle.shopping_list += new_order
|
||||
|
||||
/obj/machinery/computer/order_console/mining/ui_data(mob/user)
|
||||
var/list/data = ..()
|
||||
var/cost = get_total_cost()
|
||||
data["total_cost"] = "[GET_MINING_SHIPPING_MULTIPLIER(cost)] (Express: [cost]) "
|
||||
if(!isliving(user))
|
||||
return data
|
||||
var/mob/living/living_user = user
|
||||
@@ -86,6 +81,15 @@
|
||||
if(!.)
|
||||
flick("mining-deny", src)
|
||||
|
||||
/obj/machinery/computer/order_console/mining/ui_static_data(mob/user)
|
||||
var/list/data = ..()
|
||||
for(var/list/order in data["order_datums"])
|
||||
var/cost = order["cost"]
|
||||
if(isnull(cost)) //sanity check
|
||||
continue
|
||||
order["cost"] = GET_MINING_SHIPPING_MULTIPLIER(cost) // change costs to reflect mining shipping instead
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/order_console/mining/attackby(obj/item/weapon, mob/user, params)
|
||||
if(istype(weapon, /obj/item/mining_voucher))
|
||||
redeem_voucher(weapon, user)
|
||||
@@ -206,3 +210,5 @@
|
||||
|
||||
#undef TO_POINT_CARD
|
||||
#undef TO_USER_ID
|
||||
#undef MINING_SHIPPING_MULTIPLIER
|
||||
#undef GET_MINING_SHIPPING_MULTIPLIER
|
||||
|
||||
@@ -7,14 +7,17 @@ GLOBAL_LIST_EMPTY(order_console_products)
|
||||
icon_screen = "request"
|
||||
icon_keyboard = "generic_key"
|
||||
light_color = LIGHT_COLOR_ORANGE
|
||||
///Tooltip for the express button in TGUI
|
||||
var/express_tooltip = @{"Sends your purchases instantly,
|
||||
but locks the console longer and increases the price!"}
|
||||
///Tooltip for the purchase button in TGUI
|
||||
var/purchase_tooltip = @{"Your purchases will arrive at cargo,
|
||||
and hopefully get delivered by them."}
|
||||
|
||||
///Cooldown between order uses.
|
||||
COOLDOWN_DECLARE(order_cooldown)
|
||||
///Cooldown time between uses, express console will have extra time depending on express_cost_multiplier.
|
||||
var/cooldown_time = 60 SECONDS
|
||||
///Boolean on whether they can bluespace orders using a '/obj/machinery/mining_ltsrbt'
|
||||
var/uses_ltsrbt = FALSE
|
||||
|
||||
///The radio the console can speak into
|
||||
var/obj/item/radio/radio
|
||||
///The channel we will attempt to speak into through our radio.
|
||||
@@ -63,7 +66,8 @@ GLOBAL_LIST_EMPTY(order_console_products)
|
||||
|
||||
/obj/machinery/computer/order_console/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["total_cost"] = get_total_cost()
|
||||
var/cost = get_total_cost()
|
||||
data["total_cost"] = "[cost] (Express: [cost*express_cost_multiplier])"
|
||||
data["off_cooldown"] = COOLDOWN_FINISHED(src, order_cooldown)
|
||||
|
||||
if(!isliving(user))
|
||||
@@ -77,7 +81,8 @@ GLOBAL_LIST_EMPTY(order_console_products)
|
||||
|
||||
/obj/machinery/computer/order_console/ui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["ltsrbt_available"] = (uses_ltsrbt && GLOB.mining_ltsrbt.len)
|
||||
data["express_tooltip"] = express_tooltip
|
||||
data["purchase_tooltip"] = purchase_tooltip
|
||||
data["forced_express"] = forced_express
|
||||
data["order_categories"] = order_categories
|
||||
data["order_datums"] = list()
|
||||
@@ -128,7 +133,7 @@ GLOBAL_LIST_EMPTY(order_console_products)
|
||||
if(get_total_cost() < CARGO_CRATE_VALUE)
|
||||
say("For the delivery order needs to cost more or equal to [CARGO_CRATE_VALUE] points!")
|
||||
return
|
||||
order_groceries(living_user, used_id_card, grocery_list, ltsrbt_delivered = (action == "ltsrbt_deliver"))
|
||||
order_groceries(living_user, used_id_card, grocery_list)
|
||||
grocery_list.Cut()
|
||||
COOLDOWN_START(src, order_cooldown, cooldown_time)
|
||||
if("express")
|
||||
@@ -180,5 +185,5 @@ GLOBAL_LIST_EMPTY(order_console_products)
|
||||
say(failure_message)
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/computer/order_console/proc/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE)
|
||||
/obj/machinery/computer/order_console/proc/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries)
|
||||
return
|
||||
|
||||
@@ -22,12 +22,6 @@
|
||||
desc = "A mining-themed MODsuit that works best when in a mining environment."
|
||||
cost_per_order = 3000
|
||||
|
||||
/datum/orderable_item/mining/mining_ltsrbt
|
||||
item_path = /obj/item/circuitboard/machine/mining_ltsrbt
|
||||
name = "Mining LTSRBT Board"
|
||||
desc = "Tired of waiting on the Cargo shuttle? This item lets you bluespace mining orders directly to the station."
|
||||
cost_per_order = 750
|
||||
|
||||
/datum/orderable_item/mining/mining_belt
|
||||
item_path = /obj/item/storage/belt/mining
|
||||
cost_per_order = 500
|
||||
|
||||
@@ -174,14 +174,6 @@
|
||||
actions_types = list(/datum/action/item_action/toggle_barrier_spread)
|
||||
var/mode = SINGLE
|
||||
|
||||
/datum/armor/barricade_security
|
||||
melee = 10
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
bomb = 10
|
||||
fire = 10
|
||||
|
||||
/obj/item/grenade/barrier/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("Alt-click to toggle modes.")
|
||||
@@ -240,14 +232,6 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
slot_flags = ITEM_SLOT_BACK
|
||||
|
||||
/datum/armor/barricade_security
|
||||
melee = 10
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
bomb = 10
|
||||
fire = 10
|
||||
|
||||
/obj/item/deployable_turret_folded/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/deployable, 5 SECONDS, /obj/machinery/deployable_turret/hmg, delete_on_use = TRUE)
|
||||
|
||||
@@ -698,6 +698,27 @@
|
||||
|
||||
ui_interact(user)
|
||||
|
||||
///Performs basic checks to make sure we are still able to hack an airlock. If control is restored early through outside means, opens the airlock's control interface.
|
||||
/obj/machinery/door/airlock/proc/check_hacking(mob/user, success_message)
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to locate airlock on network."))
|
||||
aiHacking = FALSE
|
||||
return FALSE
|
||||
if(canAIControl(user))
|
||||
to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance."))
|
||||
aiHacking = FALSE
|
||||
if(user)
|
||||
attack_ai(user) //bring up airlock dialog
|
||||
return
|
||||
else if(!canAIHack())
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
if(success_message)
|
||||
to_chat(user, span_notice(success_message))
|
||||
return TRUE
|
||||
|
||||
///Attemps to override airlocks that have the AI control wire disabled.
|
||||
/obj/machinery/door/airlock/proc/hack(mob/user)
|
||||
set waitfor = 0
|
||||
if(!aiHacking)
|
||||
@@ -705,75 +726,33 @@
|
||||
to_chat(user, span_warning("Airlock AI control has been blocked. Beginning fault-detection."))
|
||||
sleep(5 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
if(!check_hacking(user, "Fault confirmed: airlock control wire disabled or cut."))
|
||||
return
|
||||
if(canAIControl(user))
|
||||
to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
else if(!canAIHack())
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("Fault confirmed: airlock control wire disabled or cut."))
|
||||
sleep(2 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
if(!check_hacking(user, "Attempting to hack into airlock. This may take some time."))
|
||||
return
|
||||
to_chat(user, span_notice("Attempting to hack into airlock. This may take some time."))
|
||||
sleep(20 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
if(!check_hacking(user, "Upload access confirmed. Loading control program into airlock software."))
|
||||
return
|
||||
if(canAIControl(user))
|
||||
to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
else if(!canAIHack())
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("Upload access confirmed. Loading control program into airlock software."))
|
||||
sleep(17 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
if(!check_hacking(user,"Transfer complete. Forcing airlock to execute program."))
|
||||
return
|
||||
if(canAIControl(user))
|
||||
to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
else if(!canAIHack())
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
aiHacking = FALSE
|
||||
return
|
||||
to_chat(user, span_notice("Transfer complete. Forcing airlock to execute program."))
|
||||
sleep(5 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
if(!check_hacking(user, "Receiving control information from airlock."))
|
||||
return
|
||||
//disable blocked control
|
||||
aiControlDisabled = AI_WIRE_HACKED
|
||||
to_chat(user, span_notice("Receiving control information from airlock."))
|
||||
aiControlDisabled = AI_WIRE_HACKED //disable blocked control
|
||||
sleep(1 SECONDS)
|
||||
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to hack airlock."))
|
||||
return
|
||||
//bring up airlock dialog
|
||||
aiHacking = FALSE
|
||||
if(QDELETED(src))
|
||||
to_chat(user, span_warning("Connection lost! Unable to locate airlock on network."))
|
||||
return
|
||||
if(user)
|
||||
attack_ai(user)
|
||||
attack_ai(user) //bring up airlock dialog
|
||||
|
||||
/obj/machinery/door/airlock/attack_animal(mob/user, list/modifiers)
|
||||
if(isElectrified() && shock(user, 100))
|
||||
|
||||
@@ -472,15 +472,6 @@
|
||||
/obj/machinery/door/morgue
|
||||
icon = 'icons/obj/doors/doormorgue.dmi'
|
||||
|
||||
/datum/armor/machinery_door
|
||||
melee = 30
|
||||
bullet = 30
|
||||
laser = 20
|
||||
energy = 20
|
||||
bomb = 10
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/door/get_dumping_location()
|
||||
return null
|
||||
|
||||
|
||||
@@ -685,15 +685,6 @@
|
||||
density = TRUE
|
||||
alarm_type = FIRELOCK_ALARM_TYPE_GENERIC
|
||||
|
||||
/datum/armor/door_firedoor
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 20
|
||||
energy = 20
|
||||
bomb = 30
|
||||
fire = 95
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/door/firedoor/border_only/Initialize(mapload)
|
||||
. = ..()
|
||||
adjust_lights_starting_offset()
|
||||
@@ -766,15 +757,6 @@
|
||||
var/constructionStep = CONSTRUCTION_NO_CIRCUIT
|
||||
var/reinforced = 0
|
||||
|
||||
/datum/armor/door_firedoor
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 20
|
||||
energy = 20
|
||||
bomb = 30
|
||||
fire = 95
|
||||
acid = 70
|
||||
|
||||
/obj/structure/firelock_frame/examine(mob/user)
|
||||
. = ..()
|
||||
switch(constructionStep)
|
||||
|
||||
@@ -176,15 +176,6 @@
|
||||
var/checkdir = 4 //door won't open if turf in this dir is `turftype`
|
||||
var/turftype = /turf/open/space
|
||||
|
||||
/datum/armor/door_poddoor
|
||||
melee = 50
|
||||
bullet = 100
|
||||
laser = 100
|
||||
energy = 100
|
||||
bomb = 50
|
||||
fire = 100
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/door/poddoor/shuttledock/proc/check()
|
||||
var/turf/turf = get_step(src, checkdir)
|
||||
if(!istype(turf, turftype))
|
||||
|
||||
@@ -441,10 +441,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26)
|
||||
desc = "Cuban Pete is in the house!"
|
||||
var/static/party_overlay
|
||||
|
||||
/datum/armor/machinery_firealarm
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/machinery/firealarm/partyalarm/reset()
|
||||
if (machine_stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
@@ -481,10 +477,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26)
|
||||
|
||||
var/obj/machinery/firealarm/attached_alarm
|
||||
|
||||
/datum/armor/machinery_firealarm
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/firealarm/populate_ports()
|
||||
alarm_trigger = add_input_port("Set", PORT_TYPE_SIGNAL)
|
||||
reset_trigger = add_input_port("Reset", PORT_TYPE_SIGNAL)
|
||||
|
||||
@@ -105,13 +105,6 @@ Possible to do for anyone motivated enough:
|
||||
desc = "It's a floor-mounted device for projecting holographic images. This one will refuse to auto-connect incoming calls."
|
||||
secure = TRUE
|
||||
|
||||
/datum/armor/machinery_holopad
|
||||
melee = 50
|
||||
bullet = 20
|
||||
laser = 20
|
||||
energy = 20
|
||||
fire = 50
|
||||
|
||||
/obj/machinery/holopad/secure/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/circuitboard/machine/holopad/board = circuit
|
||||
@@ -126,13 +119,6 @@ Possible to do for anyone motivated enough:
|
||||
var/datum/proximity_monitor/proximity_monitor
|
||||
var/proximity_range = 1
|
||||
|
||||
/datum/armor/machinery_holopad
|
||||
melee = 50
|
||||
bullet = 20
|
||||
laser = 20
|
||||
energy = 20
|
||||
fire = 50
|
||||
|
||||
/obj/machinery/holopad/tutorial/Initialize(mapload)
|
||||
. = ..()
|
||||
if(proximity_range)
|
||||
@@ -877,13 +863,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
var/mob/living/Impersonation
|
||||
var/datum/holocall/HC
|
||||
|
||||
/datum/armor/machinery_holopad
|
||||
melee = 50
|
||||
bullet = 20
|
||||
laser = 20
|
||||
energy = 20
|
||||
fire = 50
|
||||
|
||||
/obj/effect/overlay/holo_pad_hologram/Destroy()
|
||||
Impersonation = null
|
||||
if(!QDELETED(HC))
|
||||
|
||||
@@ -80,15 +80,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26)
|
||||
/obj/machinery/sparker/ordmix
|
||||
id = INCINERATOR_ORDMIX_IGNITER
|
||||
|
||||
/datum/armor/machinery_igniter
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 70
|
||||
energy = 50
|
||||
bomb = 20
|
||||
fire = 100
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/sparker/Initialize(mapload)
|
||||
. = ..()
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
|
||||
@@ -656,15 +656,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
button_icon = 'icons/mob/actions/actions_mecha.dmi'
|
||||
button_icon_state = "mech_cycle_equip_off"
|
||||
|
||||
/datum/armor/machinery_porta_turret
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 30
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/datum/action/turret_toggle/Trigger(trigger_flags)
|
||||
var/obj/machinery/porta_turret/P = target
|
||||
if(!istype(P))
|
||||
@@ -676,15 +667,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
button_icon = 'icons/mob/actions/actions_mecha.dmi'
|
||||
button_icon_state = "mech_eject"
|
||||
|
||||
/datum/armor/machinery_porta_turret
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 30
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/datum/action/turret_quit/Trigger(trigger_flags)
|
||||
var/obj/machinery/porta_turret/P = target
|
||||
if(!istype(P))
|
||||
@@ -751,15 +733,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
faction = list(ROLE_SYNDICATE)
|
||||
desc = "A ballistic machine gun auto-turret."
|
||||
|
||||
/datum/armor/machinery_porta_turret
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 30
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/syndicate/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES)
|
||||
@@ -830,15 +803,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
faction = list("silicon")
|
||||
turret_flags = TURRET_FLAG_SHOOT_CRIMINALS | TURRET_FLAG_SHOOT_ANOMALOUS | TURRET_FLAG_SHOOT_HEADS
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/ai/assess_perp(mob/living/carbon/human/perp)
|
||||
return 10 //AI turrets shoot at everything not in their faction
|
||||
|
||||
@@ -851,15 +815,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
mode = TURRET_LETHAL //It would be useless in stun mode anyway
|
||||
faction = list(FACTION_NEUTRAL,"silicon","turret") //Minebots, medibots, etc that should not be shot.
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/aux_base/assess_perp(mob/living/carbon/human/perp)
|
||||
return 0 //Never shoot humanoids. You are on your own if Ashwalkers or the like attack!
|
||||
|
||||
@@ -890,15 +845,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
faction = list(FACTION_NEUTRAL,"silicon","turret")
|
||||
mode = TURRET_LETHAL
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/centcom_shuttle/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES)
|
||||
@@ -946,15 +892,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
/// List of weakrefs to all turrets
|
||||
var/list/turrets = list()
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/turretid/Initialize(mapload, ndir = 0, built = 0)
|
||||
. = ..()
|
||||
if(built)
|
||||
@@ -1114,15 +1051,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT)
|
||||
pixel_shift = 29
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/item/gun/proc/get_turret_properties()
|
||||
. = list()
|
||||
.["lethal_projectile"] = null
|
||||
@@ -1183,15 +1111,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
turret_flags = TURRET_FLAG_AUTH_WEAPONS
|
||||
var/team_color
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/lasertag/assess_perp(mob/living/carbon/human/perp)
|
||||
. = 0
|
||||
if(team_color == "blue") //Lasertag turrets target the opposing team, how great is that? -Sieve
|
||||
@@ -1235,15 +1154,6 @@ DEFINE_BITFIELD(turret_flags, list(
|
||||
installation = /obj/item/gun/energy/laser/bluetag
|
||||
team_color = "blue"
|
||||
|
||||
/datum/armor/syndicate_shuttle
|
||||
melee = 50
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 80
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/machinery/porta_turret/lasertag/bullet_act(obj/projectile/P)
|
||||
. = ..()
|
||||
if(on)
|
||||
|
||||
@@ -443,15 +443,6 @@
|
||||
icon_state = "floor_beacon"
|
||||
var/used
|
||||
|
||||
/datum/armor/machinery_roulette
|
||||
melee = 45
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 30
|
||||
bomb = 10
|
||||
fire = 30
|
||||
acid = 30
|
||||
|
||||
/obj/item/roulette_wheel_beacon/attack_self()
|
||||
if(used)
|
||||
return
|
||||
|
||||
@@ -281,10 +281,6 @@
|
||||
/obj/machinery/space_heater/constructed
|
||||
cell = null
|
||||
|
||||
/datum/armor/machinery_space_heater
|
||||
fire = 80
|
||||
acid = 10
|
||||
|
||||
/obj/machinery/space_heater/constructed/Initialize(mapload)
|
||||
. = ..()
|
||||
set_panel_open(TRUE)
|
||||
@@ -313,10 +309,6 @@
|
||||
var/chem_heating_power = 1
|
||||
display_panel = FALSE
|
||||
|
||||
/datum/armor/machinery_space_heater
|
||||
fire = 80
|
||||
acid = 10
|
||||
|
||||
/obj/machinery/space_heater/improvised_chem_heater/Destroy()
|
||||
. = ..()
|
||||
QDEL_NULL(beaker)
|
||||
|
||||
@@ -89,13 +89,6 @@
|
||||
var/decryptkey = "password"
|
||||
var/calibrating = 15 MINUTES //Init reads this and adds world.time, then becomes 0 when that time has passed and the machine works
|
||||
|
||||
/datum/armor/machinery_blackbox_recorder
|
||||
melee = 25
|
||||
bullet = 10
|
||||
laser = 10
|
||||
fire = 50
|
||||
acid = 70
|
||||
|
||||
/obj/machinery/telecomms/message_server/Initialize(mapload)
|
||||
. = ..()
|
||||
if (!decryptkey)
|
||||
@@ -167,13 +160,6 @@
|
||||
server_type = /obj/machinery/telecomms/message_server
|
||||
var/datum/logged
|
||||
|
||||
/datum/armor/machinery_blackbox_recorder
|
||||
melee = 25
|
||||
bullet = 10
|
||||
laser = 10
|
||||
fire = 50
|
||||
acid = 70
|
||||
|
||||
/datum/signal/subspace/messaging/New(init_source, init_data)
|
||||
source = init_source
|
||||
data = init_data
|
||||
@@ -224,13 +210,6 @@
|
||||
var/datum/picture/picture // attached photo
|
||||
var/automated = 0 //automated message
|
||||
|
||||
/datum/armor/machinery_blackbox_recorder
|
||||
melee = 25
|
||||
bullet = 10
|
||||
laser = 10
|
||||
fire = 50
|
||||
acid = 70
|
||||
|
||||
/datum/data_tablet_msg/New(param_rec, param_sender, param_message, param_photo)
|
||||
if(param_rec)
|
||||
recipient = param_rec
|
||||
@@ -260,13 +239,6 @@
|
||||
var/id_auth = "Unauthenticated"
|
||||
var/priority = "Normal"
|
||||
|
||||
/datum/armor/machinery_blackbox_recorder
|
||||
melee = 25
|
||||
bullet = 10
|
||||
laser = 10
|
||||
fire = 50
|
||||
acid = 70
|
||||
|
||||
/datum/data_rc_msg/New(param_rec, param_sender, param_message, param_stamp, param_id_auth, param_priority)
|
||||
if(param_rec)
|
||||
rec_dpt = param_rec
|
||||
|
||||
@@ -442,10 +442,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
|
||||
// `initial` does not work here. Neither does instantiating a wall/whatever
|
||||
// and referencing that. I don't know why.
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/proc/init_holographic_wall()
|
||||
return getHologramIcon(
|
||||
icon('icons/turf/walls/wall.dmi', "wall-0"),
|
||||
@@ -519,10 +515,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
name = "hologram"
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/effect/rcd_hologram/Initialize(mapload)
|
||||
. = ..()
|
||||
QDEL_IN(src, RCD_HOLOGRAM_FADE_TIME)
|
||||
@@ -786,10 +778,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
var/energyfactor = 72
|
||||
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/rcd/borg/useResource(amount, mob/user)
|
||||
if(!iscyborg(user))
|
||||
return 0
|
||||
@@ -887,10 +875,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
inhand_icon_state = "oldrcd"
|
||||
has_ammobar = FALSE
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/rcd/arcd/afterattack(atom/A, mob/user)
|
||||
. = ..()
|
||||
if(range_check(A,user))
|
||||
@@ -951,10 +935,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
var/list/display_options = list()
|
||||
var/color_choice = null
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/rld/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/option in original_options)
|
||||
@@ -1153,10 +1133,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
"Fifth Layer" = 5,
|
||||
)
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/plumbing/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -1410,10 +1386,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
has_ammobar = TRUE
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/plumbing/research/set_plumbing_designs()
|
||||
plumbing_design_types = list(
|
||||
//category 1 synthesizers
|
||||
@@ -1440,10 +1412,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
icon_state = "plumberer_service"
|
||||
has_ammobar = TRUE
|
||||
|
||||
/datum/armor/item_construction
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/construction/plumbing/service/set_plumbing_designs()
|
||||
plumbing_design_types = list(
|
||||
//category 1 synthesizers
|
||||
|
||||
@@ -844,10 +844,6 @@
|
||||
desc = "An ID card that allows access to bots maintenance protocols."
|
||||
trim = /datum/id_trim/away/old/robo
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/away/deep_storage //deepstorage.dmm space ruin
|
||||
name = "bunker access ID"
|
||||
|
||||
@@ -859,10 +855,6 @@
|
||||
var/department_name = ACCOUNT_CIV_NAME
|
||||
registered_age = null
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/departmental_budget/Initialize(mapload)
|
||||
. = ..()
|
||||
var/datum/bank_account/B = SSeconomy.get_dep_account(department_ID)
|
||||
@@ -886,10 +878,6 @@
|
||||
department_name = ACCOUNT_CAR_NAME
|
||||
icon_state = "car_budget" //saving up for a new tesla
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/departmental_budget/AltClick(mob/living/user)
|
||||
registered_account.bank_card_talk(span_warning("Withdrawing is not compatible with this card design."), TRUE) //prevents the vault bank machine being useless and putting money from the budget to your card to go over personal crates
|
||||
|
||||
@@ -919,10 +907,6 @@
|
||||
/// If this is set, will manually override the trim shown for SecHUDs. Intended for admins to VV edit and chameleon ID cards.
|
||||
var/sechud_icon_state_override = null
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status))
|
||||
@@ -1085,10 +1069,6 @@
|
||||
assigned_icon_state = "assigned_gold"
|
||||
wildcard_slots = WILDCARD_LIMIT_GOLD
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/gold/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD, ROUNDSTART_TRAIT)
|
||||
@@ -1100,10 +1080,6 @@
|
||||
trim = /datum/id_trim/job/captain
|
||||
registered_age = null
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/gold/captains_spare/update_label() //so it doesn't change to Captain's ID card (Captain) on a sneeze
|
||||
if(registered_name == "Captain")
|
||||
name = "[initial(name)][(!assignment || assignment == "Captain") ? "" : " ([assignment])"]"
|
||||
@@ -1197,10 +1173,6 @@
|
||||
registered_name = "Captain"
|
||||
registered_age = null
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/black/syndicate_command/captain_id/syndie_spare/update_label()
|
||||
if(registered_name == "Captain")
|
||||
name = "[initial(name)][(!assignment || assignment == "Captain") ? "" : " ([assignment])"]"
|
||||
@@ -1217,10 +1189,6 @@
|
||||
trim = /datum/id_trim/admin
|
||||
wildcard_slots = WILDCARD_LIMIT_ADMIN
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/debug/Initialize(mapload)
|
||||
. = ..()
|
||||
registered_account = SSeconomy.get_dep_account(ACCOUNT_CAR)
|
||||
@@ -1249,10 +1217,6 @@
|
||||
/// Time left on a card till they can leave.
|
||||
var/time_left = 0
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/prisoner/attackby(obj/item/card/id/C, mob/user)
|
||||
..()
|
||||
var/list/id_access = C.GetAccess()
|
||||
@@ -1362,10 +1326,6 @@
|
||||
/// Weak ref to the ID card we're currently attempting to steal access from.
|
||||
var/datum/weakref/theft_target
|
||||
|
||||
/datum/armor/card_id
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/card/id/advanced/chameleon/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -294,10 +294,6 @@
|
||||
nocell_state = "defibcompact-nocell"
|
||||
emagged_state = "defibcompact-emagged"
|
||||
|
||||
/datum/armor/item_defibrillator
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user)
|
||||
if(slot & user.getBeltSlot())
|
||||
return TRUE
|
||||
@@ -324,10 +320,6 @@
|
||||
/obj/item/defibrillator/compact/combat/loaded
|
||||
cell_removable = FALSE // Don't let people just have an infinite power cell
|
||||
|
||||
/datum/armor/item_defibrillator
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/defibrillator/compact/combat/loaded/Initialize(mapload)
|
||||
. = ..()
|
||||
cell = new /obj/item/stock_parts/cell/infinite(src)
|
||||
@@ -372,10 +364,6 @@
|
||||
var/recharge_time = 6 SECONDS // Only applies to defibs that do not require a defibrilator. See: do_success()
|
||||
var/combat = FALSE //If it penetrates armor and gives additional functionality
|
||||
|
||||
/datum/armor/item_defibrillator
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/shockpaddles/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_HANDS|ITEM_SLOT_BACK)
|
||||
@@ -706,10 +694,6 @@
|
||||
inhand_icon_state = "defibpaddles0"
|
||||
req_defib = FALSE
|
||||
|
||||
/datum/armor/item_defibrillator
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/shockpaddles/cyborg/attack(mob/M, mob/user)
|
||||
if(iscyborg(user))
|
||||
var/mob/living/silicon/robot/R = user
|
||||
|
||||
@@ -27,12 +27,13 @@
|
||||
// examines you when you're holding it in your hand, you will be discovered.
|
||||
//
|
||||
|
||||
#define GLASS_SHEET_USES 5
|
||||
#define LIGHTBULB_COST 1
|
||||
#define BULB_SHARDS_REQUIRED 4
|
||||
|
||||
/obj/item/lightreplacer
|
||||
|
||||
name = "light replacer"
|
||||
desc = "A device to automatically replace lights. Refill with broken or working light bulbs, or sheets of glass."
|
||||
|
||||
icon = 'icons/obj/janitor.dmi'
|
||||
icon_state = "lightreplacer"
|
||||
inhand_icon_state = "electronic"
|
||||
@@ -44,97 +45,95 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 8
|
||||
|
||||
var/max_uses = 20
|
||||
/// How many uses does our light replacer have?
|
||||
var/uses = 10
|
||||
// How much to increase per each glass?
|
||||
var/increment = 5
|
||||
// How much to take from the glass?
|
||||
var/decrement = 1
|
||||
/// The maximum number of lights this replacer can hold
|
||||
var/max_uses = 20
|
||||
/// The light replacer's charge increment (used for adding to cyborg light replacers)
|
||||
var/charge = 1
|
||||
|
||||
// Eating used bulbs gives us bulb shards
|
||||
/// Eating used bulbs gives us bulb shards. Requires BULB_SHARDS_MAXIMUM to produce a new light.
|
||||
var/bulb_shards = 0
|
||||
// when we get this many shards, we get a free bulb.
|
||||
var/shards_required = 4
|
||||
|
||||
// whether it is "bluespace powered" (can be used at a range)
|
||||
/// whether it is "bluespace powered" (can be used at a range)
|
||||
var/bluespace_toggle = FALSE
|
||||
|
||||
/obj/item/lightreplacer/examine(mob/user)
|
||||
. = ..()
|
||||
. += status_string()
|
||||
|
||||
/obj/item/lightreplacer/attackby(obj/item/W, mob/user, params)
|
||||
/obj/item/lightreplacer/attackby(obj/item/insert, mob/user, params)
|
||||
|
||||
if(istype(W, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = W
|
||||
if(istype(insert, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/glass_to_insert = insert
|
||||
if(uses >= max_uses)
|
||||
to_chat(user, span_warning("[src.name] is full."))
|
||||
return
|
||||
else if(G.use(decrement))
|
||||
AddUses(increment)
|
||||
else if(glass_to_insert.use(LIGHTBULB_COST))
|
||||
add_uses(GLASS_SHEET_USES)
|
||||
to_chat(user, span_notice("You insert a piece of glass into \the [src.name]. You have [uses] light\s remaining."))
|
||||
return
|
||||
else
|
||||
to_chat(user, span_warning("You need one sheet of glass to replace lights!"))
|
||||
|
||||
if(istype(W, /obj/item/shard))
|
||||
if(istype(insert, /obj/item/shard))
|
||||
if(uses >= max_uses)
|
||||
to_chat(user, span_warning("\The [src] is full."))
|
||||
return
|
||||
if(!user.temporarilyRemoveItemFromInventory(W))
|
||||
if(!user.temporarilyRemoveItemFromInventory(insert))
|
||||
return
|
||||
AddUses(round(increment*0.75))
|
||||
add_uses(round(GLASS_SHEET_USES*0.75))
|
||||
to_chat(user, span_notice("You insert a shard of glass into \the [src]. You have [uses] light\s remaining."))
|
||||
qdel(W)
|
||||
qdel(insert)
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/light))
|
||||
var/obj/item/light/L = W
|
||||
if(L.status == 0) // LIGHT OKAY
|
||||
if(istype(insert, /obj/item/light))
|
||||
var/obj/item/light/light_to_insert = insert
|
||||
if(light_to_insert.status == 0) // LIGHT OKAY
|
||||
if(uses < max_uses)
|
||||
if(!user.temporarilyRemoveItemFromInventory(W))
|
||||
if(!user.temporarilyRemoveItemFromInventory(insert))
|
||||
return
|
||||
AddUses(1)
|
||||
qdel(L)
|
||||
add_uses(1)
|
||||
qdel(light_to_insert)
|
||||
else
|
||||
if(!user.temporarilyRemoveItemFromInventory(W))
|
||||
if(!user.temporarilyRemoveItemFromInventory(insert))
|
||||
return
|
||||
to_chat(user, span_notice("You insert [L] into \the [src]."))
|
||||
AddShards(1, user)
|
||||
qdel(L)
|
||||
to_chat(user, span_notice("You insert [light_to_insert] into \the [src]."))
|
||||
add_shards(1, user)
|
||||
qdel(light_to_insert)
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/storage))
|
||||
var/obj/item/storage/S = W
|
||||
if(istype(insert, /obj/item/storage))
|
||||
var/obj/item/storage/storage_to_empty = insert
|
||||
var/found_lightbulbs = FALSE
|
||||
var/replaced_something = TRUE
|
||||
|
||||
for(var/obj/item/I in S.contents)
|
||||
if(istype(I, /obj/item/light))
|
||||
var/obj/item/light/L = I
|
||||
found_lightbulbs = TRUE
|
||||
if(src.uses >= max_uses)
|
||||
break
|
||||
if(L.status == LIGHT_OK)
|
||||
replaced_something = TRUE
|
||||
AddUses(1)
|
||||
qdel(L)
|
||||
for(var/obj/item/item_to_check in storage_to_empty.contents)
|
||||
if(!istype(item_to_check, /obj/item/light))
|
||||
continue
|
||||
var/obj/item/light/found_light = item_to_check
|
||||
found_lightbulbs = TRUE
|
||||
if(src.uses >= max_uses)
|
||||
break
|
||||
if(found_light.status == LIGHT_OK)
|
||||
replaced_something = TRUE
|
||||
add_uses(1)
|
||||
qdel(found_light)
|
||||
|
||||
else if(L.status == LIGHT_BROKEN || L.status == LIGHT_BURNED)
|
||||
replaced_something = TRUE
|
||||
AddShards(1, user)
|
||||
qdel(L)
|
||||
else if(found_light.status == LIGHT_BROKEN || found_light.status == LIGHT_BURNED)
|
||||
replaced_something = TRUE
|
||||
add_shards(1, user)
|
||||
qdel(found_light)
|
||||
|
||||
if(!found_lightbulbs)
|
||||
to_chat(user, span_warning("\The [S] contains no bulbs."))
|
||||
to_chat(user, span_warning("\The [storage_to_empty] contains no bulbs."))
|
||||
return
|
||||
|
||||
if(!replaced_something && src.uses == max_uses)
|
||||
to_chat(user, span_warning("\The [src] is full!"))
|
||||
return
|
||||
|
||||
to_chat(user, span_notice("You fill \the [src] with lights from \the [S]. " + status_string() + ""))
|
||||
to_chat(user, span_notice("You fill \the [src] with lights from \the [storage_to_empty]. " + status_string() + ""))
|
||||
|
||||
/obj/item/lightreplacer/emag_act()
|
||||
if(obj_flags & EMAGGED)
|
||||
@@ -143,9 +142,35 @@
|
||||
|
||||
/obj/item/lightreplacer/attack_self(mob/user)
|
||||
for(var/obj/machinery/light/target in user.loc)
|
||||
ReplaceLight(target, user)
|
||||
replace_light(target, user)
|
||||
to_chat(user, status_string())
|
||||
|
||||
/obj/item/lightreplacer/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!can_use(user))
|
||||
balloon_alert(user, "no more lights!")
|
||||
return
|
||||
|
||||
if(!proximity && !bluespace_toggle)
|
||||
return
|
||||
|
||||
if(!isturf(target))
|
||||
if(istype(target, /obj/machinery/light))
|
||||
if(!proximity && bluespace_toggle)
|
||||
if(replace_light(target, user))
|
||||
user.Beam(target, icon_state = "rped_upgrade", time = 1 SECONDS)
|
||||
playsound(src, 'sound/items/pshoom.ogg', 40, 1)
|
||||
return
|
||||
|
||||
for(var/atom/target_atom in target)
|
||||
if(!can_use(user)) //We check inside the loop in case we're filling multiple lights with one click
|
||||
balloon_alert(user, "no more lights!")
|
||||
return
|
||||
replace_light(target_atom, user)
|
||||
if(bluespace_toggle)
|
||||
user.Beam(target, icon_state = "rped_upgrade", time = 1 SECONDS)
|
||||
playsound(src, 'sound/items/pshoom.ogg', 40, 1)
|
||||
|
||||
/obj/item/lightreplacer/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][(obj_flags & EMAGGED ? "-emagged" : "")]"
|
||||
return ..()
|
||||
@@ -155,19 +180,19 @@
|
||||
|
||||
/obj/item/lightreplacer/proc/Use(mob/user)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
AddUses(-1)
|
||||
return 1
|
||||
add_uses(-1)
|
||||
return TRUE
|
||||
|
||||
// Negative numbers will subtract
|
||||
/obj/item/lightreplacer/proc/AddUses(amount = 1)
|
||||
/obj/item/lightreplacer/proc/add_uses(amount = 1)
|
||||
uses = clamp(uses + amount, 0, max_uses)
|
||||
|
||||
/obj/item/lightreplacer/proc/AddShards(amount = 1, user)
|
||||
/obj/item/lightreplacer/proc/add_shards(amount = 1, user)
|
||||
bulb_shards += amount
|
||||
var/new_bulbs = round(bulb_shards / shards_required)
|
||||
var/new_bulbs = round(bulb_shards / BULB_SHARDS_REQUIRED)
|
||||
if(new_bulbs > 0)
|
||||
AddUses(new_bulbs)
|
||||
bulb_shards = bulb_shards % shards_required
|
||||
add_uses(new_bulbs)
|
||||
bulb_shards = bulb_shards % BULB_SHARDS_REQUIRED
|
||||
if(new_bulbs != 0)
|
||||
to_chat(user, span_notice("\The [src] fabricates a new bulb from the broken glass it has stored. It now has [uses] uses."))
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE)
|
||||
@@ -176,19 +201,22 @@
|
||||
/obj/item/lightreplacer/proc/Charge(mob/user)
|
||||
charge += 1
|
||||
if(charge > 3)
|
||||
AddUses(1)
|
||||
add_uses(1)
|
||||
charge = 1
|
||||
|
||||
/obj/item/lightreplacer/proc/ReplaceLight(obj/machinery/light/target, mob/living/U)
|
||||
/obj/item/lightreplacer/proc/replace_light(obj/machinery/light/target, mob/living/user)
|
||||
|
||||
if(!istype(target)) //Confirm that it's a light we're testing, because afterattack runs this for everything on a given turf and will runtime
|
||||
return
|
||||
|
||||
if(target.status != LIGHT_OK)
|
||||
if(CanUse(U))
|
||||
if(!Use(U))
|
||||
return
|
||||
to_chat(U, span_notice("You replace \the [target.fitting] with \the [src]."))
|
||||
if(can_use(user))
|
||||
if(!Use(user))
|
||||
return FALSE
|
||||
to_chat(user, span_notice("You replace \the [target.fitting] with \the [src]."))
|
||||
|
||||
if(target.status != LIGHT_EMPTY)
|
||||
AddShards(1, U)
|
||||
add_shards(1, user)
|
||||
target.status = LIGHT_EMPTY
|
||||
target.update()
|
||||
|
||||
@@ -203,14 +231,14 @@
|
||||
target.on = target.has_power()
|
||||
target.update()
|
||||
qdel(L2)
|
||||
return
|
||||
return TRUE
|
||||
|
||||
else
|
||||
to_chat(U, span_warning("\The [src]'s refill light blinks red."))
|
||||
return
|
||||
to_chat(user, span_warning("\The [src]'s refill light blinks red."))
|
||||
return FALSE
|
||||
else
|
||||
to_chat(U, span_warning("There is a working [target.fitting] already inserted!"))
|
||||
return
|
||||
to_chat(user, span_warning("There is a working [target.fitting] already inserted!"))
|
||||
return FALSE
|
||||
|
||||
/obj/item/lightreplacer/proc/Emag()
|
||||
obj_flags ^= EMAGGED
|
||||
@@ -221,33 +249,12 @@
|
||||
name = initial(name)
|
||||
update_appearance()
|
||||
|
||||
/obj/item/lightreplacer/proc/CanUse(mob/living/user)
|
||||
/obj/item/lightreplacer/proc/can_use(mob/living/user)
|
||||
src.add_fingerprint(user)
|
||||
if(uses > 0)
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity)
|
||||
. = ..()
|
||||
if(!proximity && !bluespace_toggle)
|
||||
return
|
||||
if(!isturf(T))
|
||||
return
|
||||
|
||||
var/used = FALSE
|
||||
for(var/atom/A in T)
|
||||
if(!CanUse(U))
|
||||
break
|
||||
used = TRUE
|
||||
if(istype(A, /obj/machinery/light))
|
||||
if(!proximity && bluespace_toggle)
|
||||
U.Beam(A, icon_state = "rped_upgrade", time = 1 SECONDS)
|
||||
playsound(src, 'sound/items/pshoom.ogg', 40, 1)
|
||||
ReplaceLight(A, U)
|
||||
|
||||
if(!used)
|
||||
to_chat(U, span_warning("\The [src]'s refill light blinks red."))
|
||||
return FALSE
|
||||
|
||||
/obj/item/lightreplacer/cyborg/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -261,3 +268,7 @@
|
||||
|
||||
/obj/item/lightreplacer/blue/emag_act()
|
||||
return // balancing against longrange explosions
|
||||
|
||||
#undef GLASS_SHEET_USES
|
||||
#undef LIGHTBULB_COST
|
||||
#undef BULB_SHARDS_REQUIRED
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
canhear_range = 2
|
||||
dog_fashion = null
|
||||
unscrewed = FALSE
|
||||
item_flags = NO_BLOOD_ON_ITEM
|
||||
|
||||
overlay_speaker_idle = "intercom_s"
|
||||
overlay_speaker_active = "intercom_recieve"
|
||||
@@ -170,9 +171,6 @@
|
||||
set_on(current_area.powered(AREA_USAGE_EQUIP)) // set "on" to the equipment power status of our area.
|
||||
update_appearance()
|
||||
|
||||
/obj/item/radio/intercom/add_blood_DNA(list/blood_dna)
|
||||
return FALSE
|
||||
|
||||
//Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it!
|
||||
/obj/item/wallframe/intercom
|
||||
name = "intercom frame"
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
bare_wound_bonus = 20
|
||||
special_desc_requirement = EXAMINE_CHECK_SYNDICATE_TOY // Skyrat edit
|
||||
special_desc = "A double bladed energy sword employed by the Syndicate in raids" // Skyrat edit
|
||||
item_flags = NO_BLOOD_ON_ITEM
|
||||
var/w_class_on = WEIGHT_CLASS_BULKY
|
||||
var/saber_color = "green"
|
||||
var/two_hand_force = 34
|
||||
@@ -64,10 +65,6 @@
|
||||
START_PROCESSING(SSobj, src)
|
||||
set_light_on(TRUE)
|
||||
|
||||
|
||||
/obj/item/dualsaber/add_blood_DNA(list/blood_DNA_to_add)
|
||||
return FALSE
|
||||
|
||||
/// Triggered on unwield of two handed item
|
||||
/// switch hitsounds
|
||||
/obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user)
|
||||
@@ -76,7 +73,6 @@
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
set_light_on(FALSE)
|
||||
|
||||
|
||||
/obj/item/dualsaber/get_sharpness()
|
||||
return HAS_TRAIT(src, TRAIT_WIELDED) && sharpness
|
||||
|
||||
@@ -197,10 +193,6 @@
|
||||
/obj/item/dualsaber/purple
|
||||
possible_colors = list("purple")
|
||||
|
||||
/datum/armor/item_dualsaber
|
||||
fire = 100
|
||||
acid = 70
|
||||
|
||||
/obj/item/dualsaber/attackby(obj/item/W, mob/user, params)
|
||||
if(W.tool_behaviour == TOOL_MULTITOOL)
|
||||
if(!hacked)
|
||||
|
||||
@@ -75,10 +75,6 @@
|
||||
/*
|
||||
* Metal Hydrogen Axe
|
||||
*/
|
||||
/datum/armor/item_fireaxe
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/fireaxe/metal_h2_axe
|
||||
icon_state = "metalh2_axe0"
|
||||
base_icon_state = "metalh2_axe"
|
||||
|
||||
@@ -152,10 +152,6 @@
|
||||
breakouttime = 30 SECONDS
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/Initialize(mapload, new_color)
|
||||
. = ..()
|
||||
|
||||
@@ -274,10 +270,6 @@
|
||||
cable_color = CABLE_COLOR_WHITE
|
||||
inhand_icon_state = "coil_white"
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) //Slapcrafting
|
||||
if(istype(I, /obj/item/stack/rods))
|
||||
var/obj/item/stack/rods/R = I
|
||||
@@ -335,10 +327,6 @@
|
||||
desc = "A pair of broken zipties."
|
||||
icon_state = "cuff_used"
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
|
||||
return
|
||||
|
||||
@@ -395,10 +383,6 @@
|
||||
/obj/item/restraints/legcuffs/beartrap/prearmed
|
||||
armed = TRUE
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/Initialize(mapload)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
@@ -488,10 +472,6 @@
|
||||
item_flags = DROPDEL
|
||||
flags_1 = NONE
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/energy/Initialize(mapload)
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, PROC_REF(dissipate)), 100)
|
||||
@@ -527,10 +507,6 @@
|
||||
///Amount of time to knock the target down for once it's hit in deciseconds.
|
||||
var/knockdown = 0
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle = FALSE, quickstart = TRUE)
|
||||
if(!..())
|
||||
return
|
||||
@@ -583,10 +559,6 @@
|
||||
breakouttime = 6 SECONDS
|
||||
custom_price = PAYCHECK_COMMAND * 0.35
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/energy/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_UNCATCHABLE, TRAIT_GENERIC) // People said energy bolas being uncatchable is a feature.
|
||||
@@ -611,10 +583,6 @@
|
||||
slowdown = 0
|
||||
var/datum/status_effect/gonbola_pacify/effectReference
|
||||
|
||||
/datum/armor/restraints_handcuffs
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/gonbola/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
. = ..()
|
||||
if(iscarbon(hit_atom))
|
||||
|
||||
@@ -75,10 +75,6 @@
|
||||
custom_materials = list(/datum/material/plastic=80)
|
||||
custom_price = PAYCHECK_LOWER * 2
|
||||
|
||||
/datum/armor/kitchen_fork
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/kitchen/fork/plastic/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/easily_fragmented, PLASTIC_BREAK_PROBABILITY)
|
||||
@@ -102,10 +98,6 @@
|
||||
sharpness = SHARP_EDGED
|
||||
custom_price = PAYCHECK_LOWER * 2
|
||||
|
||||
/datum/armor/kitchen_fork
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/knife/plastic/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/easily_fragmented, PLASTIC_BREAK_PROBABILITY)
|
||||
@@ -139,10 +131,6 @@
|
||||
custom_price = PAYCHECK_CREW * 2
|
||||
bare_wound_bonus = 14
|
||||
|
||||
/datum/armor/kitchen_fork
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message(span_suicide("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
return BRUTELOSS
|
||||
|
||||
@@ -654,11 +654,6 @@
|
||||
convertible = FALSE
|
||||
var/obj/item/assembly/igniter/sparkler
|
||||
|
||||
/datum/armor/baton_security
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/item/melee/baton/security/cattleprod/Initialize(mapload)
|
||||
. = ..()
|
||||
sparkler = new (src)
|
||||
@@ -701,11 +696,6 @@
|
||||
convertible = FALSE
|
||||
custom_materials = list(/datum/material/iron = 10000, /datum/material/glass = 4000, /datum/material/silver = 10000, /datum/material/gold = 2000)
|
||||
|
||||
/datum/armor/baton_security
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/item/melee/baton/security/boomerang/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/boomerang, throw_range+2, TRUE)
|
||||
@@ -729,11 +719,6 @@
|
||||
inhand_icon_state = "teleprod"
|
||||
slot_flags = null
|
||||
|
||||
/datum/armor/baton_security
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/item/melee/baton/security/cattleprod/teleprod/clumsy_check(mob/living/carbon/human/user)
|
||||
. = ..()
|
||||
if(!.)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
bare_wound_bonus = 20
|
||||
stealthy_audio = TRUE
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
item_flags = NO_BLOOD_ON_ITEM
|
||||
|
||||
/// The color of this energy based sword, for use in editing the icon_state.
|
||||
var/sword_color_icon
|
||||
@@ -77,9 +78,6 @@
|
||||
user.visible_message(span_suicide("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!"))
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/melee/energy/add_blood_DNA(list/blood_dna)
|
||||
return FALSE
|
||||
|
||||
/obj/item/melee/energy/process(delta_time)
|
||||
if(heat)
|
||||
open_flame()
|
||||
@@ -160,10 +158,6 @@
|
||||
active_throwforce = 30
|
||||
active_w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/axe/make_transformable()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
force_on = active_force, \
|
||||
@@ -194,10 +188,6 @@
|
||||
block_chance = 50
|
||||
embedding = list("embed_chance" = 75, "impact_pain_mult" = 10)
|
||||
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(blade_active)
|
||||
return ..()
|
||||
@@ -209,10 +199,6 @@
|
||||
/// The cell cost of hitting something.
|
||||
var/hitcost = 50
|
||||
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/sword/cyborg/attack(mob/target, mob/living/silicon/robot/user)
|
||||
if(!user.cell)
|
||||
return
|
||||
@@ -262,10 +248,6 @@
|
||||
var/hacked = FALSE
|
||||
var/hacked_color
|
||||
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/sword/saber/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!sword_color_icon && LAZYLEN(possible_sword_colors))
|
||||
@@ -301,10 +283,6 @@
|
||||
/obj/item/melee/energy/sword/saber/purple
|
||||
sword_color_icon = "purple"
|
||||
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/sword/saber/multitool_act(mob/living/user, obj/item/tool)
|
||||
if(hacked)
|
||||
to_chat(user, span_warning("It's already fabulous!"))
|
||||
@@ -348,10 +326,6 @@
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
|
||||
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
|
||||
/datum/armor/melee_energy
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/melee/energy/blade/Initialize(mapload)
|
||||
. = ..()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
force = 0.001
|
||||
armour_penetration = 1000
|
||||
force_string = "INFINITE"
|
||||
item_flags = NEEDS_PERMIT|NO_BLOOD_ON_ITEM
|
||||
var/obj/machinery/power/supermatter_crystal/shard
|
||||
var/balanced = 1
|
||||
|
||||
@@ -282,9 +283,6 @@
|
||||
)
|
||||
shard.Bump(turf)
|
||||
|
||||
/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna)
|
||||
return FALSE
|
||||
|
||||
/obj/item/melee/curator_whip
|
||||
name = "curator's whip"
|
||||
desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by."
|
||||
|
||||
@@ -37,6 +37,11 @@
|
||||
toggle_on()
|
||||
user.visible_message(span_notice("[user] [active ? "" : "de"]activates [user.p_their()] pinpointer."), span_notice("You [active ? "" : "de"]activate your pinpointer."))
|
||||
|
||||
/obj/item/pinpointer/examine(mob/user)
|
||||
. = ..()
|
||||
if(target)
|
||||
. += "It is currently tracking [target]."
|
||||
|
||||
/obj/item/pinpointer/proc/toggle_on()
|
||||
active = !active
|
||||
playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE)
|
||||
|
||||
@@ -312,10 +312,6 @@
|
||||
clumsyCheck = FALSE
|
||||
var/static/list/pie_typecache = typecacheof(/obj/item/food/pie)
|
||||
|
||||
/datum/armor/item_pneumatic_cannon
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/pneumatic_cannon/pie/Initialize(mapload)
|
||||
. = ..()
|
||||
allowed_typecache = pie_typecache
|
||||
|
||||
@@ -88,16 +88,6 @@
|
||||
/obj/machinery/door/puzzle/keycard
|
||||
desc = "This door only opens when a keycard is swiped. It looks virtually indestructible."
|
||||
|
||||
/datum/armor/door_puzzle
|
||||
melee = 100
|
||||
bullet = 100
|
||||
laser = 100
|
||||
energy = 100
|
||||
bomb = 100
|
||||
bio = 100
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/machinery/door/puzzle/keycard/attackby(obj/item/attacking_item, mob/user, params)
|
||||
. = ..()
|
||||
if(!istype(attacking_item, /obj/item/keycard))
|
||||
@@ -120,16 +110,6 @@
|
||||
/obj/machinery/door/puzzle/light
|
||||
desc = "This door only opens when a linked mechanism is powered. It looks virtually indestructible."
|
||||
|
||||
/datum/armor/door_puzzle
|
||||
melee = 100
|
||||
bullet = 100
|
||||
laser = 100
|
||||
energy = 100
|
||||
bomb = 100
|
||||
bio = 100
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/machinery/door/puzzle/light/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED, PROC_REF(check_mechanism))
|
||||
@@ -171,16 +151,6 @@
|
||||
var/reward = /obj/item/food/cookie
|
||||
var/claimed = FALSE
|
||||
|
||||
/datum/armor/door_puzzle
|
||||
melee = 100
|
||||
bullet = 100
|
||||
laser = 100
|
||||
energy = 100
|
||||
bomb = 100
|
||||
bio = 100
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/pressure_plate/hologrid/Initialize(mapload)
|
||||
. = ..()
|
||||
if(undertile_pressureplate)
|
||||
|
||||
@@ -110,14 +110,6 @@
|
||||
shield_break_sound = 'sound/effects/glassbr3.ogg'
|
||||
shield_break_leftover = /obj/item/shard
|
||||
|
||||
/datum/armor/item_shield
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
bomb = 30
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/shield/riot/attackby(obj/item/attackby_item, mob/user, params)
|
||||
if(istype(attackby_item, /obj/item/melee/baton))
|
||||
if(!COOLDOWN_FINISHED(src, baton_bash))
|
||||
@@ -144,14 +136,6 @@
|
||||
inhand_icon_state = "flashshield"
|
||||
var/obj/item/assembly/flash/handheld/embedded_flash = /obj/item/assembly/flash/handheld
|
||||
|
||||
/datum/armor/item_shield
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
bomb = 30
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/shield/riot/flash/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
@@ -269,14 +253,6 @@
|
||||
/// Whether clumsy people can transform this without side effects.
|
||||
var/can_clumsy_use = FALSE
|
||||
|
||||
/datum/armor/item_shield
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
bomb = 30
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/shield/energy/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
@@ -321,14 +297,6 @@
|
||||
/// Whether the shield is extended and protecting the user..
|
||||
var/extended = FALSE
|
||||
|
||||
/datum/armor/item_shield
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
bomb = 30
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/shield/riot/tele/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
|
||||
@@ -90,14 +90,6 @@
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
/datum/armor/item_singularityhammer
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
bomb = 50
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/mjollnir/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/two_handed, \
|
||||
|
||||
@@ -107,10 +107,6 @@
|
||||
icon_prefix = "spearbomb"
|
||||
var/obj/item/grenade/explosive = null
|
||||
|
||||
/datum/armor/item_spear
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/spear/explosive/Initialize(mapload)
|
||||
. = ..()
|
||||
set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances
|
||||
@@ -189,10 +185,6 @@
|
||||
force_unwielded = 15
|
||||
force_wielded = 25
|
||||
|
||||
/datum/armor/item_spear
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
|
||||
@@ -44,10 +44,6 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
/obj/item/stack/sheet/glass/fifty
|
||||
amount = 50
|
||||
|
||||
/datum/armor/sheet_glass
|
||||
fire = 50
|
||||
acid = 100
|
||||
|
||||
/obj/item/stack/sheet/glass/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.glass_recipes
|
||||
@@ -181,10 +177,6 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
/// The amount of energy this draws from the glass source per stack unit.
|
||||
var/glacost = 500
|
||||
|
||||
/datum/armor/sheet_rglass
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg/get_amount()
|
||||
return min(round(source.energy / cost), round(glasource.energy / glacost))
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ Mineral Sheets
|
||||
*/
|
||||
|
||||
GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = FALSE, on_solid_ground = TRUE, category = CAT_MISC) \
|
||||
))
|
||||
|
||||
@@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
merge_type = /obj/item/stack/sheet/mineral/sandbags
|
||||
|
||||
GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_solid_ground = 1, category = CAT_STRUCTURE), \
|
||||
new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandbags/get_main_recipes()
|
||||
@@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/diamond
|
||||
|
||||
GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
@@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/uranium
|
||||
|
||||
GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
@@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
return TOXLOSS//dont you kids know that stuff is toxic?
|
||||
|
||||
GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
@@ -196,7 +196,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/gold
|
||||
|
||||
GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20, category = CAT_TILES), \
|
||||
new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/costume/crown, 5, category = CAT_CLOTHING), \
|
||||
@@ -224,7 +224,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/silver
|
||||
|
||||
GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
@@ -415,10 +415,10 @@ GLOBAL_LIST_INIT(adamantine_recipes, list(
|
||||
walltype = /turf/closed/wall/mineral/abductor
|
||||
|
||||
GLOBAL_LIST_INIT(abductor_recipes, list ( \
|
||||
new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 2, time = 15, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 15, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 20, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 2, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
null, \
|
||||
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20, category = CAT_TILES), \
|
||||
))
|
||||
|
||||
@@ -81,24 +81,24 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
null, \
|
||||
new /datum/stack_recipe_list("airlock assemblies", list( \
|
||||
new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("public airlock assembly", /obj/structure/door_assembly/door_assembly_public, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("hydroponics airlock assembly", /obj/structure/door_assembly/door_assembly_hydro, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("virology airlock assembly", /obj/structure/door_assembly/door_assembly_viro, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("external maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_extmai, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("public airlock assembly", /obj/structure/door_assembly/door_assembly_public, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("hydroponics airlock assembly", /obj/structure/door_assembly/door_assembly_hydro, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("virology airlock assembly", /obj/structure/door_assembly/door_assembly_viro, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("external maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_extmai, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
)), \
|
||||
null, \
|
||||
new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \
|
||||
@@ -116,7 +116,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, category = CAT_EQUIPMENT), \
|
||||
new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, category = CAT_EQUIPMENT), \
|
||||
null, \
|
||||
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \
|
||||
new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 2, time = 10 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("desk bell", /obj/structure/desk_bell, 2, time = 3 SECONDS, category = CAT_FURNITURE), \
|
||||
new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \
|
||||
@@ -245,8 +245,8 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
new/datum/stack_recipe("Large Gas Tank", /obj/structure/tank_frame, 4, time=1 SECONDS, one_per_turf=TRUE, category = CAT_ATMOSPHERIC),
|
||||
null,
|
||||
new /datum/stack_recipe_list("airlock assemblies", list( \
|
||||
new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS),
|
||||
new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 6, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS),
|
||||
new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS),
|
||||
new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 6, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS),
|
||||
)), \
|
||||
))
|
||||
|
||||
@@ -457,9 +457,6 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
|
||||
grind_results = list(/datum/reagent/cellulose = 20)
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/cloth/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.cloth_recipes
|
||||
@@ -490,9 +487,6 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
|
||||
drop_sound = 'sound/items/handling/cloth_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/cloth_pickup.ogg'
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/durathread/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.durathread_recipes
|
||||
@@ -591,9 +585,6 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
null, \
|
||||
))
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck
|
||||
name = "cardboard"
|
||||
desc = "Large sheets of card, like boxes folded flat."
|
||||
@@ -616,9 +607,6 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
/obj/item/stack/sheet/cardboard/fifty
|
||||
amount = 50
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/cardboard/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage))
|
||||
var/atom/droploc = drop_location()
|
||||
@@ -680,9 +668,6 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
|
||||
walltype = /turf/closed/wall/mineral/bronze
|
||||
has_unique_girder = TRUE
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/bronze/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.bronze_recipes
|
||||
@@ -765,9 +750,6 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
|
||||
/obj/item/stack/sheet/plastic/five
|
||||
amount = 5
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/plastic/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.plastic_recipes
|
||||
@@ -788,9 +770,6 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra
|
||||
grind_results = list(/datum/reagent/cellulose = 20)
|
||||
material_type = /datum/material/paper
|
||||
|
||||
/datum/armor/mineral_bamboo
|
||||
fire = 50
|
||||
|
||||
/obj/item/stack/sheet/paperframes/get_main_recipes()
|
||||
. = ..()
|
||||
. += GLOB.paperframe_recipes
|
||||
|
||||
@@ -83,10 +83,6 @@
|
||||
inhand_icon_state = "giftbag"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/santabag/Initialize(mapload)
|
||||
. = ..()
|
||||
regenerate_presents()
|
||||
@@ -232,10 +228,6 @@
|
||||
worn_icon = 'icons/mob/clothing/back/ethereal.dmi'
|
||||
icon_state = "saddlepack"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/saddlepack/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 26
|
||||
@@ -256,10 +248,6 @@
|
||||
icon_state = "satchel-leather"
|
||||
inhand_icon_state = "satchel"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents()
|
||||
new /obj/item/storage/wallet/random(src)
|
||||
|
||||
@@ -334,10 +322,6 @@
|
||||
inhand_icon_state = "satchel-flat"
|
||||
w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself.
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/satchel/flat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_MAXIMUM, use_anchor = TRUE) // SKYRAT EDIT - Ghosts can't see smuggler's satchels
|
||||
@@ -369,10 +353,6 @@
|
||||
//slowdown = 1 //ORIGINAL
|
||||
slowdown = 0.5 //SKYRAT EDIT CHANGE
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.max_total_storage = 30
|
||||
@@ -387,10 +367,6 @@
|
||||
slowdown = 2
|
||||
max_integrity = 100
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/cursed/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/curse_of_hunger, add_dropdel = TRUE)
|
||||
@@ -449,10 +425,6 @@
|
||||
|
||||
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/med/surgery/PopulateContents()
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
@@ -477,10 +449,6 @@
|
||||
name = "surgical duffel bag"
|
||||
desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/sec/surgery/PopulateContents()
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
@@ -508,10 +476,6 @@
|
||||
inhand_icon_state = "duffel-drone"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/drone/PopulateContents()
|
||||
new /obj/item/screwdriver(src)
|
||||
new /obj/item/wrench(src)
|
||||
@@ -527,10 +491,6 @@
|
||||
icon_state = "duffel-clown"
|
||||
inhand_icon_state = "duffel-clown"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/clown/cream_pie/PopulateContents()
|
||||
for(var/i in 1 to 10)
|
||||
new /obj/item/food/pie/cream(src)
|
||||
@@ -548,10 +508,6 @@
|
||||
special_desc_requirement = EXAMINE_CHECK_SYNDICATE // Skyrat edit
|
||||
special_desc = "This duffel bag has the Syndicate logo stiched on the inside. It appears to be made from lighter yet sturdier materials." // Skyrat edit
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/Initialize(mapload)
|
||||
. = ..()
|
||||
atom_storage.silent = TRUE
|
||||
@@ -561,10 +517,6 @@
|
||||
icon_state = "duffel-syndieammo"
|
||||
inhand_icon_state = "duffel-syndieammo"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/hitman/PopulateContents()
|
||||
new /obj/item/clothing/under/suit/black(src)
|
||||
new /obj/item/clothing/neck/tie/red/hitman(src)
|
||||
@@ -587,10 +539,6 @@
|
||||
icon_state = "duffel-syndiemed"
|
||||
inhand_icon_state = "duffel-syndiemed"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery/PopulateContents()
|
||||
new /obj/item/scalpel(src)
|
||||
new /obj/item/hemostat(src)
|
||||
@@ -615,10 +563,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun
|
||||
desc = "A large duffel bag, packed to the brim with Bulldog shotgun magazines."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
@@ -629,10 +573,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/smg
|
||||
desc = "A large duffel bag, packed to the brim with C-20r magazines."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/smg/PopulateContents()
|
||||
for(var/i in 1 to 9)
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
@@ -640,10 +580,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/mech
|
||||
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/mech/PopulateContents()
|
||||
new /obj/item/mecha_ammo/scattershot(src)
|
||||
new /obj/item/mecha_ammo/scattershot(src)
|
||||
@@ -654,10 +590,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler
|
||||
desc = "A large duffel bag, packed to the brim with various exosuit ammo."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents()
|
||||
new /obj/item/mecha_ammo/lmg(src)
|
||||
new /obj/item/mecha_ammo/lmg(src)
|
||||
@@ -672,10 +604,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/c20rbundle
|
||||
desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/c20rbundle/PopulateContents()
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
@@ -685,10 +613,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/bulldogbundle
|
||||
desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents()
|
||||
new /obj/item/gun/ballistic/shotgun/bulldog(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
@@ -698,10 +622,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle
|
||||
desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a magboot MODsuit module."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents()
|
||||
new /obj/item/mod/module/magboot(src)
|
||||
new /obj/item/storage/medkit/tactical(src)
|
||||
@@ -711,10 +631,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle
|
||||
desc = "A large duffel bag containing deadly chemicals, a handheld chem sprayer, Bioterror foam grenade, a Donksoft assault rifle, box of riot grade darts, a dart pistol, and a box of syringes."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle/PopulateContents()
|
||||
new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src)
|
||||
new /obj/item/storage/box/syndie_kit/chemical(src)
|
||||
@@ -737,10 +653,6 @@
|
||||
/obj/item/storage/backpack/duffelbag/syndie/firestarter
|
||||
desc = "A large duffel bag containing a New Russian pyro backpack sprayer, Elite MODsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment."
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents()
|
||||
new /obj/item/clothing/under/syndicate/soviet(src)
|
||||
new /obj/item/mod/control/pre_equipped/elite/flamethrower(src)
|
||||
@@ -782,10 +694,6 @@
|
||||
icon_state = "duffel-explorer"
|
||||
inhand_icon_state = "duffel-explorer"
|
||||
|
||||
/datum/armor/backpack_holding
|
||||
fire = 60
|
||||
acid = 50
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents()
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
|
||||
|
||||
@@ -264,6 +264,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning",
|
||||
name = "Syndicate Tome"
|
||||
attack_verb_continuous = list("attacks", "burns", "blesses", "damns", "scorches")
|
||||
attack_verb_simple = list("attack", "burn", "bless", "damn", "scorch")
|
||||
item_flags = NO_BLOOD_ON_ITEM
|
||||
var/uses = 1
|
||||
var/ownername
|
||||
|
||||
@@ -287,6 +288,3 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning",
|
||||
return ..()
|
||||
else
|
||||
return ..(M,user,heal_mode = FALSE)
|
||||
|
||||
/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna)
|
||||
return FALSE
|
||||
|
||||
@@ -133,10 +133,6 @@
|
||||
|
||||
var/obj/item/watertank/tank
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/reagent_containers/spray/mister/Initialize(mapload)
|
||||
. = ..()
|
||||
tank = loc
|
||||
@@ -161,10 +157,6 @@
|
||||
inhand_icon_state = "waterbackpackjani"
|
||||
custom_price = PAYCHECK_CREW * 5
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/watertank/janitor/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(/datum/reagent/space_cleaner, 500)
|
||||
@@ -181,10 +173,6 @@
|
||||
possible_transfer_amounts = list(5, 10)
|
||||
current_range = 5
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/watertank/janitor/make_noz()
|
||||
return new /obj/item/reagent_containers/spray/mister/janitor(src)
|
||||
|
||||
@@ -201,10 +189,6 @@
|
||||
custom_price = PAYCHECK_CREW * 2
|
||||
volume = 1000
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/watertank/pepperspray/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 1000)
|
||||
@@ -221,10 +205,6 @@
|
||||
possible_transfer_amounts = list(5, 10)
|
||||
current_range = 6
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/watertank/pepperspray/make_noz()
|
||||
return new /obj/item/reagent_containers/spray/mister/pepperspray(src)
|
||||
|
||||
@@ -246,10 +226,6 @@
|
||||
volume = 200
|
||||
slowdown = 0
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/watertank/atmos/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(/datum/reagent/water, 200)
|
||||
@@ -286,10 +262,6 @@
|
||||
var/metal_synthesis_cooldown = 0
|
||||
COOLDOWN_DECLARE(resin_cooldown)
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/extinguisher/mini/nozzle/Initialize(mapload)
|
||||
. = ..()
|
||||
tank = loc
|
||||
@@ -397,10 +369,6 @@
|
||||
pass_flags = PASSTABLE
|
||||
anchored = TRUE
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/effect/resin_container/proc/Smoke()
|
||||
var/datum/effect_system/fluid_spread/foam/metal/resin/foaming = new
|
||||
foaming.set_up(4, holder = src, location = loc)
|
||||
@@ -441,10 +409,6 @@
|
||||
fill_icon_thresholds = list(0, 15, 60)
|
||||
fill_icon_state = "backpack"
|
||||
|
||||
/datum/armor/item_watertank
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/reagent_containers/chemtank/ui_action_click()
|
||||
toggle_injection()
|
||||
|
||||
|
||||
@@ -343,11 +343,6 @@
|
||||
//How far the emergency teleport checks for a safe position
|
||||
var/parallel_teleport_distance = 3
|
||||
|
||||
/datum/armor/item_hand_tele
|
||||
bomb = 30
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/syndicate_teleporter/Initialize(mapload)
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -517,11 +512,6 @@
|
||||
/obj/item/storage/box/syndie_kit/syndicate_teleporter
|
||||
name = "syndicate teleporter kit"
|
||||
|
||||
/datum/armor/item_hand_tele
|
||||
bomb = 30
|
||||
fire = 100
|
||||
acid = 100
|
||||
|
||||
/obj/item/storage/box/syndie_kit/syndicate_teleporter/PopulateContents()
|
||||
new /obj/item/syndicate_teleporter(src)
|
||||
new /obj/item/paper/syndicate_teleporter(src)
|
||||
|
||||
@@ -70,10 +70,6 @@
|
||||
desc = "It's a bulky crowbar. It almost seems deliberately designed to not be able to fit inside of a backpack."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/datum/armor/item_crowbar
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/crowbar/large/heavy //from space ruin
|
||||
name = "heavy crowbar"
|
||||
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big. It feels oddly heavy.."
|
||||
@@ -87,10 +83,6 @@
|
||||
throwforce = 10
|
||||
throw_speed = 2
|
||||
|
||||
/datum/armor/item_crowbar
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/crowbar/large/old/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(50))
|
||||
@@ -111,10 +103,6 @@
|
||||
toolspeed = 0.7
|
||||
force_opens = TRUE
|
||||
|
||||
/datum/armor/item_crowbar
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/crowbar/power/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
@@ -146,10 +134,6 @@
|
||||
toolspeed = 0.5
|
||||
force_opens = TRUE
|
||||
|
||||
/datum/armor/item_crowbar
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/crowbar/power/examine()
|
||||
. = ..()
|
||||
. += " It's fitted with a [tool_behaviour == TOOL_CROWBAR ? "prying" : "cutting"] head."
|
||||
|
||||
@@ -72,10 +72,6 @@
|
||||
greyscale_config_inhand_left = null
|
||||
greyscale_config_inhand_right = null
|
||||
|
||||
/datum/armor/item_screwdriver
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/screwdriver/abductor/get_belt_overlay()
|
||||
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_alien")
|
||||
|
||||
@@ -105,10 +101,6 @@
|
||||
greyscale_config_inhand_left = null
|
||||
greyscale_config_inhand_right = null
|
||||
|
||||
/datum/armor/item_screwdriver
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/screwdriver/power/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
@@ -157,10 +149,6 @@
|
||||
/obj/item/screwdriver/red
|
||||
random_color = FALSE
|
||||
|
||||
/datum/armor/item_screwdriver
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/screwdriver/red/Initialize(mapload)
|
||||
. = ..()
|
||||
set_greyscale(colors=list(screwdriver_colors["red"]))
|
||||
|
||||
@@ -349,10 +349,6 @@
|
||||
max_fuel = 40
|
||||
custom_materials = list(/datum/material/glass=60)
|
||||
|
||||
/datum/armor/item_weldingtool
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/weldingtool/largetank/flamethrower_screwdriver()
|
||||
return
|
||||
|
||||
@@ -366,10 +362,6 @@
|
||||
icon_state = "indwelder_cyborg"
|
||||
toolspeed = 0.5
|
||||
|
||||
/datum/armor/item_weldingtool
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/weldingtool/largetank/cyborg/cyborg_unequip(mob/user)
|
||||
if(!isOn())
|
||||
return
|
||||
@@ -385,10 +377,6 @@
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
change_icons = FALSE
|
||||
|
||||
/datum/armor/item_weldingtool
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/weldingtool/mini/flamethrower_screwdriver()
|
||||
return
|
||||
|
||||
@@ -406,10 +394,6 @@
|
||||
light_range = 0
|
||||
change_icons = FALSE
|
||||
|
||||
/datum/armor/item_weldingtool
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/weldingtool/abductor/process()
|
||||
if(get_fuel() <= max_fuel)
|
||||
reagents.add_reagent(/datum/reagent/fuel, 1)
|
||||
@@ -438,10 +422,6 @@
|
||||
var/last_gen = 0
|
||||
var/nextrefueltick = 0
|
||||
|
||||
/datum/armor/item_weldingtool
|
||||
fire = 100
|
||||
acid = 30
|
||||
|
||||
/obj/item/weldingtool/experimental/process()
|
||||
..()
|
||||
if(get_fuel() < max_fuel && nextrefueltick < world.time)
|
||||
|
||||
@@ -59,10 +59,6 @@
|
||||
///var to hold the name of the person who suicided
|
||||
var/suicider
|
||||
|
||||
/datum/armor/item_wrench
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/wrench/medical/examine(mob/user)
|
||||
. = ..()
|
||||
if(suicider)
|
||||
@@ -105,10 +101,6 @@
|
||||
tool_behaviour = null
|
||||
toolspeed = null
|
||||
|
||||
/datum/armor/item_wrench
|
||||
fire = 50
|
||||
acid = 30
|
||||
|
||||
/obj/item/wrench/combat/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
|
||||
@@ -55,10 +55,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
|
||||
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
|
||||
|
||||
/datum/armor/item_banhammer
|
||||
fire = 100
|
||||
acid = 70
|
||||
|
||||
/obj/item/sord/suicide_act(mob/living/user)
|
||||
user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty."), \
|
||||
span_suicide("You try to impale yourself with [src], but it's USELESS..."))
|
||||
@@ -114,10 +110,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
throw_range = 5
|
||||
armour_penetration = 35
|
||||
|
||||
/datum/armor/item_claymore
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
|
||||
desc = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
|
||||
flags_1 = CONDUCT_1
|
||||
@@ -312,10 +304,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb_continuous = list("hits", "bludgeons", "whacks", "bonks")
|
||||
attack_verb_simple = list("hit", "bludgeon", "whack", "bonk")
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/wirerod/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -418,10 +406,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
/// Whether the switchblade starts extended or not.
|
||||
var/start_extended = FALSE
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/switchblade/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_HANDS)
|
||||
@@ -471,10 +455,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb_simple = list("call", "ring")
|
||||
hitsound = 'sound/weapons/ring.ogg'
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/phone/suicide_act(mob/living/user)
|
||||
if(locate(/obj/structure/chair/stool) in user.loc)
|
||||
user.visible_message(span_suicide("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!"))
|
||||
@@ -508,10 +488,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
custom_materials = list(/datum/material/iron = 600)
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/cane/white/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
@@ -582,10 +558,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "ectoplasm"
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/ectoplasm/suicide_act(mob/living/user)
|
||||
user.visible_message(span_suicide("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane!"))
|
||||
return OXYLOSS
|
||||
@@ -618,10 +590,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
tool_behaviour = TOOL_SAW
|
||||
toolspeed = 1
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/mounted_chainsaw/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT)
|
||||
@@ -651,10 +619,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
attack_verb_simple = list("bust")
|
||||
var/impressiveness = 45
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/statuebust/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/art, impressiveness)
|
||||
@@ -703,10 +667,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
///The vehicle counterpart for the board
|
||||
var/board_item_type = /obj/vehicle/ridden/scooter/skateboard
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/melee/skateboard/attack_self(mob/user)
|
||||
var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasn't my fault
|
||||
S.buckle_mob(user)
|
||||
@@ -765,10 +725,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
/// List of all thrown datums we sent.
|
||||
var/list/thrown_datums = list()
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/melee/baseball_bat/Initialize(mapload)
|
||||
. = ..()
|
||||
if(prob(1))
|
||||
@@ -887,10 +843,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
throwforce = 15
|
||||
mob_thrower = TRUE
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers
|
||||
playsound(src, pick('sound/weapons/effects/batreflect1.ogg', 'sound/weapons/effects/batreflect2.ogg'), 50, TRUE)
|
||||
return TRUE
|
||||
@@ -916,10 +868,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
/// How much extra damage the fly swatter does against mobs it is strong against
|
||||
var/extra_strength_damage = 24
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/melee/flyswatter/Initialize(mapload)
|
||||
. = ..()
|
||||
splattable = typecacheof(list(
|
||||
@@ -977,10 +925,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
name = "\improper ACME Extendo-Hand"
|
||||
desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners."
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user, params)
|
||||
var/dist = get_dist(M, user)
|
||||
if(dist < min_reach)
|
||||
@@ -1050,10 +994,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
/// The previous target we attacked
|
||||
var/datum/weakref/previous_target
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/highfrequencyblade/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/two_handed, \
|
||||
@@ -1145,10 +1085,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
layer = ABOVE_ALL_MOB_LAYER
|
||||
plane = ABOVE_GAME_PLANE
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/effect/temp_visual/slash/Initialize(mapload, atom/target, x_slashed, y_slashed, slash_color)
|
||||
. = ..()
|
||||
if(!target)
|
||||
@@ -1173,10 +1109,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
wound_bonus = 20
|
||||
bare_wound_bonus = 25
|
||||
|
||||
/datum/armor/item_katana
|
||||
fire = 100
|
||||
acid = 50
|
||||
|
||||
/obj/item/highfrequencyblade/wizard/attack_self(mob/user, modifiers)
|
||||
if(!IS_WIZARD(user))
|
||||
balloon_alert(user, "you're too weak!")
|
||||
|
||||
@@ -55,14 +55,6 @@
|
||||
name = "secure hydroponics crate"
|
||||
icon_state = "hydrosecurecrate"
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/freezer //for consistency with other "freezer" closets/crates
|
||||
desc = "An insulated crate with a lock on it, used to secure perishables."
|
||||
name = "secure kitchen crate"
|
||||
@@ -74,14 +66,6 @@
|
||||
req_access = list(ACCESS_KITCHEN)
|
||||
tamperproof = 10
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/freezer/pizza/PopulateContents()
|
||||
. = ..()
|
||||
new /obj/effect/spawner/random/food_or_drink/pizzaparty(src)
|
||||
@@ -109,14 +93,6 @@
|
||||
///Is the crate being bought by a person, or a budget card?
|
||||
var/department_purchase = FALSE
|
||||
|
||||
/datum/armor/crate_secure
|
||||
melee = 30
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 80
|
||||
|
||||
/obj/structure/closet/crate/secure/owned/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.")
|
||||
|
||||
@@ -233,12 +233,6 @@
|
||||
var/obj/item/electronics/airlock/electronics
|
||||
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase_chassis/attackby(obj/item/I, mob/user, params)
|
||||
if(I.tool_behaviour == TOOL_WRENCH) //The player can only deconstruct the wooden frame
|
||||
to_chat(user, span_notice("You start disassembling [src]..."))
|
||||
@@ -319,12 +313,6 @@
|
||||
///the trophy message
|
||||
var/trophy_message = ""
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase/trophy/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.trophy_cases += src
|
||||
@@ -441,12 +429,6 @@
|
||||
/obj/item/showpiece_dummy
|
||||
name = "holographic replica"
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/item/showpiece_dummy/Initialize(mapload, path)
|
||||
. = ..()
|
||||
var/obj/item/item_path = path
|
||||
@@ -472,12 +454,6 @@
|
||||
///The Account which will receive payment for purchases. Set by the first ID to swipe the tray.
|
||||
var/datum/bank_account/payments_acc = null
|
||||
|
||||
/datum/armor/structure_displaycase
|
||||
melee = 30
|
||||
bomb = 10
|
||||
fire = 70
|
||||
acid = 100
|
||||
|
||||
/obj/structure/displaycase/forsale/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][broken ? "_broken" : (open ? "_open" : (!showpiece ? "_empty" : null))]"
|
||||
return ..()
|
||||
|
||||
@@ -66,13 +66,6 @@
|
||||
max_integrity = 20
|
||||
var/allow_walk = TRUE //can we pass through it on walk intent
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -90,13 +83,6 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "holosign"
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/wetsign/CanAllowThrough(atom/movable/mover, border_dir)
|
||||
. = ..()
|
||||
if(iscarbon(mover))
|
||||
@@ -130,13 +116,6 @@
|
||||
max_integrity = 150
|
||||
icon_state = "holo_tram"
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/atmos/Initialize(mapload)
|
||||
. = ..()
|
||||
air_update_turf(TRUE, TRUE)
|
||||
@@ -156,13 +135,6 @@
|
||||
max_integrity = 10
|
||||
allow_walk = FALSE
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/bullet_act(obj/projectile/P)
|
||||
take_damage((P.damage / 5) , BRUTE, MELEE, 1) //Doesn't really matter what damage flag it is.
|
||||
if(istype(P, /obj/projectile/energy/electrode))
|
||||
@@ -179,13 +151,6 @@
|
||||
var/force_allaccess = FALSE
|
||||
var/buzzcd = 0
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/medical/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("The biometric scanners are <b>[force_allaccess ? "off" : "on"]</b>.")
|
||||
@@ -231,13 +196,6 @@
|
||||
max_integrity = 20
|
||||
var/shockcd = 0
|
||||
|
||||
/datum/armor/structure_holosign
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 50
|
||||
fire = 20
|
||||
acid = 20
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/projectile/P)
|
||||
take_damage(P.damage, BRUTE, MELEE, 1) //Yeah no this doesn't get projectile resistance.
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
@@ -86,11 +86,6 @@
|
||||
canSmoothWith = SMOOTH_GROUP_CATWALK
|
||||
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/catwalk/deconstruction_hints(mob/user)
|
||||
return span_notice("The supporting rods look like they could be <b>cut</b>.")
|
||||
|
||||
@@ -111,11 +106,6 @@
|
||||
desc = "A heavily reinforced catwalk used to build bridges in hostile environments. It doesn't look like anything could make this budge."
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/catwalk/mining/deconstruction_hints(mob/user)
|
||||
return
|
||||
|
||||
@@ -133,11 +123,6 @@
|
||||
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
|
||||
/datum/armor/structure_lattice
|
||||
melee = 50
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/structure/lattice/lava/deconstruction_hints(mob/user)
|
||||
return span_notice("The rods look like they could be <b>cut</b>, but the <i>heat treatment will shatter off</i>. There's space for a <i>tile</i>.")
|
||||
|
||||
|
||||
@@ -248,13 +248,6 @@
|
||||
opacity = FALSE
|
||||
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/transparent/Close()
|
||||
..()
|
||||
set_opacity(FALSE)
|
||||
@@ -281,13 +274,6 @@
|
||||
max_integrity = 200
|
||||
rad_insulation = RAD_VERY_LIGHT_INSULATION
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/wood/pickaxe_door(mob/living/user, obj/item/I)
|
||||
return
|
||||
|
||||
@@ -314,13 +300,6 @@
|
||||
resistance_flags = FLAMMABLE
|
||||
max_integrity = 20
|
||||
|
||||
/datum/armor/structure_mineral_door
|
||||
melee = 10
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 50
|
||||
acid = 50
|
||||
|
||||
/obj/structure/mineral_door/paperframe/Initialize(mapload)
|
||||
. = ..()
|
||||
if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
|
||||
|
||||
@@ -484,10 +484,6 @@
|
||||
smoothing_groups = SMOOTH_GROUP_WOOD_TABLES //Don't smooth with SMOOTH_GROUP_TABLES
|
||||
canSmoothWith = SMOOTH_GROUP_WOOD_TABLES
|
||||
|
||||
/datum/armor/table_glass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/table/wood/narsie_act(total_override = TRUE)
|
||||
if(!total_override)
|
||||
..()
|
||||
@@ -516,10 +512,6 @@
|
||||
canSmoothWith = SMOOTH_GROUP_FANCY_WOOD_TABLES
|
||||
var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize()
|
||||
|
||||
/datum/armor/table_glass
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/table/wood/fancy/Initialize(mapload)
|
||||
. = ..()
|
||||
// Needs to be set dynamically because table smooth sprites are 32x34,
|
||||
@@ -653,15 +645,6 @@
|
||||
smoothing_groups = SMOOTH_GROUP_BRONZE_TABLES //Don't smooth with SMOOTH_GROUP_TABLES
|
||||
canSmoothWith = SMOOTH_GROUP_BRONZE_TABLES
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/table/bronze/tablepush(mob/living/user, mob/living/pushed_mob)
|
||||
..()
|
||||
playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 50, TRUE)
|
||||
@@ -725,15 +708,6 @@
|
||||
var/mob/living/carbon/patient = null
|
||||
var/obj/machinery/computer/operating/computer = null
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/table/optable/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/direction in GLOB.alldirs)
|
||||
@@ -807,15 +781,6 @@
|
||||
pass_flags_self = LETPASSTHROW //You can throw objects over this, despite it's density.
|
||||
max_integrity = 20
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/rack/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("It's held together by a couple of <b>bolts</b>.")
|
||||
@@ -897,15 +862,6 @@
|
||||
custom_materials = list(/datum/material/iron=2000)
|
||||
var/building = FALSE
|
||||
|
||||
/datum/armor/table_reinforced
|
||||
melee = 10
|
||||
bullet = 30
|
||||
laser = 30
|
||||
energy = 100
|
||||
bomb = 20
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/item/rack_parts/attackby(obj/item/W, mob/user, params)
|
||||
if (W.tool_behaviour == TOOL_WRENCH)
|
||||
new /obj/item/stack/sheet/iron(user.loc)
|
||||
|
||||
@@ -740,13 +740,6 @@
|
||||
glass_amount = 2
|
||||
|
||||
//there is a sub shuttle window in survival_pod.dm for mining pods
|
||||
/datum/armor/reinforced_plasma
|
||||
melee = 80
|
||||
bullet = 20
|
||||
bomb = 60
|
||||
fire = 99
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/reinforced/shuttle//this is called reinforced because it is reinforced w/titanium
|
||||
name = "shuttle window"
|
||||
desc = "A reinforced, air-locked pod window."
|
||||
@@ -862,12 +855,6 @@
|
||||
var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "torn", layer = ABOVE_OBJ_LAYER - 0.1)
|
||||
var/static/mutable_appearance/paper = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "paper", layer = ABOVE_OBJ_LAYER - 0.1)
|
||||
|
||||
/datum/armor/plasma_plastitanium
|
||||
melee = 95
|
||||
bomb = 50
|
||||
fire = 80
|
||||
acid = 100
|
||||
|
||||
/obj/structure/window/paperframe/Initialize(mapload)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
|
||||
@@ -7,36 +7,54 @@
|
||||
flags_1 = NOJAUNT //This line goes out to every wizard that ever managed to escape the den. I'm sorry.
|
||||
explosive_resistance = INFINITY
|
||||
|
||||
/turf/open/space/transit/Initialize(mapload)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
RegisterSignal(src, COMSIG_TURF_RESERVATION_RELEASED, PROC_REF(launch_contents))
|
||||
|
||||
for(var/atom/movable/movable in src)
|
||||
throw_atom(movable)
|
||||
|
||||
/turf/open/space/transit/clear_signal_refs()
|
||||
//Signals are NOT removed from turfs upon replacement, and we get replaced ALOT, so unregister our signal
|
||||
UnregisterSignal(src, COMSIG_TURF_RESERVATION_RELEASED)
|
||||
|
||||
/turf/open/space/transit/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
|
||||
. = ..()
|
||||
underlay_appearance.icon_state = "speedspace_ns_[get_transit_state(asking_turf)]"
|
||||
underlay_appearance.transform = turn(matrix(), get_transit_angle(asking_turf))
|
||||
|
||||
/turf/open/space/transit/south
|
||||
dir = SOUTH
|
||||
/turf/open/space/transit/update_icon()
|
||||
. = ..()
|
||||
transform = turn(matrix(), get_transit_angle(src))
|
||||
|
||||
/turf/open/space/transit/north
|
||||
dir = NORTH
|
||||
|
||||
/turf/open/space/transit/horizontal
|
||||
dir = WEST
|
||||
|
||||
/turf/open/space/transit/west
|
||||
dir = WEST
|
||||
|
||||
/turf/open/space/transit/east
|
||||
dir = EAST
|
||||
/turf/open/space/transit/update_icon_state()
|
||||
icon_state = "speedspace_ns_[get_transit_state(src)]"
|
||||
return ..()
|
||||
|
||||
/turf/open/space/transit/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
|
||||
. = ..()
|
||||
if(!locate(/obj/structure/lattice) in src)
|
||||
throw_atom(arrived)
|
||||
|
||||
if(!HAS_TRAIT(arrived, TRAIT_HYPERSPACED) && !HAS_TRAIT(arrived, TRAIT_FREE_HYPERSPACE_MOVEMENT))
|
||||
arrived.AddComponent(/datum/component/shuttle_cling, turn(dir, 180), old_loc)
|
||||
|
||||
/turf/open/space/transit/Exited(atom/movable/gone, direction)
|
||||
. = ..()
|
||||
|
||||
var/turf/location = gone.loc
|
||||
if(istype(location, /turf/open/space) && !istype(location, src.type))//they got forced out of transit area into default space tiles
|
||||
throw_atom(gone) //launch them into game space, away from transitspace
|
||||
|
||||
///Get rid of all our contents, called when our reservation is released (which in our case means the shuttle arrived)
|
||||
/turf/open/space/transit/proc/launch_contents(datum/turf_reservation/reservation)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
for(var/atom/movable/movable in contents)
|
||||
throw_atom(movable)
|
||||
|
||||
/turf/open/space/transit/proc/throw_atom(atom/movable/AM)
|
||||
if(!AM || istype(AM, /obj/docking_port) || istype(AM, /obj/effect/abstract))
|
||||
return
|
||||
if(AM.loc != src) // Multi-tile objects are "in" multiple locs but its loc is it's true placement.
|
||||
return // Don't move multi tile objects if their origin isn't in transit
|
||||
var/max = world.maxx-TRANSITIONEDGE
|
||||
var/min = 1+TRANSITIONEDGE
|
||||
|
||||
@@ -71,24 +89,23 @@
|
||||
var/turf/T = locate(_x, _y, _z)
|
||||
AM.forceMove(T)
|
||||
|
||||
|
||||
/turf/open/space/transit/CanBuildHere()
|
||||
return SSshuttle.is_in_shuttle_bounds(src)
|
||||
|
||||
/turf/open/space/transit/south
|
||||
dir = SOUTH
|
||||
|
||||
/turf/open/space/transit/Initialize(mapload)
|
||||
. = ..()
|
||||
update_appearance()
|
||||
for(var/atom/movable/AM in src)
|
||||
throw_atom(AM)
|
||||
/turf/open/space/transit/north
|
||||
dir = NORTH
|
||||
|
||||
/turf/open/space/transit/update_icon()
|
||||
. = ..()
|
||||
transform = turn(matrix(), get_transit_angle(src))
|
||||
/turf/open/space/transit/horizontal
|
||||
dir = WEST
|
||||
|
||||
/turf/open/space/transit/update_icon_state()
|
||||
icon_state = "speedspace_ns_[get_transit_state(src)]"
|
||||
return ..()
|
||||
/turf/open/space/transit/west
|
||||
dir = WEST
|
||||
|
||||
/turf/open/space/transit/east
|
||||
dir = EAST
|
||||
|
||||
/proc/get_transit_state(turf/T)
|
||||
var/p = 9
|
||||
|
||||
@@ -1212,7 +1212,7 @@
|
||||
else if(href_list["dupe_marked_datum"])
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
return DuplicateObject(marked_datum, perfectcopy=1, newloc=get_turf(usr))
|
||||
return duplicate_object(marked_datum, spawning_location = get_turf(usr))
|
||||
|
||||
else if(href_list["object_list"]) //this is the laggiest thing ever
|
||||
if(!check_rights(R_SPAWN))
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/antagonist/blobbernaut
|
||||
name = "\improper Blobbernaut"
|
||||
antagpanel_category = "Biohazards"
|
||||
show_name_in_check_antagonists = TRUE
|
||||
show_to_ghosts = TRUE
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/antagonist/blobspore
|
||||
name = "\improper Blob Spore"
|
||||
antagpanel_category = "Biohazards"
|
||||
show_name_in_check_antagonists = TRUE
|
||||
show_to_ghosts = TRUE
|
||||
|
||||
|
||||
@@ -355,10 +355,6 @@
|
||||
health_regen = BLOB_REGULAR_HP_REGEN
|
||||
brute_resist = BLOB_BRUTE_RESIST * 0.5
|
||||
|
||||
/datum/armor/structure_blob
|
||||
fire = 80
|
||||
acid = 70
|
||||
|
||||
/obj/structure/blob/normal/Initialize(mapload, owner_overmind)
|
||||
. = ..()
|
||||
update_integrity(initial_integrity)
|
||||
|
||||
@@ -57,9 +57,5 @@
|
||||
max_integrity = BLOB_REFLECTOR_MAX_HP
|
||||
health_regen = BLOB_REFLECTOR_HP_REGEN
|
||||
|
||||
/datum/armor/blob_shield
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/structure/blob/shield/reflective/core // Automatically generated by the core
|
||||
point_return = 0
|
||||
|
||||
@@ -520,11 +520,6 @@
|
||||
armor_type = /datum/armor/space_changeling
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/datum/armor/space_changeling
|
||||
bio = 100
|
||||
fire = 90
|
||||
acid = 90
|
||||
|
||||
/obj/item/clothing/head/helmet/space/changeling/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT)
|
||||
|
||||
@@ -98,16 +98,6 @@
|
||||
/// Cooldown for making a trombone noise for failing to make a bananium desword
|
||||
COOLDOWN_DECLARE(next_trombone_allowed)
|
||||
|
||||
/datum/armor/banana_shoes_combat
|
||||
melee = 25
|
||||
bullet = 25
|
||||
laser = 25
|
||||
energy = 25
|
||||
bomb = 50
|
||||
bio = 50
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/item/melee/energy/sword/bananium/make_transformable()
|
||||
AddComponent(/datum/component/transforming, \
|
||||
throw_speed_on = 4, \
|
||||
@@ -174,16 +164,6 @@
|
||||
active_throw_speed = 1
|
||||
can_clumsy_use = TRUE
|
||||
|
||||
/datum/armor/banana_shoes_combat
|
||||
melee = 25
|
||||
bullet = 25
|
||||
laser = 25
|
||||
energy = 25
|
||||
bomb = 50
|
||||
bio = 50
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/item/shield/energy/bananium/on_transform(obj/item/source, mob/user, active)
|
||||
. = ..()
|
||||
adjust_comedy()
|
||||
@@ -229,16 +209,6 @@
|
||||
var/det_time = 50
|
||||
var/obj/item/grenade/syndieminibomb/bomb
|
||||
|
||||
/datum/armor/banana_shoes_combat
|
||||
melee = 25
|
||||
bullet = 25
|
||||
laser = 25
|
||||
energy = 25
|
||||
bomb = 50
|
||||
bio = 50
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/item/grown/bananapeel/bombanana/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/slippery, det_time)
|
||||
@@ -266,16 +236,6 @@
|
||||
icon_state = "moustacheg"
|
||||
clumsy_check = GRENADE_NONCLUMSY_FUMBLE
|
||||
|
||||
/datum/armor/banana_shoes_combat
|
||||
melee = 25
|
||||
bullet = 25
|
||||
laser = 25
|
||||
energy = 25
|
||||
bomb = 50
|
||||
bio = 50
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/item/grenade/chem_grenade/teargas/moustache/detonate(mob/living/lanced_by)
|
||||
var/myloc = get_turf(src)
|
||||
. = ..()
|
||||
@@ -291,16 +251,6 @@
|
||||
/obj/item/clothing/mask/fakemoustache/sticky
|
||||
var/unstick_time = 600
|
||||
|
||||
/datum/armor/banana_shoes_combat
|
||||
melee = 25
|
||||
bullet = 25
|
||||
laser = 25
|
||||
energy = 25
|
||||
bomb = 50
|
||||
bio = 50
|
||||
fire = 90
|
||||
acid = 50
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache/sticky/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT)
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
AddElement(/datum/element/simple_flying)
|
||||
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
|
||||
ADD_TRAIT(src, TRAIT_SIXTHSENSE, INNATE_TRAIT)
|
||||
ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT)
|
||||
|
||||
// Starting spells
|
||||
var/datum/action/cooldown/spell/night_vision/revenant/vision = new(src)
|
||||
|
||||
@@ -23,9 +23,10 @@
|
||||
// construct the icon and slap it into the resource cache
|
||||
var/atom/item = initial(D.build_path)
|
||||
if (!ispath(item, /atom))
|
||||
// biogenerator outputs to beakers by default
|
||||
if (initial(D.build_type) & BIOGENERATOR)
|
||||
item = /obj/item/reagent_containers/cup/beaker/large
|
||||
// biogenerator reagent designs display their default container
|
||||
if(initial(D.make_reagent))
|
||||
var/datum/reagent/reagent = initial(D.make_reagent)
|
||||
item = initial(reagent.default_container)
|
||||
else
|
||||
continue // shouldn't happen, but just in case
|
||||
|
||||
|
||||
@@ -933,11 +933,6 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm)
|
||||
req_access = null
|
||||
req_one_access = null
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/machinery/airalarm/syndicate //general syndicate access
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
|
||||
@@ -969,11 +964,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
|
||||
var/static/list/options_map
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm_general/populate_options()
|
||||
if(!options_map)
|
||||
options_map = list(
|
||||
@@ -1086,11 +1076,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
var/list/alarm_duplicates = list()
|
||||
var/max_alarm_duplicates = 20
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm/ui_perform_action(mob/user, action)
|
||||
if(length(alarm_duplicates) >= max_alarm_duplicates)
|
||||
return
|
||||
@@ -1140,11 +1125,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
circuit_size = 0
|
||||
ui_buttons = list()
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm/duplicate/removed_from(obj/item/integrated_circuit/removed_from)
|
||||
if(!QDELING(src))
|
||||
qdel(src)
|
||||
@@ -1251,11 +1231,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
var/max_scrubber_duplicates = 20
|
||||
var/list/scrubber_duplicates = list()
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm_scrubbers/ui_perform_action(mob/user, action)
|
||||
if(length(scrubber_duplicates) >= max_scrubber_duplicates)
|
||||
return
|
||||
@@ -1296,11 +1271,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
circuit_size = 0
|
||||
ui_buttons = list()
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm_scrubbers/duplicate/Destroy()
|
||||
connected_alarm = null
|
||||
return ..()
|
||||
@@ -1480,11 +1450,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
var/max_vent_duplicates = 20
|
||||
var/list/vent_duplicates = list()
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm_vents/ui_perform_action(mob/user, action)
|
||||
if(length(vent_duplicates) >= max_vent_duplicates)
|
||||
return
|
||||
@@ -1533,11 +1498,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24)
|
||||
circuit_size = 0
|
||||
ui_buttons = list()
|
||||
|
||||
/datum/armor/machinery_airalarm
|
||||
energy = 100
|
||||
fire = 90
|
||||
acid = 30
|
||||
|
||||
/obj/item/circuit_component/air_alarm_vents/duplicate/removed_from(obj/item/integrated_circuit/removed_from)
|
||||
if(!QDELING(src))
|
||||
qdel(src)
|
||||
|
||||
@@ -300,11 +300,6 @@
|
||||
on = TRUE
|
||||
icon_state = "thermo_base_1"
|
||||
|
||||
/datum/armor/unary_thermomachine
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 30
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/Initialize(mapload)
|
||||
. = ..()
|
||||
if(target_temperature == initial(target_temperature))
|
||||
@@ -314,11 +309,6 @@
|
||||
icon_state = "thermo_base_1"
|
||||
greyscale_colors = COLOR_CYAN
|
||||
|
||||
/datum/armor/unary_thermomachine
|
||||
energy = 100
|
||||
fire = 80
|
||||
acid = 30
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom/Initialize(mapload)
|
||||
. = ..()
|
||||
target_temperature = COLD_ROOM_TEMP
|
||||
|
||||
@@ -162,10 +162,6 @@
|
||||
///The component parent object
|
||||
var/obj/machinery/meter/connected_meter
|
||||
|
||||
/datum/armor/machinery_meter
|
||||
energy = 100
|
||||
fire = 40
|
||||
|
||||
/obj/item/circuit_component/atmos_meter/populate_ports()
|
||||
request_data = add_input_port("Request Meter Data", PORT_TYPE_SIGNAL, trigger = PROC_REF(request_meter_data))
|
||||
|
||||
@@ -193,10 +189,6 @@
|
||||
// why are you yelling?
|
||||
/obj/machinery/meter/turf
|
||||
|
||||
/datum/armor/machinery_meter
|
||||
energy = 100
|
||||
fire = 40
|
||||
|
||||
/obj/machinery/meter/turf/reattach_to_layer()
|
||||
target = loc
|
||||
|
||||
|
||||
@@ -289,15 +289,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
|
||||
temp_limit = 1e12
|
||||
pressure_limit = 1e14
|
||||
|
||||
/datum/armor/portable_atmospherics_canister
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/fusion_test/create_gas()
|
||||
air_contents.add_gases(/datum/gas/hydrogen, /datum/gas/tritium)
|
||||
air_contents.gases[/datum/gas/hydrogen][MOLES] = 300
|
||||
@@ -311,15 +302,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
|
||||
greyscale_config = /datum/greyscale_config/canister/double_stripe
|
||||
greyscale_colors = "#9fba6c#3d4680"
|
||||
|
||||
/datum/armor/portable_atmospherics_canister
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/anesthetic_mix/create_gas()
|
||||
air_contents.add_gases(/datum/gas/oxygen, /datum/gas/nitrous_oxide)
|
||||
air_contents.gases[/datum/gas/oxygen][MOLES] = (O2_ANESTHETIC * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature)
|
||||
@@ -370,15 +352,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister())
|
||||
* Called on Initialize(), fill the canister with the gas_type specified up to the filled level (half if 0.5, full if 1)
|
||||
* Used for canisters spawned in maps and by admins
|
||||
*/
|
||||
/datum/armor/portable_atmospherics_canister
|
||||
melee = 50
|
||||
bullet = 50
|
||||
laser = 50
|
||||
energy = 100
|
||||
bomb = 10
|
||||
fire = 80
|
||||
acid = 50
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/proc/create_gas()
|
||||
if(!gas_type)
|
||||
return
|
||||
|
||||
@@ -391,25 +391,11 @@
|
||||
desc = "High speed, low drag combat boots, now with an added layer of insulation."
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/item/gun/magic/wand/fireball/inert
|
||||
name = "weakened wand of fireball"
|
||||
desc = "This wand shoots scorching balls of fire that explode into destructive flames. The years of the cold have weakened the magic inside the wand."
|
||||
max_charges = 4
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/item/gun/magic/wand/resurrection/inert
|
||||
name = "weakened wand of healing"
|
||||
desc = "This wand uses healing magics to heal and revive. The years of the cold have weakened the magic inside the wand."
|
||||
@@ -417,142 +403,44 @@
|
||||
|
||||
|
||||
//decals//--
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign
|
||||
icon_state = "AOP1"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/two
|
||||
icon_state = "AOP2"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/three
|
||||
icon_state = "AOP3"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/four
|
||||
icon_state = "AOP4"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/five
|
||||
icon_state = "AOP5"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/six
|
||||
icon_state = "AOP6"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/seven
|
||||
icon_state = "AOP7"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up
|
||||
icon_state = "AOPU1"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/two
|
||||
icon_state = "AOPU2"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/three
|
||||
icon_state = "AOPU3"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/four
|
||||
icon_state = "AOPU4"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/five
|
||||
icon_state = "AOPU5"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/six
|
||||
icon_state = "AOPU6"
|
||||
|
||||
/datum/armor/syndicate_coldres
|
||||
melee = 20
|
||||
bullet = 10
|
||||
energy = 5
|
||||
fire = 25
|
||||
acid = 25
|
||||
|
||||
/obj/effect/turf_decal/snowdin_station_sign/up/seven
|
||||
icon_state = "AOPU7"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(LAZYACCESS(modifiers, LEFT_CLICK))
|
||||
var/turf/T = get_turf(object)
|
||||
if(stored)
|
||||
DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T)
|
||||
duplicate_object(stored, spawning_location = T)
|
||||
log_admin("Build Mode: [key_name(c)] copied [stored] to [AREACOORD(object)]")
|
||||
else if(LAZYACCESS(modifiers, RIGHT_CLICK))
|
||||
if(ismovable(object)) // No copying turfs for now.
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/bayNumber //Quick reference to what bay we're in. Usually set to the loading_id variable for the related area type
|
||||
var/customDropoff = FALSE
|
||||
var/picking_dropoff_turf = FALSE
|
||||
var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicateObject() and send the result
|
||||
var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicate_object() and send the result
|
||||
var/launchRandomItem = FALSE //If true, lauches a single random item instead of everything on a turf.
|
||||
var/launchChoice = LAUNCH_RANDOM //Determines if we launch all at once (0) , in order (1), or at random(2)
|
||||
var/explosionChoice = 0 //Determines if there is no explosion (0), custom explosion (1), or just do a maxcap (2)
|
||||
@@ -721,7 +721,7 @@
|
||||
/datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started
|
||||
if (isnull(target_turf))
|
||||
return
|
||||
var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
|
||||
var/obj/structure/closet/supplypod/centcompod/toLaunch = duplicate_object(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
|
||||
toLaunch.update_appearance()//we update_appearance() here so that the door doesnt "flicker on" right after it lands
|
||||
var/shippingLane = GLOB.areas_by_type[/area/centcom/central_command_areas/supplypod/supplypod_temp_holding]
|
||||
toLaunch.forceMove(shippingLane)
|
||||
@@ -734,7 +734,7 @@
|
||||
toLaunch.turfs_in_cargo += atom_to_launch.type
|
||||
else
|
||||
var/atom/movable/movable_to_launch = launch_candidate
|
||||
DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod
|
||||
duplicate_object(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod
|
||||
else
|
||||
for (var/launch_candidate in launchList)
|
||||
if (isnull(launch_candidate))
|
||||
@@ -744,7 +744,7 @@
|
||||
toLaunch.turfs_in_cargo += turf_to_launch.type
|
||||
else
|
||||
var/atom/movable/movable_to_launch = launch_candidate
|
||||
DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod
|
||||
duplicate_object(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod
|
||||
else
|
||||
if(launchRandomItem)
|
||||
var/atom/random_item = pick_n_take(launchList)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user