mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 20:47:10 +01:00
Merge remote-tracking branch 'ParadiseSS13/master' into FoxSocks
This commit is contained in:
@@ -78,6 +78,7 @@ CREATE TABLE `characters` (
|
||||
`rlimb_data` mediumtext NOT NULL,
|
||||
`nanotrasen_relation` varchar(45) NOT NULL,
|
||||
`speciesprefs` int(1) NOT NULL,
|
||||
`socks` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=18747 DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
"act" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/security{name = "Prisoner Transfer Center"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"})
|
||||
"acu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/permabrig)
|
||||
"acv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/permabrig)
|
||||
"acw" = (/obj/item/weapon/secbot_assembly,/turf/simulated/floor/plating,/area/security/permabrig)
|
||||
"acw" = (/obj/item/clothing/mask/muzzle/gag,/turf/simulated/floor/plating,/area/security/permabrig)
|
||||
"acx" = (/turf/simulated/wall/r_wall,/area/security/securearmoury)
|
||||
"acy" = (/obj/structure/grille,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/space,/area/space)
|
||||
"acz" = (/obj/structure/grille,/turf/space,/area/space)
|
||||
@@ -2487,6 +2487,7 @@
|
||||
"aVQ" = (/turf/simulated/floor{dir = 2; icon_state = "asteroid"; tag = "icon-asteroid (NORTH)"},/turf/simulated/floor{tag = "icon-siding2 (NORTH)"; icon_state = "siding2"; dir = 1},/turf/simulated/floor{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/hydroponics)
|
||||
"aVR" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Hydroponics Pasture"; req_access_txt = "35"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
|
||||
"aVS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
|
||||
"aVT" = (/obj/machinery/conveyor{dir = 10; id = "garbage"; verted = -1},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"aVU" = (/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
|
||||
"aVV" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = -31},/obj/machinery/light,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
|
||||
"aVW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
|
||||
@@ -3193,7 +3194,7 @@
|
||||
"bjv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bjw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bjx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bjy" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bjy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bjz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/blood/oil,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bjA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/port)
|
||||
"bjB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/maintenance/port)
|
||||
@@ -3619,7 +3620,7 @@
|
||||
"brF" = (/obj/structure/closet/crate/medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
|
||||
"brG" = (/obj/structure/closet/crate/internals,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
|
||||
"brH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
|
||||
"brI" = (/obj/machinery/conveyor{dir = 10; id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"brI" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"brJ" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plating,/area/quartermaster/office)
|
||||
"brK" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office)
|
||||
"brL" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office)
|
||||
@@ -3850,11 +3851,11 @@
|
||||
"bwc" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwd" = (/obj/effect/decal/warning_stripes/north,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bwe" = (/obj/effect/decal/warning_stripes/north,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bwf" = (/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bwg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bwh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwi" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwj" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwf" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwi" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bwk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bwm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
@@ -3944,7 +3945,7 @@
|
||||
"bxS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
|
||||
"bxT" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry)
|
||||
"bxU" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/hallway/secondary/entry)
|
||||
"bxV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"bxV" = (/obj/machinery/light_switch{pixel_x = 30},/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bxW" = (/obj/effect/spawner/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
|
||||
"bxX" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Disposal Exit"; layer = 3; name = "Disposal Exit Vent"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bxY" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
@@ -4040,7 +4041,7 @@
|
||||
"bzK" = (/obj/machinery/driver_button{id_tag = "trash"; pixel_x = -26; pixel_y = -6},/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access_txt = "12"},/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bzL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/medical/virology)
|
||||
"bzM" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
|
||||
"bzN" = (/obj/machinery/light_switch{pixel_x = 30},/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bzN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bzO" = (/turf/space,/area/supply/station)
|
||||
"bzP" = (/obj/structure/barricade/wooden,/obj/structure/grille,/turf/simulated/floor/plating,/area/assembly/assembly_line)
|
||||
"bzQ" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
|
||||
@@ -4136,7 +4137,7 @@
|
||||
"bBC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"bBD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"bBE" = (/obj/machinery/mass_driver{id_tag = "trash"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bBF" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bBF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"bBG" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution)
|
||||
"bBH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/distribution)
|
||||
"bBI" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology)
|
||||
@@ -6740,7 +6741,7 @@
|
||||
"czG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"czH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"czI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"czJ" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"czJ" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"czK" = (/obj/machinery/door/poddoor{id_tag = "trash"; name = "disposal bay door"; protected = 0},/turf/simulated/floor/plating/airless,/area/maintenance/disposal)
|
||||
"czL" = (/obj/structure/table/glass,/obj/item/weapon/restraints/handcuffs/cable/zipties,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"czM" = (/obj/item/device/radio/beacon,/turf/simulated/floor/engine,/area/toxins/test_chamber)
|
||||
@@ -6970,6 +6971,7 @@
|
||||
"cEc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall,/area/medical/virology)
|
||||
"cEd" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall,/area/medical/virology)
|
||||
"cEe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Patient Isolation"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology)
|
||||
"cEf" = (/obj/machinery/light/small,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"cEg" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
|
||||
"cEh" = (/obj/structure/table,/obj/item/weapon/storage/box/monkeycubes,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"cEi" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/stack/sheet/mineral/plasma{amount = 5; layer = 2.9},/obj/machinery/media/receiver/boombox,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
@@ -8142,11 +8144,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaaaabaAvaIiboRboSboTbnqbmibmibmibmibnwboUboXboYboZboWboVbjlbjlbjlbpbbmebjlaZKaZKaZKaZKbkMbpcbpdbpaaZKbpfbpebkRbwqbpibmmbnzbpjbkRbmobpkbnBbnCbnCbplbpmbkXbpnbnHbmuaHVbppbpqbprbxfbptbpubnNbpvbjPbpwbnQblgbpxbpybpxblgbnQbpzblkbpAbnVbnVbnWbpBbnYbnVbpCbllbpDbocbocbodboebofbohbohbohbohbohbohbohbpEbohbohbohbohbohbohbpFbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpGbpHbpIbpJboEboEbpKbkobkobkobkobkobkpbkobkobkobkobkobkobkobkobkobkobkobkobpLbkobpMbpNaXOaXOaXOaXOaXOaXOaXObpOaFTaHPaFTaFTaFTaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaHRaAvaAvbpQbpRbpSbpgbpSbpSbpSbpSbpUbpTbpWaZOaZObpVbpXbjlbkFbpYbpZbntbjlbqabsubqaaZKaZKaZKaZKbqcaZKbqdbrpbkRbqebqfbnzbqgbqhbkRbmobkXbqibnCbnCbnCbqjbkXbqkbnHbmuaHVbqmbpqbprbqnbqobpubnNbqpbjPbqqbqrblgbqsbqtbyibmEbqvczCbqxbqybqzbqAbqBbqCbqDbnVbqEbllbqFbqGbocbodboebofbohbqHbohbohbohbohbqIbqJbqJbqJbqJbqKbohbohbohbohbyzbohbqHbqMbohbqNbqObqPbohbqQbqRbqRbqSbqTbqUbqVbkobkobkobkobkobkobkobqWbyUbkobkobkobkobkobkobkobkobkobkobkobqZbrabrabrbbrcbrdbrebrfbrfbrfbrfbrgbrhaFTaabaaaaaaaabaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtdcdaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPbrjbrkbrlbrmbrnbpSbrsbrrbrwbrtbrAbpUbrBbrubrvbrvbrCbrxbjlbjlbjlbmdbrybmcaZOaZOaZOaZObrzbbKbbKbrpbbKbqdbrpbkRbrFbrEbrHbrGbmmbkRbrJbkXbrKbnCbnCbnCbrLaIgbrNbnHbrOblbbrPbrQbnLbnLbnLbnLbnNbrRbjPbrSbrTbjPbjPbjPbjPbjPbjPbjPblkbllbzabrVbrWbrXbrYbrZbsabllbsbbscbscbsdbsdbsdbsdbsdbsdbsdbsebsebsfbsgbshbshbsgbsfbsebsebsibsibsibsibsibsibsjbsjbskbsjbsjbsjbsjbsjbslbsmbsnbsobkobkobspbspbsqbsqbsqbsqbsqbsrbrabrabqZbrabkobrabrabrabrabssbstbstbstbstbsFbsvbsvbsvbsvbsvbsvbsvbsvbsvaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaAvaAvaAvbpQbswbpSbrobrqbrqbrqbrIbpUbbKbdabsAbsBbsSbsCbjlbkFbsDbmdbsEbmcbsHbsGbujbsIbsJbsKbsKbsLbsKbsMbsNbkRbzcbsPbsQbsRbuqbrDbsTbkXbsUbnCbnCbsVbsWbsXbrNbnHbsYblbbsZbtabtbbtcbtdbApbtfblbblbbtgbthbtibtjbtkbtjbtlbthaaabtmbllbtnbtobtpbtqbrYbnVbtrbllbtsbttbtubsdbtvbtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtFbtEbtGbtHbtIbsibtJbASbtKbtMbsibtNbtObtPbtQbtRbtSbtSbtTbslbtUbtVbtWbtXbtWbtYbtYbsqbtZbuabubbsqaImbudaImbsqbuebrabssbstaInbugaInbstbuhbuibstbuwbukbulbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPboPaAvaAvaAvbpQbswbpSbrobrqbrqbrqaVTbpUbbKbdabsAbsBbsSbsCbjlbkFbsDbmdbsEbmcbsHbsGbujbsIbsJbsKbsKbsLbsKbsMbsNbkRbzcbsPbsQbsRbuqbrDbsTbkXbsUbnCbnCbsVbsWbsXbrNbnHbsYblbbsZbtabtbbtcbtdbApbtfblbblbbtgbthbtibtjbtkbtjbtlbthaaabtmbllbtnbtobtpbtqbrYbnVbtrbllbtsbttbtubsdbtvbtwbtxbtybtzbtAbtBbtCbtDbtEbtFbtFbtEbtGbtHbtIbsibtJbASbtKbtMbsibtNbtObtPbtQbtRbtSbtSbtTbslbtUbtVbtWbtXbtWbtYbtYbsqbtZbuabubbsqaImbudaImbsqbuebrabssbstaInbugaInbstbuhbuibstbuwbukbulbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboPboPboPboPboPboPboPboPboPboPaaabunaAvbuoblUbupbpSburbpSbutbrqbuybuubpUbuvbwHbuxbwcbsCbjlbjlbjlbjlbjlbjlbuzbuAbuBbuCbuDbkRbkRbkRbkRbkRbkRbkRbuEbkRbkRbkRbuFbkRbuGbuHbuIbnCbnCbnCbuJaIgbuKbnHbuLblbbuMbtablcblcblcblbbuNblbbuObuPbuQbuRbuSbuTbuUbuVbuWbuXbuYbllbAWbnVbvbbvabrYbvcbnVbllbvdbvebvfbsdbvgbvhbvibvjbvkbvlbvmbtFbtFbtFbtFbtFbtFbtFbtFbvobvpbvqbvrbvsbvtbsibvubvvbvwbvxbxqbvzbvvbEbbslbvAbtVbxtbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbsqbvNbvObvPbstbvQbvRbvSbvTbvTbBcbstbvVbvWbvXbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfazEaBmaBmaAvaAvaAvaAvaAvaAvaAvaGTbwabBnbpSbsxaIhbwebwdbwdbwgbwibwhbjybjybxVbwjbrvbrvbrvbrvbrvbrvbwkbwlbwlbwmbwnbkRbwobDsbBVbwrbwsbwtbwubwvbkRbwwbwxbwybsTaIgbuIbnCbnCbwzbkXbkXbwAbwBbwCbwDbwEbwFbwGbzDbwIbwJbwKbwLbwMbwNbuWbwObwPbwObwPbwQbuWbuXbwRbwSbwTbwUbwVbwWbwXbwYbwZbwSbxabttbttbsdbxbbxcbxdbxebCbbsdbvmbtFbtFbtFbtFbtFbtFbtFbvnbxhbxibxjbxkbvqbxlbsibxmbxnbxobvxbEbbvzbxpbTrbslbxrbxsbEybxubxubxvbxwbxxbxybxzbxzbxzbxAbxzbxBbxCbxDbxEbxFbxGbxHbxIbxJbxJbxJbxKbstbxLbvWbxMbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbxObxPbxQbxRbxSbxSbxTbxUaFzbpSbxXbpSbzKbwfbwfbzNbpSaZOaJkaJkbyabybbyabyabyabybbyaaZOaZObkRbkRbkRbycbkRbydbydbydbydbydbydbwubyeaJlbygbyhbCvbyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbyvbywbyxbyybEabyAbyBbyCbyDbthbyEbuUbyFbuSbyGbthaaabyHbyIbyJbyKbyIbyIbyIbyIbyLbllbyMbttbyNbyObyPbyQbyRbySbyTbsdbFFbyVbyWbyXbyYbyZbFKbzbbtFbFXbsibzdbxkbzebzfbsibzgbzhbvwbvxbEbbvzbvvbEbbslbvAbtVbzibzjbzkbzlbzmaJmbzobzpbzqbzrbzsbztbzubsqbzvbzwbzxbstbzybzzbzAbvTbzBbzCbstbxLbvWbAhbumaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbzEbzFbzGaFyaFybzHbzIaFybzJbpSbBEaIhbusbwfczJbBFbpSaaaaabaabbzObzObzObzObzObzObzOaaaaaaaKcbzQbzRbzSbzTbydbydbydbydbydbydbzUbzVbzWbzXbzYbzZbAaaKdbkXbkXbAcbBWbkXbkXbAdbAebAfbAgbBubAibAibAjbAibAkbAlbAmbAnbyDbthbAobtjbtjbtjbHlbthaaabyHbyIbAqbArbAsbAtbAubAvbAwbAxbAybttbAzbsdbtvbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbxkbARbISbsibATbAUbAVbKubAXbAYbAZbtTbslbBabBbbKNbBdbBdbBebBfaKjbBhbBibBjbBkbBlbBmbLIbsqbBobzwbBpbstbBqbBrbBsbvTbvTbBtbstbvVbvWbEGbumaaaaaaaaaaaaaabbBvbBwbBxbBwbBxbBwbByaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfazEaBmaBmaAvaAvaAvaAvaAvaAvaAvaGTbwabBnbpSbsxaIhbwebwdbwdbjybwfbrIbwgbwgbwibwhbrvbrvbrvbrvbrvbrvbwkbwlbwlbwmbwnbkRbwobDsbBVbwrbwsbwtbwubwvbkRbwwbwxbwybsTaIgbuIbnCbnCbwzbkXbkXbwAbwBbwCbwDbwEbwFbwGbzDbwIbwJbwKbwLbwMbwNbuWbwObwPbwObwPbwQbuWbuXbwRbwSbwTbwUbwVbwWbwXbwYbwZbwSbxabttbttbsdbxbbxcbxdbxebCbbsdbvmbtFbtFbtFbtFbtFbtFbtFbvnbxhbxibxjbxkbvqbxlbsibxmbxnbxobvxbEbbvzbxpbTrbslbxrbxsbEybxubxubxvbxwbxxbxybxzbxzbxzbxAbxzbxBbxCbxDbxEbxFbxGbxHbxIbxJbxJbxJbxKbstbxLbvWbxMbumaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNtaNtaNtaNtaNtaaaaNtaNtaNtaNtaNtaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbxObxPbxQbxRbxSbxSbxTbxUaFzbpSbxXbpSbzKbwjbzNbxVbpSaZOaJkaJkbyabybbyabyabyabybbyaaZOaZObkRbkRbkRbycbkRbydbydbydbydbydbydbwubyeaJlbygbyhbCvbyjbykbylbymbynbyobypbyqbyrbysbytbyubyvbyvbywbyxbyybEabyAbyBbyCbyDbthbyEbuUbyFbuSbyGbthaaabyHbyIbyJbyKbyIbyIbyIbyIbyLbllbyMbttbyNbyObyPbyQbyRbySbyTbsdbFFbyVbyWbyXbyYbyZbFKbzbbtFbFXbsibzdbxkbzebzfbsibzgbzhbvwbvxbEbbvzbvvbEbbslbvAbtVbzibzjbzkbzlbzmaJmbzobzpbzqbzrbzsbztbzubsqbzvbzwbzxbstbzybzzbzAbvTbzBbzCbstbxLbvWbAhbumaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAvbzEbzFbzGaFyaFybzHbzIaFybzJbpSbBEaIhbusbBFcEfczJbpSaaaaabaabbzObzObzObzObzObzObzOaaaaaaaKcbzQbzRbzSbzTbydbydbydbydbydbydbzUbzVbzWbzXbzYbzZbAaaKdbkXbkXbAcbBWbkXbkXbAdbAebAfbAgbBubAibAibAjbAibAkbAlbAmbAnbyDbthbAobtjbtjbtjbHlbthaaabyHbyIbAqbArbAsbAtbAubAvbAwbAxbAybttbAzbsdbtvbAAbABbACbADbAEbAFbAGbAHbAIbAJbAKbALbAMbANbAObAPbAQbxkbARbISbsibATbAUbAVbKubAXbAYbAZbtTbslbBabBbbKNbBdbBdbBebBfaKjbBhbBibBjbBkbBlbBmbLIbsqbBobzwbBpbstbBqbBrbBsbvTbvTbBtbstbvVbvWbEGbumaaaaaaaaaaaaaabbBvbBwbBxbBwbBxbBwbByaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBzaAvbBAbBAaMWaAvaAvaIfazEbBDbBCbpSczKaIhaIhaIhbpSbpSbpSaaaaaaaaabzObzObzObzObzObzObzOaaaaaaaKcbBJbydbBKbBLbBLbBLbBLbBLbBMbBNbBLbBObBPbBQbBRbBSbBTbBUbkXbMbbnCbKebBXaIgbBZbCabNYbAgbAgbAmbCcbCdbCebCfbCgbAmbtgbyDbthaNIaPwbCjaRvaPAbthaaabCmbyIbCnbCobCpbCqbCrbCqbCsbCtbCubttbOJbsdaSVaSOaSObCzbCAbCBbCCbCDbCEbCFbCGbCGbCHbCIbCJbCKbsibAQbCLaSXbsibsibsjbCNbCObCPbsjbslbslbslbCQbCRbtVbCSbzjbzkbCTbBdaKjbCVbCWbCWbCXbvIbCYbCZbDabDbbvObDcbstbDdbDebvTbDfbDgbDhbstbxLbDibumbumaaaaaaaaaaaaaabbDjbDkbDlbDmbDnbDobDjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzOaSZaKcaKcbDubDvbDwbDxbDxbDxbDvbydbwubyebydbydaJlbDybDzbDAbDBbDCbDDbDEbnCbnCbDFaIgbBZbCabDHbDIbDJbDKbDLbDMbDNbDObDPbAmbDQbDRbuQbDSbDTbDUbDVbDWbuWbuXbDXbyIbDYbDZbOTbCqbTFbCqbEcbCtbEdbttbEebsdbEfbEgbEhbEibEjbEkbElbEmbEnbEnaTabEpbEnbEnbEqbErbEsbEtbEubEvbEwbExbEAbEzbEEbEBbECbEDbEFbHTbEYbEHbtVbEIbEJbEKbELbEMbvFbENbCWbCWbEObEPbCYbEQbsqbERbERbESbstbETbEUcHibEWbvTbEXbstbxLbHVbumaaaaaaaaaaaaaaaaabbEZbFabDlbDnbDlbFbbBxaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDpbDpbDpbDpbDpbDpbDpaaaaaaaaaaaaaaaaaaaaaaaaaaabDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqbDqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabzObzObzObzObzObzObzObFcbFdbFcbFebFfbFgbFfbFfbFfbFfbFhbwubyebFibkRbkRbFjbnCbyhbDBbFkaIgbFmbFnbFnbFobFpbFqbFrbFsaTbbFuaTcbFwbFxbFybFzbFAbAmbAnbyDbthbFBbFCbFDbFEbPgbthaaabCmbFGbFHbFGbFGbFGbFGbFGbFIbFGbFJbttbEebsdbPUbFLbFLbFMbFNbCBbFObFPaTebFRbFSbFTbFUaTebFVbFWbPVbFYbFZbGabGbbGbbGcbGdbGebGfbGgbGhbGjbGibGkbGlbGmbGnbGnbGobGpbGqbvFbGrbvIbvIbGsbGtbCYbGubGvbGwbGxbGybGzbGAaTnaTfbGDaTfbstbstbGFbDbbDbaToaToaToaToaTobDbbDjbDnbDlbDnbDnbGJbDjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkxbkxbkxbkxbkxbkxbkxbkxbkxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -1539,7 +1539,7 @@
|
||||
"DE" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/rig/wizard{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/helmet/space/rig/syndi,/obj/item/clothing/head/helmet/space/santahat{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DF" = (/obj/structure/rack,/obj/item/clothing/head/welding/fluff/alice_mccrea_1{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/welding/fluff/norah_briggs_1,/obj/item/clothing/head/welding/fluff/yuki_matsuda_1{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DG" = (/obj/structure/rack,/obj/item/clothing/head/soft/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft/blue,/obj/item/clothing/head/soft/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndiammo,/obj/item/weapon/storage/backpack/duffel/syndimed,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndie/ammo,/obj/item/weapon/storage/backpack/duffel/syndie/med,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DI" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin)
|
||||
"DJ" = (/obj/structure/rack,/obj/item/clothing/under/shorts/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/shorts/blue,/obj/item/clothing/under/shorts/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
"DK" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin)
|
||||
@@ -2071,3 +2071,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
|
||||
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
|
||||
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
|
||||
"}
|
||||
|
||||
|
||||
@@ -91,3 +91,9 @@
|
||||
#define APPEARANCE_EYE_COLOR 256
|
||||
#define APPEARANCE_ALL_HAIR APPEARANCE_HAIR|APPEARANCE_HAIR_COLOR|APPEARANCE_FACIAL_HAIR|APPEARANCE_FACIAL_HAIR_COLOR
|
||||
#define APPEARANCE_ALL 511
|
||||
|
||||
// Intents
|
||||
#define I_HELP "help"
|
||||
#define I_DISARM "disarm"
|
||||
#define I_GRAB "grab"
|
||||
#define I_HARM "harm"
|
||||
@@ -12,6 +12,10 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f)
|
||||
//undershirt
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f)
|
||||
//socks
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f)
|
||||
|
||||
|
||||
|
||||
var/list/paths
|
||||
//Surgery Steps - Initialize all /datum/surgery_step into a list
|
||||
|
||||
@@ -583,4 +583,3 @@ proc/dd_sortedObjectList(list/incoming)
|
||||
|
||||
/datum/alarm/dd_SortValue()
|
||||
return "[sanitize(last_name)]"
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
if(FEMALE) return pick(undershirt_f)
|
||||
else return pick(undershirt_list)
|
||||
|
||||
/proc/random_socks(gender)
|
||||
switch(gender)
|
||||
if(MALE) return pick(socks_m)
|
||||
if(FEMALE) return pick(socks_f)
|
||||
else return pick(socks_list)
|
||||
|
||||
proc/random_hair_style(var/gender, species = "Human")
|
||||
var/h_style = "Bald"
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@ var/global/list/underwear_f = list() //stores only underwear name
|
||||
var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
var/global/list/undershirt_m = list() //stores only undershirt name
|
||||
var/global/list/undershirt_f = list() //stores only undershirt name
|
||||
//Socks
|
||||
var/global/list/socks_list = list() //stores /datum/sprite_accessory/socks indexed by name
|
||||
var/global/list/socks_m = list() //stores only socks name
|
||||
var/global/list/socks_f = list() //stores only socks name
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
|
||||
|
||||
|
||||
@@ -167,10 +167,10 @@
|
||||
animals lunging, etc.
|
||||
*/
|
||||
/mob/proc/RangedAttack(var/atom/A, var/params)
|
||||
if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == "harm")
|
||||
if(ishuman(src) && (istype(src:gloves, /obj/item/clothing/gloves/color/yellow/power)) && a_intent == I_HARM)
|
||||
PowerGlove(A)
|
||||
if(!mutations.len) return
|
||||
if((LASER in mutations) && a_intent == "harm")
|
||||
if((LASER in mutations) && a_intent == I_HARM)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
return
|
||||
else
|
||||
|
||||
@@ -333,16 +333,16 @@
|
||||
if("act_intent")
|
||||
usr.a_intent_change("right")
|
||||
if("help")
|
||||
usr.a_intent = "help"
|
||||
usr.a_intent = I_HELP
|
||||
usr.hud_used.action_intent.icon_state = "intent_help"
|
||||
if("harm")
|
||||
usr.a_intent = "harm"
|
||||
usr.a_intent = I_HARM
|
||||
usr.hud_used.action_intent.icon_state = "intent_harm"
|
||||
if("grab")
|
||||
usr.a_intent = "grab"
|
||||
usr.a_intent = I_GRAB
|
||||
usr.hud_used.action_intent.icon_state = "intent_grab"
|
||||
if("disarm")
|
||||
usr.a_intent = "disarm"
|
||||
usr.a_intent = I_DISARM
|
||||
usr.hud_used.action_intent.icon_state = "intent_disarm"
|
||||
|
||||
if("pull")
|
||||
@@ -378,7 +378,7 @@
|
||||
if(isrobot(usr))
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
R.sensor_mode()
|
||||
|
||||
|
||||
if("Toggle Headlamp")
|
||||
if(isrobot(usr))
|
||||
var/mob/living/silicon/robot/R = usr
|
||||
|
||||
@@ -347,7 +347,7 @@
|
||||
src.hand_al(usr, usr.hand)
|
||||
else
|
||||
// ------- YOU ARE CLICKING ON AN OBJECT THAT'S INACCESSIBLE TO YOU AND IS NOT YOUR HUD -------
|
||||
if((LASER in usr:mutations) && usr:a_intent == "harm" && world.time >= usr.next_move)
|
||||
if((LASER in usr:mutations) && usr:a_intent == I_HARM && world.time >= usr.next_move)
|
||||
// ------- YOU HAVE THE LASER MUTATION, YOUR INTENT SET TO HURT AND IT'S BEEN MORE THAN A DECISECOND SINCE YOU LAS TATTACKED -------
|
||||
|
||||
var/turf/T = get_turf(usr)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/mob/living/carbon/human/RangedAttack(var/atom/A)
|
||||
if(!gloves && !mutations.len) return
|
||||
var/obj/item/clothing/gloves/G = gloves
|
||||
if((LASER in mutations) && a_intent == "harm")
|
||||
if((LASER in mutations) && a_intent == I_HARM)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
|
||||
else if(istype(G) && G.Touch(A,0)) // for magic gloves
|
||||
|
||||
+66
-20
@@ -165,7 +165,7 @@ var/list/uplink_items = list()
|
||||
desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!"
|
||||
reference = "RL"
|
||||
item = /obj/item/device/rad_laser
|
||||
cost = 6
|
||||
cost = 5
|
||||
job = list(
|
||||
"Chief Medical Officer",
|
||||
"Medical Doctor",
|
||||
@@ -327,6 +327,14 @@ var/list/uplink_items = list()
|
||||
gamemodes = list("nuclear emergency")
|
||||
surplus = 35
|
||||
|
||||
/datum/uplink_item/ammo/bioterror
|
||||
name = "Box of Bioterror Syringes"
|
||||
desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor and broca system , making it impossible for them to move or speak while in their system."
|
||||
reference = "BTS"
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
cost = 6
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/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 maintained with team to avoid accidental gassings."
|
||||
@@ -412,11 +420,27 @@ var/list/uplink_items = list()
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/ammo/ammobag
|
||||
name = "Ammo Duffelbag - Shotgun Ammo Grab Bag"
|
||||
desc = "A duffelbag filled with Bulldog ammo to kit out an entire team, at a discounted price."
|
||||
reference = "SAGL"
|
||||
item = /obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded
|
||||
cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/ammo/bullslug
|
||||
name = "Drum Magazine - 12g Slugs"
|
||||
desc = "An additional 8-round slug magazine for use in the Bulldog shotgun. Now 8 times less likely to shoot your pals."
|
||||
reference = "12BSG"
|
||||
item = /obj/item/ammo_box/magazine/m12g
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/ammo/bullbuck
|
||||
name = "Drum Magazine - 12g buckshot"
|
||||
desc = "An additional 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy."
|
||||
reference = "12BS"
|
||||
item = /obj/item/ammo_box/magazine/m12g
|
||||
item = /obj/item/ammo_box/magazine/m12g/buckshot
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
@@ -433,7 +457,7 @@ var/list/uplink_items = list()
|
||||
desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. I'm a fire starter, twisted fire starter!"
|
||||
reference = "12DB"
|
||||
item = /obj/item/ammo_box/magazine/m12g/dragon
|
||||
cost = 3
|
||||
cost = 2
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/ammo/car
|
||||
@@ -509,7 +533,7 @@ var/list/uplink_items = list()
|
||||
desc = "A pizza box with a bomb taped inside of it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation."
|
||||
reference = "PB"
|
||||
item = /obj/item/device/pizza_bomb
|
||||
cost = 4
|
||||
cost = 5
|
||||
surplus = 8
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/dehy_carp
|
||||
@@ -529,7 +553,7 @@ var/list/uplink_items = list()
|
||||
desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers."
|
||||
reference = "CJ"
|
||||
item = /obj/item/clothing/under/chameleon
|
||||
cost = 4
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_stamp
|
||||
name = "Chameleon Stamp"
|
||||
@@ -540,26 +564,34 @@ var/list/uplink_items = list()
|
||||
cost = 1
|
||||
surplus = 35
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigolashes
|
||||
/datum/uplink_item/stealthy_tools/syndigaloshes
|
||||
name = "No-Slip Syndicate Shoes"
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces."
|
||||
reference = "NSSS"
|
||||
item = /obj/item/clothing/shoes/syndigaloshes
|
||||
cost = 4
|
||||
cost = 2
|
||||
excludefrom = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/stealthy_tools/syndigaloshes/nuke
|
||||
name = "Tactical No-Slip Brown Shoes"
|
||||
desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow."
|
||||
reference = "NNSSS"
|
||||
cost = 4 //but they aren't
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/stealthy_tools/agent_card
|
||||
name = "Agent ID Card"
|
||||
desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another."
|
||||
reference = "AIDC"
|
||||
item = /obj/item/weapon/card/id/syndicate
|
||||
cost = 3
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/stealthy_tools/voice_changer
|
||||
name = "Voice Changer"
|
||||
desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognisable."
|
||||
reference = "VC"
|
||||
item = /obj/item/clothing/mask/gas/voice
|
||||
cost = 5
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_proj
|
||||
name = "Chameleon-Projector"
|
||||
@@ -570,10 +602,10 @@ var/list/uplink_items = list()
|
||||
|
||||
/datum/uplink_item/stealthy_tools/camera_bug
|
||||
name = "Camera Bug"
|
||||
desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions."
|
||||
desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely."
|
||||
reference = "CB"
|
||||
item = /obj/item/device/camera_bug
|
||||
cost = 2
|
||||
cost = 1
|
||||
surplus = 90
|
||||
|
||||
/datum/uplink_item/stealthy_tools/dnascrambler
|
||||
@@ -611,6 +643,20 @@ var/list/uplink_items = list()
|
||||
item = /obj/item/weapon/storage/toolbox/syndicate
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/device_tools/surgerybag
|
||||
name = "Syndicate Surgery Dufflebag"
|
||||
desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, a straitjacket, and a muzzle."
|
||||
reference = "SSDB"
|
||||
item = /obj/item/weapon/storage/backpack/duffel/syndie/surgery
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/military_belt
|
||||
name = "Military Belt"
|
||||
desc = "A robust seven-slot red belt made for carrying a broad variety of weapons, ammunition and explosives"
|
||||
reference = "SBM"
|
||||
item = /obj/item/weapon/storage/belt/military
|
||||
cost = 3
|
||||
excludefrom = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/device_tools/medkit
|
||||
name = "Syndicate Combat Medic Kit"
|
||||
@@ -621,19 +667,12 @@ var/list/uplink_items = list()
|
||||
cost = 9
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/badass/syndiecigs
|
||||
name = "Syndicate Smokes"
|
||||
desc = "Strong flavor, dense smoke, infused with omnizine."
|
||||
reference = "SYSM"
|
||||
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/space_suit
|
||||
name = "Space Suit"
|
||||
desc = "The red and black syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings."
|
||||
reference = "SS"
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/space
|
||||
cost = 5
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/hardsuit
|
||||
name = "Blood-red Hardsuit"
|
||||
@@ -680,7 +719,7 @@ var/list/uplink_items = list()
|
||||
These reverse-engineered knockoffs of Nanotrasen's 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety."
|
||||
reference = "BRMB"
|
||||
item = /obj/item/clothing/shoes/magboots/syndie
|
||||
cost = 5
|
||||
cost = 3
|
||||
gamemodes = list("nuclear emergency")
|
||||
|
||||
/datum/uplink_item/device_tools/plastic_explosives
|
||||
@@ -807,6 +846,13 @@ var/list/uplink_items = list()
|
||||
category = "(Pointless) Badassery"
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/badass/syndiecigs
|
||||
name = "Syndicate Smokes"
|
||||
desc = "Strong flavor, dense smoke, infused with omnizine."
|
||||
reference = "SYSM"
|
||||
item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/badass/bundle
|
||||
name = "Syndicate Bundle"
|
||||
desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 20 telecrystals, but you do not know which specialisation you will receive."
|
||||
|
||||
@@ -467,7 +467,7 @@
|
||||
O.adjustToxLoss(M.getToxLoss() + 20)
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
O.a_intent = "harm"
|
||||
O.a_intent = I_HARM
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
|
||||
@@ -562,13 +562,13 @@
|
||||
thoughts = "haunted by their own mortality"
|
||||
|
||||
switch(M.a_intent)
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
usr << "\blue <b>Mood</b>: You sense benevolent thoughts from [M.name]."
|
||||
if ("disarm")
|
||||
if (I_DISARM)
|
||||
usr << "\blue <b>Mood</b>: You sense cautious thoughts from [M.name]."
|
||||
if ("grab")
|
||||
if (I_GRAB)
|
||||
usr << "\blue <b>Mood</b>: You sense hostile thoughts from [M.name]."
|
||||
if ("harm")
|
||||
if (I_HARM)
|
||||
usr << "\blue <b>Mood</b>: You sense cruel thoughts from [M.name]."
|
||||
for(var/mob/living/L in view(7,M))
|
||||
if (L == M)
|
||||
|
||||
@@ -101,12 +101,12 @@
|
||||
var/turf/location = get_turf(src)
|
||||
|
||||
// Create the reagents to put into the air
|
||||
create_reagents(25)
|
||||
create_reagents(8)
|
||||
|
||||
if(overmind && overmind.blob_reagent_datum)
|
||||
reagents.add_reagent(overmind.blob_reagent_datum.id, 25)
|
||||
reagents.add_reagent(overmind.blob_reagent_datum.id, 8)
|
||||
else
|
||||
reagents.add_reagent("spores", 25)
|
||||
reagents.add_reagent("spores", 8)
|
||||
|
||||
// Attach the smoke spreader and setup/start it.
|
||||
S.attach(location)
|
||||
|
||||
@@ -276,7 +276,10 @@
|
||||
last_attack = world.time
|
||||
OB.expand(T, 0, blob_reagent_datum.color)
|
||||
for(var/mob/living/L in T)
|
||||
blob_reagent_datum.reaction_mob(L, TOUCH, 25)
|
||||
if("blob" in L.faction) //no friendly fire
|
||||
continue
|
||||
var/mob_protection = L.get_permeability_protection()
|
||||
blob_reagent_datum.reaction_mob(L, TOUCH, 25, 1, mob_protection)
|
||||
blob_reagent_datum.send_message(L)
|
||||
OB.color = blob_reagent_datum.color
|
||||
return
|
||||
|
||||
@@ -204,6 +204,8 @@
|
||||
cult -= cult_mind
|
||||
cult_mind.current << "\red <FONT size = 3><B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B></FONT>"
|
||||
cult_mind.memory = ""
|
||||
cult_mind.special_role = null
|
||||
cult_mind.current.hud_updateflag |= 1 << SPECIALROLE_HUD
|
||||
|
||||
// remove the cult viewpoint object
|
||||
var/obj/viewpoint = getCultViewpoint(cult_mind.current)
|
||||
|
||||
@@ -488,6 +488,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
R.check_icon()
|
||||
R.blood_DNA = list()
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
R.add_hiddenprint(H)
|
||||
return
|
||||
else
|
||||
user << "The book seems full of illegible scribbles. Is this a joke?"
|
||||
|
||||
@@ -327,7 +327,7 @@ datum/objective/protect//The opposite of killing a dude.
|
||||
|
||||
|
||||
datum/objective/hijack
|
||||
explanation_text = "Hijack the emergency shuttle by escaping alone."
|
||||
explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive."
|
||||
|
||||
check_completion()
|
||||
if(!owner.current || owner.current.stat)
|
||||
@@ -337,9 +337,9 @@ datum/objective/hijack
|
||||
if(issilicon(owner.current))
|
||||
return 0
|
||||
var/area/shuttle = locate(/area/shuttle/escape/centcom)
|
||||
var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai)
|
||||
for(var/mob/living/player in player_list)
|
||||
if(player.type in protected_mobs) continue
|
||||
if(istype(player, /mob/living/silicon) || istype(player, /mob/living/simple_animal) || player.mind.special_role && !player.mind.special_role == "Response Team")
|
||||
continue
|
||||
if (player.mind && (player.mind != owner))
|
||||
if(player.stat != DEAD) //they're not dead!
|
||||
if(get_turf(player) in shuttle)
|
||||
|
||||
@@ -172,9 +172,8 @@ Made by Xhuis
|
||||
thrall_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Dethralled</span>"
|
||||
thrall_mind.special_role = null
|
||||
update_shadow_icons_removed(thrall_mind)
|
||||
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_glare)
|
||||
thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk)
|
||||
//thrall_mind.remove_spell(/obj/effect/proc_holder/spell/targeted/thrall_vision) //uncomment when vision code is unfucked.
|
||||
for(var/obj/effect/proc_holder/spell/S in thrall_mind.spell_list)
|
||||
thrall_mind.remove_spell(S)
|
||||
thrall_mind.current.remove_language("Shadowling Hivemind")
|
||||
if(kill && ishuman(thrall_mind.current)) //If dethrallization surgery fails, kill the mob as well as dethralling them
|
||||
var/mob/living/carbon/human/H = thrall_mind.current
|
||||
@@ -211,7 +210,29 @@ Made by Xhuis
|
||||
else
|
||||
shadowling_dead = 1 //but shadowling was kill :(
|
||||
return 1
|
||||
|
||||
|
||||
/datum/game_mode/proc/remove_shadowling(datum/mind/ling_mind)
|
||||
if(!istype(ling_mind) || !(ling_mind in shadows)) return 0
|
||||
update_shadow_icons_removed(ling_mind)
|
||||
shadows.Remove(ling_mind)
|
||||
ling_mind.current.attack_log += "\[[time_stamp()]\] <span class='danger'>Deshadowlinged</span>"
|
||||
ling_mind.special_role = null
|
||||
for(var/obj/effect/proc_holder/spell/S in ling_mind.spell_list)
|
||||
ling_mind.remove_spell(S)
|
||||
var/mob/living/M = ling_mind.current
|
||||
if(issilicon(M))
|
||||
M.audible_message("<span class='notice'>[M] lets out a short blip.</span>", \
|
||||
"<span class='userdanger'>You have been turned into a robot! You are no longer a shadowling! Though you try, you cannot remember anything about your time as one...</span>")
|
||||
else
|
||||
M.visible_message("<span class='big'>[M] screams and contorts!</span>", \
|
||||
"<span class='userdanger'>THE LIGHT-- YOUR MIND-- <i>BURNS--</i></span>")
|
||||
spawn(30)
|
||||
if(!M || qdeleted(M))
|
||||
return
|
||||
M.visible_message("<span class='warning'>[M] suddenly bloats and explodes!</span>", \
|
||||
"<span class='warning'><b>AAAAAAAAA<font size=3>AAAAAAAAAAAAA</font><font size=4>AAAAAAAAAAAA----</font></span>")
|
||||
playsound(M, 'sound/magic/Disintegrate.ogg', 100, 1)
|
||||
M.gib()
|
||||
|
||||
/datum/game_mode/shadowling/proc/check_shadow_victory()
|
||||
var/success = 0 //Did they win?
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
else
|
||||
user << "<span class='warning'>Maintenance panel is locked.</span>"
|
||||
else
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM)
|
||||
if(health >= maxhealth)
|
||||
user << "<span class='warning'>[src] does not need a repair.</span>"
|
||||
return
|
||||
|
||||
@@ -186,7 +186,7 @@ Auto Patrol[]"},
|
||||
user << "<span class='notice'>Access denied.</span>"
|
||||
else
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry.
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry.
|
||||
return
|
||||
if (!istype(W, /obj/item/weapon/screwdriver) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
|
||||
if(W.force)//If force is non-zero and damage type isn't stamina.
|
||||
|
||||
@@ -192,7 +192,7 @@ Auto Patrol: []"},
|
||||
user << "<span class='danger'> Access denied.</span>"
|
||||
else
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry.
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM) // Any intent but harm will heal, so we shouldn't get angry.
|
||||
return
|
||||
if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
|
||||
threatlevel = user.assess_threat(src)
|
||||
|
||||
@@ -8,7 +8,15 @@
|
||||
var/datum/ai_laws/laws = null
|
||||
var/obj/item/weapon/circuitboard/circuit = null
|
||||
var/obj/item/device/mmi/brain = null
|
||||
|
||||
|
||||
/obj/structure/AIcore/Destroy()
|
||||
qdel(laws)
|
||||
qdel(circuit)
|
||||
qdel(brain)
|
||||
laws = null
|
||||
circuit = null
|
||||
brain = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/AIcore/attackby(obj/item/P as obj, mob/user as mob, params)
|
||||
switch(state)
|
||||
@@ -176,7 +184,8 @@
|
||||
state = 20//So it doesn't interact based on the above. Not really necessary.
|
||||
|
||||
/obj/structure/AIcore/deactivated/Destroy()
|
||||
empty_playable_ai_cores -= src
|
||||
if(src in empty_playable_ai_cores)
|
||||
empty_playable_ai_cores -= src
|
||||
return ..()
|
||||
|
||||
/obj/structure/AIcore/deactivated/attackby(var/obj/item/W, var/mob/user, params)
|
||||
|
||||
@@ -501,7 +501,7 @@
|
||||
H << "The boxing machine refuses to acknowledge you unless you face it head on!"
|
||||
return
|
||||
var/damage = 0
|
||||
if(H.a_intent != "harm")
|
||||
if(H.a_intent != I_HARM)
|
||||
damage += rand(0,5)
|
||||
else
|
||||
damage += rand(0,10)
|
||||
|
||||
@@ -729,7 +729,7 @@
|
||||
/obj/machinery/vending/assist
|
||||
products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
|
||||
/obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
|
||||
contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2)
|
||||
contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
|
||||
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
|
||||
|
||||
/obj/machinery/vending/boozeomat/New()
|
||||
@@ -887,6 +887,7 @@
|
||||
products = list(/obj/item/clothing/under/rank/scientist = 6,/obj/item/clothing/suit/bio_suit = 6,/obj/item/clothing/head/bio_hood = 6,
|
||||
/obj/item/device/transfer_valve = 6,/obj/item/device/assembly/timer = 6,/obj/item/device/assembly/signaler = 6,
|
||||
/obj/item/device/assembly/prox_sensor = 6,/obj/item/device/assembly/igniter = 6)
|
||||
contraband = list(/obj/item/device/assembly/health = 3)
|
||||
|
||||
/obj/machinery/vending/wallmed1
|
||||
name = "NanoMed"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
else if(istype(target,/mob/living))
|
||||
var/mob/living/M = target
|
||||
if(M.stat>1) return
|
||||
if(chassis.occupant.a_intent == "harm")
|
||||
if(chassis.occupant.a_intent == I_HARM)
|
||||
M.take_overall_damage(dam_force)
|
||||
M.adjustOxyLoss(round(dam_force/2))
|
||||
M.updatehealth()
|
||||
@@ -1058,10 +1058,10 @@
|
||||
else if(istype(target,/mob/living))
|
||||
var/mob/living/M = target
|
||||
if(M.stat>1) return
|
||||
if(chassis.occupant.a_intent == "harm")
|
||||
if(chassis.occupant.a_intent == I_HARM)
|
||||
chassis.occupant_message("\red You obliterate [target] with [src.name], leaving blood and guts everywhere.")
|
||||
chassis.visible_message("\red [chassis] destroys [target] in an unholy fury.")
|
||||
if(chassis.occupant.a_intent == "disarm")
|
||||
if(chassis.occupant.a_intent == I_DISARM)
|
||||
chassis.occupant_message("\red You tear [target]'s limbs off with [src.name].")
|
||||
chassis.visible_message("\red [chassis] rips [target]'s arms off.")
|
||||
else
|
||||
|
||||
@@ -844,7 +844,7 @@
|
||||
user << "There's already a powercell installed."
|
||||
return
|
||||
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != I_HARM)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0,user))
|
||||
if (hasInternalDamage(MECHA_INT_TANK_BREACH))
|
||||
|
||||
@@ -1167,95 +1167,99 @@
|
||||
/datum/construction/reversible/mecha/phazon
|
||||
result = "/obj/mecha/combat/phazon"
|
||||
steps = list(
|
||||
//1
|
||||
//1
|
||||
list("key"=/obj/item/device/assembly/signaler/anomaly,
|
||||
"backkey"=null, //Cannot remove the anomaly core once it's in
|
||||
"desc"="Anomaly core socket is open and awaiting connection."),
|
||||
//2
|
||||
list("key"=/obj/item/weapon/weldingtool,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="External armor is wrenched."),
|
||||
//2
|
||||
//3
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="External armor is installed."),
|
||||
//3
|
||||
//4
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_armor,
|
||||
"backkey"=/obj/item/weapon/weldingtool,
|
||||
"desc"="Phase armor is welded."),
|
||||
//4
|
||||
//5
|
||||
list("key"=/obj/item/weapon/weldingtool,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="Phase armor is wrenched."),
|
||||
//5
|
||||
//6
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Phase armor is installed."),
|
||||
//6
|
||||
//7
|
||||
list("key"=/obj/item/stack/sheet/plasteel,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The bluespace crystal is engaged."),
|
||||
//7
|
||||
//8
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/wirecutters,
|
||||
"desc"="The bluespace crystal is connected."),
|
||||
//8
|
||||
//9
|
||||
list("key"=/obj/item/stack/cable_coil,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="The bluespace crystal is installed."),
|
||||
//9
|
||||
//10
|
||||
list("key"=/obj/item/bluespace_crystal,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Super capacitor is secured."),
|
||||
//10
|
||||
//11
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Super capacitor is installed."),
|
||||
//11
|
||||
//12
|
||||
list("key"=/obj/item/weapon/stock_parts/capacitor/super,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Phasic scanner module is secured."),
|
||||
//12
|
||||
//13
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Phasic scanner module is installed."),
|
||||
//13
|
||||
//14
|
||||
list("key"=/obj/item/weapon/stock_parts/scanning_module/phasic,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Scanning module is secured."),
|
||||
//14
|
||||
//15
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Scanning module is installed."),
|
||||
//15
|
||||
//16
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/targeting,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Peripherals control module is secured."),
|
||||
//16
|
||||
//17
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Peripherals control module is installed"),
|
||||
//17
|
||||
//18
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/peripherals,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Central control module is secured."),
|
||||
//18
|
||||
//19
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Central control module is installed."),
|
||||
//19
|
||||
//20
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/main,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The wiring is adjusted."),
|
||||
//20
|
||||
//21
|
||||
list("key"=/obj/item/weapon/wirecutters,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The wiring is added."),
|
||||
//21
|
||||
//22
|
||||
list("key"=/obj/item/stack/cable_coil,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The hydraulic systems are active."),
|
||||
//22
|
||||
//23
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="The hydraulic systems are connected."),
|
||||
//23
|
||||
//24
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"desc"="The hydraulic systems are disconnected.")
|
||||
)
|
||||
@@ -1270,24 +1274,24 @@
|
||||
|
||||
//TODO: better messages.
|
||||
switch(index)
|
||||
if(23)
|
||||
if(24)
|
||||
user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
|
||||
holder.icon_state = "phazon1"
|
||||
if(22)
|
||||
if(23)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
|
||||
holder.icon_state = "phazon2"
|
||||
else
|
||||
user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
|
||||
holder.icon_state = "phazon0"
|
||||
if(21)
|
||||
if(22)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
|
||||
holder.icon_state = "phazon3"
|
||||
else
|
||||
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
|
||||
holder.icon_state = "phazon1"
|
||||
if(20)
|
||||
if(21)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
|
||||
holder.icon_state = "phazon4"
|
||||
@@ -1296,7 +1300,7 @@
|
||||
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
|
||||
coil.amount = 4
|
||||
holder.icon_state = "phazon2"
|
||||
if(19)
|
||||
if(20)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1304,7 +1308,7 @@
|
||||
else
|
||||
user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
|
||||
holder.icon_state = "phazon3"
|
||||
if(18)
|
||||
if(19)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
|
||||
holder.icon_state = "phazon6"
|
||||
@@ -1312,7 +1316,7 @@
|
||||
user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/main(get_turf(holder))
|
||||
holder.icon_state = "phazon4"
|
||||
if(17)
|
||||
if(18)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1320,7 +1324,7 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
|
||||
holder.icon_state = "phazon5"
|
||||
if(16)
|
||||
if(17)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
|
||||
holder.icon_state = "phazon8"
|
||||
@@ -1328,7 +1332,7 @@
|
||||
user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/peripherals(get_turf(holder))
|
||||
holder.icon_state = "phazon6"
|
||||
if(15)
|
||||
if(16)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1336,7 +1340,7 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
|
||||
holder.icon_state = "phazon7"
|
||||
if(14)
|
||||
if(15)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
|
||||
holder.icon_state = "phazon10"
|
||||
@@ -1344,7 +1348,7 @@
|
||||
user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/targeting(get_turf(holder))
|
||||
holder.icon_state = "phazon8"
|
||||
if(13)
|
||||
if(14)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1352,7 +1356,7 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
|
||||
holder.icon_state = "phazon9"
|
||||
if(12)
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
|
||||
holder.icon_state = "phazon12"
|
||||
@@ -1360,7 +1364,7 @@
|
||||
user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
|
||||
new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder))
|
||||
holder.icon_state = "phazon10"
|
||||
if(11)
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1368,7 +1372,7 @@
|
||||
else
|
||||
user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
|
||||
holder.icon_state = "phazon11"
|
||||
if(10)
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
|
||||
holder.icon_state = "phazon14"
|
||||
@@ -1376,7 +1380,7 @@
|
||||
user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
|
||||
new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder))
|
||||
holder.icon_state = "phazon12"
|
||||
if(9)
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
|
||||
qdel(used_atom)
|
||||
@@ -1384,7 +1388,7 @@
|
||||
else
|
||||
user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].")
|
||||
holder.icon_state = "phazon13"
|
||||
if(8)
|
||||
if(9)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
|
||||
holder.icon_state = "phazon16"
|
||||
@@ -1392,21 +1396,21 @@
|
||||
user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
|
||||
new /obj/item/bluespace_crystal(get_turf(holder))
|
||||
holder.icon_state = "phazon14"
|
||||
if(7)
|
||||
if(8)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
|
||||
holder.icon_state = "phazon17"
|
||||
else
|
||||
user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
|
||||
holder.icon_state = "phazon15"
|
||||
if(6)
|
||||
if(7)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
|
||||
holder.icon_state = "phazon18"
|
||||
else
|
||||
user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
|
||||
holder.icon_state = "phazon16"
|
||||
if(5)
|
||||
if(6)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.")
|
||||
holder.icon_state = "phazon19"
|
||||
@@ -1415,14 +1419,14 @@
|
||||
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
|
||||
MS.amount = 5
|
||||
holder.icon_state = "phazon17"
|
||||
if(4)
|
||||
if(5)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
|
||||
holder.icon_state = "phazon20"
|
||||
else
|
||||
user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.")
|
||||
holder.icon_state = "phazon18"
|
||||
if(3)
|
||||
if(4)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
|
||||
qdel(used_atom)
|
||||
@@ -1430,7 +1434,7 @@
|
||||
else
|
||||
user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
|
||||
holder.icon_state = "phazon19"
|
||||
if(2)
|
||||
if(3)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
|
||||
holder.icon_state = "phazon22"
|
||||
@@ -1438,12 +1442,16 @@
|
||||
user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
|
||||
new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder))
|
||||
holder.icon_state = "phazon20"
|
||||
if(1)
|
||||
if(2)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
|
||||
else
|
||||
user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
|
||||
holder.icon_state = "phazon21"
|
||||
if(1)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.")
|
||||
qdel(used_atom)
|
||||
return 1
|
||||
|
||||
/datum/construction/reversible/mecha/phazon/spawn_result()
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
#define VANILLA_BUG 0
|
||||
#define UNIVERSAL_BUG 1
|
||||
#define NETWORK_BUG 2
|
||||
#define SABOTAGE_BUG 3
|
||||
#define ADVANCED_BUG 4
|
||||
#define ADMIN_BUG 5
|
||||
|
||||
#define BUGMODE_LIST 0
|
||||
#define BUGMODE_MONITOR 1
|
||||
#define BUGMODE_TRACK 2
|
||||
@@ -23,13 +16,9 @@
|
||||
throw_range = 20
|
||||
|
||||
var/obj/machinery/camera/current = null
|
||||
var/obj/item/expansion = null
|
||||
var/bugtype = VANILLA_BUG
|
||||
|
||||
var/last_net_update = 0
|
||||
var/last_bugtype = VANILLA_BUG
|
||||
var/list/bugged_cameras = list()
|
||||
var/skip_bugcheck = 0
|
||||
|
||||
var/track_mode = BUGMODE_LIST
|
||||
var/last_tracked = 0
|
||||
@@ -46,11 +35,6 @@
|
||||
processing_objects += src
|
||||
|
||||
/obj/item/device/camera_bug/Destroy()
|
||||
if(expansion)
|
||||
qdel(expansion)
|
||||
expansion = null
|
||||
return ..()
|
||||
/* Easier to just call del() than this nonsense
|
||||
get_cameras()
|
||||
for(var/cam_tag in bugged_cameras)
|
||||
var/obj/machinery/camera/camera = bugged_cameras[cam_tag]
|
||||
@@ -59,8 +43,7 @@
|
||||
bugged_cameras = list()
|
||||
if(tracking)
|
||||
tracking = null
|
||||
..()
|
||||
*/
|
||||
return ..()
|
||||
|
||||
/obj/item/device/camera_bug/interact(var/mob/user = usr)
|
||||
var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src)
|
||||
@@ -78,7 +61,7 @@
|
||||
return null
|
||||
|
||||
var/turf/T = get_turf(user.loc)
|
||||
if(T.z != current.z || (!skip_bugcheck && current.bug != src) || !current.can_use())
|
||||
if(T.z != current.z || !current.can_use())
|
||||
user << "<span class='danger'>[src] has lost the signal.</span>"
|
||||
current = null
|
||||
user.reset_view(null)
|
||||
@@ -88,26 +71,18 @@
|
||||
return 1
|
||||
|
||||
/obj/item/device/camera_bug/proc/get_cameras()
|
||||
if(bugtype != last_bugtype || ( (bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG)) && world.time > (last_net_update + 100)))
|
||||
if(world.time > (last_net_update + 100))
|
||||
bugged_cameras = list()
|
||||
last_bugtype = bugtype
|
||||
for(var/obj/machinery/camera/camera in cameranet.cameras)
|
||||
if(camera.stat || !camera.can_use())
|
||||
continue
|
||||
switch(bugtype)
|
||||
if(VANILLA_BUG,SABOTAGE_BUG,ADVANCED_BUG)
|
||||
if(camera.bug == src)
|
||||
bugged_cameras[camera.c_tag] = camera
|
||||
if(UNIVERSAL_BUG)
|
||||
if(camera.bug)
|
||||
bugged_cameras[camera.c_tag] = camera
|
||||
if(NETWORK_BUG,ADMIN_BUG)
|
||||
if(length(list("SS13","MINE")&camera.network))
|
||||
bugged_cameras[camera.c_tag] = camera
|
||||
if(length(list("SS13","MINE")&camera.network))
|
||||
bugged_cameras[camera.c_tag] = camera
|
||||
sortList(bugged_cameras)
|
||||
return bugged_cameras
|
||||
|
||||
|
||||
|
||||
/obj/item/device/camera_bug/proc/menu(var/list/cameras)
|
||||
if(!cameras || !cameras.len)
|
||||
return "No bugged cameras found."
|
||||
@@ -119,16 +94,10 @@
|
||||
for(var/entry in cameras)
|
||||
var/obj/machinery/camera/C = cameras[entry]
|
||||
var/functions = ""
|
||||
switch(bugtype)
|
||||
if(SABOTAGE_BUG)
|
||||
functions = " - <a href='?src=\ref[src];emp=\ref[C]'>\[Disable\]</a>"
|
||||
if(ADVANCED_BUG)
|
||||
functions = " - <a href='?src=\ref[src];monitor=\ref[C]'>\[Monitor\]</a>"
|
||||
if(ADMIN_BUG)
|
||||
if(C.bug == src)
|
||||
functions = " - <a href='?src=\ref[src];monitor=\ref[C]'>\[Monitor\]</a> <a href='?src=\ref[src];emp=\ref[C]'>\[Disable\]</a>"
|
||||
else
|
||||
functions = " - <a href='?src=\ref[src];monitor=\ref[C]'>\[Monitor\]</a>"
|
||||
if(C.bug == src)
|
||||
functions = " - <a href='?src=\ref[src];monitor=\ref[C]'>\[Monitor\]</a> <a href='?src=\ref[src];emp=\ref[C]'>\[Disable\]</a>"
|
||||
else
|
||||
functions = " - <a href='?src=\ref[src];monitor=\ref[C]'>\[Monitor\]</a>"
|
||||
html += "<tr><td><a href='?src=\ref[src];view=\ref[C]'>[entry]</a></td><td>[functions]</td></tr>"
|
||||
|
||||
if(BUGMODE_MONITOR)
|
||||
@@ -157,6 +126,9 @@
|
||||
var/s = (time_diff - 4*m) * 15
|
||||
if(!s) s = "00"
|
||||
html += "Last seen near [outstring] ([m]:[s] minute\s ago)<br>"
|
||||
if( C && (C.bug == src)) //Checks to see if the camera has a bug
|
||||
html += "<a href='?src=\ref[src];emp=\ref[C]'>\[Disable\]</a>"
|
||||
|
||||
else
|
||||
html += "Not yet seen."
|
||||
else
|
||||
@@ -309,62 +281,6 @@
|
||||
break
|
||||
src.updateSelfDialog()
|
||||
|
||||
/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob, params)
|
||||
if(istype(W,/obj/item/weapon/screwdriver) && expansion)
|
||||
expansion.loc = get_turf(loc)
|
||||
user << "You unscrew [expansion]."
|
||||
user.put_in_inactive_hand(expansion)
|
||||
expansion = null
|
||||
bugtype = VANILLA_BUG
|
||||
skip_bugcheck = 0
|
||||
track_mode = BUGMODE_LIST
|
||||
tracking = null
|
||||
return
|
||||
|
||||
if(expansion || !W)
|
||||
return ..(W,user)
|
||||
|
||||
// I am not sure that this list is or should be final
|
||||
// really I do not know what to do here.
|
||||
var/static/list/expandables = list(
|
||||
/obj/item/weapon/research = ADMIN_BUG, // could have been anything spawn-only
|
||||
|
||||
// these are all so hackish I am sorry
|
||||
|
||||
/obj/item/device/analyzer = UNIVERSAL_BUG,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = UNIVERSAL_BUG,
|
||||
|
||||
/obj/item/device/assembly/igniter = SABOTAGE_BUG,
|
||||
/obj/item/device/assembly/infra = SABOTAGE_BUG, // ir blaster to disable camera
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = SABOTAGE_BUG,
|
||||
|
||||
/obj/item/device/radio = NETWORK_BUG,
|
||||
/obj/item/device/assembly/signaler = NETWORK_BUG,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = NETWORK_BUG,
|
||||
|
||||
/obj/item/device/detective_scanner = ADVANCED_BUG,
|
||||
/obj/item/device/paicard = ADVANCED_BUG,
|
||||
/obj/item/weapon/stock_parts/scanning_module = ADVANCED_BUG
|
||||
)
|
||||
|
||||
for(var/entry in expandables)
|
||||
if(istype(W,entry))
|
||||
bugtype = expandables[entry]
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
expansion = W
|
||||
user << "You add [W] to [src]."
|
||||
get_cameras() // the tracking code will want to know the new camera list
|
||||
if(bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG))
|
||||
skip_bugcheck = 1
|
||||
return
|
||||
|
||||
#undef VANILLA_BUG
|
||||
#undef UNIVERSAL_BUG
|
||||
#undef NETWORK_BUG
|
||||
#undef SABOTAGE_BUG
|
||||
#undef ADVANCED_BUG
|
||||
#undef ADMIN_BUG
|
||||
|
||||
#undef BUGMODE_LIST
|
||||
#undef BUGMODE_MONITOR
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
w_class = 2.0
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = "programming=2"
|
||||
var/request_cooldown = 60 // one minute
|
||||
var/last_request
|
||||
var/obj/item/device/radio/radio
|
||||
var/looking_for_personality = 0
|
||||
var/mob/living/silicon/pai/pai
|
||||
@@ -241,6 +243,12 @@
|
||||
pai.master_dna = dna.unique_enzymes
|
||||
pai << "<font color = red><h3>You have been bound to a new master.</h3></font>"
|
||||
if(href_list["request"])
|
||||
var/delta = (world.time / 10) - last_request
|
||||
if(request_cooldown > delta)
|
||||
var/cooldown_time = round(request_cooldown - ((world.time / 10) - last_request), 1)
|
||||
usr << "\red The request system is currently offline. Please wait another [cooldown_time] seconds."
|
||||
return
|
||||
last_request = world.time / 10
|
||||
src.looking_for_personality = 1
|
||||
paiController.findPAI(src, usr)
|
||||
if(href_list["wipe"])
|
||||
|
||||
@@ -80,21 +80,20 @@ effective or pretty fucking useless.
|
||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject. A strange microlaser is hooked on to the scanning end."
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
discrete = 1 // Makes the item not give an attack log message for viewers.
|
||||
throwforce = 3
|
||||
w_class = 1.0
|
||||
throw_speed = 5
|
||||
throw_range = 10
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
materials = list(MAT_METAL=400)
|
||||
origin_tech = "magnets=3;biotech=5;syndicate=3"
|
||||
var/intensity = 5 // how much damage the radiation does
|
||||
var/wavelength = 10 // time it takes for the radiation to kick in, in seconds
|
||||
var/used = 0 // is it cooling down?
|
||||
|
||||
/obj/item/device/rad_laser/attack(mob/living/M as mob, mob/living/user as mob)
|
||||
/obj/item/device/rad_laser/attack(mob/living/M, mob/living/user)
|
||||
if(!used)
|
||||
..()
|
||||
user.visible_message("<span class='notice'> [user] has analyzed [M]'s vitals.","<span class='notice'> You have analyzed [M]'s vitals.")
|
||||
add_logs(M, user, "irradiated", src)
|
||||
user.visible_message("<span class='notice'>[user] has analyzed [M]'s vitals.</span>")
|
||||
var/cooldown = round(max(100,(((intensity*8)-(wavelength/2))+(intensity*2))*10))
|
||||
used = 1
|
||||
icon_state = "health1"
|
||||
@@ -105,18 +104,18 @@ effective or pretty fucking useless.
|
||||
M.apply_effect(round(intensity/1.5), PARALYZE)
|
||||
M.apply_effect(intensity*10, IRRADIATE)
|
||||
else
|
||||
user << "<span class='danger'>The radioactive microlaser is still recharging.</span>"
|
||||
user << "<span class='warning'>The radioactive microlaser is still recharging.</span>"
|
||||
|
||||
/obj/item/device/rad_laser/proc/handle_cooldown(var/cooldown)
|
||||
/obj/item/device/rad_laser/proc/handle_cooldown(cooldown)
|
||||
spawn(cooldown)
|
||||
used = 0
|
||||
icon_state = "health2"
|
||||
|
||||
/obj/item/device/rad_laser/attack_self(mob/user as mob)
|
||||
/obj/item/device/rad_laser/attack_self(mob/user)
|
||||
..()
|
||||
interact(user)
|
||||
|
||||
/obj/item/device/rad_laser/interact(mob/user as mob)
|
||||
/obj/item/device/rad_laser/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
|
||||
var/cooldown = round(max(10,((intensity*8)-(wavelength/2))+(intensity*2)))
|
||||
@@ -131,7 +130,7 @@ effective or pretty fucking useless.
|
||||
popup.open()
|
||||
|
||||
/obj/item/device/rad_laser/Topic(href, href_list)
|
||||
if(!in_range(src, usr) || issilicon(usr) || !usr.canmove || usr.restrained())
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
usr.set_machine(src)
|
||||
@@ -146,7 +145,6 @@ effective or pretty fucking useless.
|
||||
amount += wavelength
|
||||
wavelength = max(1,(min(120,amount)))
|
||||
|
||||
//updateUsrDialog()
|
||||
interact(usr)
|
||||
attack_self(usr)
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
@@ -164,7 +164,7 @@ var/list/tape_roll_applications = list()
|
||||
breaktape(W, user)
|
||||
|
||||
/obj/item/tape/attack_hand(mob/user as mob)
|
||||
if (user.a_intent == "help" && src.allowed(user))
|
||||
if (user.a_intent == I_HELP && src.allowed(user))
|
||||
user.show_viewers("\blue [user] lifts [src], allowing passage.")
|
||||
src.density = 0
|
||||
spawn(200)
|
||||
@@ -176,7 +176,7 @@ var/list/tape_roll_applications = list()
|
||||
breaktape(/obj/item/weapon/wirecutters,user)
|
||||
|
||||
/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(user.a_intent == "help" && ((!can_puncture(W) && src.allowed(user))))
|
||||
if(user.a_intent == I_HELP && ((!can_puncture(W) && src.allowed(user))))
|
||||
user << "You can't break the [src] with that!"
|
||||
return
|
||||
user.show_viewers("\blue [user] breaks the [src]!")
|
||||
|
||||
@@ -320,7 +320,7 @@
|
||||
user << "<span class='notice'>The instructions on [defib] don't mention how to revive that...</span>"
|
||||
return
|
||||
else
|
||||
if(user.a_intent == "harm" && !defib.safety)
|
||||
if(user.a_intent == I_HARM && !defib.safety)
|
||||
busy = 1
|
||||
H.visible_message("<span class='danger'>[user] has touched [H.name] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has touched [H.name] with [src]!</span>")
|
||||
@@ -435,7 +435,7 @@
|
||||
user << "<span class='notice'>This unit is only designed to work on humanoid lifeforms.</span>"
|
||||
return
|
||||
else
|
||||
if(user.a_intent == "harm" && !safety)
|
||||
if(user.a_intent == I_HARM && !safety)
|
||||
busy = 1
|
||||
H.visible_message("<span class='danger'>[user] has touched [H.name] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has touched [H.name] with [src]!</span>")
|
||||
|
||||
@@ -63,7 +63,7 @@ var/last_chew = 0
|
||||
var/mob/living/carbon/human/H = A
|
||||
if (!H.handcuffed)
|
||||
return
|
||||
if (H.a_intent != "harm")
|
||||
if (H.a_intent != I_HARM)
|
||||
return
|
||||
if (H.zone_sel.selecting != "mouth")
|
||||
return
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name = "implant"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "implant"
|
||||
origin_tech = "materials=2;biotech=3;programming=2"
|
||||
var/implanted = null
|
||||
var/mob/living/imp_in = null
|
||||
var/obj/item/organ/external/part = null
|
||||
@@ -52,6 +53,7 @@
|
||||
/obj/item/weapon/implant/tracking
|
||||
name = "tracking"
|
||||
desc = "Track with this."
|
||||
origin_tech = "materials=2;magnets=2;programming=2;biotech=2"
|
||||
var/id = 1.0
|
||||
|
||||
|
||||
@@ -92,6 +94,7 @@ Implant Specifics:<BR>"}
|
||||
/obj/item/weapon/implant/dexplosive
|
||||
name = "explosive"
|
||||
desc = "And boom goes the weasel."
|
||||
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
|
||||
icon_state = "implant_evil"
|
||||
|
||||
get_data()
|
||||
@@ -127,6 +130,7 @@ Implant Specifics:<BR>"}
|
||||
/obj/item/weapon/implant/explosive
|
||||
name = "explosive implant"
|
||||
desc = "A military grade micro bio-explosive. Highly dangerous."
|
||||
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
|
||||
var/elevel = "Localized Limb"
|
||||
var/phrase = "supercalifragilisticexpialidocious"
|
||||
icon_state = "implant_evil"
|
||||
@@ -252,6 +256,7 @@ Implant Specifics:<BR>"}
|
||||
/obj/item/weapon/implant/chem
|
||||
name = "chem"
|
||||
desc = "Injects things."
|
||||
origin_tech = "materials=3;biotech=4"
|
||||
allow_reagents = 1
|
||||
|
||||
get_data()
|
||||
@@ -316,6 +321,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/loyalty
|
||||
name = "loyalty"
|
||||
desc = "Makes you loyal or such."
|
||||
origin_tech = "materials=2;biotech=4;programming=4"
|
||||
|
||||
get_data()
|
||||
var/dat = {"
|
||||
@@ -406,6 +412,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/adrenalin
|
||||
name = "adrenalin"
|
||||
desc = "Removes all stuns and knockdowns."
|
||||
origin_tech = "materials=2;biotech=4;combat=3;syndicate=4"
|
||||
var/uses = 3
|
||||
|
||||
get_data()
|
||||
@@ -436,7 +443,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
|
||||
source.reagents.add_reagent("synaptizine", 10)
|
||||
source.reagents.add_reagent("omnizine", 10)
|
||||
source.reagents.add_reagent("methamphetamine", 10)
|
||||
source.reagents.add_reagent("stimulative_agent", 10)
|
||||
|
||||
return
|
||||
|
||||
@@ -523,6 +530,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
name = "compressed matter implant"
|
||||
desc = "Based on compressed matter technology, can store a single item."
|
||||
icon_state = "implant_evil"
|
||||
origin_tech = "materials=2;magnets=4;bluespace=4;syndicate=4"
|
||||
var/activation_emote = "sigh"
|
||||
var/obj/item/scanned = null
|
||||
|
||||
@@ -574,7 +582,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
/obj/item/weapon/implant/emp
|
||||
name = "emp implant"
|
||||
desc = "Triggers an EMP."
|
||||
|
||||
origin_tech = "materials=2;biotech=3;magnets=4;syndicate=4"
|
||||
var/activation_emote = "chuckle"
|
||||
var/uses = 2
|
||||
|
||||
|
||||
@@ -8,7 +8,14 @@
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 1.0
|
||||
origin_tech = "materials=1;biotech=2"
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
|
||||
New()
|
||||
..()
|
||||
update()
|
||||
|
||||
proc
|
||||
update()
|
||||
|
||||
@@ -16,8 +23,10 @@
|
||||
update()
|
||||
if (src.imp)
|
||||
src.icon_state = text("implantcase-[]", src.imp._color)
|
||||
src.origin_tech = src.imp.origin_tech
|
||||
else
|
||||
src.icon_state = "implantcase-0"
|
||||
src.origin_tech = initial(src.origin_tech)
|
||||
return
|
||||
|
||||
|
||||
@@ -148,4 +157,15 @@
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/freedom( src )
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/adrenaline
|
||||
name = "Glass Case- 'Adrenaline'"
|
||||
desc = "A glass case containing an adrenaline implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/adrenalin( src )
|
||||
..()
|
||||
return
|
||||
@@ -6,16 +6,23 @@
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 2.0
|
||||
origin_tech = "materials=1;biotech=3;programming=2"
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
|
||||
/obj/item/weapon/implanter/New()
|
||||
..()
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/proc/update()
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/update()
|
||||
if (src.imp)
|
||||
src.icon_state = "implanter1"
|
||||
src.origin_tech = src.imp.origin_tech
|
||||
else
|
||||
src.icon_state = "implanter0"
|
||||
src.origin_tech = initial(src.origin_tech)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
desc = "Use this to escape from those evil Red Shirts."
|
||||
_color = "r"
|
||||
var/activation_emote = "chuckle"
|
||||
var/uses = 1.0
|
||||
origin_tech = "materials=2;magnets=3;biotech=3;syndicate=4"
|
||||
var/uses = 4
|
||||
|
||||
|
||||
New()
|
||||
src.activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
|
||||
src.uses = rand(1, 5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/weapon/implant/uplink
|
||||
name = "uplink"
|
||||
desc = "Summon things."
|
||||
origin_tech = "materials=2;magnets=4;programming=4;biotech=4;syndicate=8;bluespace=5"
|
||||
var/activation_emote = "chuckle"
|
||||
|
||||
/obj/item/weapon/implant/uplink/New()
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if(user.a_intent != "help")
|
||||
if(user.a_intent != I_HELP)
|
||||
if(user.zone_sel.selecting == "head" || user.zone_sel.selecting == "eyes")
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
|
||||
@@ -231,19 +231,63 @@
|
||||
max_combined_w_class = 27
|
||||
slowdown = 1
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndimed
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie
|
||||
name = "suspicious looking dufflebag"
|
||||
desc = "A large dufflebag for holding extra tactical supplies."
|
||||
icon_state = "duffel-syndi"
|
||||
item_state = "duffel-syndimed"
|
||||
origin_tech = "syndicate=1"
|
||||
silent = 1
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/med
|
||||
name = "suspicious duffelbag"
|
||||
desc = "A black and red duffelbag with a red and white cross sewn onto it."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndiammo
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo
|
||||
name = "suspicious duffelbag"
|
||||
desc = "A black and red duffelbag with a patch depicting shotgun shells sewn onto it."
|
||||
icon_state = "duffel-syndiammo"
|
||||
item_state = "duffel-syndiammo"
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded
|
||||
desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo."
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded/New()
|
||||
..()
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/stun(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery
|
||||
name = "surgery dufflebag"
|
||||
desc = "A suspicious looking dufflebag for holding surgery tools."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffle-syndimed"
|
||||
storage_slots = 12
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery/New()
|
||||
..()
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/hemostat(src)
|
||||
new /obj/item/weapon/retractor(src)
|
||||
new /obj/item/weapon/circular_saw(src)
|
||||
new /obj/item/weapon/surgicaldrill(src)
|
||||
new /obj/item/weapon/cautery(src)
|
||||
new /obj/item/weapon/bonegel(src)
|
||||
new /obj/item/weapon/bonesetter(src)
|
||||
new /obj/item/weapon/FixOVein(src)
|
||||
new /obj/item/clothing/suit/straight_jacket(src)
|
||||
new /obj/item/clothing/mask/muzzle(src)
|
||||
// new /obj/item/device/mmi/syndie(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/captain
|
||||
name = "captain's duffelbag"
|
||||
|
||||
@@ -98,6 +98,7 @@
|
||||
"/obj/item/clothing/mask/surgical",
|
||||
"/obj/item/clothing/gloves/color/latex",
|
||||
"/obj/item/weapon/reagent_containers/hypospray/autoinjector",
|
||||
"/obj/item/device/rad_laser",
|
||||
"/obj/item/device/sensor_device"
|
||||
)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
name = "storage"
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
w_class = 3.0
|
||||
var/silent = 0 // No message on putting items in
|
||||
var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else)
|
||||
var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set)
|
||||
var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
||||
@@ -292,6 +293,8 @@
|
||||
if(!usr.unEquip(W))
|
||||
return 0
|
||||
usr.update_icons() //update our overlays
|
||||
if(silent)
|
||||
prevent_warning = 1
|
||||
W.loc = src
|
||||
W.on_enter_storage(src)
|
||||
if(usr)
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
icon_state = "syndicate"
|
||||
item_state = "toolbox_syndi"
|
||||
origin_tech = "combat=1;syndicate=1"
|
||||
silent = 1
|
||||
force = 15.0
|
||||
throwforce = 18.0
|
||||
|
||||
@@ -88,4 +89,4 @@
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/device/multitool(src)
|
||||
new /obj/item/clothing/gloves/color/red/insulated(src)
|
||||
new /obj/item/clothing/gloves/combat(src)
|
||||
@@ -207,4 +207,18 @@
|
||||
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)
|
||||
new /obj/item/weapon/grenade/chem_grenade/tabungas(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
name = "bioterror syringe box"
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
return
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
var/mob/living/L = M
|
||||
|
||||
if(user.a_intent != "harm")
|
||||
if(user.a_intent != I_HARM)
|
||||
if(status)
|
||||
user.do_attack_animation(L)
|
||||
baton_stun(L, user)
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
return
|
||||
if(!isliving(target))
|
||||
return
|
||||
if (user.a_intent == "harm")
|
||||
if (user.a_intent == I_HARM)
|
||||
if(!..()) return
|
||||
if(!isrobot(target)) return
|
||||
else
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M) || user.a_intent == "help")
|
||||
if(!istype(M) || user.a_intent == I_HELP)
|
||||
return ..()
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
@@ -475,7 +475,7 @@
|
||||
|
||||
if (!S)
|
||||
return
|
||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help" || S.open == 2)
|
||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2)
|
||||
return ..()
|
||||
|
||||
if(S.brute_dam)
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
new /obj/item/device/radio/headset/headset_cargo(src)
|
||||
new /obj/item/clothing/gloves/fingerless(src)
|
||||
// new /obj/item/weapon/cartridge/quartermaster(src)
|
||||
new /obj/item/weapon/mining_voucher(src)
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
|
||||
@@ -43,8 +43,7 @@
|
||||
new /obj/item/ammo_box/magazine/m10mm(src)
|
||||
new /obj/item/weapon/storage/box/teargas(src)
|
||||
new /obj/item/weapon/storage/box/flashbangs(src)
|
||||
new /obj/item/weapon/storage/backpack/duffel/syndimed(src)
|
||||
new /obj/item/weapon/storage/backpack/duffel/syndiammo(src)
|
||||
new /obj/item/weapon/storage/backpack/duffel/syndie/med(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
circuit=null
|
||||
new /obj/machinery/constructable_frame/machine_frame(T)
|
||||
qdel(src)
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == I_HARM)
|
||||
src.health -= W.force
|
||||
src.healthcheck()
|
||||
..()
|
||||
@@ -219,7 +219,7 @@
|
||||
src.add_fingerprint(user)
|
||||
update_icon()
|
||||
else
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == I_HARM)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
user.visible_message("\red [user.name] kicks \the [src]!", \
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
var/choice = input(user, "Underwear or Undershirt?", "Changing") as null|anything in list("Underwear","Undershirt")
|
||||
var/choice = input(user, "Underwear, Undershirt, or Socks?", "Changing") as null|anything in list("Underwear","Undershirt","Socks")
|
||||
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
@@ -27,5 +27,11 @@
|
||||
if(new_undershirt)
|
||||
H.undershirt = new_undershirt
|
||||
|
||||
if("Socks")
|
||||
var/new_socks = input(user, "Select your socks", "Changing") as null|anything in socks_list
|
||||
if(new_socks)
|
||||
H.socks= new_socks
|
||||
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
@@ -133,7 +133,7 @@
|
||||
..()
|
||||
if(!buckled_mob) return
|
||||
|
||||
if(propelled || (pulling && (pulling.a_intent == "harm")))
|
||||
if(propelled || (pulling && (pulling.a_intent == I_HARM)))
|
||||
var/mob/living/occupant = buckled_mob
|
||||
unbuckle()
|
||||
|
||||
|
||||
@@ -299,8 +299,8 @@
|
||||
user.do_attack_animation(src)
|
||||
visible_message("<span class='danger'>[user] slices [src] apart!</span>")
|
||||
destroy()
|
||||
|
||||
/obj/structure/table/mech_melee_attack(obj/mecha/M)
|
||||
|
||||
/obj/structure/table/mech_melee_attack(obj/mecha/M)
|
||||
visible_message("<span class='danger'>[M] smashes [src] apart!</span>")
|
||||
destroy()
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
if (istype(G.affecting, /mob/living))
|
||||
var/mob/living/M = G.affecting
|
||||
if (G.state < 2)
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == I_HARM)
|
||||
if (prob(15)) M.Weaken(5)
|
||||
M.apply_damage(8,def_zone = "head")
|
||||
visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!")
|
||||
@@ -914,8 +914,8 @@
|
||||
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
|
||||
destroy()
|
||||
|
||||
/obj/structure/rack/mech_melee_attack(obj/mecha/M)
|
||||
|
||||
/obj/structure/rack/mech_melee_attack(obj/mecha/M)
|
||||
visible_message("<span class='danger'>[M] smashes [src] apart!</span>")
|
||||
destroy()
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
|
||||
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
|
||||
destroy()
|
||||
else if (usr.a_intent == "harm")
|
||||
else if (usr.a_intent == I_HARM)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1)
|
||||
usr.visible_message("\red [usr.name] bangs against the [src.name]!", \
|
||||
|
||||
+78
-42
@@ -149,6 +149,11 @@ var/list/mechtoys = list(
|
||||
var/points_per_slip = 2
|
||||
var/points_per_crate = 5
|
||||
var/points_per_plasma = 5
|
||||
var/points_per_intel = 250 //points gained per intel returned
|
||||
var/points_per_design = 25 //points gained per max reliability research design returned (only for initilally unreliable designs)
|
||||
|
||||
var/list/techLevels = list()
|
||||
var/list/researchDesigns = list()
|
||||
//control
|
||||
var/ordernum
|
||||
var/list/shoppinglist = list()
|
||||
@@ -201,6 +206,7 @@ var/list/mechtoys = list(
|
||||
if(!area_shuttle) return
|
||||
|
||||
var/plasma_count = 0
|
||||
var/intel_count = 0
|
||||
|
||||
for(var/atom/movable/MA in area_shuttle)
|
||||
if(MA.anchored) continue
|
||||
@@ -222,10 +228,37 @@ var/list/mechtoys = list(
|
||||
find_slip = 0
|
||||
|
||||
// Sell plasma
|
||||
else if(istype(A, /obj/item/stack/sheet/mineral/plasma))
|
||||
if(istype(A, /obj/item/stack/sheet/mineral/plasma))
|
||||
var/obj/item/stack/sheet/mineral/plasma/P = A
|
||||
plasma_count += P.amount
|
||||
|
||||
// Sell syndicate intel
|
||||
if(istype(A, /obj/item/documents/syndicate))
|
||||
++intel_count
|
||||
|
||||
// Sell tech levels
|
||||
if(istype(A, /obj/item/weapon/disk/tech_disk))
|
||||
var/obj/item/weapon/disk/tech_disk/disk = A
|
||||
if(!disk.stored) continue
|
||||
var/datum/tech/tech = disk.stored
|
||||
|
||||
var/cost = tech.getCost(techLevels[tech.id])
|
||||
if(cost)
|
||||
techLevels[tech.id] = tech.level
|
||||
points += cost
|
||||
|
||||
// Sell max reliablity designs
|
||||
if(istype(A, /obj/item/weapon/disk/design_disk))
|
||||
var/obj/item/weapon/disk/design_disk/disk = A
|
||||
if(!disk.blueprint) continue
|
||||
var/datum/design/design = disk.blueprint
|
||||
if(design.id in researchDesigns) continue
|
||||
|
||||
if(initial(design.reliability) < 100 && design.reliability >= 100)
|
||||
// Maxed out reliability designs only.
|
||||
points += points_per_design
|
||||
researchDesigns += design.id
|
||||
|
||||
// If you send something in a crate, centcom's keeping it! - fixes secure crates being sent to centom to open them
|
||||
qdel(A)
|
||||
qdel(MA)
|
||||
@@ -233,6 +266,9 @@ var/list/mechtoys = list(
|
||||
if(plasma_count)
|
||||
points += plasma_count * points_per_plasma
|
||||
|
||||
if(intel_count)
|
||||
points += intel_count * points_per_intel
|
||||
|
||||
//Buyin
|
||||
/datum/controller/supply/proc/buy()
|
||||
if(!shoppinglist.len) return
|
||||
@@ -326,12 +362,12 @@ var/list/mechtoys = list(
|
||||
// data to send to ui
|
||||
var/data[0]
|
||||
data["last_viewed_group"] = last_viewed_group
|
||||
|
||||
|
||||
var/category_list[0]
|
||||
for(var/category in all_supply_groups)
|
||||
category_list.Add(list(list("name" = get_supply_group_name(category), "category" = category)))
|
||||
data["categories"] = category_list
|
||||
|
||||
|
||||
var/cat = text2num(last_viewed_group)
|
||||
var/packs_list[0]
|
||||
for(var/set_name in supply_controller.supply_packs)
|
||||
@@ -339,7 +375,7 @@ var/list/mechtoys = list(
|
||||
if(!pack.contraband && !pack.hidden && pack.group == cat)
|
||||
// 0/1 after the pack name (set_name) is a boolean for ordering multiple crates
|
||||
packs_list.Add(list(list("name" = pack.name, "amount" = pack.amount, "cost" = pack.cost, "command1" = list("doorder" = "[set_name]0"), "command2" = list("doorder" = "[set_name]1"), "command3" = list("contents" = set_name))))
|
||||
|
||||
|
||||
data["supply_packs"] = packs_list
|
||||
if(content_pack)
|
||||
var/pack_name = sanitize(content_pack.name)
|
||||
@@ -358,19 +394,19 @@ var/list/mechtoys = list(
|
||||
owned = 1
|
||||
requests_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "owned" = owned, "command1" = list("rreq" = SO.ordernum))))
|
||||
data["requests"] = requests_list
|
||||
|
||||
|
||||
var/orders_list[0]
|
||||
for(var/set_name in supply_controller.shoppinglist)
|
||||
var/datum/supply_order/SO = set_name
|
||||
if(SO)
|
||||
orders_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby)))
|
||||
data["orders"] = orders_list
|
||||
|
||||
|
||||
data["points"] = supply_controller.points
|
||||
data["send"] = list("send" = 1)
|
||||
|
||||
|
||||
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||
data["moving"] = shuttle.has_arrive_time()
|
||||
data["moving"] = shuttle.has_arrive_time()
|
||||
data["at_station"] = shuttle.at_station()
|
||||
data["timeleft"] = shuttle.eta_minutes()
|
||||
if(shuttle.docking_controller)
|
||||
@@ -391,7 +427,7 @@ var/list/mechtoys = list(
|
||||
visible_message("<b>[src]</b>'s monitor flashes, \"[world.time - reqtime] seconds remaining until another requisition form may be printed.\"")
|
||||
nanomanager.update_uis(src)
|
||||
return
|
||||
|
||||
|
||||
var/index = copytext(href_list["doorder"], 1, lentext(href_list["doorder"])) //text2num(copytext(href_list["doorder"], 1))
|
||||
var/multi = text2num(copytext(href_list["doorder"], -1))
|
||||
if(!isnum(multi))
|
||||
@@ -402,15 +438,15 @@ var/list/mechtoys = list(
|
||||
var/crates = 1
|
||||
if(multi)
|
||||
var/num_input = input(usr, "Amount:", "How many crates?", "") as num
|
||||
crates = Clamp(round(text2num(num_input)), 1, 20)
|
||||
crates = Clamp(round(text2num(num_input)), 1, 20)
|
||||
if(..())
|
||||
return
|
||||
|
||||
var/timeout = world.time + 600
|
||||
var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN))
|
||||
if(world.time > timeout || !reason || ..())
|
||||
if(world.time > timeout || !reason || ..())
|
||||
return
|
||||
|
||||
|
||||
var/idname = "*None Provided*"
|
||||
var/idrank = "*None Provided*"
|
||||
if(ishuman(usr))
|
||||
@@ -461,7 +497,7 @@ var/list/mechtoys = list(
|
||||
else if (href_list["last_viewed_group"])
|
||||
content_pack = null
|
||||
last_viewed_group = text2num(href_list["last_viewed_group"])
|
||||
|
||||
|
||||
else if (href_list["contents"])
|
||||
var/topic = href_list["contents"]
|
||||
if(topic == 1)
|
||||
@@ -475,8 +511,8 @@ var/list/mechtoys = list(
|
||||
return
|
||||
|
||||
/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob)
|
||||
if(!allowed(user) && !isobserver(user))
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
@@ -491,17 +527,17 @@ var/list/mechtoys = list(
|
||||
user << "<span class='notice'>Special supplies unlocked.</span>"
|
||||
hacked = 1
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/supplycomp/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
|
||||
// data to send to ui
|
||||
var/data[0]
|
||||
data["last_viewed_group"] = last_viewed_group
|
||||
|
||||
|
||||
var/category_list[0]
|
||||
for(var/category in all_supply_groups)
|
||||
category_list.Add(list(list("name" = get_supply_group_name(category), "category" = category)))
|
||||
data["categories"] = category_list
|
||||
|
||||
data["categories"] = category_list
|
||||
|
||||
var/cat = text2num(last_viewed_group)
|
||||
var/packs_list[0]
|
||||
for(var/set_name in supply_controller.supply_packs)
|
||||
@@ -510,14 +546,14 @@ var/list/mechtoys = list(
|
||||
if(pack.group == cat)
|
||||
// 0/1 after the pack name (set_name) is a boolean for ordering multiple crates
|
||||
packs_list.Add(list(list("name" = pack.name, "amount" = pack.amount, "cost" = pack.cost, "command1" = list("doorder" = "[set_name]0"), "command2" = list("doorder" = "[set_name]1"), "command3" = list("contents" = set_name))))
|
||||
|
||||
|
||||
data["supply_packs"] = packs_list
|
||||
if(content_pack)
|
||||
var/pack_name = sanitize(content_pack.name)
|
||||
data["contents_name"] = pack_name
|
||||
data["contents"] = content_pack.manifest
|
||||
data["contents_access"] = get_access_desc(content_pack.access)
|
||||
|
||||
|
||||
var/requests_list[0]
|
||||
for(var/set_name in supply_controller.requestlist)
|
||||
var/datum/supply_order/SO = set_name
|
||||
@@ -526,19 +562,19 @@ var/list/mechtoys = list(
|
||||
SO.comment = "No comment."
|
||||
requests_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "comment" = SO.comment, "command1" = list("confirmorder" = SO.ordernum), "command2" = list("rreq" = SO.ordernum))))
|
||||
data["requests"] = requests_list
|
||||
|
||||
|
||||
var/orders_list[0]
|
||||
for(var/set_name in supply_controller.shoppinglist)
|
||||
var/datum/supply_order/SO = set_name
|
||||
if(SO)
|
||||
orders_list.Add(list(list("ordernum" = SO.ordernum, "supply_type" = SO.object.name, "orderedby" = SO.orderedby, "comment" = SO.comment)))
|
||||
data["orders"] = orders_list
|
||||
|
||||
|
||||
data["points"] = supply_controller.points
|
||||
data["send"] = list("send" = 1)
|
||||
|
||||
|
||||
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||
data["moving"] = shuttle.has_arrive_time()
|
||||
data["moving"] = shuttle.has_arrive_time()
|
||||
data["at_station"] = shuttle.at_station()
|
||||
data["timeleft"] = shuttle.eta_minutes()
|
||||
data["can_launch"] = shuttle.can_launch()
|
||||
@@ -552,32 +588,32 @@ var/list/mechtoys = list(
|
||||
ui = new(user, src, ui_key, "supply_console.tmpl", name, COMP_SCREEN_WIDTH, COMP_SCREEN_HEIGHT)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
|
||||
/obj/machinery/computer/supplycomp/proc/is_authorized(user)
|
||||
if(allowed(user))
|
||||
return 1
|
||||
|
||||
|
||||
if(isobserver(user) && check_rights(R_ADMIN, 0))
|
||||
return 1
|
||||
|
||||
|
||||
return 0
|
||||
|
||||
/obj/machinery/computer/supplycomp/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
|
||||
if(!is_authorized(usr))
|
||||
return 1
|
||||
|
||||
|
||||
if(!supply_controller)
|
||||
log_to_dd("## ERROR: The supply_controller controller datum is missing somehow.")
|
||||
return 1
|
||||
|
||||
|
||||
var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle
|
||||
if(!shuttle)
|
||||
log_to_dd("## ERROR: The supply or shuttle datum is missing somehow.")
|
||||
return 1
|
||||
|
||||
|
||||
if(href_list["send"])
|
||||
if(shuttle.at_station())
|
||||
if (shuttle.forbidden_atoms_check())
|
||||
@@ -610,18 +646,18 @@ var/list/mechtoys = list(
|
||||
var/crates = 1
|
||||
if(multi)
|
||||
var/num_input = input(usr, "Amount:", "How many crates?", "") as num
|
||||
crates = Clamp(round(text2num(num_input)), 1, 20)
|
||||
crates = Clamp(round(text2num(num_input)), 1, 20)
|
||||
if(..())
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
var/timeout = world.time + 600
|
||||
var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN))
|
||||
if(world.time > timeout || !reason || ..())
|
||||
if(world.time > timeout || !reason || ..())
|
||||
return
|
||||
|
||||
|
||||
var/idname = "*None Provided*"
|
||||
var/idrank = "*None Provided*"
|
||||
|
||||
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
idname = H.get_authentification_name()
|
||||
@@ -657,7 +693,7 @@ var/list/mechtoys = list(
|
||||
O.orderedby = idname
|
||||
O.comment = reason
|
||||
supply_controller.requestlist += O
|
||||
|
||||
|
||||
else if(href_list["confirmorder"])
|
||||
//Find the correct supply_order datum
|
||||
var/ordernum = text2num(href_list["confirmorder"])
|
||||
@@ -675,7 +711,7 @@ var/list/mechtoys = list(
|
||||
else
|
||||
usr << "<span class='warning'>There are insufficient supply points for this request.</span>"
|
||||
break
|
||||
|
||||
|
||||
else if (href_list["rreq"])
|
||||
var/ordernum = text2num(href_list["rreq"])
|
||||
for(var/i=1, i<=supply_controller.requestlist.len, i++)
|
||||
@@ -686,8 +722,8 @@ var/list/mechtoys = list(
|
||||
|
||||
else if (href_list["last_viewed_group"])
|
||||
content_pack = null
|
||||
last_viewed_group = text2num(href_list["last_viewed_group"])
|
||||
|
||||
last_viewed_group = text2num(href_list["last_viewed_group"])
|
||||
|
||||
else if (href_list["contents"])
|
||||
var/topic = href_list["contents"]
|
||||
if(topic == 1)
|
||||
|
||||
@@ -153,6 +153,7 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/check_bomb_impacts,
|
||||
/client/proc/test_movable_UI,
|
||||
/client/proc/test_snap_UI,
|
||||
/client/proc/cinematic,
|
||||
/proc/machine_upgrade
|
||||
)
|
||||
var/list/admin_verbs_possess = list(
|
||||
|
||||
@@ -1833,6 +1833,8 @@
|
||||
stampvalue = "cent"
|
||||
sendername = command_name()
|
||||
if("Syndicate")
|
||||
stamptype = "icon"
|
||||
stampvalue = "syndicate"
|
||||
sendername = "UNKNOWN"
|
||||
if("Administrator")
|
||||
stamptype = input(src.owner, "Pick a stamp type.", "Stamp Type") as null|anything in list("icon","text","none")
|
||||
@@ -1904,8 +1906,9 @@
|
||||
else
|
||||
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
|
||||
if((F.z in config.station_levels))
|
||||
if(!F.receivefax(P))
|
||||
src.owner << "\red Message transmission to [F.department] failed."
|
||||
spawn(0)
|
||||
if(!F.receivefax(P))
|
||||
src.owner << "\red Message transmission to [F.department] failed."
|
||||
|
||||
var/datum/fax/admin/A = new /datum/fax/admin()
|
||||
A.name = P.name
|
||||
@@ -1923,7 +1926,7 @@
|
||||
src.owner << "\blue Message transmitted successfully."
|
||||
if(notify == "Yes")
|
||||
var/mob/living/carbon/human/H = sender
|
||||
if(istype(H) && H.stat == 1 && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
sender << "Your headset pings, notifying you that a reply to your fax has arrived."
|
||||
if(sender)
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
/client/proc/cinematic(var/cinematic as anything in list("explosion",null))
|
||||
set name = "cinematic"
|
||||
set category = "Event"
|
||||
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||
set hidden = 1
|
||||
set name = "Play cinematic"
|
||||
set category = "Debug"
|
||||
set desc = "Shows a cinematic, will work like a normal nuke" // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||
if(alert("Are you sure you want to run [cinematic]?","Confirmation","Yes","No")=="No") return
|
||||
if(!ticker) return
|
||||
switch(cinematic)
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
/obj/item/device/assembly/health
|
||||
name = "health sensor"
|
||||
desc = "Used for scanning and monitoring health."
|
||||
icon_state = "health"
|
||||
materials = list(MAT_METAL=800, MAT_GLASS=200)
|
||||
origin_tech = "magnets=1;biotech=1"
|
||||
secured = 0
|
||||
|
||||
var/scanning = 0
|
||||
var/health_scan
|
||||
var/alarm_health = 0
|
||||
|
||||
|
||||
|
||||
/obj/item/device/assembly/health/activate()
|
||||
if(!..()) return 0//Cooldown check
|
||||
toggle_scan()
|
||||
return 0
|
||||
|
||||
/obj/item/device/assembly/health/toggle_secure()
|
||||
secured = !secured
|
||||
if(secured && scanning)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
scanning = 0
|
||||
processing_objects.Remove(src)
|
||||
update_icon()
|
||||
return secured
|
||||
|
||||
/obj/item/device/assembly/health/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/device/multitool))
|
||||
if(alarm_health == 0)
|
||||
alarm_health = -90
|
||||
user.show_message("You toggle [src] to \"detect death\" mode.")
|
||||
else
|
||||
alarm_health = 0
|
||||
user.show_message("You toggle [src] to \"detect critical state\" mode.")
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/assembly/health/process()
|
||||
if(!scanning || !secured)
|
||||
return
|
||||
|
||||
var/atom/A = src
|
||||
if(connected && connected.holder)
|
||||
A = connected.holder
|
||||
|
||||
for(A, A && !ismob(A), A=A.loc);
|
||||
// like get_turf(), but for mobs.
|
||||
var/mob/living/M = A
|
||||
|
||||
if(M)
|
||||
health_scan = M.health
|
||||
if(health_scan <= alarm_health)
|
||||
pulse()
|
||||
audible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
||||
toggle_scan()
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/health/proc/toggle_scan()
|
||||
if(!secured) return 0
|
||||
scanning = !scanning
|
||||
if(scanning)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
|
||||
/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy
|
||||
if(!secured)
|
||||
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
|
||||
return 0
|
||||
var/dat = text("<TT><B>Health Sensor</B> <A href='?src=\ref[src];scanning=1'>[scanning?"On":"Off"]</A>")
|
||||
if(scanning && health_scan)
|
||||
dat += "<BR>Health: [health_scan]"
|
||||
user << browse(dat, "window=hscan")
|
||||
onclose(user, "hscan")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/assembly/health/Topic(href, href_list)
|
||||
..()
|
||||
if(!ismob(usr))
|
||||
return
|
||||
|
||||
var/mob/user = usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
usr << browse(null, "window=hscan")
|
||||
onclose(usr, "hscan")
|
||||
return
|
||||
|
||||
if(href_list["scanning"])
|
||||
toggle_scan()
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=hscan")
|
||||
return
|
||||
|
||||
attack_self(user)
|
||||
return
|
||||
@@ -183,8 +183,8 @@
|
||||
if(!prefs.unlock_content)
|
||||
src << "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. <a href='http://www.byond.com/membership'>Click here to find out more</a>."
|
||||
return 0
|
||||
return 1
|
||||
|
||||
return 1
|
||||
|
||||
/client/proc/handle_spam_prevention(var/message, var/mute_type)
|
||||
if(config.automute_on && !holder && src.last_message == message)
|
||||
src.last_message_count++
|
||||
@@ -330,8 +330,8 @@
|
||||
related_accounts_cid = list()
|
||||
while(query_cid.NextRow())
|
||||
if(ckey != query_cid.item[1])
|
||||
related_accounts_cid.Add("[query_cid.item[1]]")
|
||||
|
||||
related_accounts_cid.Add("[query_cid.item[1]]")
|
||||
|
||||
//Log all the alts
|
||||
if(related_accounts_cid.len)
|
||||
log_access("Alts: [key_name(src)]:[list2text(related_accounts_cid, " - ")]")
|
||||
@@ -339,8 +339,8 @@
|
||||
var/watchreason = check_watchlist(sql_ckey)
|
||||
if(watchreason)
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(src)] is on the watchlist and has just connected - Reason: [watchreason]</font>")
|
||||
send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]")
|
||||
|
||||
send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]")
|
||||
|
||||
//Just the standard check to see if it's actually a number
|
||||
if(sql_id)
|
||||
if(istext(sql_id))
|
||||
@@ -389,6 +389,15 @@
|
||||
'html/search.js', // Used in various non-NanoUI HTML windows for search functionality
|
||||
'html/panels.css' // Used for styling certain panels, such as in the new player panel
|
||||
)
|
||||
|
||||
|
||||
// Send NanoUI resources to this client
|
||||
spawn nanomanager.send_resources(src)
|
||||
|
||||
//For debugging purposes
|
||||
/client/proc/list_all_languages()
|
||||
for(var/L in all_languages)
|
||||
var/datum/language/lang = all_languages[L]
|
||||
var/message = "[lang.name] : [lang.type]"
|
||||
if(lang.flags & RESTRICTED)
|
||||
message += " (RESTRICTED)"
|
||||
world << "[message]"
|
||||
|
||||
@@ -108,6 +108,7 @@ datum/preferences
|
||||
var/b_type = "A+" //blood type (not-chooseable)
|
||||
var/underwear = "Nude" //underwear type
|
||||
var/undershirt = "Nude" //undershirt type
|
||||
var/socks = "Nude" //socks type
|
||||
var/backbag = 2 //backpack type
|
||||
var/h_style = "Bald" //Hair type
|
||||
var/r_hair = 0 //Hair color
|
||||
@@ -185,17 +186,17 @@ datum/preferences
|
||||
|
||||
// jukebox volume
|
||||
var/volume = 100
|
||||
|
||||
|
||||
// BYOND membership
|
||||
var/unlock_content = 0
|
||||
|
||||
|
||||
/datum/preferences/New(client/C)
|
||||
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
if(istype(C))
|
||||
if(!IsGuestKey(C.key))
|
||||
unlock_content = C.IsByondMember()
|
||||
if(unlock_content)
|
||||
max_save_slots = MAX_SAVE_SLOTS_MEMBER
|
||||
max_save_slots = MAX_SAVE_SLOTS_MEMBER
|
||||
var/loaded_preferences_successfully = load_preferences(C)
|
||||
if(loaded_preferences_successfully)
|
||||
if(load_character(C))
|
||||
@@ -331,6 +332,7 @@ datum/preferences
|
||||
dat += "<br><br>"
|
||||
dat += "<b>Underwear:</b><BR><a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
|
||||
dat += "<b>Undershirt:</b><BR><a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
|
||||
dat += "<b>Socks:</b><BR><a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
|
||||
dat += "Backpack Type:<br><a href ='?_src_=prefs;preference=bag;task=input'><b>[backbaglist[backbag]]</b></a><br>"
|
||||
dat += "Nanotrasen Relation:<br><a href ='?_src_=prefs;preference=nt_relation;task=input'><b>[nanotrasen_relation]</b></a><br>"
|
||||
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
|
||||
@@ -385,7 +387,7 @@ datum/preferences
|
||||
dat += "<b>Ghost radio:</b> <a href='?_src_=prefs;preference=ghost_radio'><b>[(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]</b></a><br>"
|
||||
if(config.allow_Metadata)
|
||||
dat += "<b>OOC notes:</b> <a href='?_src_=prefs;preference=metadata;task=input'><b>Edit</b></a><br>"
|
||||
|
||||
|
||||
if(user.client)
|
||||
if(user.client.holder)
|
||||
dat += "<b>Adminhelp sound:</b> "
|
||||
@@ -393,7 +395,7 @@ datum/preferences
|
||||
|
||||
if(check_rights(R_ADMIN,0))
|
||||
dat += "<b>OOC:</b> <span style='border: 1px solid #161616; background-color: [ooccolor ? ooccolor : normal_ooc_colour];'> </span> <a href='?_src_=prefs;preference=ooccolor;task=input'><b>Change</b></a><br>"
|
||||
|
||||
|
||||
if(unlock_content)
|
||||
dat += "<b>BYOND Membership Publicity:</b> <a href='?_src_=prefs;preference=publicity'><b>[(toggles & MEMBER_PUBLIC) ? "Public" : "Hidden"]</b></a><br>"
|
||||
|
||||
@@ -1010,6 +1012,9 @@ datum/preferences
|
||||
if("undershirt")
|
||||
undershirt = random_undershirt(gender)
|
||||
ShowChoices(user)
|
||||
if("socks")
|
||||
socks = random_socks(gender)
|
||||
ShowChoices(user)
|
||||
if("eyes")
|
||||
r_eyes = rand(0,255)
|
||||
g_eyes = rand(0,255)
|
||||
@@ -1210,6 +1215,22 @@ datum/preferences
|
||||
undershirt = new_undershirt
|
||||
ShowChoices(user)
|
||||
|
||||
if("socks")
|
||||
var/list/valid_sockstyles = list()
|
||||
for(var/sockstyle in socks_list)
|
||||
var/datum/sprite_accessory/S = socks_list[sockstyle]
|
||||
if(gender == MALE && S.gender == FEMALE)
|
||||
continue
|
||||
if(gender == FEMALE && S.gender == MALE)
|
||||
continue
|
||||
if(!(species in S.species_allowed))
|
||||
continue
|
||||
valid_sockstyles[sockstyle] = socks_list[sockstyle]
|
||||
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
|
||||
ShowChoices(user)
|
||||
if(new_socks)
|
||||
socks = new_socks
|
||||
|
||||
if("eyes")
|
||||
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null
|
||||
if(new_eyes)
|
||||
@@ -1360,7 +1381,7 @@ datum/preferences
|
||||
if("publicity")
|
||||
if(unlock_content)
|
||||
toggles ^= MEMBER_PUBLIC
|
||||
|
||||
|
||||
if("gender")
|
||||
if(gender == MALE)
|
||||
gender = FEMALE
|
||||
@@ -1548,6 +1569,7 @@ datum/preferences
|
||||
|
||||
character.underwear = underwear
|
||||
character.undershirt = undershirt
|
||||
character.socks = socks
|
||||
|
||||
if(backbag > 4 || backbag < 1)
|
||||
backbag = 1 //Same as above
|
||||
|
||||
@@ -149,6 +149,9 @@
|
||||
nanotrasen_relation = query.item[52]
|
||||
speciesprefs = text2num(query.item[53])
|
||||
|
||||
//socks
|
||||
socks = query.item[54]
|
||||
|
||||
//Sanitize
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
real_name = reject_bad_name(real_name)
|
||||
@@ -196,6 +199,9 @@
|
||||
disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities))
|
||||
be_special = sanitize_integer(be_special, 0, 65535, initial(be_special))
|
||||
|
||||
socks = sanitize_text(socks, initial(socks))
|
||||
|
||||
|
||||
// if(isnull(disabilities)) disabilities = 0
|
||||
if(!player_alt_titles) player_alt_titles = new()
|
||||
if(!organ_data) src.organ_data = list()
|
||||
@@ -267,7 +273,8 @@
|
||||
organ_data='[organlist]',
|
||||
rlimb_data='[rlimblist]',
|
||||
nanotrasen_relation='[nanotrasen_relation]',
|
||||
speciesprefs='[speciesprefs]'
|
||||
speciesprefs='[speciesprefs]',
|
||||
socks='[socks]'
|
||||
WHERE ckey='[C.ckey]'
|
||||
AND slot='[default_slot]'"}
|
||||
)
|
||||
@@ -295,7 +302,7 @@
|
||||
job_karma_high, job_karma_med, job_karma_low,
|
||||
flavor_text, med_record, sec_record, gen_record,
|
||||
player_alt_titles, be_special,
|
||||
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs)
|
||||
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs, socks)
|
||||
VALUES
|
||||
('[C.ckey]', '[default_slot]', '[sql_sanitize_text(metadata)]', '[sql_sanitize_text(real_name)]', '[be_random_name]','[gender]',
|
||||
'[age]', '[sql_sanitize_text(species)]', '[sql_sanitize_text(language)]',
|
||||
@@ -312,7 +319,7 @@
|
||||
'[job_karma_high]', '[job_karma_med]', '[job_karma_low]',
|
||||
'[sql_sanitize_text(flavor_text)]', '[sql_sanitize_text(med_record)]', '[sql_sanitize_text(sec_record)]', '[sql_sanitize_text(gen_record)]',
|
||||
'[playertitlelist]', '[be_special]',
|
||||
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]')
|
||||
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]','[socks]')
|
||||
"}
|
||||
)
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
S["eyes_blue"] >> b_eyes
|
||||
S["underwear"] >> underwear
|
||||
S["undershirt"] >> undershirt
|
||||
S["socks"] >> socks
|
||||
S["backbag"] >> backbag
|
||||
S["b_type"] >> b_type
|
||||
S["accent"] >> accent
|
||||
@@ -203,6 +204,7 @@
|
||||
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
|
||||
underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear))
|
||||
undershirt = sanitize_integer(undershirt, 1, undershirt_t.len, initial(undershirt))
|
||||
socks = sanitize_integer(socks,1 socks_t.len, initial(socks))
|
||||
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
|
||||
b_type = sanitize_text(b_type, initial(b_type))
|
||||
accent = sanitize_text(accent, initial(accent))
|
||||
|
||||
@@ -371,6 +371,10 @@ BLIND // can't see anything
|
||||
permeability_coefficient = 0.90
|
||||
slot_flags = SLOT_ICLOTHING
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
var/has_sensor = 1//For the crew computer 2 = unable to change mode
|
||||
var/sensor_mode = 0
|
||||
/*
|
||||
|
||||
@@ -353,7 +353,7 @@
|
||||
user << "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>"
|
||||
name = "blood-red hardsuit helmet (combat)"
|
||||
desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
flags = BLOCKHAIR
|
||||
flags = BLOCKHAIR | THICKMATERIAL
|
||||
flags_inv = HIDEEARS
|
||||
cold_protection = null
|
||||
set_light(0)
|
||||
@@ -393,7 +393,7 @@
|
||||
name = "blood-red hardsuit helmet (combat)"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
slowdown = 0
|
||||
flags = BLOCKHAIR
|
||||
flags = THICKMATERIAL
|
||||
flags_inv = null
|
||||
cold_protection = null
|
||||
|
||||
@@ -450,7 +450,7 @@
|
||||
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
|
||||
item_state = "medical_hardsuit"
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/device/rad_laser)
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
|
||||
|
||||
//Security
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_state = "paramedic-vest"
|
||||
item_state = "paramedic-vest"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
@@ -23,7 +23,7 @@
|
||||
item_state = "brigphysician-vest"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, \
|
||||
/obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
/obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
|
||||
//Botonist
|
||||
@@ -278,7 +278,7 @@
|
||||
item_state = "fr_jacket"
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
|
||||
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
|
||||
|
||||
verb/toggle()
|
||||
set name = "Toggle Jacket Buttons"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
item_state = "labcoat"
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
|
||||
allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/device/rad_laser)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
if(ishuman(M) && isliving(user))
|
||||
if(user.a_intent == "help")
|
||||
if(user.a_intent == I_HELP)
|
||||
var/body_part = parse_zone(user.zone_sel.selecting)
|
||||
if(body_part)
|
||||
var/their = "their"
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj))
|
||||
user << "<span class='warning'>You need an empty hand to draw the [holstered]!</span>"
|
||||
else
|
||||
if(user.a_intent == "hurt")
|
||||
if(user.a_intent == I_HARM)
|
||||
usr.visible_message("\red [user] draws the [holstered], ready to shoot!</span>", \
|
||||
"<span class='warning'>You draw the [holstered], ready to shoot!</span>")
|
||||
else
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
/obj/item/clothing/under/color
|
||||
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/color/random/New()
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
item_state = "ba_suit"
|
||||
_color = "ba_suit"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
|
||||
desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Captain\"."
|
||||
@@ -19,11 +15,6 @@
|
||||
item_state = "caparmor"
|
||||
_color = "captain"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/cargo
|
||||
name = "quartermaster's jumpsuit"
|
||||
@@ -32,10 +23,6 @@
|
||||
item_state = "lb_suit"
|
||||
_color = "qm"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/cargotech
|
||||
@@ -45,10 +32,6 @@
|
||||
item_state = "lb_suit"
|
||||
_color = "cargo"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/chaplain
|
||||
@@ -58,11 +41,6 @@
|
||||
item_state = "bl_suit"
|
||||
_color = "chapblack"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/chef
|
||||
desc = "It's an apron which is given only to the most <b>hardcore</b> chefs in space."
|
||||
@@ -70,11 +48,6 @@
|
||||
icon_state = "chef"
|
||||
_color = "chef"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/clown
|
||||
name = "clown suit"
|
||||
@@ -92,10 +65,6 @@
|
||||
item_state = "b_suit"
|
||||
_color = "hop"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_personnel_whimsy
|
||||
desc = "A blue jacket and red tie, with matching red cuffs! Snazzy. Wearing this makes you feel more important than your job title does."
|
||||
@@ -113,11 +82,6 @@
|
||||
_color = "hydroponics"
|
||||
permeability_coefficient = 0.50
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/internalaffairs
|
||||
desc = "The plain, professional attire of an Internal Affairs Agent. The collar is <i>immaculately</i> starched."
|
||||
@@ -126,10 +90,6 @@
|
||||
item_state = "internalaffairs"
|
||||
_color = "internalaffairs"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/ntrep
|
||||
desc = "A well-ironed dress shirt and matching set of black pants."
|
||||
@@ -138,11 +98,6 @@
|
||||
item_state = "internalaffairs"
|
||||
_color = "internalaffairs"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/janitor
|
||||
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
|
||||
@@ -151,10 +106,6 @@
|
||||
_color = "janitor"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/lawyer
|
||||
@@ -166,37 +117,21 @@
|
||||
icon_state = "lawyer_black"
|
||||
item_state = "lawyer_black"
|
||||
_color = "lawyer_black"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/female
|
||||
icon_state = "black_suit_fem"
|
||||
item_state = "black_suit_fem"
|
||||
_color = "black_suit_fem"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/red
|
||||
icon_state = "lawyer_red"
|
||||
item_state = "lawyer_red"
|
||||
_color = "lawyer_red"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/blue
|
||||
icon_state = "lawyer_blue"
|
||||
item_state = "lawyer_blue"
|
||||
_color = "lawyer_blue"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/bluesuit
|
||||
name = "Blue Suit"
|
||||
@@ -204,20 +139,12 @@
|
||||
icon_state = "bluesuit"
|
||||
item_state = "bluesuit"
|
||||
_color = "bluesuit"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/purpsuit
|
||||
name = "Purple Suit"
|
||||
icon_state = "lawyer_purp"
|
||||
item_state = "lawyer_purp"
|
||||
_color = "lawyer_purp"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/lawyer/oldman
|
||||
name = "Old Man's Suit"
|
||||
@@ -225,10 +152,6 @@
|
||||
icon_state = "oldman"
|
||||
item_state = "oldman"
|
||||
_color = "oldman"
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/librarian
|
||||
@@ -238,11 +161,6 @@
|
||||
item_state = "red_suit"
|
||||
_color = "red_suit"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/under/mime
|
||||
name = "mime's outfit"
|
||||
@@ -260,14 +178,10 @@
|
||||
item_state = "miner"
|
||||
_color = "miner"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/barber
|
||||
desc = "It's a barber's uniform."
|
||||
name = "barber's uniform"
|
||||
icon_state = "barber"
|
||||
item_state = "barber"
|
||||
_color = "barber"
|
||||
_color = "barber"
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
_color = "chief"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/atmospheric_technician
|
||||
desc = "It's a jumpsuit worn by atmospheric technicians."
|
||||
@@ -19,10 +15,6 @@
|
||||
item_state = "atmos_suit"
|
||||
_color = "atmos"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/engineer
|
||||
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
|
||||
@@ -32,10 +24,6 @@
|
||||
_color = "engine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/roboticist
|
||||
desc = "It's a slimming black with reinforced seams; great for industrial work."
|
||||
@@ -44,14 +32,10 @@
|
||||
item_state = "robotics"
|
||||
_color = "robotics"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/mechanic
|
||||
desc = "It's a pair of overalls worn by mechanics."
|
||||
name = "mechanic's overalls"
|
||||
icon_state = "mechanic"
|
||||
item_state = "mechanic"
|
||||
_color = "mechanic"
|
||||
_color = "mechanic"
|
||||
|
||||
@@ -9,10 +9,6 @@
|
||||
_color = "director"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/scientist
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist."
|
||||
@@ -23,10 +19,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/chemist
|
||||
desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it."
|
||||
@@ -37,10 +29,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/*
|
||||
* Medical
|
||||
@@ -54,10 +42,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/geneticist
|
||||
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
|
||||
@@ -68,10 +52,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/virologist
|
||||
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
|
||||
@@ -82,10 +62,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/nursesuit
|
||||
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
|
||||
@@ -96,10 +72,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/nurse
|
||||
desc = "A dress commonly worn by the nursing staff in the medical department."
|
||||
@@ -110,10 +82,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/orderly
|
||||
desc = "A white suit to be worn by orderly people who love orderly things."
|
||||
@@ -124,10 +92,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/medical
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||
@@ -138,10 +102,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/medical/blue
|
||||
name = "medical scrubs"
|
||||
@@ -149,10 +109,6 @@
|
||||
icon_state = "scrubsblue"
|
||||
_color = "scrubsblue"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/medical/green
|
||||
name = "medical scrubs"
|
||||
@@ -160,10 +116,6 @@
|
||||
icon_state = "scrubsgreen"
|
||||
_color = "scrubsgreen"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/medical/purple
|
||||
name = "medical scrubs"
|
||||
@@ -171,10 +123,6 @@
|
||||
icon_state = "scrubspurple"
|
||||
_color = "scrubspurple"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/medical/mortician
|
||||
name = "coroner's scrubs"
|
||||
@@ -182,10 +130,6 @@
|
||||
icon_state = "scrubsblack"
|
||||
_color = "scrubsblack"
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
//paramedic
|
||||
/obj/item/clothing/under/rank/medical/paramedic
|
||||
@@ -197,10 +141,6 @@
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
flags = ONESIZEFITSALL
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/under/rank/psych
|
||||
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
|
||||
|
||||
@@ -5,14 +5,6 @@
|
||||
* Head of Security
|
||||
*/
|
||||
|
||||
/*
|
||||
* Making everything but the jackets fit Vox
|
||||
*/
|
||||
/obj/item/clothing/under/rank
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
/*
|
||||
* Security
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
desc = "A formal black suit and red tie, intended for the station's finest."
|
||||
icon_state = "really_black_suit"
|
||||
item_state = "bl_suit"
|
||||
_color = "black_suit"
|
||||
_color = "really_black_suit"
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/female
|
||||
name = "executive suit"
|
||||
@@ -224,7 +224,6 @@
|
||||
icon_state = "red_suit"
|
||||
item_state = "r_suit"
|
||||
_color = "red_suit"
|
||||
species_fit = list("Vox")
|
||||
flags = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/navy
|
||||
@@ -563,17 +562,17 @@
|
||||
_color = "vengine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
|
||||
/obj/item/clothing/under/vox_toxins
|
||||
/obj/item/clothing/under/vox_sec
|
||||
name = "Vox Security Jumpsuit"
|
||||
desc = "A Security Uniform ripped to better fit a vox."
|
||||
desc = "A Security officer's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vred"
|
||||
item_state = "vred"
|
||||
_color = "vred"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/under/vox_toxins
|
||||
/obj/item/clothing/under/vox_chem
|
||||
name = "Vox Chemist Jumpsuit"
|
||||
desc = "A Security Uniform ripped to better fit a vox."
|
||||
desc = "A Chemist's jumpsuit ripped to better fit a vox."
|
||||
icon_state = "vchem"
|
||||
item_state = "vchem"
|
||||
_color = "vchem"
|
||||
|
||||
@@ -491,7 +491,7 @@
|
||||
|
||||
/obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M as mob)
|
||||
if(istype(M, /mob/living/simple_animal/pet/cat))
|
||||
if(M.a_intent == "help") //Cats can try to fish in open tanks on help intent
|
||||
if(M.a_intent == I_HELP) //Cats can try to fish in open tanks on help intent
|
||||
if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open.
|
||||
M.visible_message("[M.name] stares at into \the [src] while sitting perfectly still.", "The lid is closed, so you stare into \the [src] intently.")
|
||||
else
|
||||
@@ -513,7 +513,7 @@
|
||||
else
|
||||
attack_generic(M, M.harm_intent_damage)
|
||||
else if(istype(M, /mob/living/simple_animal/hostile/bear))
|
||||
if(M.a_intent == "help") //Bears can try to fish in open tanks on help intent
|
||||
if(M.a_intent == I_HELP) //Bears can try to fish in open tanks on help intent
|
||||
if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open.
|
||||
M.visible_message("[M.name] scrapes it's claws along \the [src]'s lid.", "The lid is closed, so you scrape your claws against \the [src]'s lid.")
|
||||
else
|
||||
@@ -533,7 +533,7 @@
|
||||
else
|
||||
if(M.melee_damage_upper > 0) //If the simple_animal has a melee_damage_upper defined, use that for the damage
|
||||
attack_generic(M, M.melee_damage_upper)
|
||||
else if(M.a_intent == "harm") //Let any simple_animal try to break tanks when on harm intent
|
||||
else if(M.a_intent == I_HARM) //Let any simple_animal try to break tanks when on harm intent
|
||||
if(M.harm_intent_damage <= 0) return //If it doesn't do damage, don't bother with the attack
|
||||
attack_generic(M, M.harm_intent_damage)
|
||||
check_health()
|
||||
@@ -553,7 +553,7 @@
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
|
||||
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
|
||||
destroy()
|
||||
else if (usr.a_intent == "harm")
|
||||
else if (usr.a_intent == I_HARM)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1)
|
||||
usr.visible_message("<span class='danger'>[usr.name] bangs against the [src.name]!</span>", \
|
||||
@@ -589,7 +589,7 @@
|
||||
//Welders repair damaged tanks on help intent, damage on all others
|
||||
if(istype(O, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/W = O
|
||||
if(user.a_intent == "help")
|
||||
if(user.a_intent == I_HELP)
|
||||
if(W.isOn())
|
||||
if(cur_health < max_health)
|
||||
usr << "You repair some of the cracks on \the [src]."
|
||||
|
||||
@@ -632,7 +632,7 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/mint
|
||||
|
||||
/datum/recipe/microwave/boiled_shrimp
|
||||
reagents = list("water" = 1)
|
||||
reagents = list("water" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/shrimp
|
||||
)
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
if(user == M)
|
||||
return ..()
|
||||
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == I_HARM)
|
||||
|
||||
// This is being copypasted here because reagent_containers (WHY DOES FOOD DESCEND FROM THAT) overrides it completely.
|
||||
// TODO: refactor all food paths to be less horrible and difficult to work with in this respect. ~Z
|
||||
@@ -359,7 +359,7 @@
|
||||
if(istype(user.loc,/turf/space))
|
||||
return
|
||||
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == I_HARM)
|
||||
user.visible_message("<span class='danger'>\The [user] squashes \the [src]!</span>")
|
||||
seed.thrown_at(src,user)
|
||||
sleep(-1)
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
var/lum_g
|
||||
var/lum_b
|
||||
|
||||
var/tmp/old_lum_r
|
||||
var/tmp/old_lum_g
|
||||
var/tmp/old_lum_b
|
||||
var/tmp/applied_lum_r
|
||||
var/tmp/applied_lum_g
|
||||
var/tmp/applied_lum_b
|
||||
|
||||
var/list/effect_str
|
||||
var/list/effect_turf
|
||||
@@ -107,11 +107,6 @@
|
||||
if(light_range && light_power && !applied)
|
||||
. = 1
|
||||
|
||||
if(. || source_atom.light_color != light_color)//Save the old lumcounts if we need to update, if the colour changed DO IT BEFORE we parse the colour and LOSE the old lumcounts!
|
||||
old_lum_r = lum_r
|
||||
old_lum_g = lum_g
|
||||
old_lum_b = lum_b
|
||||
|
||||
if(source_atom.light_color != light_color)
|
||||
light_color = source_atom.light_color
|
||||
parse_light_color()
|
||||
@@ -149,6 +144,12 @@
|
||||
|
||||
/datum/light_source/proc/apply_lum()
|
||||
applied = 1
|
||||
|
||||
// Cache the applied lum counts.
|
||||
applied_lum_r = lum_r
|
||||
applied_lum_g = lum_g
|
||||
applied_lum_b = lum_b
|
||||
|
||||
if(istype(source_turf))
|
||||
FOR_DVIEW(var/turf/T, light_range, source_turf, INVISIBILITY_LIGHTING)
|
||||
if(T.lighting_overlay)
|
||||
@@ -188,7 +189,7 @@
|
||||
|
||||
if(T.lighting_overlay)
|
||||
var/str = effect_str[i]
|
||||
T.lighting_overlay.update_lumcount(-str * old_lum_r, -str * old_lum_g, -str * old_lum_b)
|
||||
T.lighting_overlay.update_lumcount(-str * applied_lum_r, -str * applied_lum_g, -str * applied_lum_b)
|
||||
|
||||
i++
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
component_parts += new /obj/item/device/assembly/igniter(null)
|
||||
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
|
||||
RefreshParts()
|
||||
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/upgraded/New()
|
||||
..()
|
||||
component_parts = list()
|
||||
@@ -604,7 +604,7 @@
|
||||
stop_automated_movement_when_pulled = 1
|
||||
mouse_opacity = 1
|
||||
faction = list("neutral")
|
||||
a_intent = "harm"
|
||||
a_intent = I_HARM
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
@@ -668,7 +668,7 @@
|
||||
SetCollectBehavior()
|
||||
|
||||
/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M)
|
||||
if(M.a_intent == "help")
|
||||
if(M.a_intent == I_HELP)
|
||||
switch(search_objects)
|
||||
if(0)
|
||||
SetCollectBehavior()
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string.
|
||||
var/follow = 0 // Applies to HIVEMIND languages - should a follow link be included for dead mobs?
|
||||
var/list/scramble_cache = list()
|
||||
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4)
|
||||
if(!syllables || !syllables.len)
|
||||
@@ -38,9 +39,6 @@
|
||||
|
||||
return "[trim(full_name)]"
|
||||
|
||||
/datum/language
|
||||
var/list/scramble_cache = list()
|
||||
|
||||
/datum/language/proc/scramble(var/input)
|
||||
|
||||
if(!syllables || !syllables.len)
|
||||
@@ -247,7 +245,7 @@
|
||||
flags = RESTRICTED | WHITELISTED
|
||||
syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0")
|
||||
|
||||
/datum/language/machine/get_random_name()
|
||||
/datum/language/trinary/get_random_name()
|
||||
var/new_name
|
||||
if(prob(70))
|
||||
new_name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
|
||||
|
||||
@@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
sleeping = max(0,sleeping-5)
|
||||
resting = 0
|
||||
AdjustParalysis(-3)
|
||||
@@ -24,7 +24,7 @@ In all, this is a lot like the monkey code. /N
|
||||
AdjustWeakened(-3)
|
||||
visible_message("<span class='notice'>[M.name] nuzzles [src] trying to wake it up!</span>")
|
||||
|
||||
if ("grab")
|
||||
if (I_GRAB)
|
||||
src.grabbedby(M)
|
||||
return 1
|
||||
|
||||
@@ -53,11 +53,11 @@ In all, this is a lot like the monkey code. /N
|
||||
return 0 //this is horrible but 100% necessary
|
||||
|
||||
switch(M.a_intent)
|
||||
if("help")
|
||||
if(I_HELP)
|
||||
help_shake_act(M)
|
||||
if("grab")
|
||||
if(I_GRAB)
|
||||
src.grabbedby(M)
|
||||
if ("harm", "disarm")
|
||||
if (I_HARM, I_DISARM)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -198,13 +198,13 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if ("grab")
|
||||
if (I_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if ("harm")
|
||||
if (I_HARM)
|
||||
M.do_attack_animation(src)
|
||||
var/damage = rand(1, 9)
|
||||
if (prob(90))
|
||||
@@ -229,7 +229,7 @@
|
||||
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<span class='danger'>[M] has attempted to punch [src]!</span>")
|
||||
|
||||
if ("disarm")
|
||||
if (I_DISARM)
|
||||
if (!lying)
|
||||
if (prob(5))//Very small chance to push an alien down.
|
||||
Paralyse(2)
|
||||
@@ -265,7 +265,7 @@ In all, this is a lot like the monkey code. /N
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
sleeping = max(0,sleeping-5)
|
||||
resting = 0
|
||||
AdjustParalysis(-3)
|
||||
@@ -291,7 +291,7 @@ In all, this is a lot like the monkey code. /N
|
||||
/mob/living/carbon/alien/humanoid/attack_larva(mob/living/carbon/alien/larva/L as mob)
|
||||
|
||||
switch(L.a_intent)
|
||||
if("help")
|
||||
if(I_HELP)
|
||||
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
|
||||
|
||||
|
||||
@@ -355,4 +355,7 @@ In all, this is a lot like the monkey code. /N
|
||||
else if(custom_pixel_x_offset)
|
||||
return custom_pixel_x_offset
|
||||
else
|
||||
return initial(pixel_x)
|
||||
return initial(pixel_x)
|
||||
|
||||
/mob/living/carbon/alien/humanoid/get_permeability_protection()
|
||||
return 0.8
|
||||
@@ -159,22 +159,11 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if ("grab")
|
||||
if (M == src || anchored)
|
||||
return
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
|
||||
|
||||
M.put_in_active_hand(G)
|
||||
|
||||
G.synch()
|
||||
|
||||
LAssailant = M
|
||||
|
||||
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
|
||||
if (I_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
else
|
||||
M.do_attack_animation(src)
|
||||
@@ -216,7 +205,7 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
sleeping = max(0,sleeping-5)
|
||||
resting = 0
|
||||
AdjustParalysis(-3)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
icon_state = "posibrain"
|
||||
w_class = 3
|
||||
origin_tech = "engineering=4;materials=4;bluespace=2;programming=4"
|
||||
origin_tech = "biotech=3;programming=2"
|
||||
|
||||
var/searching = 0
|
||||
var/askDelay = 10 * 60 * 1
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
return
|
||||
|
||||
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
|
||||
if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around!
|
||||
if((tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around!
|
||||
var/turf/oldloc = loc
|
||||
loc = tmob.loc
|
||||
tmob.loc = oldloc
|
||||
@@ -244,6 +244,8 @@
|
||||
stat(null, eta_status)
|
||||
|
||||
if (client.statpanel == "Status")
|
||||
if(locate(/obj/item/device/assembly/health) in src)
|
||||
stat(null, "Health: [health]")
|
||||
if (internal)
|
||||
if (!internal.air_contents)
|
||||
qdel(internal)
|
||||
@@ -414,7 +416,7 @@
|
||||
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob)
|
||||
|
||||
switch(L.a_intent)
|
||||
if("help")
|
||||
if(I_HELP)
|
||||
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
|
||||
|
||||
|
||||
@@ -431,7 +433,7 @@
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
|
||||
/mob/living/carbon/human/proc/is_loyalty_implanted()
|
||||
/mob/living/carbon/human/proc/is_loyalty_implanted()
|
||||
for(var/L in contents)
|
||||
if(istype(L, /obj/item/weapon/implant/loyalty))
|
||||
for(var/obj/item/organ/external/O in organs)
|
||||
@@ -694,7 +696,7 @@
|
||||
|
||||
// if looting pockets with gloves, do it quietly
|
||||
if(href_list["pockets"])
|
||||
if(isanimal(usr))
|
||||
if(isanimal(usr))
|
||||
return //animals cannot strip people
|
||||
|
||||
if(frozen)
|
||||
@@ -726,19 +728,19 @@
|
||||
// Update strip window
|
||||
if(usr.machine == src && in_range(src, usr))
|
||||
show_inv(usr)
|
||||
|
||||
|
||||
else if(!pickpocket)
|
||||
// Display a warning if the user mocks up
|
||||
src << "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>"
|
||||
|
||||
// if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White
|
||||
if(href_list["item"])
|
||||
if(isanimal(usr))
|
||||
if(isanimal(usr))
|
||||
return //animals cannot strip people
|
||||
|
||||
|
||||
if(frozen)
|
||||
usr << "\red Do not attempt to strip frozen people."
|
||||
return
|
||||
return
|
||||
var/itemTarget = href_list["item"]
|
||||
if(itemTarget == "id")
|
||||
if(pickpocket)
|
||||
@@ -1158,7 +1160,7 @@
|
||||
if(!fail_msg)
|
||||
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into."
|
||||
user << "<span class='alert'>[fail_msg]</span>"
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/check_has_mouth()
|
||||
// Todo, check stomach organ when implemented.
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
@@ -1170,7 +1172,7 @@
|
||||
if(stat==DEAD)return
|
||||
|
||||
if(!check_has_mouth())
|
||||
return
|
||||
return
|
||||
|
||||
if(!lastpuke)
|
||||
lastpuke = 1
|
||||
@@ -1517,16 +1519,16 @@
|
||||
|
||||
W.add_fingerprint(src)
|
||||
|
||||
// Allows IPC's to change their monitor display
|
||||
// Allows IPC's to change their monitor display
|
||||
/mob/living/carbon/human/proc/change_monitor()
|
||||
set category = "IC"
|
||||
set category = "IC"
|
||||
set name = "Change Monitor Display"
|
||||
set desc = "Change the display on your monitor."
|
||||
|
||||
|
||||
if(stat || paralysis || stunned || weakened)
|
||||
src << "<span class='warning'>You cannot change your monitor display in your current state.</span>"
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
var/list/hair = list()
|
||||
for(var/i in hair_styles_list)
|
||||
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
|
||||
@@ -1540,7 +1542,7 @@
|
||||
h_style = new_style
|
||||
|
||||
update_hair()
|
||||
|
||||
|
||||
//Putting a couple of procs here that I don't know where else to dump.
|
||||
//Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse).
|
||||
/mob/living/carbon/human/proc/leap()
|
||||
@@ -1757,4 +1759,24 @@
|
||||
return 1
|
||||
if(!silent)
|
||||
src << "<span class='warning'>You don't have the dexterity to use that!<span>"
|
||||
return 0
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/get_permeability_protection()
|
||||
var/list/prot = list("hands"=0, "chest"=0, "groin"=0, "legs"=0, "feet"=0, "arms"=0, "head"=0)
|
||||
for(var/obj/item/I in get_equipped_items())
|
||||
if(I.body_parts_covered & HANDS)
|
||||
prot["hands"] = max(1 - I.permeability_coefficient, prot["hands"])
|
||||
if(I.body_parts_covered & UPPER_TORSO)
|
||||
prot["chest"] = max(1 - I.permeability_coefficient, prot["chest"])
|
||||
if(I.body_parts_covered & LOWER_TORSO)
|
||||
prot["groin"] = max(1 - I.permeability_coefficient, prot["groin"])
|
||||
if(I.body_parts_covered & LEGS)
|
||||
prot["legs"] = max(1 - I.permeability_coefficient, prot["legs"])
|
||||
if(I.body_parts_covered & FEET)
|
||||
prot["feet"] = max(1 - I.permeability_coefficient, prot["feet"])
|
||||
if(I.body_parts_covered & ARMS)
|
||||
prot["arms"] = max(1 - I.permeability_coefficient, prot["arms"])
|
||||
if(I.body_parts_covered & HEAD)
|
||||
prot["head"] = max(1 - I.permeability_coefficient, prot["head"])
|
||||
var/protection = (prot["head"] + prot["arms"] + prot["feet"] + prot["legs"] + prot["groin"] + prot["chest"] + prot["hands"])/7
|
||||
return protection
|
||||
@@ -4,12 +4,12 @@
|
||||
return 0
|
||||
|
||||
switch(M.a_intent)
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
visible_message(text("\blue [M] caresses [src] with its scythe like arm."))
|
||||
if ("grab")
|
||||
if (I_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if("harm")
|
||||
if(I_HARM)
|
||||
M.do_attack_animation(src)
|
||||
if (w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
@@ -30,7 +30,7 @@
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
updatehealth()
|
||||
|
||||
if("disarm")
|
||||
if(I_DISARM)
|
||||
M.do_attack_animation(src)
|
||||
var/randn = rand(1, 100)
|
||||
if (randn <= 80)
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
species.handle_attack_hand(src,M)
|
||||
|
||||
switch(M.a_intent)
|
||||
if("help")
|
||||
if(I_HELP)
|
||||
if(health >= config.health_threshold_crit)
|
||||
help_shake_act(M)
|
||||
add_logs(src, M, "shaked")
|
||||
@@ -88,14 +88,14 @@
|
||||
add_logs(src, M, "CPRed")
|
||||
return 1
|
||||
|
||||
if("grab")
|
||||
if(I_GRAB)
|
||||
if(attacker_style && attacker_style.grab_act(H, src))
|
||||
return 1
|
||||
else
|
||||
src.grabbedby(M)
|
||||
return 1
|
||||
|
||||
if("harm")
|
||||
if(I_HARM)
|
||||
if(attacker_style && attacker_style.harm_act(H, src))
|
||||
return 1
|
||||
else
|
||||
@@ -163,7 +163,7 @@
|
||||
forcesay(hit_appends)
|
||||
|
||||
|
||||
if("disarm")
|
||||
if(I_DISARM)
|
||||
if(attacker_style && attacker_style.disarm_act(H, src))
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -35,10 +35,10 @@ emp_act
|
||||
if(check_shields(P.damage, "the [P.name]", P))
|
||||
P.on_hit(src, 100, def_zone)
|
||||
return 2
|
||||
|
||||
|
||||
var/obj/item/organ/external/organ = get_organ(check_zone(def_zone))
|
||||
if(isnull(organ))
|
||||
return
|
||||
return
|
||||
|
||||
//Shrapnel
|
||||
if (P.damage_type == BRUTE)
|
||||
@@ -221,7 +221,7 @@ emp_act
|
||||
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
|
||||
if(!I || !user) return 0
|
||||
|
||||
if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == "harm")
|
||||
if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == I_HARM)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(src.loc))
|
||||
newmeat.name = src.real_name + newmeat.name
|
||||
newmeat.subjectname = src.real_name
|
||||
@@ -465,7 +465,7 @@ emp_act
|
||||
if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam)
|
||||
|
||||
/mob/living/carbon/human/mech_melee_attack(obj/mecha/M)
|
||||
if(M.occupant.a_intent == "harm")
|
||||
if(M.occupant.a_intent == I_HARM)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
|
||||
@@ -493,7 +493,7 @@ emp_act
|
||||
attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
|
||||
M.occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
|
||||
msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])")
|
||||
|
||||
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
var/b_type = "A+" //Player's bloodtype
|
||||
|
||||
var/underwear = "Nude" //Which underwear the player wants
|
||||
var/undershirt = "Nude" //Which undershirt the player wants.
|
||||
var/undershirt = "Nude" //Which undershirt the player wants
|
||||
var/socks = "Nude" //Which socks the player wants
|
||||
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
|
||||
|
||||
//Equipment slots
|
||||
|
||||
@@ -64,6 +64,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
|
||||
life_tick++
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
in_stasis = 0
|
||||
if(istype(loc, /obj/structure/closet/body_bag/cryobag))
|
||||
var/obj/structure/closet/body_bag/cryobag/loc_as_cryobag = loc
|
||||
if(!loc_as_cryobag.opened)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
C << "<span class='danger'>It feels like part of you has died.</span>"
|
||||
|
||||
/datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M)
|
||||
if(M.a_intent == "harm")
|
||||
if(M.a_intent == I_HARM)
|
||||
if(H.handcuffed)
|
||||
if(!(locate(H.internal_organs_by_name["antennae"]) in H.internal_organs)) return
|
||||
var/turf/p_loc = M.loc
|
||||
|
||||
@@ -327,6 +327,13 @@ var/global/list/damage_icon_parts = list()
|
||||
if(U2)
|
||||
stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY)
|
||||
|
||||
|
||||
if(socks)
|
||||
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
|
||||
if(U3)
|
||||
stand_icon.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY)
|
||||
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
switch(L.a_intent)
|
||||
|
||||
if("help")
|
||||
if(I_HELP)
|
||||
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
|
||||
|
||||
|
||||
@@ -366,22 +366,11 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if ("grab")
|
||||
if (M == src || anchored)
|
||||
return
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
|
||||
|
||||
M.put_in_active_hand(G)
|
||||
|
||||
G.synch()
|
||||
|
||||
LAssailant = M
|
||||
|
||||
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
|
||||
if (I_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
else
|
||||
M.do_attack_animation(src)
|
||||
@@ -427,10 +416,10 @@
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
|
||||
|
||||
if ("harm")
|
||||
if (I_HARM)
|
||||
M.do_attack_animation(src)
|
||||
if (prob(95))
|
||||
attacked += 10
|
||||
@@ -450,21 +439,10 @@
|
||||
visible_message("<span class='danger'>[M] has attempted to lunge at [name]!</span>", \
|
||||
"<span class='userdanger'>[M] has attempted to lunge at [name]!</span>")
|
||||
|
||||
if ("grab")
|
||||
if (M == src || anchored)
|
||||
return
|
||||
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
|
||||
if (I_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
M.put_in_active_hand(G)
|
||||
|
||||
G.synch()
|
||||
|
||||
LAssailant = M
|
||||
|
||||
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
visible_message("<span class='warning'> [M] has grabbed [name] passively!</span>")
|
||||
|
||||
if ("disarm")
|
||||
if (I_DISARM)
|
||||
M.do_attack_animation(src)
|
||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
var/damage = 5
|
||||
|
||||
@@ -937,3 +937,7 @@
|
||||
|
||||
/mob/living/proc/spawn_dust()
|
||||
new /obj/effect/decal/cleanable/ash(loc)
|
||||
|
||||
//used in datum/reagents/reaction() proc
|
||||
/mob/living/proc/get_permeability_protection()
|
||||
return 0
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
src.pinned += O
|
||||
|
||||
/mob/living/mech_melee_attack(obj/mecha/M)
|
||||
if(M.occupant.a_intent == "harm")
|
||||
if(M.occupant.a_intent == I_HARM)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
switch(M.damtype)
|
||||
@@ -168,9 +168,9 @@
|
||||
attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
|
||||
M.occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
|
||||
msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])")
|
||||
|
||||
|
||||
else
|
||||
|
||||
|
||||
step_away(src,M)
|
||||
add_logs(M.occupant, src, "pushed", object=M, admin=0)
|
||||
M.occupant_message("<span class='warning'>You push [src] out of the way.</span>")
|
||||
|
||||
@@ -91,7 +91,7 @@ var/list/ai_verbs_default = list(
|
||||
/mob/living/silicon/ai/proc/add_ai_verbs()
|
||||
src.verbs |= ai_verbs_default
|
||||
src.verbs |= silicon_subsystems
|
||||
|
||||
|
||||
/mob/living/silicon/ai/proc/remove_ai_verbs()
|
||||
src.verbs -= ai_verbs_default
|
||||
src.verbs -= silicon_subsystems
|
||||
@@ -551,7 +551,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if ("help")
|
||||
if (I_HELP)
|
||||
visible_message("<span class='notice'>[M] caresses [src]'s plating with its scythe like arm.</span>")
|
||||
|
||||
else //harm
|
||||
@@ -960,7 +960,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
/mob/living/silicon/ai/proc/is_in_chassis()
|
||||
return istype(loc, /turf)
|
||||
|
||||
|
||||
/mob/living/silicon/ai/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/AI, var/obj/item/device/aicard/card)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user