mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise
This commit is contained in:
@@ -5432,7 +5432,7 @@
|
||||
"cax" = (/obj/structure/noticeboard{pixel_y = 32},/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = -5; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/reagent_containers/syringe/epinephrine{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"cay" = (/obj/structure/closet/secure_closet/medical3,/obj/item/weapon/screwdriver{pixel_y = 6},/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 30},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"caz" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/obj/item/weapon/screwdriver{pixel_y = 6},/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"caA" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/white/medical,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"caA" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 30},/obj/structure/closet/wardrobe/medical_white,/turf/simulated/floor{dir = 1; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"caB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/medbay2{name = "Medbay Storage"})
|
||||
"caC" = (/obj/machinery/power/apc{dir = 8; name = "Medical Security Checkpoint APC"; pixel_x = -24; pixel_y = 0},/obj/machinery/alarm{pixel_y = 28},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/closet/secure_closet/security/med,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/medical)
|
||||
"caD" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Security Post - Medbay"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/medical)
|
||||
@@ -7978,7 +7978,7 @@
|
||||
"cXv" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/crew_quarters/bar)
|
||||
"cXw" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/door/poddoor/preopen{id_tag = "Xenolab"; name = "test chamber blast door"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
|
||||
"cXx" = (/obj/effect/spawner/window/reinforced{useFull = 1; tag = "fullReinWin"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id_tag = "Xenolab"; name = "test chamber blast door"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
|
||||
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -593,7 +593,7 @@
|
||||
"lS" = (/obj/structure/closet/wardrobe/orange,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"lT" = (/obj/structure/window/basic{dir = 4},/turf/space,/area/space)
|
||||
"lU" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/derelict/arrival)
|
||||
"lV" = (/obj/structure/closet/wardrobe,/turf/simulated/floor,/area/derelict/arrival)
|
||||
"lV" = (/obj/structure/closet/wardrobe/generic,/turf/simulated/floor,/area/derelict/arrival)
|
||||
"lW" = (/turf/simulated/floor/plating/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary)
|
||||
"lX" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
|
||||
"lY" = (/turf/simulated/floor,/area/derelict/atmospherics)
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
"ge" = (/obj/item/weapon/storage/secure/safe/sc_ssafe{pixel_x = 4; pixel_y = -26},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/northblock)
|
||||
"gf" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/obj/item/clothing/under/rank/captain,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/obj/item/weapon/gun/energy/laser/retro/sc_retro,/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/northblock)
|
||||
"gg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/awaymission/midblock)
|
||||
"gh" = (/obj/structure/closet/wardrobe,/turf/simulated/floor,/area/awaymission/midblock)
|
||||
"gh" = (/obj/structure/closet/wardrobe/generic,/turf/simulated/floor,/area/awaymission/midblock)
|
||||
"gi" = (/turf/simulated/floor,/area/awaymission/midblock)
|
||||
"gj" = (/obj/structure/closet/wardrobe/pjs,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/awaymission/midblock)
|
||||
"gk" = (/obj/structure/closet/wardrobe/pink,/turf/simulated/floor,/area/awaymission/midblock)
|
||||
|
||||
@@ -4112,7 +4112,7 @@
|
||||
"bBd" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
|
||||
"bBe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
|
||||
"bBf" = (/obj/machinery/hologram/holopad,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
|
||||
"bBg" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/virology)
|
||||
"bBg" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/toxins/mixing)
|
||||
"bBh" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/cable_coil,/obj/item/device/flash,/obj/item/device/flash,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/robotics)
|
||||
"bBi" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Roboticist"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/robotics)
|
||||
"bBj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor,/area/assembly/robotics)
|
||||
@@ -4414,7 +4414,7 @@
|
||||
"bGT" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/quartermaster/office)
|
||||
"bGU" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central/sw)
|
||||
"bGV" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plating,/area/atmos)
|
||||
"bGW" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "virolab"; name = "Virology Laboratory Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology/lab)
|
||||
"bGW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"bGX" = (/obj/structure/closet/secure_closet/hop,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads)
|
||||
"bGY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads)
|
||||
"bGZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/pdapainter,/turf/simulated/floor/carpet,/area/crew_quarters/heads)
|
||||
@@ -4614,7 +4614,7 @@
|
||||
"bKL" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
|
||||
"bKM" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plating,/area/atmos)
|
||||
"bKN" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -27},/obj/machinery/light,/obj/item/weapon/gun/syringe,/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay3)
|
||||
"bKO" = (/obj/machinery/camera{c_tag = "Medbay Equipment"; dir = 1; network = list("SS13")},/obj/structure/closet/wardrobe/white/medical,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3)
|
||||
"bKO" = (/obj/machinery/camera{c_tag = "Medbay Equipment"; dir = 1; network = list("SS13")},/obj/structure/closet/wardrobe/medical_white,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3)
|
||||
"bKP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3)
|
||||
"bKQ" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_y = 8},/obj/item/weapon/storage/box/masks{pixel_y = -3},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/item/weapon/wirecutters{desc = "This cuts gloves."; name = "Glove Snippers"},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/medbay3)
|
||||
"bKR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
|
||||
@@ -4982,6 +4982,7 @@
|
||||
"bRP" = (/obj/machinery/computer/security/mining,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/camera{c_tag = "Mining Dock"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bRQ" = (/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bRR" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bRS" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"bRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/qm)
|
||||
"bRU" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/qm)
|
||||
"bRV" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm)
|
||||
@@ -5014,12 +5015,16 @@
|
||||
"bSw" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/central/sw)
|
||||
"bSx" = (/obj/machinery/iv_drip,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper)
|
||||
"bSy" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters Control"; pixel_y = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
|
||||
"bSz" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible{dir = 9},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"bSA" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/cmo)
|
||||
"bSB" = (/obj/machinery/light{dir = 1},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo)
|
||||
"bSC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo)
|
||||
"bSD" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/light{dir = 1},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/storage/briefcase,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/cmo)
|
||||
"bSE" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/binary/pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"bSF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
|
||||
"bSG" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2)
|
||||
"bSH" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"bSI" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
|
||||
"bSJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/wall,/area/medical/genetics)
|
||||
"bSK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/medical/genetics)
|
||||
"bSL" = (/obj/machinery/computer/scan_consolenew,/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-whitepurple (WEST)"; icon_state = "whitepurple"; dir = 8},/area/medical/genetics)
|
||||
@@ -5029,6 +5034,7 @@
|
||||
"bSP" = (/obj/machinery/computer/scan_consolenew,/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-whitepurple (EAST)"; icon_state = "whitepurple"; dir = 4},/area/medical/genetics)
|
||||
"bSQ" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
"bSR" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
"bSS" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/medical/virology/lab)
|
||||
"bST" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 250; oxygen = 0; temperature = 0},/area/toxins/server_coldroom)
|
||||
"bSU" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
"bSV" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
|
||||
@@ -5044,13 +5050,15 @@
|
||||
"bTf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
|
||||
"bTg" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor)
|
||||
"bTh" = (/turf/simulated/wall/r_wall,/area/toxins/mixing)
|
||||
"bTi" = (/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/wall/r_wall,/area/toxins/mixing)
|
||||
"bTi" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/wall/r_wall,/area/medical/virology/lab)
|
||||
"bTj" = (/turf/simulated/wall/r_wall{desc = "A specially coated wall that resists temperatures for Science"; max_temperature = 1e+009; name = "Coated Reinforced Wall"},/area/toxins/mixing)
|
||||
"bTk" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor{id_tag = "ToxinsVenting"; name = "Toxins Venting Bay Door"; use_power = 0},/turf/simulated/floor/engine,/area/toxins/mixing)
|
||||
"bTl" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/mining/station)
|
||||
"bTm" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
|
||||
"bTn" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
|
||||
"bTo" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_door = "mining_shuttle_hatch"},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
|
||||
"bTp" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"bTq" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"bTs" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock)
|
||||
"bTt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
"bTu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/miningdock)
|
||||
@@ -6010,7 +6018,6 @@
|
||||
"cmJ" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cmK" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cmL" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cmM" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cmN" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"cmO" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/robotics{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/mecha_control{pixel_x = 1; pixel_y = -1},/turf/simulated/floor,/area/storage/tech)
|
||||
"cmP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/storage/tech)
|
||||
@@ -6130,9 +6137,6 @@
|
||||
"cpq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; icon_state = "in"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator)
|
||||
"cpr" = (/obj/machinery/atmospherics/binary/pump{dir = 4; on = 1},/obj/structure/sign/fire{pixel_y = -32},/turf/simulated/floor/plating,/area/maintenance/incinerator)
|
||||
"cps" = (/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "12"},/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cpt" = (/obj/machinery/light,/obj/machinery/atmospherics/tvalve/mirrored/digital{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cpu" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cpv" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cpw" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/structure/sign/poster{pixel_x = 32},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"cpx" = (/turf/simulated/floor/plating,/area/maintenance/apmaint)
|
||||
"cpy" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/tech)
|
||||
@@ -6842,7 +6846,6 @@
|
||||
"cEl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/toxins/xenobiology)
|
||||
"cEm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"cEn" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/toxins/xenobiology)
|
||||
"cEo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
|
||||
"cEp" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cEq" = (/turf/simulated/floor/plating/airless,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/port)
|
||||
"cEu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/portsolar)
|
||||
@@ -7347,8 +7350,6 @@
|
||||
"cPp" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab)
|
||||
"cPq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab)
|
||||
"cPr" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab)
|
||||
"cPs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cPt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cPu" = (/obj/structure/sign/biohazard{pixel_y = 32},/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cPv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor{desc = "By gods, release the hounds!"; id_tag = "xenobioout6"; name = "Containment Release"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
|
||||
"cPw" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_dock_inner"; locked = 1; name = "Engineering Dock Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
|
||||
@@ -8102,7 +8103,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbD
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzOaSZaKcaKcbkRbkRaKcaKcaKcaKcaKcbkRbkRaKcaKcaKcbkRbNBbNBbNBbNCbNBbLXbNDbNEbNFbNGbLXbBZbttbNHbNIbNIbAmbAmbAmbAmbAmbNJbIPbHfbHebNKbNLbNMbNNbKvbKvbthbthbthbFGbFHbFGbFGbFGbFGbFGbFGbFGbNObttbNPbNQbNRbNSbNTbNRbNRbNUbNVbNWbNXbNYbNZbOabObbOcbKLbOdbOebOfbOgbOhbOibOjbOkbOlbOmbOnbOobOpbOqbOrbLcbOsbJybJybPXbOubPXbOtbPYbOtbOtbOtbOvbOwbOxbOxbOybOzbOAbOBaYabOCbODbaabOFbOGbOHbLvbNkaZCaaaaaaaaabDbbOJbOKbDbaTrbDbbDbaTrbDbaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOLaabaaaaaaaaaaaabNBbOMbONbOObOPbLXbOQbORbOSbOTbLXbBZbttbOUbOVbOWbOXbOYbOZbPabPbbPcbPdbPebPfbPgbPhbPibPjbPkbPlbPmbPnbPobPpbPqbPrbPsbscbPtbttbPubPvbPwbttbPxbNRbPybPzbPAbPBbPCbHxbPDbPEbPFbPGbPHbPIbPJbPKbPLbPMbPNbJsbPObMGbPPbPQbPRbPSbPTbPUbJxbPVbLcbLcbLcbPWbJybPXbQabPZbQcbabbRrbQdbRsbOtbQebQfbQgbOxbOxbQhbOAbQibadbQkbQlbaebQnbQobQpbLvbQqbumaaaaaaaaabDbbDbbDbbDbaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNBbQrbQsbQtbQuaXVbQwbQxbQybQzbLXbBZbQAbQBbttbttbEebQCbscbPsbPrbQDbQEbQDbQFbQGbQGbQHbQIbQJbQGbQGbQKbQGbQLbQGbPrbPsbscbQMbQNbQObQPbQQbQRbttbNRbQSbPzbQTbQUbQVbHxbQWbQXbagbafbahbRbbajbaibHxbRebRfbJsbRgbRhbRhbRibRjbRkbRlbRmbJxbRnbRobLcbRpbRqbJybPXbRvbRtbRwbRubSRbSQbRxbOtbRybQfbRzbRzbOxbRAbRBbRCbRDbREbRFbRGbRHbRIbRJbLvbNkbumbRKaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzOaaaaaaaaaaaaaaaaaaaaaaaabRLbRMbRNbRMbROaaaaaaaaabNBbNBbRPbRQbQtbRRaXVbRTbOSbRUbRVbLXbBZbRWbRXbRYbRZbSabSbbScbSdbSebSfbSgbShbSibSjbSjbSkbSlbSlbSlbSlbSlbSlbSmbSnbSobSpbSqbSrbRZbSsbStbSubSvbSwbNRbSxbPzbPAbSybQVbHxbQWbQXbakbSAbSBbSCbSDbalbHFbSFbSGbJsbJsbambambJsbRjbJubSJbSKbJxbSLbSMbSNbSObSPbJybPXbWobSTcZnbancZobSUbSVbOtbSWbQfbRzbRzbOxbSXbSYbSZbTabTbbTcbTdbTebTfbTgbLvbNkbThbTibThbTjbTkbTjbTjbTjaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzOaaaaaaaaaaaaaaaaaaaaaaaabRLbRMbRNbRMbROaaaaaaaaabNBbNBbRPbRQbQtbRRaXVbRTbOSbRUbRVbLXbBZbRWbRXbRYbRZbSabSbbScbSdbSebSfbSgbShbSibSjbSjbSkbSlbSlbSlbSlbSlbSlbSmbSnbSobSpbSqbSrbRZbSsbStbSubSvbSwbNRbSxbPzbPAbSybQVbHxbQWbQXbakbSAbSBbSCbSDbalbHFbSFbSGbJsbJsbambambJsbRjbJubSJbSKbJxbSLbSMbSNbSObSPbJybPXbWobSTcZnbancZobSUbSVbOtbSWbQfbRzbRzbOxbSXbSYbSZbTabTbbTcbTdbTebTfbTgbLvbNkbThbBgbThbTjbTkbTjbTjbTjaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTlbTmbTnbTobTlbaDbaDbaDbNBbTsbTtbTubTvbTwbTxbTybTzbTzbTAbLXbTBbTCbTDbTEbTEbaEbTGbaFbTEbTIbTIbaGbTKbbRbTIbTIbTMbPrbPrbTNbTObTObTObTPbTQbTObTObTRbTSbTTbTTbTUbTTbTVbTWbTTbbUbTYbTZbNRbUabUbbQWbUcbUdbUebUfbUgbUhbUdbHxbRebUibUjbUkbUlbUmbUnbUobUpbUqbUrbUsbUtbUubUvbUwbUxbJybPXbPXcZpcZrcZqcZscZqcZtbOtbUybUzbUAbUAbOxbUBbUCbUDbLvbLvbLvbLvbLvbLvbLvbLvbNkbThbUEbUFbUGbUHbUHbUIbTjaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbcgbcgbcgbcgbUMbUMbUNbUNbUNbUNbUOaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabRNbUPbUQbUPbRNbaDbUSbUTbUUbUVbUWbUXbUYbUZbLXbVabVbbVcbVdbLXbTCbTCbVebTEbWXbVgbVhbVibVjbTIbWUbVlbVmbVnbVobTIbVpbVqbVrbTObVsbVtbVubVvbVwbVxbVybVzbVAbVBbVCbVDbVEbVFbVGbVHbVIbVJbVKbVLbVMbVNbVObQXbVPbVQbVRbVSbVTbVUbHFbVVbVWbVXbVYbUmbVZbVZbWabWbbJxbWcbWdbWebWfbWgbWhbWibJybWjbWkbWlbWmbWlbWlbWncZubWpbWqbWrbWsbWtbOxbWubWvbOBbDbbvWbWwbWxbWybWybWxbWybWzbThbWAbWBbUGbUHbWCbWDbTjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgbWFbWGbWFbUMbUNbUNbWHbdqbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabTlbWJbUPbUPbWKbWLbRQbWMbWNbWObRQbUXbWPbWQbLXbLXbLXbLXbLXbLXbWRbTCbWSbWTceLbWVbWVbWVbWWbTIbYtbWYbWYbWYbWZbXabXbbXcbXdbXebXfbXgbXhbXibXjbXkbTObTRbXlbTTbXmbXnbXobXpbXqbTTbQSbPAbQTbQUbXrbXsbXtbXubXvbXwbXxbXybXzbUdbXAbXBbXCbXDbXEbXFbXGbXHbXIbXJbJxbJxbJxbJxbJxbXKbXLbXMbJybXNbWlbWlbXObWlbXPbXQbXRbXSbXTbQfbXUbXUbOxbOzbXVbOBbDbbThbXWbThbThbThbThbThbThbThbXXbXYbTjbXZbYabYbbTjaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbYcbWFbWFbYdbUNbUNbWHbWHbYebWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -8116,9 +8117,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciBaaaaabaabciCciCciCciCciCciCciDciCbTCcdbbhtaaabhubjJbhYbjYciJciKciLciMciNciOciPciQciRciSciTciUciVciWciXciYciZchLcjacjbcjbcjbcjcchMbHTbHTcjdcjdcjdcjdcjecjdcjfcjfcjgcjdcjdcjhcjdcjicjjbkycjlbkycjmcjncjocjpcjqbuXbuXcjrcjscjtcjucjvcjwcjxcbScaAcaAcjycaAcjzcaAcjAcjBcjCcfdcjDcjFcjGcjHcjIcjJcjKcjLcjIbvWcgYcjMbvWcjNcjOcjPcjQcfQbvWbvWbvWbvWbvWbvWbvWcjRcjEaZCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUNbWHbWHbWHbWHbWHbWHceDbWHciAbWHbWHbWHbWHbWHbUNbUNaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjTcjUcjUcjUbkzcjWcjXcjYcjZckackbckccjScdbbhtaaabmZckgckhckickjciKckkcklckmcknchBckoceTbZUbhrckpcgockqcgockrcksbneckuckvckvckvckwchMbHTbHTcjdckxckyckzckAckBckCckCckDckEckFckGckHckIckJckKcdXcdXckLckMckNckOckPaaaaaacjvckQckRckScjrckdckUckVckWckWckXbGickYckZclaclbckZckZckZclcckZckZcldcleclfclgclhclicljclkbWycllclmbWybWybWybWyclnclobWybWybWybWyclpbvWaZCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUNbUNccYbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclrclsclsclsclscltcluclvclwclxclxclyclzclAceIbhtaaabmZclBclCclDclEclFclGclHclEclEclIclJclKclLclMclMclNclOcgoclPclQbneckvckvckvckvclSchMbHTbHTcjdclTclUclVclWclXclYclYclZcmacmbcmccmdcmecjdcmfcdTcmgbEDcmhckNcmickPaaaaaacjvcmjcmkcmlcjvbHUcmmcmncmncmncmncmncmnckTcmpcmqcmocmscmsbnfbnfcmscmvcmwcmxcmycmzcmAcmBcmCcmAcmAcmAcmAcmAcmAcmAcmAcmAcmAcmAcmAbvWcmDcmraZCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZEbUNbUNcgbcgbbWHbWHbWHbWHbWHbWHbWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmEcmFcmGcmHcmGcmIcmJcmKcmLcmLcmMclzcmNcdbbhtaaabmZcmOcmPcmQcmRciKcmScmTcmUcmVchBckoceTcmWcmXceVcmYcmZbhrbhrbhrcndcneckvckvcnfcngchMbHTcnhcjdcnicnjcnkcnlcnlcnlcnmcnncnlcnlcnocnkcnpcnqcnrcdTcnsbEDcntckNcnuckPaaaaaacjvcnvcnwcnxcjvcnybHTcnhcnzcnzcnzcnzcnzbngbnkbnjcnzcnzaaaaaaaaaaaacjIcnDcnEcnFcmAcnGcnIcnHcnKcnJcnMcnLcnOcnNcnQcnPcoXcnRcpacmAcnScnTcnUcnVcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnXcnYbUNbYcbUNbWHbWHbWHbWHbWHbWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmEcmFcmGcmHcmGcmIcmJcmKcmLbRSbGWclzcmNcdbbhtaaabmZcmOcmPcmQcmRciKcmScmTcmUcmVchBckoceTcmWcmXceVcmYcmZbhrbhrbhrcndcneckvckvcnfcngchMbHTcnhcjdcnicnjcnkcnlcnlcnlcnmcnncnlcnlcnocnkcnpcnqcnrcdTcnsbEDcntckNcnuckPaaaaaacjvcnvcnwcnxcjvcnybHTcnhcnzcnzcnzcnzcnzbngbnkbnjcnzcnzaaaaaaaaaaaacjIcnDcnEcnFcmAcnGcnIcnHcnKcnJcnMcnLcnOcnNcnQcnPcoXcnRcpacmAcnScnTcnUcnVcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnWcnXcnYbUNbYcbUNbWHbWHbWHbWHbWHbWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaacmEcnZcoacobcocclwcodclwcoeclwcofcogcohcoibhtaaabnlbjJbnIbjYcomciKciKconcoocopcoqcorcoscotcouceVcovcowcoxcoycozchLcoAckvckvckvcoBchMbHTbHTcoCcoCcoDcoEboQboQboQcoCbpobpobpocoLcoMcoDcoNcmfcdTcmgbEDcoOckNckOckPaaaaaacjvcoPcoQcoRcjvbHTbHTbHTcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpPcoTcoUcoVbqlcpbcoYcoYcoZcoYcoYcoYcoYcoYcpdcpccpfcpecphcpjcpjcpkcplcpjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUNcpmcpncpobUNbUNbWHbWHcppbWHbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmEcpqcmGcprcmGcpscptcpucpvcqUcpwclzcpxcdbccZaaaaaaaaaaaachucpycpzcpAcpAchBcpBchBcpCceTbZUcpDcpEcpFcpGcpHcpHcpHcpIcpJckvcpKckvcpLchMbHTbHTcoCcpMcpNcpOcpPcpQcpRcoCcpQcpRcpPcpScpTcpUcoNcnrcpVcnsbEDcpWckNcpXckPcnzcnzcjvcjvcjvcjvcjvcpYbHTbHTcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpPcqacqbcqccqdcpicqfcqhcpgcoYcoYcqjcoYcoYcpdcpfcpfcpfcoXcpjcqncqocqpcpjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgcqrcqsbYdbUMbUNbUNbWHbdqbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmEcpqcmGcprcmGcpsbSzbSHbSEcqUcpwclzcpxcdbccZaaaaaaaaaaaachucpycpzcpAcpAchBcpBchBcpCceTbZUcpDcpEcpFcpGcpHcpHcpHcpIcpJckvcpKckvcpLchMbHTbHTcoCcpMcpNcpOcpPcpQcpRcoCcpQcpRcpPcpScpTcpUcoNcnrcpVcnsbEDcpWckNcpXckPcnzcnzcjvcjvcjvcjvcjvcpYbHTbHTcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpPcqacqbcqccqdcpicqfcqhcpgcoYcoYcqjcoYcoYcpdcpfcpfcpfcoXcpjcqncqocqpcpjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgcqrcqsbYdbUMbUNbUNbWHbdqbWHbUNbUNaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUabCcqtcqtcqtcqtcqtcqtcqtcqtcqucqucqucqucquciCclzclzclzclzclzclzcqvcqwcqxcqxcqxcqxcqxchuchBchBchBchBchBchBchBcqyceTbZUcqzcqAcqBcqCcqDcqEcqFcqGcqHcqIcqJcqKcqLchMbHTbHTcoCcqMcqNcpOcpPcpPcqOcoCcqPcpPcpPcpScpOcqQcoNbEDbEDbEDcqRcqSckNcqTckPczvbHTbHTbHTbHTcqVbHTbHTbHTbHTcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpPcqXcqYcqZbricqlcqgcqecqicoYcoYcoYcoYcqmcrhcrbcsvcsucqkcpjcricrjcrkcpjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgbcgbcgbcgbUMbUMbUNbUNbUNbUNbUOaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrmcrncrocrpcrqcrqcrrcrscrtcrucrvcrwcrxbrMcrzcrzcrzcrAcrBcrCcrDcrDcrEcrFcrGcrHcrIcrHcrHcrHcrGcrHcrHcrJcrKcrLcrMceTbZUcrNcrPcrOcrQceVcrRclMcrScrTcrUcrVcrWcrXcrYbHTbHTcoCcrZcsacsbcsccsdcsecoCcsfcsdcsgcshcsbcsicoNbHTbHTbHTcsjcoOckNcoOcskbHTbHTcFLbHTbHTbHTbHTbHTcfccGOcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacslcjIcsmcjLcslcrccrecrdcuQcrfcsocsncoYcoYcsqcspcsscsrcstcpjcsxcsycszcpjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrmcrncsAcsBcsCcsBcsDcsEcsFcsGcsHcsIcsHcsJcsKcsKcsKcsKceTbZVbZVbZVcsKcsLcsKcsKcsKcsKcsKcsKcsKcsKcsKcsKcsMcsNcsOcsPcsQcsRcsScsTcsUcsVcsWcsXcsYcsZctactbctcctdctecmnctfctgcthctictjctkcpPctlcoCctmcpPctkctncpOctocoNctpcmscmsctqctrctscttckPbnjbnjbnjbnjcnzcnzcnzbnjbnjbnjcnzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjIctyctzctAcjIcmAcmAcmAcmAcmAcmAcuTcsncuUctBcswctCcmAcmAcpjbsyctMbsybsyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -8127,20 +8128,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczaczakSakSaczakSakSakSalwakSakSaabalwawTaaaaabaabcwpcwpcwpcqtcwqcwrcwscwtcwucwvcwwbxYcwybxZcwAcwBcwCcwDcwEcwFcwGcwHcwIcvecwHcwJcwKcwLcwLcwMcvecwNcwOcwPcwQbZUcwRbyfcwTcwUcwVcwWcwVcwXcwYbzncxacxbcxccrYcrYcuFcvAcoNcoNcxdcoNcoNcxecxfcxgcxgcxgcxhcxgcxicxgcxjcnzaaacuGcxkcvMcxlckPbhsbhsbhsbhsckPckPcxpcxqcxqcxrcxqcxqcxrcxsaaaaaacjIcxtcxucxtcxvcxwcqacxxcvWcxycxzcxycjIaaaaaaaaaaaaaaaaaacwecwbcuWcxCcxCcwccweaaaaaaaaacxJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaaaaaaaczaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaaawTaaaaaaaaaaabaabcwpcqtcqtcqtcqtcqtcqtcqtcqtcxLcwybxZcxNcxOcxPcxQcxQcxQcxQcxRcxScxTcwLcxUcwLcwLcxVcwLcxWcxXcxYcxZcwQbZUcyacybcyccwUcydcyecyfcwUcygcyhcyicyjcykcylcymcyncyocypcypcyqcyrcyscytcyucdzcdzcdzcyvbHTbHTcbRbHTcnzaaacuGcywcvMcyxcyycyzcyAcyBcyCbzLcyEcyFbzLcyEcyGbzLcyHcyIcyJaaaaaacjIcxtcxtcxtbzMcyLcyMcyNcyOcyPcyQcyRcjIaaaaaaaaaaaaaaaaaacwectKcxCczMcxCcuLcweaaaaaaaaacyXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaaaaczaaacyYcyZczaaaacyYcyZczaaaacyYcyZczaaabczbaabaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaabxYcwybxZczdcwLcxVczecwLcwLcwLczfcwLczdczdcwLcwLcwLcwLczgbzPcxXczicsKczjbZUcybcybczkcwUczlczmczncwUczoctaczpczqczrczscztcHZbHTczucbSczubHTbHTbHTcuFcZScnzbnjbnjbnjbnjbnjcnzcnzaaaczwczxczycjqczzczAcoOcoOczBbAbczDczEbAbczDczEbAbczDczEcyJaaaaabcjIcvWcvWcvWcvWczFcqaczGczHczIczJczKcjIaabaaaaaaaaaaaaaaacwecuPcuMcxCcxCcuOctDcEpaaaaaacyXaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaczaaacyYczVczaaaacyYczVczaaaacyYczVczaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbxYcwybxZczdczYcwLczZcAacAbcAbcxUcwLczdcAccwLcwLcwLcwLcAdcAecAfcAgbYxcAhcAicAjcAkcAlcwUczlcAmcAncwUcAoctacrYcApcrVcAqcArcAscAtcAucAvcAwcAtcAtcAtcAxcAtcnzaaaaaaaaaaaaaaaaaaaabaaacuGcAycvMcAzcAAcABcoOcoOczBbBgcADbAbbBgcADbAbbBgcADbAbcyJaabaabcjIcvPcvQcvRbBBcAIcyMcAJcAKcALcAMcANcjIaabaabaabaabaabaaacwecwecuScuRcwdcwecweaaaaaaaaacyXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaczaaacyYczVczaaaacyYczVczaaaacyYczVczaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabbxYcwybxZczdczYcwLczZcAacAbcAbcxUcwLczdcAccwLcwLcwLcwLcAdcAecAfcAgbYxcAhcAicAjcAkcAlcwUczlcAmcAncwUcAoctacrYcApcrVcAqcArcAscAtcAucAvcAwcAtcAtcAtcAxcAtcnzaaaaaaaaaaaaaaaaaaaabaaacuGcAycvMcAzcAAcABcoOcoOczBbAbcADbAbbAbcADbAbbAbcADbAbcyJaabaabcjIcvPcvQcvRbBBcAIcyMcAJcAKcALcAMcANcjIaabaabaabaabaabaaacwecwecuScuRcwdcwecweaaaaaaaaacyXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaagaaaaaaaaaakSaabcyYczVczaaaacyYczVczaaabcyYczVczaaabaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaabaaaaaabxYcwycvecAWcwLcAXcAYcAZcBacBbcBacBccBacBdcBecwHcBfczdczdbzPcBgcBhcBicBjcBkcBlcBmcBncBocBpcBqcBrcBscBtcBucBvcBvcBwcBxcBycBzbBGcBBcBCcBDcBEcBFcBGcBHbBHaabaaaaaaaaaaaaaaaaaaaabaabczwcBJcBKcBLcBMcBNcoOcoOcoOcBOcoOcoOcoOcoOcoOcoOcoOcBPbBIaaaaaacjIcxtcxtcxtcBRcxwcqacBScBTcBUcBVcBWcjIcjIcjIcjIcjIaabaaaaaacwecwecwecwecweaaaaaaaaaaaacyXaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaabaaacyYczVczaaabcyYczVczaaaacyYczVczaaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaaaaaacxLcBZcvecCacCbcCbcCccvecvecvecvecvecvecvecvecvecvecvecvecvecCdcCecCdcCfcCdcqxbBYcChbCibChbChbCkcCmbClcBucCocCpcCqcCrcCscCtbBGcCvcCwcCxcCycCzcCAcCBbCwaabcCDcCDcCDcCDcCDaaaaaaaabcuGcCEcvMcCFcCGcCHcCIcoOcoOcCJcoOcoOcoOcoOcoOcCKcoOcCLbBIaaaaaacjIcxtcxtcxtbBBcCNcyMcCOcCPcCQcCRcCScCTcCUcCVcCWcjIaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyXaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaczakSaabaaacyYczVczaaabcyYczVczaaaacyYczVczaaabaaaaaaaaaaaaaaaaaaaaaaaaaabbCxcCYcCYcCYcCYcxLcCZcwycDacDbcDccDccDdcDecDfcDgcDgcDgcDgcDhcDicDjcDicDicDkcDkcDicDlcDmcDncDocDocDpcDqcDrcDscDtcDucDucDvcDwcDxcDycDzcDAcCscDBbBGcDCcDDcDEcDFcDGcDHcDIbCycDKcDLcDMcDNcDOcCDaaaaaacDPcDQcDRcDScDTcDRcDUcDVcDWcDXcDYcDZbzLcDYcEbcEccEdcEebCMcyJaaaaaacjIcvWcvWcvWcvWcEgcqacBScEhcEicBVcEjcEkcElcEmcEncEocEpaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyXaabaaaaaaaaaaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaczakSaabaaacyYczVczaaabcyYczVczaaaacyYczVczaaabaaaaaaaaaaaaaaaaaaaaaaaaaabbCxcCYcCYcCYcCYcxLcCZcwycDacDbcDccDccDdcDecDfcDgcDgcDgcDgcDhcDicDjcDicDicDkcDkcDicDlcDmcDncDocDocDpcDqcDrcDscDtcDucDucDvcDwcDxcDycDzcDAcCscDBbBGcDCcDDcDEcDFcDGcDHcDIbCycDKcDLcDMcDNcDOcCDaaaaaacDPcDQcDRcDScDTcDRcDUcDVcDWcDXcDYcDZbzLcDYcEbcEccEdcEebCMcyJaaaaaacjIcvWcvWcvWcvWcEgcqacBScEhcEicBVcEjcEkcElcEmcEnbSIcEpaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyXaabaaaaaaaaaaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaaaaabaaaaabaabcEqaabaabaabcEqaabaaaaabcEqaabaaaaaaaaaaaaaaaaaaaaaaaabCxbCxbCxcEucEvcEwcExcEycEzcEAcDacDacEBcECcvecvecEDcEEcEEcEEcEEcEFcEGcEHcEGcEGcEGcDocDocEIcEJcEKcELcEMcDucENcDrcDucDucDucDucEOcBucEPcEQcCqcDAcCscDAbBGcDCcDDcEScETcEUcEVcEWbCUaabcEYcEZcDOcFacCDaaaaaaaaacDQcFbcFccFdcDRcFecFfcFgcFhcFiczEczDcFicFjcFkcFlczEczDcyJaaaaaacjIcvPcvQcvRbDrcAIcyMcFncFocFpcEmcFqcFrcFscFtcFucjIaabaabaagaaaaaaaaaaaaaaaaaaaaaaaaaaacyXaabaaaaaaaaaaabaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaakSaabcFvcFwcFwcFxcFycFzcFzcFzcFycFzcFzcFzcFycFzcFzcFAcFwcFwcFwcFwcFwcFBcFCcFDcFEcFFcFGcFHcFIcFJceHcwycFKcDacvecvecvecZTcEDcEEcFMcFNcFOcFPbDscFRcFScFTcFUbDtcFWcFXcFYcFZcGabDtcGccGdcDrcGecDucDucDucGfcBucGgcGgcDAcGhcGicGjcGkcGlcGmcGncGocGpcGqcGrbCycGscDLcGtcDOcDOcCDaaaaaaaabcDQcGucFccGvcDRcGwcGxcCIcGycFicGzcGAcFicGBcGCcFlcGzcGDcyJaaaaaacjIcxtcxucxtcGEcxwcqacGFcFocGGcqacqacGHcvWcvWcvWcjIaaaaaaaaaaaaamjamjamjawTaabaabaabaabcGIaabaabaabaabaabalwamjamjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaaaaabaaaaabaabcGJaabaaaaabcGJaabaaaaabcGJaabaaaaaaaaaaaaaaaaaaaaaaaabCxbCxbCxcGLcGMcGNcCYcZUceHcGPcEzcEzcEzcEzcGQcEzcFJcEEcGRcGScGTcGUbDGcGWcGXcGYcGZbEocHbcHccHdcHecHfbFlcHhcDqcDrcZicHjcDucDucHkcBucHlcHmcDAcHncCscHocHpbFvbFtbGBbFQbGEbGCbGEbGGaabcCDcCDcCDcCDcCDaabaabaabcHxcHycFccGvcDRcHzcHAcHBcHCcHDcHEcHFcHFcHGcHFcHHcHIcDRcHJaaaaaacjIcxtcxtcxtbDrcHKcHLcHMcHNcHOcCTcCTcCTcHPcHQcHRbGHaaaaaaaaaaaaamjaaaaabaaaaabaaaaaaaaacHTaaaaabaabaaaaaaaaaaaaamjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaczakSaabaabcyYcHUczaaaacyYcHUczaaaacyYcHUczaaabaaaaaaaaaaaaaaaaaaaaaaabaabbCxcCYcCYcCYcCYcHWcHXcHYceHcZVceHceHcEDcIaceHcEEcIbcIccIdcIebGIcIgcIhcIicIjbGRcIlcImcIncIocIpbGRcIrcIscItcIucIvcIwcIxcIycIzcIAcGjcIBcICcIDcIEcIFcIGcIHcIIcIJcIKcILcIMbGVcDKcDLcIPcIOcIOcCDaaaaaaaabcDQcIQcFccIRcDRbIxbGWbGWbIxcDRcIVcIWcIXcIYcIZcJacJbcIYbIBaaacDPcjIcjIcjIcjIcjIcJdcqacJecyMcJfcyMcJgcyMcJhcyMcJibGHaaaaaaaaaaaaamjaaacJkcJkcJkcJkcJkaabcJlaabcJkcJkcJkcJkcJkaaaamjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJmaaaaaaaaacJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaczaczakSaabaabcyYcHUczaaaacyYcHUczaaaacyYcHUczaaabaaaaaaaaaaaaaaaaaaaaaaabaabbCxcCYcCYcCYcCYcHWcHXcHYceHcZVceHceHcEDcIaceHcEEcIbcIccIdcIebGIcIgcIhcIicIjbGRcIlcImcIncIocIpbGRcIrcIscItcIucIvcIwcIxcIycIzcIAcGjcIBcICcIDcIEcIFcIGcIHcIIcIJcIKcILcIMbGVcDKcDLcIPcIOcIOcCDaaaaaaaabcDQcIQcFccIRcDRbIxbIxbIxbIxcDRcIVcIWcIXcIYcIZcJacJbcIYbIBaaacDPcjIcjIcjIcjIcjIcJdcqacJecyMcJfcyMcJgcyMcJhcyMcJibGHaaaaaaaaaaaaamjaaacJkcJkcJkcJkcJkaabcJlaabcJkcJkcJkcJkcJkaaaamjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJmaaaaaaaaacJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaaaaaacyYcHUczaaabcyYcHUczaaaacyYcHUczaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcJncJncJncJncJncJncJncJocJncJncEEcJpcJqcGTcGTbGIbICbGIbJhcJvcDocJwcJxcFZcJycJzcDocJAcDucDrcJBcJCcJDcIxcJEcJFcJGcJHcJIcJJcJKcJHcJLcJMcJNcJOcDAcJPcJQcJRbJCaabcEYcJUcJTcJVcCDaaaaaaaaacDQcDRcJWcJXcDRcJYcJZcKacKbcKccFccKdcKecIYbJEcKgcKhcKibIBaabaaaaaaaaaaaaaaacjIcKkcKlcKmcKncKocKpcKqcKrcKocKpcKscjIaaaaaaaaaaaaamjaabcKtcKucKucKucKucKvcKwcKxcKycKycKycKycKzaabamjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaakSaabcyYcHUczaaaacyYcHUczaaaacyYcHUczaaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcJncKAcKAcKBcKCcKDcKDcKEcKFcKGcKHcIdcIecGTcGTcGTcKIcGTcGTcGTcDocKJbJVcKLbJWbJXcKOcKPcKQcKRbKhbKhbKhcKVcKWcKXcKYcKZcLacHncCscLbcLccLdcLecLfcDAcJPcLgcLhbKMcLjcDLcLkcIOcIOcCDaabaaaaaacHxcLlcLmcLncLocLpcLqcLpcLpcLrcLscLtcLucLubLscLwcLxcLybLtaabaabaaaaaaaaaaaacjIcLAcLBbLucvWbLEcLEbLUcvWbLVcLHbLWcjIaaaaaaaaaaaaamjaabcLJcLJcLJcLJcLJaaacJlaaacLJcLJcLJcLJcLJaabamjaaaaaaaaaaaacJmaaaaaacJmaaaaaacJmcJmcJmcJmcJmcJmcJmaaaaaacJmaaaaaacJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaakSaabcyYcHUczaaaacyYcHUczaaabcyYcHUczaaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacJncKAcKAcKBcLKcLKcLKcLLcLLcLMcEEcLNcLOcLPcLQcLRcLScLTcLUcLUcLVcLWcLXcGTcGTcGTcLYcLZcMacMbcMccMdcMebNdcMgcEEcMhcMhcMicHncCscMjcMkcMlcMmcMncDAcMocMpcMqbNgcMscCDcCDcCDcCDcCDaaaaaaaaacDQcMtcMucMvcMwcMxcMycMxcMxcMzcMAcMBcMCcLybNlcMEcKhcIYbNqaabaabaaaaaaaaaaaacjIcMGcxtcxtcvWcMHcxtcxtcvWcMHcxtcxtcjIaaaaaaaaaaaaamjaaaaabaaaaabaabaabaaacJlaaaaabaaaaabaaaaabaaaamjaaaaaaaaaaaacJmcJmcJmcJmaaacJmcJmcJmcJmcJmcJmcJmcJmcJmaaacJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaalwaabcyYcMIczaaaacyYcMIczaaaacyYcMIczaaabakSaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcJncMJcMKcLKcLKcLKcMLcMMcMMcMNcMMcMMcMMcMMcMOcMPcMQcMRcMScMScMScMTcMUcMVcMScMScMScMUcMWcMXcMYcMdcMZbNdcMgcNbcNccNdcNecNfcNgcNhcNicLfcNjcNkcNlcNmcNncNobGVcNpcDLcNqcNrcNrcCDaaaaaaaaacDQcNscNtcNucNvcNwcNxcNycIYcNzcNAcNBcNCcNDbJEcNFcNGcNHbNqaaaaaaaaaaaaaaaaaacjIcNJcxtcxtcvWcNKcxtcxtcvWcNKcxtcxtcjIaaaaaaaaaaaaamjaaacJkcJkcJkcJkcJkaabcJlaabcJkcJkcJkcJkcJkaabamjaaaaaaaaaaaacJmcJmcJmcJmaaacJmcJmcJmcJmcJmcJmcJmcJmcJmaaacJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaakSaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakSaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcJncNLcLKcLKcLKcLKcLKcMMcNMcNNcNOcNPcNQcMMcNRcNScNTcJqcGTcGTcNUcNVbNtbNucNYbNvbNvcObcEEcOccMYcMdcOdbNdcMgcEEcOfcMhcOgcOhcDAcNhcNicOicDAcNkcNlcJPcJQcOjbJCcOkcEYcOlcOmcOncCDaaaaaaaaacOobNwbNwbNwbNwcOscOscOtcOubJEbJEbNxbJEbJEcOzcOzcHJcOAcOzaaaaaaaaaaaaaaaaaacjIcxtcxtcxtcvWcOBcxtcxtcvWcOBcxtcxtcjIaaaaaaaaaaaaamjaabcKtcKucKucKucKucKvcKwcKxcKycKycKycKycOCaabamjaaaaaaaaaaaacJmcJmcJmcJmaaacJmcJmcJmcJmcJmcJmcJmcJmcJmaaacJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaczaczakSaczaczalwakSakSakSakSaczakSakSaczcODaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJncOEcLLcOFcOGcOHcOIcMMcOJcOKcOLcOMcONcOOcOPcOQcORcJqcGTcOScOTcOUcOVcOWcOXcOYcOZcPacPbcNTcJqcPccPdcMbcPecEEcPfcMhcPgcPhcDAcNhcNicLfcDAcPicNlcJPcPjcPkbKMcPlcDLcPmcNrcNrcCDaaaaaaaaacPnaaaaaaaaaaaaaaaaaacDQcPocIYcIYcPpcPqcPrcOzaaccPscPtcPuaaaaaaaaaaaaaaaaaacjIcjIcjIcjIcjIcjIcjIcjIcjIcPvcPvcPvcjIaaaaaaaaaaaaamjaabcLJcLJcLJcLJcLJaaacJlaabcLJcLJcLJcLJcLJaaaamjaaaaaaaaaaaacJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaakSaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakSaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcJncNLcLKcLKcLKcLKcLKcMMcNMcNNcNOcNPcNQcMMcNRcNScNTcJqcGTcGTcNUcNVbNtbNucNYbNvbNvcObcEEcOccMYcMdcOdbNdcMgcEEcOfcMhcOgcOhcDAcNhcNicOicDAcNkcNlcJPcJQcOjbJCcOkcEYcOlcOmcOncCDaaaaaaaaacOobNwbNwbNwbNwcOscOscOtcOubJEbJEbNxbSSbJEcOzcOzbTicOAcOzaaaaaaaaaaaaaaaaaacjIcxtcxtcxtcvWcOBcxtcxtcvWcOBcxtcxtcjIaaaaaaaaaaaaamjaabcKtcKucKucKucKucKvcKwcKxcKycKycKycKycOCaabamjaaaaaaaaaaaacJmcJmcJmcJmaaacJmcJmcJmcJmcJmcJmcJmcJmcJmaaacJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaczaczakSaczaczalwakSakSakSakSaczakSakSaczcODaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJncOEcLLcOFcOGcOHcOIcMMcOJcOKcOLcOMcONcOOcOPcOQcORcJqcGTcOScOTcOUcOVcOWcOXcOYcOZcPacPbcNTcJqcPccPdcMbcPecEEcPfcMhcPgcPhcDAcNhcNicLfcDAcPicNlcJPcPjcPkbKMcPlcDLcPmcNrcNrcCDaaaaaaaaacPnaaaaaaaaaaaaaaaaaacDQcPocIYcIYcPpcPqcPrcOzaacbTpbTqcPuaaaaaaaaaaaaaaaaaacjIcjIcjIcjIcjIcjIcjIcjIcjIcPvcPvcPvcjIaaaaaaaaaaaaamjaabcLJcLJcLJcLJcLJaaacJlaabcLJcLJcLJcLJcLJaaaamjaaaaaaaaaaaacJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxKcxKcxKcxKcxKcxKcxKcxKcxKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcJncJncJncPwbNybNybNycMMcPAcPBcPCcPCcPDcPEcMScPFcPGcPHcPIcPJcPJcPKcPLcPMcPNcPOcPPcPKcPQcPRcPScPTcGTcPUcPVcPWcOfcMhcPXcPYcDAcNhcDAcPZcDAcNkcNlcJPcJQcQabJCcOkcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDQcQbcIYcIYcKbcQccQdcOzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacPnaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaaawTaaaaabaaaaabaaaaabaaacQeaaaaabaaaaabaabaabaabamjaaaaaaaaaaaacJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcQfcQgcQhbNyaabaabcMMcQjcQkcPCcPCcQlcMMcQmcQncQocQpcQqcQrcQscEEcQtcQucQvcGTcQwcEEcQxcQycQzcQpcQpcQAcQBcEEcQCcMhcQDcQEcDAcNhcDAcMjcMkcQFcQGcNmcQHcQIbGVcQJcDLcQKcQLcQLcCDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOocQMcQNcQOcQPcQQcQRcOzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamjaaacJkcJkcJkcJkcJkaabcGIaabcJkcJkcJkcJkcJkaabamjaaaaaaaaaaaacJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcQfcQScQTbNyaabaaacMMcQVcQkcPCcPCcQWcMMcQXcQYcEEcQZcRacRacRacEEcRbcRccRdcRecRfcEEcRacRacRacQZcEEcRgcQXcEEcOfcMhcRhcRicRjcRkcRlcRmcRncRocIKcRpcJQcRqbJCcOkcEYcRrcRscRtcCDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOzbNqbNqbNqbNqbNqbNqcOzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamjaabcKtcKucKucKucKucRxcRycRxcKycKycKycKycOCaabamjaaaaaaaaaaaacJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmcJmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -498,7 +498,7 @@
|
||||
"jM" = (/obj/structure/closet/wardrobe/orange,/turf/simulated/floor/airless,/area/space)
|
||||
"jN" = (/obj/structure/window/basic{dir = 4},/turf/space,/area/space)
|
||||
"jO" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/derelict/arrival)
|
||||
"jP" = (/obj/structure/closet/wardrobe,/turf/simulated/floor,/area/derelict/arrival)
|
||||
"jP" = (/obj/structure/closet/wardrobe/generic,/turf/simulated/floor,/area/derelict/arrival)
|
||||
"jQ" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary)
|
||||
"jR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/window/reinforced,/turf/simulated/floor/airless,/area/space)
|
||||
"jS" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless,/area/space)
|
||||
|
||||
@@ -35,7 +35,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
M.forceMove(src.loc)
|
||||
if(pipe_image)
|
||||
del(pipe_image) //we have to del it, or it might keep a ref somewhere else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
// Find a connecting /obj/machinery/atmospherics in specified direction.
|
||||
/obj/machinery/atmospherics/proc/findConnecting(var/direction)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(air_temporary && loc)
|
||||
loc.assume_air(air_temporary)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
|
||||
if (istype(src, /obj/machinery/atmospherics/pipe/tank))
|
||||
@@ -252,7 +252,7 @@
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/pipeline_expansion()
|
||||
return list(node1, node2)
|
||||
@@ -580,7 +580,7 @@
|
||||
if(node3)
|
||||
node3.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
@@ -820,7 +820,7 @@
|
||||
if(node4)
|
||||
node4.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
@@ -1070,7 +1070,7 @@
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/cap/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node)
|
||||
@@ -1188,7 +1188,7 @@
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/pipeline_expansion()
|
||||
return list(node1)
|
||||
@@ -1388,7 +1388,7 @@
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/pipeline_expansion()
|
||||
return list(node1)
|
||||
|
||||
@@ -163,6 +163,7 @@
|
||||
if(T.active_hotspot == src)
|
||||
T.active_hotspot = null
|
||||
loc = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/hotspot/proc/DestroyTurf()
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
//defines that give qdel hints. these can be given as a return in destory() or by calling
|
||||
|
||||
#define QDEL_HINT_QUEUE 0 //qdel should queue the object for deletion.
|
||||
#define QDEL_HINT_LETMELIVE 1 //qdel should let the object live after calling destory.
|
||||
#define QDEL_HINT_IWILLGC 2 //functionally the same as the above. qdel should assume the object will gc on its own, and not check it.
|
||||
#define QDEL_HINT_HARDDEL_NOW 4 //qdel should assume this object won't gc, and hard del it post haste.
|
||||
#define QDEL_HINT_PUTINPOOL 5 //qdel will put this object in the atom pool.
|
||||
@@ -31,127 +31,6 @@
|
||||
. = i
|
||||
i = findtext(A, B, i + 1)
|
||||
|
||||
/**
|
||||
* Object pooling.
|
||||
*
|
||||
* If this file is named experimental,
|
||||
* well treat this implementation as experimental experimental (redundancy intended).
|
||||
*
|
||||
* WARNING, only supports /atom/movable (/mob and /obj)
|
||||
*/
|
||||
|
||||
// Uncomment to show debug messages.
|
||||
//#define DEBUG_OBJECT_POOL
|
||||
|
||||
#define MAINTAINING_OBJECT_POOL_COUNT 500
|
||||
|
||||
var/global/list/masterPool = new
|
||||
|
||||
// Read-only or compile-time vars and special exceptions.
|
||||
var/list/exclude = list("inhand_states", "loc", "locs", "parent_type", "vars", "verbs", "type", "x", "y", "z")
|
||||
|
||||
/*
|
||||
* @args
|
||||
* A, object type
|
||||
* B, location to spawn
|
||||
*
|
||||
* Example call: getFromPool(/obj/item/weapon/shard, loc)
|
||||
*/
|
||||
/proc/getFromPool()
|
||||
var/A = args[1]
|
||||
var/list/B = list()
|
||||
B += (args - A)
|
||||
if(length(masterPool["[A]"]) <= 0)
|
||||
#ifdef DEBUG_OBJECT_POOL
|
||||
world << text("DEBUG_OBJECT_POOL: new proc has been called ([]).", A)
|
||||
#endif
|
||||
//so the GC knows we're pooling this type.
|
||||
if(isnull(masterPool["[A]"]))
|
||||
masterPool["[A]"] = list(new A)
|
||||
if(B && B.len)
|
||||
return new A(arglist(B))
|
||||
else
|
||||
return new A()
|
||||
|
||||
var/atom/movable/O = masterPool["[A]"][1]
|
||||
masterPool["[A]"] -= O
|
||||
|
||||
#ifdef DEBUG_OBJECT_POOL
|
||||
world << text("DEBUG_OBJECT_POOL: getFromPool([]) [] left.", A, length(masterPool[A]))
|
||||
#endif
|
||||
if(!O || !istype(O))
|
||||
O = new A(arglist(B))
|
||||
else
|
||||
if(length(B))
|
||||
O.loc = B[1]
|
||||
O.New(arglist(B))
|
||||
return O
|
||||
|
||||
/*
|
||||
* @args
|
||||
* A, object instance
|
||||
*
|
||||
* @return
|
||||
* -1, if A is not a movable atom
|
||||
*
|
||||
* Example call: returnToPool(src)
|
||||
*/
|
||||
/proc/returnToPool(const/atom/movable/AM)
|
||||
if(istype(AM.loc,/mob/living))
|
||||
var/mob/living/L = AM.loc
|
||||
L.unEquip(AM)
|
||||
if(length(masterPool["[AM.type]"]) > MAINTAINING_OBJECT_POOL_COUNT)
|
||||
#ifdef DEBUG_OBJECT_POOL
|
||||
world << text("DEBUG_OBJECT_POOL: returnToPool([]) exceeds [] discarding...", AM.type, MAINTAINING_OBJECT_POOL_COUNT)
|
||||
#endif
|
||||
|
||||
qdel(AM, 1)
|
||||
return
|
||||
|
||||
if(isnull(masterPool["[AM.type]"]))
|
||||
masterPool["[AM.type]"] = list()
|
||||
|
||||
AM.resetVariables()
|
||||
masterPool["[AM.type]"] += AM
|
||||
|
||||
#ifdef DEBUG_OBJECT_POOL
|
||||
world << text("DEBUG_OBJECT_POOL: returnToPool([]) [] left.", AM.type, length(masterPool["[AM.type]"]))
|
||||
#endif
|
||||
|
||||
#undef MAINTAINING_OBJECT_POOL_COUNT
|
||||
|
||||
#ifdef DEBUG_OBJECT_POOL
|
||||
#undef DEBUG_OBJECT_POOL
|
||||
#endif
|
||||
|
||||
/*
|
||||
* if you have a variable that needed to be preserve, override this and call ..
|
||||
*
|
||||
* example
|
||||
*
|
||||
* /obj/item/resetVariables()
|
||||
* ..("var1", "var2", "var3")
|
||||
*
|
||||
* however, if the object has a child type an it has overridden resetVariables()
|
||||
* this should be
|
||||
*
|
||||
* /obj/item/resetVariables()
|
||||
* ..("var1", "var2", "var3", args)
|
||||
*
|
||||
* /obj/item/weapon/resetVariables()
|
||||
* ..("var4")
|
||||
*/
|
||||
/atom/movable/proc/resetVariables()
|
||||
loc = null
|
||||
|
||||
var/list/exclude = global.exclude + args // explicit var exclusion
|
||||
|
||||
for(var/key in vars)
|
||||
if(key in exclude)
|
||||
continue
|
||||
|
||||
vars[key] = initial(vars[key])
|
||||
|
||||
/proc/isInTypes(atom/Object, types)
|
||||
var/prototype = Object.type
|
||||
Object = null
|
||||
|
||||
@@ -28,12 +28,11 @@ var/Debug = 0 // global debug switch
|
||||
var/Debug2 = 1 // enables detailed job debug file in secrets
|
||||
|
||||
//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
|
||||
var/MAX_EXPLOSION_RANGE = 14
|
||||
var/MAX_EX_DEVESTATION_RANGE = 3
|
||||
var/MAX_EX_HEAVY_RANGE = 7
|
||||
var/MAX_EX_LIGHT_RANGE = 14
|
||||
var/MAX_EX_FLASH_RANGE = 14
|
||||
//#define MAX_EXPLOSION_RANGE 14 // Defaults to 12 (was 8) -- TLE
|
||||
var/MAX_EX_FLAME_RANGE = 14
|
||||
|
||||
var/list/be_special_flags = list(
|
||||
"traitor" = BE_TRAITOR,
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
/datum/action/Destroy()
|
||||
if(owner)
|
||||
Remove(owner)
|
||||
return ..()
|
||||
|
||||
/datum/action/proc/Grant(mob/living/T)
|
||||
if(owner)
|
||||
|
||||
@@ -346,9 +346,6 @@
|
||||
if("protect_roles_from_antagonist")
|
||||
config.protect_roles_from_antagonist = 1
|
||||
|
||||
if("reactionary_explosions")
|
||||
config.reactionary_explosions = 1
|
||||
|
||||
if ("probability")
|
||||
var/prob_pos = findtext(value, " ")
|
||||
var/prob_name = null
|
||||
@@ -561,6 +558,22 @@
|
||||
config.bones_can_break = value
|
||||
if("limbs_can_break")
|
||||
config.limbs_can_break = value
|
||||
if("reactionary_explosions")
|
||||
config.reactionary_explosions = 1
|
||||
if("bombcap")
|
||||
var/BombCap = text2num(value)
|
||||
if (!BombCap)
|
||||
continue
|
||||
if (BombCap < 4)
|
||||
BombCap = 4
|
||||
if (BombCap > 128)
|
||||
BombCap = 128
|
||||
|
||||
MAX_EX_DEVESTATION_RANGE = round(BombCap/4)
|
||||
MAX_EX_HEAVY_RANGE = round(BombCap/2)
|
||||
MAX_EX_LIGHT_RANGE = BombCap
|
||||
MAX_EX_FLASH_RANGE = BombCap
|
||||
MAX_EX_FLAME_RANGE = BombCap
|
||||
if("default_laws")
|
||||
config.default_laws = text2num(value)
|
||||
else
|
||||
|
||||
+30
-18
@@ -85,36 +85,48 @@ var/datum/garbage_collector/garbageCollector
|
||||
|
||||
dels_count++
|
||||
|
||||
/datum/garbage_collector/proc/hardDel(const/datum/D)
|
||||
WARNING("GC hard-delling [D.type].")
|
||||
gc_hard_del_types |= D.type
|
||||
del(D)
|
||||
garbageCollector.hard_dels++
|
||||
garbageCollector.dels_count++
|
||||
|
||||
/*
|
||||
* NEVER USE THIS FOR ANYTHING OTHER THAN /atom/movable
|
||||
* OTHER TYPES CANNOT BE QDEL'D BECAUSE THEIR LOC IS LOCKED OR THEY DON'T HAVE ONE.
|
||||
*/
|
||||
/proc/qdel(const/atom/movable/AM, ignore_pooling = 0)
|
||||
if(isnull(AM))
|
||||
/proc/qdel(var/datum/D, ignore_pooling = 0)
|
||||
if(isnull(D))
|
||||
return
|
||||
|
||||
if(isnull(garbageCollector))
|
||||
del(AM)
|
||||
del(D)
|
||||
return
|
||||
|
||||
if(!istype(AM))
|
||||
WARNING("qdel() passed object of type [AM.type]. qdel() can only handle /atom/movable types.")
|
||||
gc_hard_del_types |= AM.type
|
||||
del(AM)
|
||||
garbageCollector.hard_dels++
|
||||
garbageCollector.dels_count++
|
||||
if(!istype(D))
|
||||
WARNING("qdel() passed object of type [D.type]. qdel() can only handle /datum/ types.")
|
||||
del(D) //no clue what could even do this, but just in case.
|
||||
return
|
||||
|
||||
//We are object pooling this.
|
||||
if(("[AM.type]" in masterPool) && !ignore_pooling)
|
||||
returnToPool(AM)
|
||||
return
|
||||
|
||||
if(isnull(AM.gcDestroyed))
|
||||
if(isnull(D.gcDestroyed))
|
||||
// Let our friend know they're about to get fucked up.
|
||||
AM.Destroy()
|
||||
var/hint = D.Destroy()
|
||||
|
||||
garbageCollector.addTrash(AM)
|
||||
switch(hint)
|
||||
if(QDEL_HINT_QUEUE) //qdel should queue the object for deletion
|
||||
garbageCollector.addTrash(D)
|
||||
if(QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destroy.
|
||||
return
|
||||
if(QDEL_HINT_IWILLGC) //functionally the same as the above. qdel should assume the object will gc on its own, and not check it.
|
||||
return
|
||||
if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste.
|
||||
garbageCollector.hardDel(D)
|
||||
if (QDEL_HINT_PUTINPOOL) //qdel will put this object in the pool.
|
||||
PlaceInPool(D,0)
|
||||
else
|
||||
// world << "WARNING GC DID NOT GET A RETURN VALUE FOR [D], [D.type]!"
|
||||
garbageCollector.addTrash(D)
|
||||
|
||||
/datum/controller
|
||||
var/processing = 0
|
||||
@@ -128,7 +140,7 @@ var/datum/garbage_collector/garbageCollector
|
||||
* Called BEFORE qdel moves shit.
|
||||
*/
|
||||
/datum/proc/Destroy()
|
||||
del(src)
|
||||
return QDEL_HINT_HARDDEL_NOW //qdel can't handle datums, therefore tell it to immediately del
|
||||
|
||||
/client/proc/qdel_toggle()
|
||||
set name = "Toggle qdel Behavior"
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
return
|
||||
src.audible_message("\icon[src] <b>[src]</b> beeps, \"Enjoy the pizza!\"")
|
||||
src.visible_message("<span class='userdanger'>\The [src] violently explodes!</span>")
|
||||
explosion(src.loc,1,2,4) //Identical to a minibomb
|
||||
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
|
||||
qdel(src)
|
||||
|
||||
/obj/item/device/pizza_bomb/attackby(var/obj/item/I, var/mob/user, params)
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
var/ex_severe = 1
|
||||
var/ex_heavy = 2
|
||||
var/ex_light = 3
|
||||
var/ex_flash = 4
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/explosion/cast(list/targets)
|
||||
|
||||
for(var/mob/living/target in targets)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light)
|
||||
explosion(target.loc,ex_severe,ex_heavy,ex_light,ex_flash)
|
||||
|
||||
return
|
||||
@@ -16,7 +16,7 @@
|
||||
for(var/spell in contents)
|
||||
del(spell)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/trigger/cast(list/targets)
|
||||
for(var/mob/living/target in targets)
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
action_icon_state = "fireball"
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/turf/fireball/cast(var/turf/T)
|
||||
explosion(T, -1, 0, 2, 3, 0)
|
||||
explosion(T, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/inflict_handler/fireball
|
||||
|
||||
@@ -293,10 +293,10 @@ var/list/uplink_items = list()
|
||||
gamemodes = list("nuclear emergency")
|
||||
surplus = 35
|
||||
|
||||
/datum/uplink_item/dangerous/saringrenades
|
||||
name = "Sarin Gas Grenades"
|
||||
desc = "A box of four (4) grenades filled with sarin, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintaind with team to avoid accidental gassings."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/sarin
|
||||
/datum/uplink_item/dangerous/tabungrenades
|
||||
name = "Tabun Gas Grenades"
|
||||
desc = "A box of four (4) grenades filled with tabun, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintaind with team to avoid accidental gassings."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/tabun
|
||||
cost = 15
|
||||
gamemodes = list("nuclear emergency")
|
||||
surplus = 0
|
||||
|
||||
+1
-2
@@ -45,6 +45,7 @@ var/global/list/ghdel_profiling = list()
|
||||
|
||||
// Idea by ChuckTheSheep to make the object even more unreferencable.
|
||||
invisibility = 101
|
||||
return ..()
|
||||
|
||||
/atom/proc/CheckParts()
|
||||
return
|
||||
@@ -88,8 +89,6 @@ var/global/list/ghdel_profiling = list()
|
||||
*/
|
||||
|
||||
|
||||
/atom/proc/meteorhit(obj/meteor as obj)
|
||||
return
|
||||
|
||||
/atom/proc/allow_drop()
|
||||
return 1
|
||||
|
||||
@@ -24,8 +24,9 @@
|
||||
|
||||
|
||||
/atom/movable/Destroy()
|
||||
. = ..()
|
||||
..()
|
||||
loc = null
|
||||
return QDEL_HINT_QUEUE
|
||||
|
||||
/proc/delete_profile(var/type, code = 0)
|
||||
if(!ticker || !ticker.current_state < 3) return
|
||||
|
||||
@@ -126,4 +126,4 @@
|
||||
if(contents)
|
||||
for(var/mob/M in contents)
|
||||
M.loc = src.loc
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
del(ghostimage)
|
||||
ghostimage = null;
|
||||
updateallghostimages()
|
||||
return ..()
|
||||
|
||||
/mob/camera/blob/Login()
|
||||
..()
|
||||
|
||||
@@ -34,7 +34,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
|
||||
else if (istype(clong, /mob))
|
||||
if(clong.density || prob(10))
|
||||
clong.meteorhit(src)
|
||||
clong.ex_act(2)
|
||||
else
|
||||
del(src)
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ The "dust" will damage the hull of the station causin minor hull breaches.
|
||||
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
|
||||
|
||||
if(ismob(A))
|
||||
A.meteorhit(src)//This should work for now I guess
|
||||
A.ex_act(strength)//This should work for now I guess
|
||||
else if(!istype(A,/obj/machinery/power/emitter) && !istype(A,/obj/machinery/field_generator)) //Protect the singularity from getting released every round!
|
||||
A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ rcd light flash thingy on matter drain
|
||||
V.show_message("<span class='notice'>You hear a loud electrical buzzing sound!</span>", 2)
|
||||
spawn(50)
|
||||
explosion(get_turf(M), 0,1,1,0)
|
||||
del(M)
|
||||
qdel(M)
|
||||
else src << "<span class='notice'>Out of uses.</span>"
|
||||
else src << "<span class='notice'>That's not a machine.</span>"
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
var/waitduration = rand(3000,9000)
|
||||
while(waveduration - world.time > 0)
|
||||
sleep(20)
|
||||
spawn() spawn_meteors(6)
|
||||
spawn() spawn_meteors(6, meteors_normal)
|
||||
sleep(waitduration)
|
||||
nometeors = 0
|
||||
|
||||
|
||||
@@ -1,149 +1,254 @@
|
||||
/*/proc/meteor_wave(var/number = meteors_in_wave)
|
||||
if(!ticker || wavesecret)
|
||||
return
|
||||
//Meteors probability of spawning during a given wave
|
||||
/var/list/meteors_normal = list(/obj/effect/meteor/dust=3, /obj/effect/meteor/medium=8, /obj/effect/meteor/big=3, \
|
||||
/obj/effect/meteor/flaming=1, /obj/effect/meteor/irradiated=3) //for normal meteor event
|
||||
|
||||
wavesecret = 1
|
||||
for(var/i = 0 to number)
|
||||
spawn(rand(10,100))
|
||||
spawn_meteor()
|
||||
spawn(meteor_wave_delay)
|
||||
wavesecret = 0
|
||||
*/
|
||||
/proc/spawn_meteors(var/number)
|
||||
/var/list/meteors_threatening = list(/obj/effect/meteor/medium=4, /obj/effect/meteor/big=8, \
|
||||
/obj/effect/meteor/flaming=3, /obj/effect/meteor/irradiated=3) //for threatening meteor event
|
||||
|
||||
/var/list/meteors_catastrophic = list(/obj/effect/meteor/medium=5, /obj/effect/meteor/big=75, \
|
||||
/obj/effect/meteor/flaming=10, /obj/effect/meteor/irradiated=10, /obj/effect/meteor/tunguska = 1) //for catastrophic meteor event
|
||||
|
||||
/var/list/meteors_dust = list(/obj/effect/meteor/dust) //for space dust event
|
||||
|
||||
|
||||
///////////////////////////////
|
||||
//Meteor spawning global procs
|
||||
///////////////////////////////
|
||||
/proc/spawn_meteors(var/number = 10, var/list/meteortypes)
|
||||
for(var/i = 0; i < number; i++)
|
||||
spawn(0)
|
||||
spawn_meteor()
|
||||
spawn_meteor(meteortypes)
|
||||
|
||||
/proc/spawn_meteor()
|
||||
|
||||
var/startx
|
||||
var/starty
|
||||
var/endx
|
||||
var/endy
|
||||
/proc/spawn_meteor(var/list/meteortypes)
|
||||
var/turf/pickedstart
|
||||
var/turf/pickedgoal
|
||||
var/max_i = 10//number of tries to spawn meteor.
|
||||
|
||||
|
||||
do
|
||||
switch(pick(1,2,3,4))
|
||||
if(1) //NORTH
|
||||
starty = world.maxy-(TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
endy = TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(2) //EAST
|
||||
starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = world.maxx-(TRANSITIONEDGE+1)
|
||||
endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
|
||||
endx = TRANSITIONEDGE
|
||||
if(3) //SOUTH
|
||||
starty = (TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
endy = world.maxy-TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(4) //WEST
|
||||
starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = (TRANSITIONEDGE+1)
|
||||
endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
|
||||
endx = world.maxx-TRANSITIONEDGE
|
||||
|
||||
pickedstart = locate(startx, starty, 1)
|
||||
pickedgoal = locate(endx, endy, 1)
|
||||
while (!istype(pickedstart, /turf/space))
|
||||
var/startSide = pick(cardinal)
|
||||
pickedstart = spaceDebrisStartLoc(startSide, 1)
|
||||
pickedgoal = spaceDebrisFinishLoc(startSide, 1)
|
||||
max_i--
|
||||
if(max_i<=0) return
|
||||
|
||||
while (!istype(pickedstart, /turf/space) || pickedstart.loc.name != "Space" ) //FUUUCK, should never happen.
|
||||
|
||||
|
||||
var/obj/effect/meteor/M
|
||||
switch(rand(1, 100))
|
||||
|
||||
if(1 to 10)
|
||||
M = new /obj/effect/meteor/big( pickedstart )
|
||||
if(11 to 75)
|
||||
M = new /obj/effect/meteor( pickedstart )
|
||||
if(76 to 100)
|
||||
M = new /obj/effect/meteor/small( pickedstart )
|
||||
|
||||
if(max_i<=0)
|
||||
return
|
||||
var/Me = pickweight(meteortypes)
|
||||
var/obj/effect/meteor/M = new Me(pickedstart)
|
||||
M.dest = pickedgoal
|
||||
M.z_original = 1
|
||||
spawn(0)
|
||||
walk_towards(M, M.dest, 1)
|
||||
|
||||
return
|
||||
|
||||
/proc/spaceDebrisStartLoc(startSide, Z)
|
||||
var/starty
|
||||
var/startx
|
||||
switch(startSide)
|
||||
if(NORTH)
|
||||
starty = world.maxy-(TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
if(EAST)
|
||||
starty = rand((TRANSITIONEDGE+1),world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = world.maxx-(TRANSITIONEDGE+1)
|
||||
if(SOUTH)
|
||||
starty = (TRANSITIONEDGE+1)
|
||||
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
|
||||
if(WEST)
|
||||
starty = rand((TRANSITIONEDGE+1), world.maxy-(TRANSITIONEDGE+1))
|
||||
startx = (TRANSITIONEDGE+1)
|
||||
var/turf/T = locate(startx, starty, Z)
|
||||
return T
|
||||
|
||||
/proc/spaceDebrisFinishLoc(startSide, Z)
|
||||
var/endy
|
||||
var/endx
|
||||
switch(startSide)
|
||||
if(NORTH)
|
||||
endy = TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(EAST)
|
||||
endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
|
||||
endx = TRANSITIONEDGE
|
||||
if(SOUTH)
|
||||
endy = world.maxy-TRANSITIONEDGE
|
||||
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
||||
if(WEST)
|
||||
endy = rand(TRANSITIONEDGE,world.maxy-TRANSITIONEDGE)
|
||||
endx = world.maxx-TRANSITIONEDGE
|
||||
var/turf/T = locate(endx, endy, Z)
|
||||
return T
|
||||
|
||||
///////////////////////
|
||||
//The meteor effect
|
||||
//////////////////////
|
||||
|
||||
/obj/effect/meteor
|
||||
name = "meteor"
|
||||
name = "the concept of meteor"
|
||||
desc = "You should probably run instead of gawking at this."
|
||||
icon = 'icons/obj/meteor.dmi'
|
||||
icon_state = "flaming"
|
||||
icon_state = "small"
|
||||
density = 1
|
||||
anchored = 1.0
|
||||
var/hits = 1
|
||||
anchored = 1
|
||||
var/hits = 4
|
||||
var/hitpwr = 2 //Level of ex_act to be called on hit.
|
||||
var/dest
|
||||
pass_flags = PASSTABLE
|
||||
var/heavy = 0
|
||||
var/meteorsound = 'sound/effects/meteorimpact.ogg'
|
||||
var/z_original = 1
|
||||
|
||||
/obj/effect/meteor/small
|
||||
name = "small meteor"
|
||||
icon_state = "smallf"
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
var/meteordrop = /obj/item/weapon/ore/iron
|
||||
var/dropamt = 2
|
||||
|
||||
/obj/effect/meteor/Move()
|
||||
if(z != z_original || loc == dest)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
. = ..() //process movement...
|
||||
|
||||
if(.)//.. if did move, ram the turf we get in
|
||||
var/turf/T = get_turf(loc)
|
||||
ram_turf(T)
|
||||
|
||||
if(prob(10) && !istype(T, /turf/space))//randomly takes a 'hit' from ramming
|
||||
get_hit()
|
||||
|
||||
return .
|
||||
|
||||
/obj/effect/meteor/Destroy()
|
||||
walk(src,0) //this cancels the walk_towards() proc
|
||||
..()
|
||||
|
||||
/obj/effect/meteor/New()
|
||||
..()
|
||||
SpinAnimation()
|
||||
|
||||
/obj/effect/meteor/Bump(atom/A)
|
||||
spawn(0)
|
||||
if(A)
|
||||
ram_turf(get_turf(A))
|
||||
playsound(src.loc, meteorsound, 40, 1)
|
||||
get_hit()
|
||||
|
||||
if (A)
|
||||
A.meteorhit(src)
|
||||
playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 40, 1)
|
||||
if (--src.hits <= 0)
|
||||
/obj/effect/meteor/proc/ram_turf(var/turf/T)
|
||||
//first bust whatever is in the turf
|
||||
for(var/atom/A in T)
|
||||
if(A != src)
|
||||
A.ex_act(hitpwr)
|
||||
|
||||
//Prevent meteors from blowing up the singularity's containment.
|
||||
//Changing emitter and generator ex_act would result in them being bomb and C4 proof.
|
||||
if(!istype(A,/obj/machinery/power/emitter) && \
|
||||
!istype(A,/obj/machinery/field_generator) && \
|
||||
prob(15))
|
||||
explosion(src.loc, 4, 5, 6, 7, 0)
|
||||
del(src)
|
||||
return
|
||||
//then, ram the turf if it still exists
|
||||
if(T)
|
||||
T.ex_act(hitpwr)
|
||||
|
||||
|
||||
/obj/effect/meteor/ex_act(severity)
|
||||
|
||||
if (severity < 4)
|
||||
//process getting 'hit' by colliding with a dense object
|
||||
//or randomly when ramming turfs
|
||||
/obj/effect/meteor/proc/get_hit()
|
||||
hits--
|
||||
if(hits <= 0)
|
||||
make_debris()
|
||||
meteor_effect(heavy)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/meteor/ex_act()
|
||||
return
|
||||
|
||||
/obj/effect/meteor/big
|
||||
name = "big meteor"
|
||||
hits = 5
|
||||
|
||||
ex_act(severity)
|
||||
return
|
||||
|
||||
Bump(atom/A)
|
||||
spawn(0)
|
||||
//Prevent meteors from blowing up the singularity's containment.
|
||||
//Changing emitter and generator ex_act would result in them being bomb and C4 proof
|
||||
if(!istype(A,/obj/machinery/power/emitter) && \
|
||||
!istype(A,/obj/machinery/field_generator))
|
||||
if(--src.hits <= 0)
|
||||
del(src) //Dont blow up singularity containment if we get stuck there.
|
||||
|
||||
if (A)
|
||||
for(var/mob/M in player_list)
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T || T.z != src.z)
|
||||
continue
|
||||
shake_camera(M, 3, get_dist(M.loc, src.loc) > 20 ? 1 : 3)
|
||||
M.playsound_local(src.loc, 'sound/effects/meteorimpact.ogg', 50, 1, get_rand_frequency(), 10)
|
||||
explosion(src.loc, 0, 1, 2, 3, 0)
|
||||
|
||||
if (--src.hits <= 0)
|
||||
if(prob(15) && !istype(A, /obj/structure/grille))
|
||||
explosion(src.loc, 1, 2, 3, 4, 0)
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/effect/meteor/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/pickaxe))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/effect/meteor/proc/make_debris()
|
||||
for(var/throws = dropamt, throws > 0, throws--)
|
||||
var/obj/item/O = new meteordrop(get_turf(src))
|
||||
O.throw_at(dest, 5, 10)
|
||||
|
||||
/obj/effect/meteor/proc/meteor_effect(var/sound=1)
|
||||
if(sound)
|
||||
for(var/mob/M in player_list)
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T || T.z != src.z)
|
||||
continue
|
||||
var/dist = get_dist(M.loc, src.loc)
|
||||
shake_camera(M, dist > 20 ? 3 : 5, dist > 20 ? 1 : 3)
|
||||
M.playsound_local(src.loc, meteorsound, 50, 1, get_rand_frequency(), 10)
|
||||
|
||||
///////////////////////
|
||||
//Meteor types
|
||||
///////////////////////
|
||||
|
||||
//Dust
|
||||
/obj/effect/meteor/dust
|
||||
name = "space dust"
|
||||
icon_state = "dust"
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
hits = 1
|
||||
hitpwr = 3
|
||||
meteorsound = 'sound/weapons/tap.ogg'
|
||||
meteordrop = /obj/item/weapon/ore/glass
|
||||
|
||||
//Medium-sized
|
||||
/obj/effect/meteor/medium
|
||||
name = "meteor"
|
||||
dropamt = 3
|
||||
|
||||
/obj/effect/meteor/medium/meteor_effect()
|
||||
..(heavy)
|
||||
explosion(src.loc, 0, 1, 2, 3, 0)
|
||||
|
||||
//Large-sized
|
||||
/obj/effect/meteor/big
|
||||
name = "big meteor"
|
||||
icon_state = "large"
|
||||
hits = 6
|
||||
heavy = 1
|
||||
dropamt = 4
|
||||
|
||||
/obj/effect/meteor/big/meteor_effect()
|
||||
..(heavy)
|
||||
explosion(src.loc, 1, 2, 3, 4, 0)
|
||||
|
||||
//Flaming meteor
|
||||
/obj/effect/meteor/flaming
|
||||
name = "flaming meteor"
|
||||
icon_state = "flaming"
|
||||
hits = 5
|
||||
heavy = 1
|
||||
meteorsound = 'sound/effects/bamf.ogg'
|
||||
meteordrop = /obj/item/weapon/ore/plasma
|
||||
|
||||
/obj/effect/meteor/flaming/meteor_effect()
|
||||
..(heavy)
|
||||
explosion(src.loc, 1, 2, 3, 4, 0, 0, flame_range = 5)
|
||||
|
||||
//Radiation meteor
|
||||
/obj/effect/meteor/irradiated
|
||||
name = "glowing meteor"
|
||||
icon_state = "glowing"
|
||||
heavy = 1
|
||||
meteordrop = /obj/item/weapon/ore/uranium
|
||||
|
||||
|
||||
/obj/effect/meteor/irradiated/meteor_effect()
|
||||
..(heavy)
|
||||
explosion(src.loc, 0, 0, 4, 3, 0)
|
||||
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
|
||||
for(var/mob/living/L in view(5, src))
|
||||
L.apply_effect(40, IRRADIATE)
|
||||
|
||||
//Station buster Tunguska
|
||||
/obj/effect/meteor/tunguska
|
||||
name = "tunguska meteor"
|
||||
icon_state = "flaming"
|
||||
desc = "Your life briefly passes before your eyes the moment you lay them on this monstruosity."
|
||||
hits = 30
|
||||
hitpwr = 1
|
||||
heavy = 1
|
||||
meteorsound = 'sound/effects/bamf.ogg'
|
||||
meteordrop = /obj/item/weapon/ore/plasma
|
||||
|
||||
/obj/effect/meteor/tunguska/meteor_effect()
|
||||
..(heavy)
|
||||
explosion(src.loc, 5, 10, 15, 20, 0)
|
||||
|
||||
/obj/effect/meteor/tunguska/Bump()
|
||||
..()
|
||||
if(prob(20))
|
||||
explosion(src.loc,2,4,6,8)
|
||||
|
||||
@@ -454,4 +454,4 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
var/obj/D = new /obj/item/weapon/disk/nuclear(pick(blobstart))
|
||||
message_admins("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).")
|
||||
log_game("[src] has been destroyed. Spawning [D] at ([D.x], [D.y], [D.z]).")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -555,8 +555,8 @@
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/fireball/recoil(mob/user as mob)
|
||||
..()
|
||||
explosion(user.loc, -1, 0, 2, 3, 0)
|
||||
del(src)
|
||||
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/spellbook/oneuse/smoke
|
||||
spell = /obj/effect/proc_holder/spell/wizard/targeted/smoke
|
||||
|
||||
@@ -334,11 +334,6 @@ update_flag
|
||||
healthcheck()
|
||||
..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/meteorhit(var/obj/O as obj)
|
||||
src.health = 0
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
|
||||
if(iswelder(W) && src.destroyed)
|
||||
if(weld(W, user))
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
bug = null
|
||||
del(wires)
|
||||
cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/camera/emp_act(severity)
|
||||
if(!isEmpProof())
|
||||
|
||||
@@ -182,12 +182,7 @@
|
||||
//This could all be done better, but it works for now.
|
||||
/obj/machinery/computer/HolodeckControl/Destroy()
|
||||
emergencyShutdown()
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/meteorhit(var/obj/O as obj)
|
||||
emergencyShutdown()
|
||||
..()
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/emp_act(severity)
|
||||
emergencyShutdown()
|
||||
@@ -442,7 +437,7 @@
|
||||
|
||||
|
||||
/obj/structure/holowindow/Destroy()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/holo
|
||||
damtype = STAMINA
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
/obj/structure/AIcore/deactivated/Destroy()
|
||||
empty_playable_ai_cores -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/AIcore/deactivated/attackby(var/obj/item/W, var/mob/user, params)
|
||||
if(istype(W, /obj/item/device/aicard))//Is it?
|
||||
|
||||
@@ -118,4 +118,4 @@
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Destroy()
|
||||
radio_controller.remove_object(src, receive_frequency)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -490,7 +490,7 @@ var/shuttle_call/shuttle_calls[0]
|
||||
log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
|
||||
message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/circuitboard/communications/Destroy()
|
||||
|
||||
@@ -513,4 +513,4 @@ var/shuttle_call/shuttle_calls[0]
|
||||
log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.")
|
||||
message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -22,21 +22,9 @@
|
||||
|
||||
/obj/machinery/computer/process()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
luminosity = 0
|
||||
return 0
|
||||
luminosity = 2
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/meteorhit(var/obj/O as obj)
|
||||
for(var/x in verbs)
|
||||
verbs -= x
|
||||
set_broken()
|
||||
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
|
||||
smoke.set_up(5, 0, src)
|
||||
smoke.start()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/emp_act(severity)
|
||||
if(prob(20/severity)) set_broken()
|
||||
..()
|
||||
@@ -129,7 +117,7 @@
|
||||
C.loc = src.loc
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
A.state = 3
|
||||
A.icon_state = "3"
|
||||
else
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
var/obj/item/weapon/circuitboard/powermonitor/M = new /obj/item/weapon/circuitboard/powermonitor( A )
|
||||
for (var/obj/C in src)
|
||||
C.loc = src.loc
|
||||
|
||||
@@ -45,7 +45,7 @@ var/prison_shuttle_timeleft = 0
|
||||
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
A.state = 3
|
||||
A.icon_state = "3"
|
||||
else
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
var/obj/item/weapon/reagent_containers/glass/B = beaker
|
||||
if(beaker)
|
||||
B.loc = get_step(T, SOUTH) //Beaker is carefully ejected from the wreckage of the cryotube
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
if(O.loc == user) //no you can't pull things out of your ass
|
||||
|
||||
@@ -108,14 +108,6 @@ for reference:
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
meteorhit()
|
||||
visible_message("\red <B>The barricade is smashed apart!</B>")
|
||||
new /obj/item/stack/sheet/wood(get_turf(src))
|
||||
new /obj/item/stack/sheet/wood(get_turf(src))
|
||||
new /obj/item/stack/sheet/wood(get_turf(src))
|
||||
del(src)
|
||||
return
|
||||
|
||||
blob_act()
|
||||
src.health -= 25
|
||||
if (src.health <= 0)
|
||||
@@ -200,7 +192,7 @@ for reference:
|
||||
if (src.health <= 0)
|
||||
src.explode()
|
||||
..()
|
||||
|
||||
|
||||
emag_act(user as mob)
|
||||
if (!emagged)
|
||||
emagged = 1
|
||||
@@ -236,10 +228,6 @@ for reference:
|
||||
anchored = !anchored
|
||||
icon_state = "barrier[src.locked]"
|
||||
|
||||
meteorhit()
|
||||
src.explode()
|
||||
return
|
||||
|
||||
blob_act()
|
||||
src.health -= 25
|
||||
if (src.health <= 0)
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
icon = 'icons/obj/doors/vault.dmi'
|
||||
opacity = 1
|
||||
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites.
|
||||
explosion_block = 2
|
||||
|
||||
/obj/machinery/door/airlock/freezer
|
||||
name = "Freezer Airlock"
|
||||
|
||||
@@ -56,8 +56,7 @@
|
||||
air_update_turf(1)
|
||||
update_freelok_sight()
|
||||
airlocks -= src
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/Bumped(atom/AM)
|
||||
if(p_open || operating) return
|
||||
@@ -124,11 +123,6 @@
|
||||
flick("door_deny", src)
|
||||
return
|
||||
|
||||
/obj/machinery/door/meteorhit(obj/M as obj)
|
||||
src.open()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
density = 0
|
||||
if(health == 0)
|
||||
playsound(src, "shatter", 70, 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/door/window/proc/open_and_close()
|
||||
@@ -175,7 +175,6 @@
|
||||
/obj/machinery/door/window/hitby(AM as mob|obj)
|
||||
|
||||
..()
|
||||
visible_message("<span class='danger'>\The [src] was hit by \the [AM].</span>")
|
||||
var/tforce = 0
|
||||
if(ismob(AM))
|
||||
tforce = 40
|
||||
|
||||
@@ -14,17 +14,22 @@ var/list/doppler_arrays = list()
|
||||
|
||||
/obj/machinery/doppler_array/Destroy()
|
||||
doppler_arrays -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doppler_array/process()
|
||||
return PROCESS_KILL
|
||||
|
||||
/obj/machinery/doppler_array/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(istype(O, /obj/item/weapon/wrench))
|
||||
if(!anchored && !isinspace())
|
||||
anchored = 1
|
||||
power_change()
|
||||
user << "<span class='notice'>You fasten [src].</span>"
|
||||
else if(anchored)
|
||||
anchored = 0
|
||||
power_change()
|
||||
user << "<span class='notice'>You unfasten [src].</span>"
|
||||
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
anchored = !anchored
|
||||
power_change()
|
||||
user << "You [anchored ? "wrench" : "unwrench"] [src]."
|
||||
|
||||
/obj/machinery/doppler_array/verb/rotate()
|
||||
set name = "Rotate Tachyon-doppler Dish"
|
||||
@@ -33,12 +38,13 @@ var/list/doppler_arrays = list()
|
||||
|
||||
if(!usr || !isturf(usr.loc))
|
||||
return
|
||||
if(usr.stat || usr.restrained())
|
||||
if(usr.stat || usr.restrained() || !usr.canmove)
|
||||
return
|
||||
src.dir = turn(src.dir, 90)
|
||||
return
|
||||
|
||||
/obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,var/took)
|
||||
/obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,
|
||||
var/took,var/orig_dev_range,var/orig_heavy_range,var/orig_light_range)
|
||||
if(stat & NOPOWER) return
|
||||
if(z != z0) return
|
||||
|
||||
@@ -59,10 +65,18 @@ var/list/doppler_arrays = list()
|
||||
if(distance > 100) return
|
||||
if(!(direct & dir)) return
|
||||
|
||||
var/message = "Explosive disturbance detected - Epicenter at: grid ([x0],[y0]). Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range]. Temporal displacement of tachyons: [took] seconds."
|
||||
|
||||
var/list/messages = list("Explosive disturbance detected.", \
|
||||
"Epicenter at: grid ([x0],[y0]). Temporal displacement of tachyons: [took] seconds.", \
|
||||
"Factual: Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range].")
|
||||
|
||||
// If the bomb was capped, say it's theoretical size.
|
||||
if(devastation_range < orig_dev_range || heavy_impact_range < orig_heavy_range || light_impact_range < orig_light_range)
|
||||
messages += "Theoretical: Epicenter radius: [orig_dev_range]. Outer radius: [orig_heavy_range]. Shockwave radius: [orig_light_range]."
|
||||
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("<span class='game say'><span class='name'>[src]</span> states coldly, \"[message]\"",2)
|
||||
for(var/message in messages)
|
||||
O.show_message("<span class='game say'><span class='name'>[src]</span> states coldly, \"[message]\"",2)
|
||||
|
||||
|
||||
/obj/machinery/doppler_array/power_change()
|
||||
|
||||
@@ -183,23 +183,19 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
/obj/machinery/hologram/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/hologram/blob_act()
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/machinery/hologram/meteorhit()
|
||||
del(src)
|
||||
return
|
||||
|
||||
/obj/machinery/hologram/Del()
|
||||
if(hologram)
|
||||
src:clear_holo()
|
||||
|
||||
@@ -136,7 +136,7 @@ Class Procs:
|
||||
if (src in machines)
|
||||
removeAtProcessing()
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/process() // If you dont use process or power why are you here
|
||||
return PROCESS_KILL
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
/obj/machinery/navbeacon/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, freq)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
// set the transponder codes assoc list from codes_txt
|
||||
/obj/machinery/navbeacon/proc/set_codes()
|
||||
|
||||
@@ -116,7 +116,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
|
||||
/obj/machinery/newscaster/Destroy()
|
||||
allCasters -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/newscaster/update_icon()
|
||||
if(!ispowered || isbroken)
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
/obj/machinery/porta_turret/Destroy()
|
||||
//deletes its own cover with it
|
||||
qdel(cover) // qdel
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/porta_turret/proc/isLocked(mob/user)
|
||||
if(ailock && (isrobot(user) || isAI(user)))
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
opacity = 0
|
||||
density = 0
|
||||
air_update_turf(1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/shield/Move()
|
||||
var/turf/T = loc
|
||||
@@ -55,18 +55,6 @@
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/shield/meteorhit()
|
||||
src.health -= max_health*0.75 //3/4 health as damage
|
||||
|
||||
if(src.health <= 0)
|
||||
visible_message("\blue The [src] dissipates")
|
||||
del(src)
|
||||
return
|
||||
|
||||
opacity = 1
|
||||
spawn(20) if(src) opacity = 0
|
||||
return
|
||||
|
||||
/obj/machinery/shield/bullet_act(var/obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
..()
|
||||
@@ -103,8 +91,6 @@
|
||||
|
||||
|
||||
/obj/machinery/shield/hitby(AM as mob|obj)
|
||||
//Let everyone know we've been hit!
|
||||
visible_message("\red <B>[src] was hit by [AM].</B>")
|
||||
|
||||
//Super realistic, resource-intensive, real-time damage calculations.
|
||||
var/tforce = 0
|
||||
@@ -154,7 +140,7 @@
|
||||
/obj/machinery/shieldgen/Destroy()
|
||||
for(var/obj/machinery/shield/shield_tile in deployed_shields)
|
||||
qdel(shield_tile)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/shieldgen/proc/shields_up()
|
||||
@@ -192,13 +178,6 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/shieldgen/meteorhit(obj/O as obj)
|
||||
src.health -= max_health*0.25 //A quarter of the machine's health
|
||||
if (prob(5))
|
||||
src.malfunction = 1
|
||||
src.checkhp()
|
||||
return
|
||||
|
||||
/obj/machinery/shieldgen/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -523,7 +502,7 @@
|
||||
src.cleanup(2)
|
||||
src.cleanup(4)
|
||||
src.cleanup(8)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/shieldwallgen/bullet_act(var/obj/item/projectile/Proj)
|
||||
storedpower -= Proj.damage
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
/obj/machinery/power/singularity_beacon/Destroy()
|
||||
if(active)
|
||||
Deactivate()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
//stealth direct power usage
|
||||
/obj/machinery/power/singularity_beacon/process()
|
||||
|
||||
@@ -187,8 +187,10 @@
|
||||
if(adminlog)
|
||||
message_admins(adminlog)
|
||||
log_game(adminlog)
|
||||
explosion(get_turf(src),2,5,11)
|
||||
del(src)
|
||||
explosion(get_turf(src),2,5,11, flame_range = 11)
|
||||
if(src.loc && istype(src.loc,/obj/machinery/syndicatebomb/))
|
||||
qdel(src.loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/bombcore/proc/defuse()
|
||||
//Note: Because of how var/defused is used you shouldn't override this UNLESS you intend to set the var to 0 or
|
||||
@@ -269,16 +271,17 @@
|
||||
var/HeavyExplosion = 2
|
||||
var/MediumExplosion = 5
|
||||
var/LightExplosion = 11
|
||||
var/Flames = 11
|
||||
|
||||
/obj/item/weapon/bombcore/badmin/explosion/detonate()
|
||||
explosion(get_turf(src),HeavyExplosion,MediumExplosion,LightExplosion)
|
||||
explosion(get_turf(src),HeavyExplosion,MediumExplosion,LightExplosion, flame_range = Flames)
|
||||
|
||||
/obj/item/weapon/bombcore/miniature
|
||||
name = "small bomb core"
|
||||
w_class = 2
|
||||
|
||||
/obj/item/weapon/bombcore/miniature/detonate()
|
||||
explosion(src.loc,1,2,4) //Identical to a minibomb
|
||||
explosion(src.loc,1,2,4,flame_range = 2) //Identical to a minibomb
|
||||
qdel(src)
|
||||
|
||||
///Syndicate Detonator (aka the big red button)///
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
var/obj/item/weapon/circuitboard/comm_server/M = new /obj/item/weapon/circuitboard/comm_server( A )
|
||||
for (var/obj/C in src)
|
||||
C.loc = src.loc
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
var/obj/item/weapon/circuitboard/comm_monitor/M = new /obj/item/weapon/circuitboard/comm_monitor( A )
|
||||
for (var/obj/C in src)
|
||||
C.loc = src.loc
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
if (src.stat & BROKEN)
|
||||
user << "\blue The broken glass falls out."
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||
getFromPool(/obj/item/weapon/shard, loc)
|
||||
PoolOrNew(/obj/item/weapon/shard, loc)
|
||||
var/obj/item/weapon/circuitboard/comm_traffic/M = new /obj/item/weapon/circuitboard/comm_traffic( A )
|
||||
for (var/obj/C in src)
|
||||
C.loc = src.loc
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
/obj/machinery/teleport/station/Destroy()
|
||||
if(teleporter_hub)
|
||||
teleporter_hub.update_icon()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/teleport/station/attackby(var/obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/device/multitool) && !panel_open)
|
||||
|
||||
@@ -422,10 +422,6 @@
|
||||
/obj/machinery/gun_turret/emp_act() //Can't emp an mechanical turret.
|
||||
return
|
||||
|
||||
/obj/machinery/gun_turret/meteorhit()
|
||||
die()
|
||||
return
|
||||
|
||||
/obj/machinery/gun_turret/update_icon()
|
||||
if(state > 2 || state < 0) //someone fucked up the vars so fix them
|
||||
take_damage(0)
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
if(coin)
|
||||
del(coin) // qdel
|
||||
coin = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/vending/ex_act(severity)
|
||||
switch(severity)
|
||||
|
||||
@@ -363,8 +363,8 @@
|
||||
|
||||
throw_impact(atom/hit_atom)
|
||||
if(primed)
|
||||
explosion(hit_atom, 0, 0, 2, 4)
|
||||
del(src)
|
||||
explosion(hit_atom, 0, 0, 2, 4, 0)
|
||||
qdel(src)
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -99,8 +99,7 @@
|
||||
/obj/mecha/Destroy()
|
||||
src.go_out()
|
||||
mechas_list -= src //global mech list
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
////////////////////////
|
||||
////// Helpers /////////
|
||||
@@ -378,7 +377,7 @@
|
||||
G.destroyed = 1
|
||||
G.icon_state = "[initial(G.icon_state)]-b"
|
||||
G.density = 0
|
||||
getFromPool(/obj/item/stack/rods, get_turf(G.loc))
|
||||
PoolOrNew(/obj/item/stack/rods, get_turf(G.loc))
|
||||
breakthrough = 1
|
||||
|
||||
else if(istype(obstacle, /obj/structure/table))
|
||||
@@ -633,7 +632,7 @@
|
||||
T.Entered(O)
|
||||
|
||||
if(prob(30))
|
||||
explosion(T, 0, 0, 1, 3)
|
||||
explosion(get_turf(loc), 0, 0, 1, 3)
|
||||
spawn(0)
|
||||
if(wreckage)
|
||||
var/obj/effect/decal/mecha_wreckage/WR = new wreckage(T)
|
||||
@@ -658,7 +657,7 @@
|
||||
E.forceMove(T)
|
||||
E.destroy()
|
||||
spawn(0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/mecha/ex_act(severity)
|
||||
@@ -710,9 +709,6 @@
|
||||
take_damage(30, "brute")
|
||||
return
|
||||
|
||||
/obj/mecha/meteorhit()
|
||||
return ex_act(rand(1,3))//should do for now
|
||||
|
||||
/obj/mecha/emp_act(severity)
|
||||
if(get_charge())
|
||||
use_power((cell.charge/2)/severity)
|
||||
|
||||
@@ -91,11 +91,11 @@
|
||||
return answer
|
||||
|
||||
emp_act()
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
ex_act()
|
||||
del src
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
proc/in_mecha()
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
A.loc = loc
|
||||
step_rand(A)
|
||||
cargo.Cut()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/mecha/working/ripley/go_out()
|
||||
..()
|
||||
@@ -148,5 +148,4 @@
|
||||
if(T)
|
||||
T.Entered(A)
|
||||
step_rand(A)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
@@ -35,7 +35,7 @@
|
||||
var/turf/T = loc
|
||||
loc = null
|
||||
T.relativewall_neighbours()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/alien/resin/Move()
|
||||
var/turf/T = loc
|
||||
@@ -99,7 +99,6 @@
|
||||
|
||||
/obj/structure/alien/resin/hitby(atom/movable/AM)
|
||||
..()
|
||||
visible_message("<span class='danger'>[src] was hit by [AM].</span>")
|
||||
var/tforce = 0
|
||||
if(!isobj(AM))
|
||||
tforce = 10
|
||||
@@ -182,7 +181,7 @@
|
||||
loc = null
|
||||
for (var/obj/structure/alien/weeds/W in range(1,T))
|
||||
W.updateWeedOverlays()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/alien/weeds/proc/Life()
|
||||
set background = BACKGROUND_ENABLED
|
||||
@@ -209,8 +208,8 @@
|
||||
new /obj/structure/alien/weeds(T, linked_node)
|
||||
|
||||
|
||||
/obj/structure/alien/weeds/ex_act(severity, target)
|
||||
del(src)
|
||||
/obj/structure/alien/weeds/ex_act(severity)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/structure/alien/weeds/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -17,7 +17,7 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
|
||||
/obj/effect/bump_teleporter/Destroy()
|
||||
BUMP_TELEPORTERS -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/bump_teleporter/Bumped(atom/user)
|
||||
if(!ismob(user))
|
||||
|
||||
@@ -62,8 +62,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
//if (istype(T, /turf))
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
src.delete()
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/water/Move(turf/newloc)
|
||||
//var/turf/T = src.loc
|
||||
@@ -183,8 +182,7 @@ steam.start() -- spawns the effect
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/sparks/Move()
|
||||
..()
|
||||
@@ -960,7 +958,7 @@ steam.start() -- spawns the effect
|
||||
if(A == src)
|
||||
continue
|
||||
reagents.reaction(A, 1, 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/foam/process()
|
||||
if(--amount < 0)
|
||||
@@ -1102,11 +1100,11 @@ steam.start() -- spawns the effect
|
||||
qdel(src)
|
||||
|
||||
blob_act()
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
bullet_act()
|
||||
if(metal==1 || prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
attack_hand(var/mob/user)
|
||||
if ((HULK in user.mutations) || (prob(75 - metal*25)))
|
||||
@@ -1115,7 +1113,7 @@ steam.start() -- spawns the effect
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [user] smashes through the foamed metal."
|
||||
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "\blue You hit the metal foam but bounce off it."
|
||||
return
|
||||
@@ -1129,8 +1127,8 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/O in viewers(src))
|
||||
if (O.client)
|
||||
O << "\red [G.assailant] smashes [G.affecting] through the foamed metal wall."
|
||||
del(I)
|
||||
del(src)
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if(prob(I.force*20 - metal*25))
|
||||
@@ -1138,7 +1136,7 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/O in oviewers(user))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << "\red [user] smashes through the foamed metal."
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
user << "\blue You hit the metal foam to no effect."
|
||||
|
||||
@@ -1249,8 +1247,8 @@ steam.start() -- spawns the effect
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(3000,100)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effects/sparkels/Move()
|
||||
..()
|
||||
var/turf/T = src.loc
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
/obj/effect/glowshroom/Destroy()
|
||||
processing_objects -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/glowshroom/process()
|
||||
if(!spreaded)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
/obj/effect/landmark/Destroy()
|
||||
landmarks_list -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/nations
|
||||
name = "nations"
|
||||
|
||||
@@ -156,15 +156,15 @@
|
||||
/obj/effect/supermatter_crystal/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(2.0)
|
||||
if (prob(50))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
if(3.0)
|
||||
if (prob(5))
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -176,4 +176,4 @@
|
||||
|
||||
/obj/effect/supermatter_crystal/proc/CheckEndurance()
|
||||
if(endurance <= 0)
|
||||
del(src)
|
||||
qdel(src)
|
||||
@@ -220,4 +220,4 @@
|
||||
src.visible_message("<span class='danger'>\The [src] splits open.</span>")
|
||||
for(var/atom/movable/A in contents)
|
||||
A.loc = src.loc
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
if(dx>=dy) return dx + (0.5*dy) //The longest side add half the shortest side approximates the hypotenuse
|
||||
else return dy + (0.5*dx)
|
||||
|
||||
proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive)
|
||||
/proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive)
|
||||
if(Center==null) return
|
||||
|
||||
//var/x1=((Center.x-Dist)<1 ? 1 : Center.x-Dist)
|
||||
@@ -19,42 +19,60 @@ proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY process
|
||||
return block(x1y1,x2y2)
|
||||
|
||||
|
||||
proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, adminlog = 1)
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0)
|
||||
src = null //so we don't abort once src is deleted
|
||||
epicenter = get_turf(epicenter)
|
||||
|
||||
// Archive the uncapped explosion for the doppler array
|
||||
var/orig_dev_range = devastation_range
|
||||
var/orig_heavy_range = heavy_impact_range
|
||||
var/orig_light_range = light_impact_range
|
||||
|
||||
if(!ignorecap)
|
||||
// Clamp all values to MAX_EXPLOSION_RANGE
|
||||
devastation_range = min (MAX_EX_DEVESTATION_RANGE, devastation_range)
|
||||
heavy_impact_range = min (MAX_EX_HEAVY_RANGE, heavy_impact_range)
|
||||
light_impact_range = min (MAX_EX_LIGHT_RANGE, light_impact_range)
|
||||
flash_range = min (MAX_EX_FLASH_RANGE, flash_range)
|
||||
flame_range = min (MAX_EX_FLAME_RANGE, flame_range)
|
||||
|
||||
spawn(0)
|
||||
var/start = world.timeofday
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter) return
|
||||
|
||||
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range)
|
||||
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
|
||||
|
||||
// Play sounds; since playsound uses range() for each use, we'll try doing it through the player list.
|
||||
// Playsound_local will also have an extra bonus of panning the sound, depending on the source. So stereo users will hear the direction of the explosion
|
||||
for(var/mob/M in player_list)
|
||||
// Double check for client
|
||||
if(M && M.client)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == epicenter.z)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, "explosion", 100, 1)
|
||||
// You hear a far explosion if you're outside the blast radius (*5) Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= round(max_range * 10, 1))
|
||||
var/far_volume = Clamp(max_range * 10, 30, 60) // Volume is based on explosion size and dist
|
||||
far_volume += (dist > max_range * 2 ? 0 : 40) // add 40 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1)
|
||||
|
||||
|
||||
var/close = range(world.view+round(devastation_range,1), epicenter)
|
||||
// to all distanced mobs play a different sound
|
||||
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
|
||||
// check if the mob can hear
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
M << 'sound/effects/explosionfar.ogg'
|
||||
if(adminlog)
|
||||
msg_admin_attack("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</a>)")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</a>)")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
|
||||
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
|
||||
// Stereo users will also hear the direction of the explosion!
|
||||
|
||||
// Calculate far explosion sound range. Only allow the sound effect for heavy/devastating explosions.
|
||||
// 3/7/14 will calculate to 80 + 35
|
||||
|
||||
var/far_dist = 0
|
||||
far_dist += heavy_impact_range * 5
|
||||
far_dist += devastation_range * 20
|
||||
|
||||
if(!silent)
|
||||
var/frequency = get_rand_frequency()
|
||||
for(var/mob/M in player_list)
|
||||
// Double check for client
|
||||
if(M && M.client)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
if(M_turf && M_turf.z == epicenter.z)
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
far_volume += (dist <= far_dist * 0.5 ? 50 : 0) // add 50 volume if the mob is pretty close to the explosion
|
||||
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5)
|
||||
|
||||
|
||||
//Pause the lighting updates for a bit
|
||||
var/datum/controller/process/lighting = processScheduler.getProcess("lighting")
|
||||
@@ -74,7 +92,8 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
var/z0 = epicenter.z
|
||||
|
||||
for(var/turf/T in trange(max_range, epicenter))
|
||||
var/dist = sqrt((T.x - x0)**2 + (T.y - y0)**2)
|
||||
|
||||
var/dist = cheap_pythag(T.x - x0,T.y - y0)
|
||||
|
||||
if(config.reactionary_explosions)
|
||||
var/turf/Trajectory = T
|
||||
@@ -87,19 +106,25 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
if(D.density && D.explosion_block)
|
||||
dist += D.explosion_block
|
||||
|
||||
var/flame_dist = 0
|
||||
var/throw_dist = dist
|
||||
|
||||
if(dist < flame_range)
|
||||
flame_dist = 1
|
||||
|
||||
if(dist < devastation_range) dist = 1
|
||||
else if(dist < heavy_impact_range) dist = 2
|
||||
else if(dist < light_impact_range) dist = 3
|
||||
else dist = 0
|
||||
else dist = 0
|
||||
|
||||
//------- TURF FIRES -------
|
||||
|
||||
if(T)
|
||||
for(var/atom_movable in T.contents) //bypass type checking since only atom/movable can be contained by turfs anyway
|
||||
var/atom/movable/AM = atom_movable
|
||||
if(AM && AM.simulated) AM.ex_act(dist)
|
||||
// if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density)
|
||||
// PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
|
||||
if(AM) AM.ex_act(dist)
|
||||
if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density)
|
||||
new/obj/effect/hotspot(T) //Mostly for ambience!
|
||||
if(dist > 0)
|
||||
T.ex_act(dist)
|
||||
|
||||
@@ -122,7 +147,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
for(var/i,i<=doppler_arrays.len,i++)
|
||||
var/obj/machinery/doppler_array/Array = doppler_arrays[i]
|
||||
if(Array)
|
||||
Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took)
|
||||
Array.sense_explosion(x0,y0,z0,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
|
||||
|
||||
sleep(8)
|
||||
|
||||
@@ -136,7 +161,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
|
||||
|
||||
|
||||
proc/secondaryexplosion(turf/epicenter, range)
|
||||
/proc/secondaryexplosion(turf/epicenter, range)
|
||||
for(var/turf/tile in trange(range, epicenter))
|
||||
tile.ex_act(2)
|
||||
|
||||
@@ -145,8 +170,10 @@ proc/secondaryexplosion(turf/epicenter, range)
|
||||
set category = "Debug"
|
||||
|
||||
var/newmode = alert("Use reactionary explosions?","Check Bomb Impact", "Yes", "No")
|
||||
var/turf/epicenter = get_turf(mob)
|
||||
if(!epicenter)
|
||||
return
|
||||
|
||||
var/turf/epicenter = get_turf(usr)
|
||||
var/dev = 0
|
||||
var/heavy = 0
|
||||
var/light = 0
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
/* BROKEN, FUCK BYOND
|
||||
if(hasvar(src, "my_atom"))
|
||||
src:my_atom = null*/
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device
|
||||
icon = 'icons/obj/device.dmi'
|
||||
|
||||
@@ -1293,14 +1293,14 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if (ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.show_message("\red Your [src] explodes!", 1)
|
||||
M.show_message("<span class='danger'>Your [src] explodes!</span>", 1)
|
||||
|
||||
if(T)
|
||||
T.hotspot_expose(700,125)
|
||||
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
JFLOG("Exploded")
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/device/pda/Destroy()
|
||||
@@ -1310,7 +1310,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
src.id.loc = get_turf(src.loc)
|
||||
if(src.pai)
|
||||
src.pai.loc = get_turf(src.loc)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
|
||||
if (istype(AM, /mob/living/carbon))
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/obj/item/radio/integrated/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, control_freq)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/integrated/proc/post_signal(var/freq, var/key, var/value, var/key2, var/value2, var/key3, var/value3,var/key4, var/value4, s_filter)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
signal.data[key4] = value4
|
||||
|
||||
frequency.post_signal(src, signal, filter = s_filter)
|
||||
|
||||
|
||||
return
|
||||
|
||||
/obj/item/radio/integrated/receive_signal(datum/signal/signal)
|
||||
@@ -139,7 +139,7 @@
|
||||
/obj/item/radio/integrated/mule/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,beacon_freq)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
// receive radio signals
|
||||
// can detect bot status signals
|
||||
@@ -237,7 +237,7 @@
|
||||
/obj/item/radio/integrated/signal/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/radio/integrated/signal/initialize()
|
||||
if (src.frequency < 1441 || src.frequency > 1489)
|
||||
|
||||
@@ -134,6 +134,6 @@
|
||||
if(1.0)
|
||||
del(src)
|
||||
if(2.0)
|
||||
if(prob(50)) del(src)
|
||||
if(prob(50)) qdel(src)
|
||||
if(3.0)
|
||||
if(prob(25)) del(src)
|
||||
if(prob(25)) qdel(src)
|
||||
|
||||
@@ -234,19 +234,19 @@ obj/item/device/flashlight/lamp/bananalamp
|
||||
|
||||
|
||||
/obj/item/device/flashlight/emp/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/device/flashlight/emp/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/flashlight/emp/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 10) return 0
|
||||
charge_tick = 0
|
||||
emp_cur_charges = min(emp_cur_charges+1, emp_max_charges)
|
||||
return 1
|
||||
charge_tick++
|
||||
if(charge_tick < 10) return 0
|
||||
charge_tick = 0
|
||||
emp_cur_charges = min(emp_cur_charges+1, emp_max_charges)
|
||||
return 1
|
||||
|
||||
/obj/item/device/flashlight/emp/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
if(on && user.zone_sel.selecting == "eyes") // call original attack proc only if aiming at the eyes
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
/obj/item/device/guitar/Destroy()
|
||||
del(song)
|
||||
song = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/guitar/attack_self(mob/user as mob)
|
||||
interact(user)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/paicard/attack_self(mob/user)
|
||||
if (!in_range(src, user))
|
||||
@@ -317,4 +317,4 @@
|
||||
if(pai)
|
||||
pai.ex_act(severity)
|
||||
else
|
||||
del(src)
|
||||
qdel(src)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
else if(S.part2 == src)
|
||||
S.part2 = null
|
||||
master = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
..()
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/obj/item/device/radio/intercom/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/intercom/attack_ai(mob/user as mob)
|
||||
add_hiddenprint(user)
|
||||
|
||||
@@ -37,7 +37,7 @@ REAGENT SCANNER
|
||||
/obj/item/device/t_scanner/Destroy()
|
||||
if(on)
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/t_scanner/attack_self(mob/user)
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/obj/item/device/violin/Destroy()
|
||||
del(song)
|
||||
song = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/violin/attack_self(mob/user as mob)
|
||||
interact(user)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/wrench) && sheets_refunded)
|
||||
//new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded )
|
||||
var/obj/item/stack/sheet/metal/M = getFromPool(/obj/item/stack/sheet/metal, get_turf(src))
|
||||
var/obj/item/stack/sheet/metal/M = PoolOrNew(/obj/item/stack/sheet/metal, get_turf(src))
|
||||
M.amount = sheets_refunded
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/obj/item/stack/Destroy()
|
||||
if (src && usr && usr.machine==src)
|
||||
usr << browse(null, "window=stack")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/examine()
|
||||
set src in view(1)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/obj/item/weapon/chrono_eraser/Destroy()
|
||||
dropped()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/chrono_eraser/ui_action_click()
|
||||
var/mob/living/carbon/user = src.loc
|
||||
@@ -77,7 +77,7 @@
|
||||
TED = null
|
||||
if(field)
|
||||
field_disconnect(field)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
|
||||
var/mob/living/user = src.loc
|
||||
@@ -177,7 +177,7 @@
|
||||
/obj/effect/chrono_field/Destroy()
|
||||
if(gun && gun.field_check(src))
|
||||
gun.field_disconnect(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/chrono_field/update_icon()
|
||||
var/ttk_frame = 1 - (tickstokill / initial(tickstokill))
|
||||
|
||||
@@ -37,7 +37,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 30
|
||||
|
||||
/obj/item/clothing/mask/cigarette/Destroy()
|
||||
..()
|
||||
. = ..()
|
||||
del(reagents)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
|
||||
@@ -165,9 +165,8 @@
|
||||
if(on)
|
||||
var/M = get(paddles, /mob)
|
||||
remove_paddles(M)
|
||||
..()
|
||||
. = ..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/defibrillator/proc/deductcharge(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
qdel(igniter)
|
||||
if(ptank)
|
||||
qdel(ptank)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/process()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/a_gift/ex_act()
|
||||
del(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/spresent/relaymove(mob/user as mob)
|
||||
|
||||
@@ -479,9 +479,9 @@
|
||||
beakers += B2
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/saringas
|
||||
payload_name = "saringas"
|
||||
desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution."
|
||||
/obj/item/weapon/grenade/chem_grenade/tabungas
|
||||
payload_name = "tabungas"
|
||||
desc = "Contains tabun gas; extremely deadly and fast acting; use with extreme caution."
|
||||
stage = READY
|
||||
|
||||
New()
|
||||
@@ -489,7 +489,7 @@
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("sarin", 25)
|
||||
B1.reagents.add_reagent("tabun", 25)
|
||||
B1.reagents.add_reagent("potassium", 25)
|
||||
B2.reagents.add_reagent("phosphorus", 25)
|
||||
B2.reagents.add_reagent("sugar", 25)
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
|
||||
update_mob()
|
||||
explosion(src.loc,0,0,2,2) //explosion(src.loc,-1,-1,-1, flame_range = range)
|
||||
explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball.
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
|
||||
/obj/item/weapon/grenade/syndieminibomb/prime()
|
||||
update_mob()
|
||||
explosion(src.loc,1,2,4)
|
||||
del(src)
|
||||
explosion(src.loc,1,2,4,flame_range = 2)
|
||||
qdel(src)
|
||||
@@ -21,7 +21,6 @@
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/shard/New()
|
||||
|
||||
src.icon_state = pick("large", "medium", "small")
|
||||
switch(src.icon_state)
|
||||
if("small")
|
||||
@@ -34,7 +33,10 @@
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
else
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shard/Destroy()
|
||||
return QDEL_HINT_PUTINPOOL
|
||||
|
||||
/obj/item/weapon/shard/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/Destroy()
|
||||
del(reagents)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
||||
|
||||
@@ -199,12 +199,12 @@
|
||||
new /obj/item/weapon/implanter/emp/(src)
|
||||
new /obj/item/device/flashlight/emp/(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/sarin
|
||||
name = "Sarin Gas Grenades"
|
||||
/obj/item/weapon/storage/box/syndie_kit/tabun
|
||||
name = "Tabun Gas Grenades"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/saringas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/tabungas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/tabungas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/tabungas(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/tabungas(src)
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
processing_objects.Remove(src)
|
||||
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/tank/examine()
|
||||
var/obj/icon = src
|
||||
@@ -248,13 +248,15 @@
|
||||
air_contents.react()
|
||||
pressure = air_contents.return_pressure()
|
||||
var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE
|
||||
range = min(range, MAX_EXPLOSION_RANGE) // was 8 - - - Changed to a configurable define -- TLE
|
||||
var/turf/epicenter = get_turf(loc)
|
||||
|
||||
//world << "\blue Exploding Pressure: [pressure] kPa, intensity: [range]"
|
||||
|
||||
explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5))
|
||||
del(src)
|
||||
if(istype(src.loc,/obj/item/device/transfer_valve))
|
||||
qdel(src.loc)
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
else if(pressure > TANK_RUPTURE_PRESSURE)
|
||||
//world << "\blue[x],[y] tank is rupturing: [pressure] kPa, integrity [integrity]"
|
||||
@@ -264,7 +266,7 @@
|
||||
return
|
||||
T.assume_air(air_contents)
|
||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||
del(src)
|
||||
qdel(src)
|
||||
else
|
||||
integrity--
|
||||
|
||||
|
||||
@@ -66,8 +66,7 @@
|
||||
remove_noz()
|
||||
qdel(noz)
|
||||
noz = null
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/watertank/attack_hand(mob/user as mob)
|
||||
if(src.loc == user)
|
||||
|
||||
@@ -444,7 +444,7 @@ obj/item/weapon/twohanded/
|
||||
|
||||
/obj/item/weapon/twohanded/singularityhammer/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/singularityhammer/process()
|
||||
@@ -567,7 +567,7 @@ obj/item/weapon/twohanded/
|
||||
|
||||
/obj/item/weapon/twohanded/knighthammer/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/knighthammer/process()
|
||||
|
||||
@@ -48,7 +48,8 @@
|
||||
/obj/Destroy()
|
||||
machines -= src
|
||||
processing_objects -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/proc/is_used_on(obj/O, mob/user)
|
||||
|
||||
/obj/proc/process()
|
||||
|
||||
@@ -19,14 +19,10 @@
|
||||
if(3.0)
|
||||
return
|
||||
|
||||
/obj/structure/meteorhit(obj/O as obj)
|
||||
del(src)
|
||||
|
||||
|
||||
/obj/structure/Destroy()
|
||||
if(hascall(src, "unbuckle"))
|
||||
src:unbuckle()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/mech_melee_attack(obj/mecha/M)
|
||||
if(M.damtype == "brute")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user