Merge remote-tracking branch 'ParadiseSS13/master' into FoxSocks

This commit is contained in:
Aurorablade
2015-09-13 00:03:12 -04:00
193 changed files with 7063 additions and 6544 deletions
+1
View File
@@ -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 */;
+18 -16
View File
@@ -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
+2 -1
View File
@@ -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
"}
+6
View File
@@ -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"
+4
View File
@@ -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
-1
View File
@@ -583,4 +583,3 @@ proc/dd_sortedObjectList(list/incoming)
/datum/alarm/dd_SortValue()
return "[sanitize(last_name)]"
+6
View File
@@ -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"
+4
View File
@@ -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")
+2 -2
View File
@@ -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
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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."
+1 -1
View File
@@ -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
+4 -4
View File
@@ -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)
+3 -3
View File
@@ -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)
+4 -1
View File
@@ -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
+2
View File
@@ -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)
+1
View File
@@ -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?"
+3 -3
View File
@@ -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)
+25 -4
View File
@@ -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?
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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)
+11 -2
View File
@@ -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)
+1 -1
View File
@@ -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)
+2 -1
View File
@@ -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"
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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))
+54 -46
View File
@@ -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()
+13 -97
View File
@@ -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
+2 -2
View File
@@ -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]!")
+2 -2
View File
@@ -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>")
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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]!", \
+7 -1
View File
@@ -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()
+5 -5
View File
@@ -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()
+1 -1
View File
@@ -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
View File
@@ -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)
+1
View File
@@ -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(
+6 -3
View File
@@ -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]")
+3 -4
View File
@@ -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)
+104
View File
@@ -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
+16 -7
View File
@@ -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]"
+28 -6
View File
@@ -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];'>&nbsp;&nbsp;&nbsp;</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
+10 -3
View File
@@ -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))
+4
View File
@@ -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
/*
+3 -3
View File
@@ -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
+3 -3
View File
@@ -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"
+1 -1
View File
@@ -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
-4
View File
@@ -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()
+1 -87
View File
@@ -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
+5 -6
View File
@@ -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"
+5 -5
View File
@@ -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]."
+1 -1
View File
@@ -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
)
+2 -2
View File
@@ -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)
+10 -9
View File
@@ -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++
+3 -3
View File
@@ -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()
+2 -4
View File
@@ -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
+39 -17
View File
@@ -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
+4
View File
@@ -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
+3 -3
View File
@@ -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>")
+3 -3
View File
@@ -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