mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 14:07:51 +01:00
Merge branch 'master' into no-stel-ples
This commit is contained in:
@@ -1474,6 +1474,7 @@
|
||||
"aCr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/security/prison/cell_block/B)
|
||||
"aCs" = (/obj/machinery/door/window/brigdoor{dir = 8; id = "Cell 6"; name = "Cell 6"; req_access_txt = "2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison/cell_block/B)
|
||||
"aCt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkredcorners"},/area/security/prison/cell_block/B)
|
||||
"aCu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
|
||||
"aCv" = (/obj/structure/stool/bed/chair,/obj/item/device/radio/intercom/department/security{pixel_x = -28},/obj/machinery/camera{c_tag = "Brig Interrogation Observation"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
|
||||
"aCw" = (/obj/structure/stool/bed/chair,/obj/machinery/light_switch{pixel_x = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
|
||||
"aCx" = (/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/interrogation)
|
||||
@@ -1719,6 +1720,7 @@
|
||||
"aHd" = (/obj/structure/stool/bed,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"aHe" = (/obj/machinery/camera{c_tag = "Fore Primary Hallway West"; dir = 4; network = list("SS13")},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
|
||||
"aHf" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
|
||||
"aHg" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
|
||||
"aHh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs)
|
||||
"aHi" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/item/weapon/twohanded/required/kirbyplants,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber)
|
||||
"aHj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{dir = 2; icon_state = "barber"},/area/civilian/barber)
|
||||
@@ -2474,7 +2476,7 @@
|
||||
"aVF" = (/obj/machinery/camera{c_tag = "Bar Storage"; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/reagentgrinder,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aVG" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aVH" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/gun/projectile/revolver/doublebarrel,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/obj/item/weapon/storage/fancy/candle_box/eternal,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aVI" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
|
||||
"aVI" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
|
||||
"aVJ" = (/obj/effect/decal/cleanable/blood/oil/streak,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"aVK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
|
||||
"aVL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
|
||||
@@ -2608,7 +2610,6 @@
|
||||
"aYj" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/bridge)
|
||||
"aYk" = (/obj/machinery/door/window/eastright{name = "Coroner Office"; req_access_txt = "5"},/turf/simulated/floor/plasteel,/area/medical/morgue)
|
||||
"aYl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay2)
|
||||
"aYm" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
|
||||
"aYn" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"aYo" = (/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes/stokcubes,/obj/item/weapon/storage/box/monkeycubes/neaeracubes,/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes/wolpincubes,/obj/item/weapon/storage/box/monkeycubes/farwacubes,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics)
|
||||
"aYp" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor)
|
||||
@@ -5703,7 +5704,6 @@
|
||||
"chi" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"chj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 2; id_tag = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
|
||||
"chk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/paramedic)
|
||||
"chl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor/plasteel,/area/medical/paramedic)
|
||||
"chm" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper)
|
||||
"chn" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/sleeper)
|
||||
"cho" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/sleeper)
|
||||
@@ -9114,7 +9114,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKybKxbKpaQZaQZaQZbndaSfaSfbCfbKCbCfbKDbKsbKtbKEbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbKGbxbbKzbKzbKzbKzbKzbKzbJfbKAbKBbKHbzFbKIbKKbKJbKMbKLbKObKNbKQbKPbKSbKRbKVbKUbKXbKXbLabKZbKTbLbbLfbKWbLgbKYbFCbLhbHDbLibHBbLkbFCaaabLcbLdbLebLnbLdbLdbLdbLdbLpbxvbLqbFObLrbLjbLsbLlbLmbLtbLobEobLvbLubLxbLwbLzbLybLBbLAbGabLDbEtaTHaTLaTKaTNaTMbHQaTObHQaSVbIbbHUbHQbIbbEubIebGqbLNbLEbLPbLSbLQbLIbLTbLKbLLbLMbLUbLObLVbEAbLXbLRbLYbEDbLZbMfbMabIpbLWbMgbEDbKubGGbMhbGHaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbMjbMibKpaSeaSebMbbMcaSebMdbCfbMebIBbMlbMkbMnbMmbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbMtbMsbMubMqbKzbKzbKzbKzbKzbKzbMwbMvbMzbMybMDbMBbMxbDXbzJbzJbMFbMAbzJbzJbMJbMCbMLbMEbMMbMGbMGbMHbMGbMIbMNbMGbMKbKYbFCbMObFEbFEbFEbMPbFCaaabLcbLdbMRbMQbMVbMTbMWbMSbNbbMUbNcbFObNdbEobMXbMYbMZbNabNfbNebNjbNgbNlbNkbNhbNibNnbNmbNqbNpbNrbLFaTQaTPbEtaTRaTTaTSaTUaSVbNAaTVaTWbGvbEubNKbNzbNLbNBbNBbNMbNDbNEbNFbNGbNHbNIbNJbNObNNbEAbNQbLRbNRbEDbNSbNPbNTbIpbIpbNUbEDbIzbGGbNWbGHaaaaaaaaaaaaaabbNXbNZbNVbNZbNVbNZbOaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbOgbKzbOibOhbOhbOhbOhbOhbOkbOjbOhbOlbOnbOmbOpbOobOrbOqbzJbOtbBnbOvbOsbDXbOwbOubOxbMEbMEbMGbOAbOybOCbOBbODbMGbFBbKYbFCbOEbOHbOFbOObOMbFCaaabOGbLdbOPbOIbOJbOKbOLbOKbOSbONbOXbFObOYbEobOQbOQbORbPabOTbOUbOVbOWbPcbPbbOZbOZbPebPdbPhbPfbEtbNoaUOaTYbEtbEubPgbEubEuaUPbEubEubEubEubPrbPmbGqbPvbLEbLPbPxbNBbNEbPnbPobPobPpbIdbPqbPybPsbPtbIrbPubEDbPzbPwbIpbPHbPBbPJbEDbKubPAbGHbGHaaaaaaaaaaaaaabbPKbPCbPDbPEbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaVIaYmaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubRFbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbPUbPObPPbPQbPQbPQbPObKzbJfbKAbKzbKzbKBbPZbPSbQcbQdbPVbQebPXbBnbBnbPYbDXbOwbOubQhbQfbQbbQibQkbOzbQlbQgbQnbMGbQobQjbHmbQpbQqbQmbQsbQrbHsbHtbQtbLdbQvbQubQwbOKbQxbOKbQybONbQzbFObQAbEobQDbQBbQGbQEbQHbQCbQJbQIbQFbQFbQMbQKbQFbQFbQObQNbQPbQLaVyaVxbQTbQSaWIaHgaVIaYlaWObQVbRebQXbRgbRfbGqbRabRbbRcbRjbRibIabRkbPobPobRlbRhbPqbRmbEAbRnbRnbRobEDbRpbRybRqbRzbIpbREbEDbKubRFbGHaaaaaaaaaaaaaaaaabbRrbRsbPDbPFbPDbRtbNVaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRTbRRbRRbRRbRRbRUbJfbKAbRLbxbbxbbRMbBnbzFbQdbRNbDXbRObRPbRPbRQbNYbRYbRXbRZbRVbRWbSbbSdbScbSabQgbSebMGbMKbKYbFCbSfbShbSgbSlbSkbFCaaabOGbSibSjbSibSibSibSibSibSmbSibSpbFObQAbEobSqbSnbSnbSobSrbOUbStbSsbSvbSubSxbSwbSybSvbSAbSzbSDbSBaWSaWRbSGbSGbSEbSHbSJbSIbSLbSKbSNbSMbSPbSObSRbSQbSQbSSbSUbSTbIabSWbIdbIdbSXbSVbPqbSYbTabSZbTfbTcbTbbTgbTdbTebTjbTebEDbEDbTkbPtbThbTibTibTibTibTibThbPKbPFbPDbPFbPFbPGbPKaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbTubKzbPPbPQbPQbPQbKzbKzbJfbKAbTsbTxbxbbTAbBnbTBbQdbTvbDXbTwbBnbBobBnbPWbOwbTybTzbRVbRWbTCbTEbTDbTKbTFbTLbTGbTHbTIbTJbTJbTNbTMbTPbFCbFCaaabOGbSibTQbTObTSbTRbTVbTTbTWbTUbTXbFObQAbNebTZbTYbUbbUabUcbOUbUebUdbUibUhbUfbUgbUkbUjbUmbUlbUobUnbUqbUpbUsbUrbUubUtbUybUvbUDbQVbUwbQXbUxbUGbGrbUzbUAbUBbUCbUCbIabUIbUEbUFbIabUJbPqbUHbIabUKbUMbULbUObUNbUQbUPbUSbURbUUbUTbUWbUVbUYbUXbUXbUZbVbbVabQabVcbNZbNVbVdbNVbNZbVjaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbVobKzbPPbKzbKzbKzbKzbKzbJfbKAbTsbVpbxbbVrbBnbVqbVsbBnbVwbzEbBnbBnbVtbDXbOwbTybTzbRVbRWbMGbVubVvbVybVxbVzbMHbVBbVAbVDbVCbHsbVEbVFbHsbHtbHtbVGbSibVIbVHbVKbVJbVLbVLbVNbVMbVObFObVPbEobOUbVQbOQbVSbVRbOUbUebVUbVTbVVbVXbVWbVYbVTbUebVZbWebWabWbbWabWcbWabWdbWdbWhbWfbWgbWgbWgbWmbWgbWgbWibWibWjbWkbWjbWjbIabIabIabIabIabWlbWnbLIbIabWobWrbWpbWqbWqbWvbWsbWtbWubWxbWwbWzbWybWBbWAbWAbWCbWEbWDbThbQabQabQabWFbThaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9124,7 +9124,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcbNcbLcbMcbRbYMbOwbTycbOcbPcbQcbScbVcbTcbUcbWcbYcbXccacbZcccccbccfccdcceccgccjcchccicckccqcclccmbEnccnbFOccoccpccrbFOccscaAccvcctccuccwccxbUecczccyccBccAccDccCccFccEccHccGccIbWaccKbZuccJccMccLccOccNccPbXNccQbXQbXQbXQccRbWgcbdccTccSccVccUccXccWcdbcbfccYccZcdacbjcbjcdccbocddcdfcdecdhcdgcdjcdicdkbYjcdnbGHaaaaaaaaabThbThbThbThaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcdBcdDcdCcdEbYMbOwcdGcdFbTybTycdHcdKcdIcdJcclcdOcdLcdOcdMcdNcdNcdQcdPcdRcdNcdNcdTcdNcdScdNcclccmbEncdVcdUcdXcdWcdZcdYbFOcaAcebcctceaccucedbUececceecegcefceicehcekcejbUecelcembWaceocencencercepceqcetcesbXNceucevbXQcexcewbWgcbdcezceyceBceAceDceCceGcbfceEccZceFceFcbjceHceJceIceLceKceNceMcePceOceSbYjcacbGHceQaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffcfbcdAcfcbYLcfdcbMcfecfgbYMbOwcfhcfjcficflcfkcfncfmcfpcfocfrcfqcfucfscftcftcfxcfvcfvcfvcfvcfvcfvcfwcfAcfycfzcfBcfDcfCcfFcfEcfHcfGcfIcaAcfJcctccucfKcedbUececceecfMcfLcfOcfNcfQcfPbUmcfRcfSbWabWacfUcfUbWacepbWdcfTcfVbWgcfXcfWcfZcfYcgabWgcbdcgccgbcgecgdcghcgfcggcbfcgiccZceFceFcbjcgjcgmcgkcglcgncgpcgocgrcgqcgvbYjcaccgscgtcgscgucgycgucgucguaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhchlchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcgJcgIcgLcgKcgNcgMcgOcgOcgPbYMcgRcgQcgTcgScgScgUcgXcgVcgScgWcgWcgYchbcgZcgWcgWchacclcclchechcchcchcchdchgchcchcchfchichhchhchjchhaCuchkchhchnchmchpcaAchochqcecchschrchtchvchuchwchrbUecelchychxchAchzchCchBchFchDchEchGchLchHchIchJchKchNbWicbdcbdchMchQchOchPchOchRcbfchUchSchTchTcbjchVchXchWbYjbYjbYjbYjbYjbYjbYjbYjcaccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircisciyciubYMcivciwcixcizbYMcgQcgQciCcgSciAciBciEciDciHcgWciFciGciJciIciKcgWciMciLciNchcciPciOciSciQciRciTciVciUciXciWciZciYcjbcjacjdcjccjgcjecjfcjhcjjcjicjkceecjocjlcjmcjncjqcjpbUmcjrcjtcjscjuchCcjvcjvcjxcjwbWgcjycjAcjzcjCcjBcjEaYobWicjFcjHcjGcjIcjGcjGcjLcjJcjKcjPcjMcjNcjOcbjcjQcjRcbnbPtbGGcjTcjScjUcjUcjScjUcjYcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcisckqckobYMbYMbYMbYMbYMbYMckpcgQcksckrckxcktcktcktckucgWckvckwckwckwckzckyckBckAckDckCckFckEckHckGckJckIchcchfckKchhckMckLckOckNckPchhcebccuceaccuckRckQckUckSckTckVckXckWckYchrclackZclcclbclecldclgclfcljclhbWgbWgbWgbWgbWgclicllclkbWiclncjGcjGclmclocjGcltclpcbjclqccZclrclrcbjcbmclscbnbPtcgsclvcgscgscgscgscgscgscgscluclwcguclxclzclycguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncfbcfbclLclOclNclQclPclPclPclTcgQcgQcgQciCcgSclRcktclScktclVcgWckvckwclUckwclWcgWclYclXclZchccmccmacmbcmecmdcmhcmfcmgcmjcmicmlcmkcmocmmcmnchhcfJccuccucmpckRckQcmrcmqcmucjlcmscmtaYqcmvcmycmxcmAcmzcmCcmBcmEcmDcjvcmHchxcmFcmGcmJcmIcmKcmNcmLclpclncmMcjGcjGcjGcmQcmOclpcbjcmPccZclrclrcbjcmTcmRcbnbPtcmScmVcmUcgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
"aa" = (/turf/space,/area/space)
|
||||
"ab" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape)
|
||||
"ac" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"ad" = (/turf/space,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/escape)
|
||||
"ae" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape)
|
||||
"af" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/escape)
|
||||
"ag" = (/obj/machinery/computer/emergency_shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"ah" = (/turf/simulated/shuttle/wall{icon_state = "swallc3"},/area/shuttle/escape)
|
||||
"ai" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"aj" = (/obj/machinery/computer/communications,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"ak" = (/obj/machinery/computer/security{network = list("SS13","Telecomms","Research Outpost","Mining Outpost")},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"al" = (/obj/structure/stool/bed/chair/comfy/blue{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"am" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"an" = (/obj/machinery/computer/crew,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"ao" = (/obj/machinery/computer/robotics,/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"ap" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/escape)
|
||||
"aq" = (/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"ar" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"as" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"at" = (/obj/structure/stool/bed/chair/comfy/red{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"au" = (/obj/structure/stool/bed/chair/comfy/teal{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"av" = (/obj/structure/stool/bed/chair/comfy/purp{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"aw" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/escape)
|
||||
"ax" = (/turf/simulated/shuttle/wall{icon_state = "swall14"; dir = 2},/area/shuttle/escape)
|
||||
"ay" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access_txt = "19"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"az" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
|
||||
"aA" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor4,/area/shuttle/escape)
|
||||
"aB" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "16"},/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"aC" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aE" = (/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aF" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aG" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aH" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
|
||||
"aI" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape)
|
||||
"aJ" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "15"},/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"aK" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aL" = (/obj/machinery/chem_dispenser/beer,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aM" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"aN" = (/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/clothing/mask/cigarette/cigar,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aO" = (/obj/machinery/chem_dispenser/soda,/obj/structure/table/woodentable,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aP" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"aQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape)
|
||||
"aR" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/shuttle/escape)
|
||||
"aS" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/escape)
|
||||
"aT" = (/obj/docking_port/mobile/emergency{dir = 4; dwidth = 11; height = 13; timid = 1; width = 24},/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"aU" = (/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"aV" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "station intercom (General)"; pixel_x = -28},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"aW" = (/obj/machinery/door/window/northleft{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"aX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"aY" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"aZ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"ba" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bb" = (/obj/machinery/door/window/northleft{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bd" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"be" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bf" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bg" = (/obj/structure/grille,/obj/structure/window/full/shuttle{icon_state = "8"},/turf/simulated/floor/plating,/area/shuttle/escape)
|
||||
"bh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bi" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bk" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bm" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bn" = (/obj/machinery/door/window/southright{req_access_txt = "32"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bp" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bq" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"br" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bs" = (/obj/machinery/door/window/southright{req_access_txt = "47"},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/escape)
|
||||
"bu" = (/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bv" = (/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bw" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape)
|
||||
"bx" = (/obj/structure/noticeboard,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape)
|
||||
"by" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = null; name = "Shuttle Cargo Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bz" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bA" = (/obj/machinery/door/window/northleft{req_access_txt = "5"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bB" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bC" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bD" = (/turf/simulated/shuttle/wall{icon_state = "swall11"; dir = 2},/area/shuttle/escape)
|
||||
"bE" = (/obj/machinery/door/airlock/shuttle{aiControlDisabled = 1; hackProof = 1; id_tag = "s_docking_airlock"; name = "Shuttle Hatch"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape)
|
||||
"bF" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bG" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bH" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape)
|
||||
"bI" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/machinery/sleeper,/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bJ" = (/obj/item/device/radio/intercom{dir = 4; name = "station intercom (General)"; pixel_x = 28},/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bK" = (/obj/structure/closet/cardboard,/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bL" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bN" = (/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bO" = (/obj/machinery/sleeper,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel,/area/shuttle/escape)
|
||||
"bP" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/escape)
|
||||
"bQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater,/turf/simulated/floor/plating/airless,/area/shuttle/escape)
|
||||
"bR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/escape)
|
||||
"bS" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/escape)
|
||||
"bT" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape)
|
||||
"bU" = (/turf/space,/area/shuttle/escape)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaabacadaaaaaaaaaa
|
||||
aaaaabaeaeafagahaeaeadaaaa
|
||||
aaabafaiajakalamanaoahadaa
|
||||
aaapaqarasataqaqauavaqapaa
|
||||
aaapaqaqaqaqaqaqaqaqaqapaa
|
||||
abawaeaeaeaxayaeaeaeaeawad
|
||||
apazaAazazaBaCaDaEaCaFaGap
|
||||
apaHaIaIaIaJaCaDaEaCaKaLap
|
||||
apaIaIaIaIaMaCaDaEaCaNaOap
|
||||
aPaIaIaQaQaBaCaDaEaCaRaRac
|
||||
aSaeaeaeaeaJaCaDaEaCaCaCap
|
||||
aTaUaUaUaUaUaUaUaUaUaUaUap
|
||||
apaVaWaXaBaYaUaZaBbabbbcap
|
||||
aBbdbebfbgbhaUbibgbjbkblaB
|
||||
bgbdbebfbgbhaUbibgbjbkblbg
|
||||
aJbmbnboaJbpaUbqaJbrbsbtaJ
|
||||
apbuaUaUaUaUaUaUaUaUaUbvap
|
||||
bwaUaUaUaUaUaUaUaUaUaUaUac
|
||||
aSaebxbyaBbzbAbBaBbCacaebD
|
||||
bEaUaUaUbgbFbGbHbgaUaUbIap
|
||||
acaUaUaUbgbFbGbHbgaUaUbJap
|
||||
apbKbLbLaJbFbGbHaJbNbMbOap
|
||||
bPaxbQbQawaeaeaeawbRbRaxbS
|
||||
aabPbTbTbSbUbUbUbPbTbTbSaa
|
||||
"}
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
#define NUTRITION_LEVEL_FED 350
|
||||
#define NUTRITION_LEVEL_HUNGRY 250
|
||||
#define NUTRITION_LEVEL_STARVING 150
|
||||
#define NUTRITION_LEVEL_CURSED 0
|
||||
|
||||
//Blood levels
|
||||
#define BLOOD_VOLUME_NORMAL 560
|
||||
|
||||
@@ -332,4 +332,6 @@
|
||||
#define STATION_GOAL_BUDGET 1
|
||||
|
||||
#define FIRST_DIAG_STEP 1
|
||||
#define SECOND_DIAG_STEP 2
|
||||
#define SECOND_DIAG_STEP 2
|
||||
|
||||
#define ARBITRARY_VIEWRANGE_NOHUD 2
|
||||
@@ -92,10 +92,14 @@
|
||||
#define APPEARANCE_ALL 32767
|
||||
|
||||
// Intents
|
||||
#define I_HELP "help"
|
||||
#define I_DISARM "disarm"
|
||||
#define I_GRAB "grab"
|
||||
#define I_HARM "harm"
|
||||
#define INTENT_HELP "help"
|
||||
#define INTENT_DISARM "disarm"
|
||||
#define INTENT_GRAB "grab"
|
||||
#define INTENT_HARM "harm"
|
||||
|
||||
// Movement Intents
|
||||
#define MOVE_INTENT_WALK "walk"
|
||||
#define MOVE_INTENT_RUN "run"
|
||||
|
||||
// AI wire/radio settings
|
||||
#define AI_CHECK_WIRELESS 1
|
||||
|
||||
@@ -464,3 +464,7 @@ proc/add_logs(mob/user, mob/target, what_done, var/object=null, var/addition=nul
|
||||
set hidden = 1
|
||||
set name = ".mouse"
|
||||
LogMouseMacro(".mouse", params)
|
||||
|
||||
/proc/update_all_mob_security_hud()
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
H.sec_hud_set_security_status()
|
||||
@@ -169,7 +169,7 @@
|
||||
/mob/proc/RangedAttack(var/atom/A, var/params)
|
||||
if(!mutations.len)
|
||||
return
|
||||
if((LASER in mutations) && a_intent == I_HARM)
|
||||
if((LASER in mutations) && a_intent == INTENT_HARM)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
return
|
||||
else
|
||||
|
||||
@@ -41,14 +41,14 @@
|
||||
static_inventory += using
|
||||
|
||||
using = new /obj/screen/act_intent/alien()
|
||||
using.icon_state = (mymob.a_intent == "hurt" ? "harm" : mymob.a_intent)
|
||||
using.icon_state = (mymob.a_intent == "hurt" ? INTENT_HARM : mymob.a_intent)
|
||||
using.screen_loc = ui_acti
|
||||
static_inventory += using
|
||||
action_intent = using
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = 'icons/mob/screen_alien.dmi'
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
static_inventory += using
|
||||
move_intent = using
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = 'icons/mob/screen_alien.dmi'
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
static_inventory += using
|
||||
move_intent = using
|
||||
|
||||
@@ -36,4 +36,4 @@
|
||||
|
||||
mymob.zone_sel = new /obj/screen/zone_sel/alien()
|
||||
mymob.zone_sel.update_icon(mymob)
|
||||
static_inventory += mymob.zone_sel
|
||||
static_inventory += mymob.zone_sel
|
||||
|
||||
@@ -100,6 +100,15 @@
|
||||
if(display_hud_version > HUD_VERSIONS) //If the requested version number is greater than the available versions, reset back to the first version
|
||||
display_hud_version = 1
|
||||
|
||||
if(mymob.client.view < world.view)
|
||||
if(mymob.client.view < ARBITRARY_VIEWRANGE_NOHUD)
|
||||
to_chat(mymob, "<span class='notice'>HUD is unavailable with this view range.</span>")
|
||||
display_hud_version = HUD_STYLE_NOHUD
|
||||
else
|
||||
if(display_hud_version == HUD_STYLE_STANDARD)
|
||||
to_chat(mymob, "<span class='notice'>Standard HUD mode is unavailable with a smaller-than-normal view range.</span>")
|
||||
display_hud_version = HUD_STYLE_REDUCED
|
||||
|
||||
switch(display_hud_version)
|
||||
if(HUD_STYLE_STANDARD) //Default HUD
|
||||
hud_shown = 1 //Governs behavior of other procs
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = ui_style
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
using = new /obj/screen/mov_intent()
|
||||
using.icon = ui_style
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
|
||||
@@ -70,14 +70,14 @@
|
||||
var/_y = text2num(params2list(params)["icon-y"])
|
||||
|
||||
if(_x<=16 && _y<=16)
|
||||
usr.a_intent_change(I_HARM)
|
||||
usr.a_intent_change(INTENT_HARM)
|
||||
else if(_x<=16 && _y>=17)
|
||||
usr.a_intent_change(I_HELP)
|
||||
usr.a_intent_change(INTENT_HELP)
|
||||
else if(_x>=17 && _y<=16)
|
||||
usr.a_intent_change(I_GRAB)
|
||||
usr.a_intent_change(INTENT_GRAB)
|
||||
|
||||
else if(_x>=17 && _y>=17)
|
||||
usr.a_intent_change(I_DISARM)
|
||||
usr.a_intent_change(INTENT_DISARM)
|
||||
|
||||
else
|
||||
usr.a_intent_change("right")
|
||||
@@ -199,15 +199,15 @@
|
||||
var/mob/living/carbon/C = usr
|
||||
if(C.legcuffed)
|
||||
to_chat(C, "<span class='notice'>You are legcuffed! You cannot run until you get [C.legcuffed] removed!</span>")
|
||||
C.m_intent = "walk" //Just incase
|
||||
C.m_intent = MOVE_INTENT_WALK //Just incase
|
||||
C.hud_used.move_intent.icon_state = "walking"
|
||||
return 1
|
||||
switch(usr.m_intent)
|
||||
if("run")
|
||||
usr.m_intent = "walk"
|
||||
if(MOVE_INTENT_RUN)
|
||||
usr.m_intent = MOVE_INTENT_WALK
|
||||
usr.hud_used.move_intent.icon_state = "walking"
|
||||
if("walk")
|
||||
usr.m_intent = "run"
|
||||
if(MOVE_INTENT_WALK)
|
||||
usr.m_intent = MOVE_INTENT_RUN
|
||||
usr.hud_used.move_intent.icon_state = "running"
|
||||
if(istype(usr,/mob/living/carbon/alien/humanoid))
|
||||
usr.update_icons()
|
||||
|
||||
@@ -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 == I_HARM)
|
||||
if((LASER in mutations) && a_intent == INTENT_HARM)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
|
||||
else if(istype(G) && G.Touch(A,0)) // for magic gloves
|
||||
|
||||
@@ -1173,3 +1173,39 @@
|
||||
suit = /obj/item/clothing/suit/wizrobe/marisa
|
||||
shoes = /obj/item/clothing/shoes/sandal/marisa
|
||||
head = /obj/item/clothing/head/wizard/marisa
|
||||
|
||||
|
||||
/datum/outfit/admin/dark_priest
|
||||
name = "Dark Priest"
|
||||
|
||||
uniform = /obj/item/clothing/under/color/black
|
||||
suit = /obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
head = /obj/item/clothing/head/chaplain_hood
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
l_ear = /obj/item/device/radio/headset/syndicate
|
||||
id = /obj/item/weapon/card/id/syndicate
|
||||
r_hand = /obj/item/weapon/nullrod/armblade
|
||||
backpack_contents = list(
|
||||
/obj/item/weapon/storage/box/survival = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
)
|
||||
|
||||
/datum/outfit/admin/dark_priest/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
var/obj/item/weapon/card/id/I = H.wear_id
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_all_accesses(), "Dark Priest", "syndie")
|
||||
var/obj/item/weapon/nullrod/armblade/B = H.r_hand
|
||||
if(istype(B))
|
||||
B.force = 20
|
||||
B.name = "blessing of the reaper"
|
||||
B.desc = "Sometimes, someone's just gotta die."
|
||||
var/obj/item/device/radio/headset/R = H.l_ear
|
||||
if(istype(R))
|
||||
R.flags |= NODROP
|
||||
var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H)
|
||||
D.implant(H)
|
||||
@@ -39,6 +39,12 @@
|
||||
suffix = "cyb"
|
||||
name = "emergency shuttle (Cyberiad)"
|
||||
|
||||
/datum/map_template/shuttle/emergency/dept
|
||||
suffix = "dept"
|
||||
name = "emergency shuttle (department)"
|
||||
description = "Features include: areas for each department, and a small bar."
|
||||
admin_notes = "Designed to reduce chaos. Each dept requires dept access."
|
||||
|
||||
/datum/map_template/shuttle/emergency/clown
|
||||
suffix = "clown"
|
||||
name = "Snappop(tm)!"
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
|
||||
var/mob/living/L = A
|
||||
if(!L.ckey) return
|
||||
if((oldarea.has_gravity == 0) && (newarea.has_gravity == 1) && (L.m_intent == "run")) // Being ready when you change areas gives you a chance to avoid falling all together.
|
||||
if((oldarea.has_gravity == 0) && (newarea.has_gravity == 1) && (L.m_intent == MOVE_INTENT_RUN)) // Being ready when you change areas gives you a chance to avoid falling all together.
|
||||
thunk(L)
|
||||
|
||||
// Ambience goes down here -- make sure to list each area seperately for ease of adding things in later, thanks! Note: areas adjacent to each other should have the same sounds to prevent cutoff when possible.- LastyScratch
|
||||
@@ -344,7 +344,7 @@
|
||||
if(istype(get_turf(M), /turf/space)) // Can't fall onto nothing.
|
||||
return
|
||||
|
||||
if((istype(M,/mob/living/carbon/human/)) && (M.m_intent == "run")).
|
||||
if((istype(M,/mob/living/carbon/human/)) && (M.m_intent == MOVE_INTENT_RUN)).
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
|
||||
|
||||
+4
-1
@@ -34,6 +34,9 @@
|
||||
//Detective Work, used for the duplicate data points kept in the scanners
|
||||
var/list/original_atom
|
||||
|
||||
//Detective Work, used for allowing a given atom to leave its fibers on stuff. Allowed by default
|
||||
var/can_leave_fibers = TRUE
|
||||
|
||||
var/allow_spin = 1 //Set this to 1 for a _target_ that is being thrown at; if an atom has this set to 1 then atoms thrown AT it will not spin; currently used for the singularity. -Fox
|
||||
|
||||
var/admin_spawned = 0 //was this spawned by an admin? used for stat tracking stuff.
|
||||
@@ -469,4 +472,4 @@
|
||||
/atom/on_varedit(modified_var)
|
||||
if(!Debug2)
|
||||
admin_spawned = TRUE
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -600,13 +600,13 @@
|
||||
thoughts = "haunted by their own mortality"
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
to_chat(user, "<span class='notice'><b>Mood</b>: You sense benevolent thoughts from [M.name].</span>")
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
to_chat(user, "<span class='notice'><b>Mood</b>: You sense cautious thoughts from [M.name].</span>")
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
to_chat(user, "<span class='notice'><b>Mood</b>: You sense hostile thoughts from [M.name].</span>")
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
to_chat(user, "<span class='notice'><b>Mood</b>: You sense cruel thoughts from [M.name].</span>")
|
||||
for(var/mob/living/L in view(7,M))
|
||||
if(L == M)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
icon_living = "brainslug"
|
||||
icon_dead = "brainslug_dead"
|
||||
speed = 5
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
status_flags = CANPUSH
|
||||
attacktext = "nips"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
icon_living = "magicOrange"
|
||||
icon_dead = "magicOrange"
|
||||
speed = 0
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
floating = 1
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
@@ -218,7 +218,7 @@
|
||||
//Fire. Low damage, low resistance, sets mobs on fire when bumping
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire
|
||||
a_intent = I_HELP
|
||||
a_intent = INTENT_HELP
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attack_sound = 'sound/items/Welder.ogg'
|
||||
@@ -340,7 +340,7 @@
|
||||
//Healer
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/healer
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
friendly = "heals"
|
||||
speed = 0
|
||||
melee_damage_lower = 15
|
||||
@@ -362,7 +362,7 @@
|
||||
icon_state = "seal"
|
||||
attacktext = "slaps"
|
||||
speak_emote = list("barks")
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
friendly = "heals"
|
||||
speed = 0
|
||||
melee_damage_lower = 0
|
||||
@@ -398,7 +398,7 @@
|
||||
/mob/living/simple_animal/hostile/guardian/healer/ToggleMode()
|
||||
if(src.loc == summoner)
|
||||
if(toggle)
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
speed = 0
|
||||
damage_transfer = 0.7
|
||||
if(src.adminseal)
|
||||
@@ -408,7 +408,7 @@
|
||||
to_chat(src, "<span class='danger'><B>You switch to combat mode.</span></B>")
|
||||
toggle = FALSE
|
||||
else
|
||||
a_intent = I_HELP
|
||||
a_intent = INTENT_HELP
|
||||
speed = 1
|
||||
damage_transfer = 1
|
||||
if(src.adminseal)
|
||||
@@ -490,7 +490,7 @@
|
||||
armour_penetration = 100
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/ranged
|
||||
a_intent = I_HELP
|
||||
a_intent = INTENT_HELP
|
||||
friendly = "quietly assesses"
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
icon_living = "morph"
|
||||
icon_dead = "morph_dead"
|
||||
speed = 2
|
||||
a_intent = "harm"
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
status_flags = CANPUSH
|
||||
pass_flags = PASSTABLE
|
||||
@@ -168,4 +168,3 @@
|
||||
eat(I)
|
||||
return
|
||||
target.attack_animal(src)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
icon_state = "daemon"
|
||||
icon_living = "daemon"
|
||||
speed = 1
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
stop_automated_movement = 1
|
||||
status_flags = CANPUSH
|
||||
attack_sound = 'sound/misc/demon_attack1.ogg'
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/computer/attack_alien(mob/living/user)
|
||||
if(isalien(user) && user.a_intent == I_HELP)
|
||||
if(isalien(user) && user.a_intent == INTENT_HELP)
|
||||
var/mob/living/carbon/alien/humanoid/xeno = user
|
||||
if(xeno.has_fine_manipulation)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -485,10 +485,6 @@
|
||||
/obj/machinery/computer/secure_data/proc/setTemp(text, list/buttons = list())
|
||||
temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0)
|
||||
|
||||
/obj/machinery/computer/secure_data/proc/update_all_mob_security_hud()
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
H.sec_hud_set_security_status()
|
||||
|
||||
/obj/machinery/computer/secure_data/proc/create_record_photo(datum/data/record/R)
|
||||
// basically copy-pasted from the camera code but different enough that it has to be redone
|
||||
var/icon/photoimage = get_record_photo(R)
|
||||
|
||||
@@ -29,32 +29,51 @@
|
||||
var/timetoset = 0 // Used to set releasetime upon starting the timer
|
||||
var/obj/item/device/radio/Radio
|
||||
var/printed = 0
|
||||
var/datum/data/record/prisoner
|
||||
maptext_height = 26
|
||||
maptext_width = 32
|
||||
|
||||
/obj/machinery/door_timer/proc/print_report()
|
||||
var/logname = input(usr, "Name of the guilty?","[id] log name")
|
||||
var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges")
|
||||
var/logname = input(usr, "Name of the guilty?","[id] log name")
|
||||
var/logcharges = stripped_multiline_input(usr, "What have they been charged with?","[id] log charges")
|
||||
|
||||
if(!logname || !logcharges)
|
||||
return 0
|
||||
if(!logname || !logcharges)
|
||||
return 0
|
||||
|
||||
for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc)
|
||||
P.name = "[id] log - [logname] [worldtime2text()]"
|
||||
P.info = "<center><b>[id] - Brig record</b></center><br><hr><br>"
|
||||
P.info += {"<center>[station_name()] - Security Department</center><br>
|
||||
<center><small><b>Admission data:</b></small></center><br>
|
||||
<small><b>Log generated at:</b> [worldtime2text()]<br>
|
||||
<b>Detainee:</b> [logname]<br>
|
||||
<b>Duration:</b> [timetoset/10] seconds<br>
|
||||
<b>Charge(s):</b> [logcharges]<br>
|
||||
<b>Arresting Officer:</b> [usr.name]<br><hr><br>
|
||||
<small>This log file was generated automatically upon activation of a cell timer.</small>"}
|
||||
for(var/obj/machinery/computer/prisoner/C in prisoncomputer_list)
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(C.loc)
|
||||
P.name = "[id] log - [logname] [worldtime2text()]"
|
||||
P.info = "<center><b>[id] - Brig record</b></center><br><hr><br>"
|
||||
P.info += {"<center>[station_name()] - Security Department</center><br>
|
||||
<center><small><b>Admission data:</b></small></center><br>
|
||||
<small><b>Log generated at:</b> [worldtime2text()]<br>
|
||||
<b>Detainee:</b> [logname]<br>
|
||||
<b>Duration:</b> [timetoset/10] seconds<br>
|
||||
<b>Charge(s):</b> [logcharges]<br>
|
||||
<b>Arresting Officer:</b> [usr.name]<br><hr><br>
|
||||
<small>This log file was generated automatically upon activation of a cell timer.</small>"}
|
||||
|
||||
playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1)
|
||||
cell_logs += P
|
||||
return 1
|
||||
playsound(C.loc, "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1)
|
||||
cell_logs += P
|
||||
|
||||
var/datum/data/record/R = find_security_record("name", logname)
|
||||
Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. \
|
||||
Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z))
|
||||
|
||||
if(R)
|
||||
prisoner = R
|
||||
R.fields["criminal"] = "Incarcerated"
|
||||
var/mob/living/carbon/human/M = usr
|
||||
var/rank = "UNKNOWN RANK"
|
||||
if(istype(M) && M.wear_id)
|
||||
var/obj/item/weapon/card/id/I = M.wear_id
|
||||
rank = I.assignment
|
||||
if(!R.fields["comments"] || !islist(R.fields["comments"])) //copied from security computer code because apparently these need to be initialized
|
||||
R.fields["comments"] = list()
|
||||
R.fields["comments"] += "Autogenerated by [name] on [current_date_string] [worldtime2text()]<BR>Sentenced to [timetoset/10] seconds for the charges of \"[logcharges]\" by [rank] [usr.name]."
|
||||
update_all_mob_security_hud()
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/door_timer/initialize()
|
||||
..()
|
||||
@@ -91,6 +110,7 @@
|
||||
/obj/machinery/door_timer/Destroy()
|
||||
QDEL_NULL(Radio)
|
||||
targets.Cut()
|
||||
prisoner = null
|
||||
return ..()
|
||||
|
||||
//Main door timer loop, if it's timing and time is >0 reduce time by 1.
|
||||
@@ -166,6 +186,10 @@
|
||||
// Reset releasetime
|
||||
releasetime = 0
|
||||
printed = 0
|
||||
if(prisoner)
|
||||
prisoner.fields["criminal"] = "Released"
|
||||
update_all_mob_security_hud()
|
||||
prisoner = null
|
||||
|
||||
for(var/obj/machinery/door/window/brigdoor/door in targets)
|
||||
if(!door.density)
|
||||
@@ -294,6 +318,7 @@
|
||||
timer_start()
|
||||
else
|
||||
timer_end()
|
||||
Radio.autosay("Timer stopped manually by [usr.name].", name, "Security", list(z))
|
||||
|
||||
else
|
||||
if(href_list["tp"]) //adjust timer, close door if not already closed
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
add_fingerprint(user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
|
||||
if(can_force && (!glass || user.a_intent != I_HELP))
|
||||
if(can_force && (!glass || user.a_intent != INTENT_HELP))
|
||||
user.visible_message("<span class='notice'>[user] begins forcing \the [src].</span>", \
|
||||
"<span class='notice'>You begin forcing \the [src].</span>")
|
||||
if(do_after(user, force_open_time, target = src))
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
overlays += I
|
||||
|
||||
/obj/item/hair_dye_bottle/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent != "help")
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
..()
|
||||
return
|
||||
if(!(M in view(1)))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/machinery/flasher/attack_ai(mob/user)
|
||||
if(anchored)
|
||||
return flash()
|
||||
|
||||
|
||||
/obj/machinery/flasher/attack_ghost(mob/user)
|
||||
if(anchored && user.can_advanced_admin_interact())
|
||||
return flash()
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = AM
|
||||
if((M.m_intent != "walk") && (anchored))
|
||||
if((M.m_intent != MOVE_INTENT_WALK) && (anchored))
|
||||
flash()
|
||||
|
||||
/obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
@@ -119,11 +119,11 @@
|
||||
anchored = 1.0
|
||||
use_power = 1
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
|
||||
active_power_usage = 4
|
||||
|
||||
/obj/machinery/flasher_button/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/flasher_button/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
@@ -150,4 +150,4 @@
|
||||
sleep(50)
|
||||
|
||||
icon_state = "launcherbtt"
|
||||
active = 0
|
||||
active = 0
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
/obj/machinery/holosign_switch
|
||||
name = "holosign switch"
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "light1"
|
||||
icon_state = "light0"
|
||||
desc = "A remote control switch for holosign."
|
||||
var/id = null
|
||||
var/active = 0
|
||||
|
||||
@@ -501,7 +501,7 @@
|
||||
to_chat(H, "The boxing machine refuses to acknowledge you unless you face it head on!")
|
||||
return
|
||||
var/damage = 0
|
||||
if(H.a_intent != I_HARM)
|
||||
if(H.a_intent != INTENT_HARM)
|
||||
damage += rand(0,5)
|
||||
else
|
||||
damage += rand(0,10)
|
||||
|
||||
@@ -157,10 +157,10 @@
|
||||
log_message("Toggled zoom mode.")
|
||||
occupant_message("<font color='[zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
|
||||
if(zoom)
|
||||
occupant.client.view = 12
|
||||
occupant.client.AddViewMod("mecha", 12)
|
||||
to_chat(occupant, sound('sound/mecha/imag_enh.ogg',volume=50))
|
||||
else
|
||||
occupant.client.view = initial(occupant.client.view)
|
||||
occupant.client.RemoveViewMod("mecha")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
else if(istype(target,/mob/living))
|
||||
var/mob/living/M = target
|
||||
if(M.stat == DEAD) return
|
||||
if(chassis.occupant.a_intent == I_HARM)
|
||||
if(chassis.occupant.a_intent == INTENT_HARM)
|
||||
M.take_overall_damage(dam_force)
|
||||
if(!M)
|
||||
return
|
||||
@@ -101,11 +101,11 @@
|
||||
else if(istype(target,/mob/living))
|
||||
var/mob/living/M = target
|
||||
if(M.stat == DEAD) return
|
||||
if(chassis.occupant.a_intent == I_HARM)
|
||||
if(chassis.occupant.a_intent == INTENT_HARM)
|
||||
target.visible_message("<span class='danger'>[chassis] destroys [target] in an unholy fury.</span>",
|
||||
"<span class='userdanger'>[chassis] destroys [target] in an unholy fury.</span>")
|
||||
M.gib()
|
||||
/*if(chassis.occupant.a_intent == I_DISARM)
|
||||
/*if(chassis.occupant.a_intent == INTENT_DISARM)
|
||||
target.visible_message("<span class='danger'>[chassis] rips [target]'s arms off.</span>",
|
||||
"<span class='userdanger'>[chassis] rips [target]'s arms off.</span>")*/
|
||||
else
|
||||
|
||||
@@ -748,7 +748,7 @@
|
||||
to_chat(user, "There's not enough wire to finish the task.")
|
||||
return
|
||||
|
||||
else if(isscrewdriver(W) && user.a_intent != I_HARM)
|
||||
else if(isscrewdriver(W) && user.a_intent != INTENT_HARM)
|
||||
if(hasInternalDamage(MECHA_INT_TEMP_CONTROL))
|
||||
clearInternalDamage(MECHA_INT_TEMP_CONTROL)
|
||||
to_chat(user, "<span class='notice'>You repair the damaged temperature controller.</span>")
|
||||
@@ -776,7 +776,7 @@
|
||||
to_chat(user, "<span class='notice'>There's already a powercell installed.</span>")
|
||||
return
|
||||
|
||||
else if(iswelder(W) && user.a_intent != I_HARM)
|
||||
else if(iswelder(W) && user.a_intent != INTENT_HARM)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(health<initial(health))
|
||||
if (WT.remove_fuel(0,user))
|
||||
@@ -1309,7 +1309,7 @@
|
||||
dir = dir_in
|
||||
|
||||
if(L && L.client)
|
||||
L.client.view = world.view
|
||||
L.client.RemoveViewMod("mecha")
|
||||
|
||||
/////////////////////////
|
||||
////// Access stuff /////
|
||||
|
||||
@@ -162,6 +162,8 @@
|
||||
G.endurance -= damage_to_do
|
||||
G.CheckEndurance()
|
||||
return
|
||||
else if(I.sharp)
|
||||
damage_to_do = I.force * 3 // wirecutter: 6->18, knife 10->30, hatchet 12->36
|
||||
if(I.damtype != STAMINA)
|
||||
endurance -= damage_to_do
|
||||
CheckEndurance()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/lastattacker = null
|
||||
|
||||
/obj/item/cardboard_cutout/attack_hand(mob/living/user)
|
||||
if(user.a_intent == I_HELP || pushed_over)
|
||||
if(user.a_intent == INTENT_HELP || pushed_over)
|
||||
return ..()
|
||||
user.visible_message("<span class='warning'>[user] pushes over [src]!</span>", "<span class='danger'>You push over [src]!</span>")
|
||||
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
@@ -185,4 +185,4 @@
|
||||
dir = SOUTH
|
||||
|
||||
/obj/item/cardboard_cutout/adaptive //Purchased by Syndicate agents, these cutouts are indistinguishable from normal cutouts but aren't discolored when their appearance is changed
|
||||
deceptive = TRUE
|
||||
deceptive = TRUE
|
||||
|
||||
@@ -162,7 +162,7 @@ var/list/tape_roll_applications = list()
|
||||
breaktape(W, user)
|
||||
|
||||
/obj/item/tape/attack_hand(mob/user as mob)
|
||||
if(user.a_intent == I_HELP && src.allowed(user))
|
||||
if(user.a_intent == INTENT_HELP && src.allowed(user))
|
||||
user.visible_message("<span class=notice>[user] lifts [src], allowing passage.</span>", "<span class=notice>You lift [src], allowing passage.</span>")
|
||||
src.density = 0
|
||||
spawn(200)
|
||||
@@ -174,7 +174,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 == I_HELP && ((!can_puncture(W) && src.allowed(user))))
|
||||
if(user.a_intent == INTENT_HELP && ((!can_puncture(W) && src.allowed(user))))
|
||||
to_chat(user, "You can't break the [src] with that!")
|
||||
return
|
||||
user.visible_message("<span class=warning>[user] breaks the [src]!</span>", "<span class=warning>You break the [src]!</span>")
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
/obj/item/toy/snappop/Crossed(H as mob|obj)
|
||||
if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off
|
||||
var/mob/living/carbon/M = H
|
||||
if(issilicon(H) || M.m_intent == "run")
|
||||
if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN)
|
||||
to_chat(M, "<span class='danger'>You step on the snap pop!</span>")
|
||||
pop_burst(2, 0)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(armed)
|
||||
if(istype(AM, /mob/living/carbon) && !istype(AM, /mob/living/carbon/brain))
|
||||
var/mob/living/carbon/C = AM
|
||||
if(C.m_intent != "walk")
|
||||
if(C.m_intent != MOVE_INTENT_WALK)
|
||||
src.visible_message("The [src.name] beeps, \"Running on wet floors is hazardous to your health.\"")
|
||||
explosion(src.loc,-1,0,2)
|
||||
if(ishuman(C))
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
//So this is a workaround. This also makes more sense from an IC standpoint. ~Carn
|
||||
if(user.client && (target in user.client.screen))
|
||||
to_chat(user, "<span class='notice'>You need to take that [target.name] off before cleaning it.</span>")
|
||||
else if(target == user && user.a_intent == I_GRAB && ishuman(target))
|
||||
else if(target == user && user.a_intent == INTENT_GRAB && ishuman(target))
|
||||
var/mob/living/carbon/human/muncher = user
|
||||
if(muncher && muncher.get_species() == "Drask")
|
||||
to_chat(user, "You take a bite of the [src.name]. Delicious!")
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
to_chat(user, "<span class='notice'>The instructions on [defib] don't mention how to revive that...</span>")
|
||||
return
|
||||
else
|
||||
if(user.a_intent == I_HARM && !defib.safety)
|
||||
if(user.a_intent == INTENT_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>")
|
||||
@@ -465,7 +465,7 @@
|
||||
to_chat(user, "<span class='notice'>This unit is only designed to work on humanoid lifeforms.</span>")
|
||||
return
|
||||
else
|
||||
if(user.a_intent == I_HARM && !safety)
|
||||
if(user.a_intent == INTENT_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>")
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
//Highlander Style Martial Art
|
||||
// Prevents use of guns, but makes the highlander impervious to ranged attacks. Their bravery in battle shields them from the weapons of COWARDS!
|
||||
|
||||
/datum/martial_art/highlander
|
||||
name = "Highlander Style"
|
||||
deflection_chance = 100
|
||||
no_guns = TRUE
|
||||
no_guns_message = "You'd never stoop so low as to use the weapon of a COWARD!"
|
||||
|
||||
|
||||
//Highlander Claymore
|
||||
// Grants the wielder the Highlander Style Martial Art
|
||||
|
||||
/obj/item/weapon/claymore/highlander
|
||||
name = "Highlander Claymore"
|
||||
desc = "Imbues the wielder with legendary martial prowress and a nigh-unquenchable thirst for glorious battle!"
|
||||
var/datum/martial_art/highlander/style = new
|
||||
|
||||
/obj/item/weapon/claymore/highlander/Destroy()
|
||||
if(ishuman(loc)) //just in case it gets destroyed while in someone's possession, such as due to acid or something?
|
||||
var/mob/living/carbon/human/H = loc
|
||||
style.remove(H)
|
||||
QDEL_NULL(style)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/claymore/highlander/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(slot == slot_r_hand || slot == slot_l_hand)
|
||||
if(H.martial_art && H.martial_art != style)
|
||||
style.teach(H, 1)
|
||||
to_chat(H, "<span class='notice'>THERE CAN ONLY BE ONE!</span>")
|
||||
else if(H.martial_art && H.martial_art == style)
|
||||
style.remove(H)
|
||||
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
|
||||
if(sword)
|
||||
//if we have a highlander sword in the other hand, relearn the style from that sword.
|
||||
sword.style.teach(H, 1)
|
||||
|
||||
/obj/item/weapon/claymore/highlander/dropped(mob/user)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
style.remove(H)
|
||||
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
|
||||
if(sword)
|
||||
//if we have a highlander sword in the other hand, relearn the style from that sword.
|
||||
sword.style.teach(H, 1)
|
||||
@@ -30,3 +30,11 @@
|
||||
circuitry. As a result neurotoxins can cause massive damage.<HR>
|
||||
Implant Specifics:<BR>"}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implantcase/track
|
||||
name = "implant case - 'Tracking'"
|
||||
desc = "A glass case containing a tracking implant."
|
||||
|
||||
/obj/item/weapon/implantcase/track/New()
|
||||
imp = new /obj/item/weapon/implant/tracking(src)
|
||||
..()
|
||||
@@ -40,7 +40,7 @@
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if(user.a_intent != I_HELP)
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
if(user.zone_sel.selecting == "head" || user.zone_sel.selecting == "eyes")
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
M = user
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
toolspeed = 0.75
|
||||
|
||||
/obj/item/weapon/scissors/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent != "help")
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
..()
|
||||
return
|
||||
if(!(M in view(1))) //Adjacency test
|
||||
@@ -101,7 +101,7 @@
|
||||
var/is_cutting = 0 //to prevent spam clicking this for huge accumulation of losebreath.
|
||||
|
||||
/obj/item/weapon/scissors/safety/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent != "help")
|
||||
if(user.a_intent != INTENT_HELP)
|
||||
..()
|
||||
return
|
||||
if(!(M in view(1)))
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
var/mob/living/L = M
|
||||
|
||||
if(user.a_intent != I_HARM)
|
||||
if(user.a_intent != INTENT_HARM)
|
||||
if(status)
|
||||
user.do_attack_animation(L)
|
||||
baton_stun(L, user)
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
return
|
||||
if(!isliving(target))
|
||||
return
|
||||
if(user.a_intent == I_HARM)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
if(!..()) return
|
||||
if(!isrobot(target)) return
|
||||
else
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
src.pixel_y = rand(0, 16)
|
||||
|
||||
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(!istype(M) || user.a_intent == I_HELP)
|
||||
if(!istype(M) || user.a_intent == INTENT_HELP)
|
||||
return ..()
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
@@ -404,7 +404,7 @@
|
||||
if(!S)
|
||||
return
|
||||
|
||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2)
|
||||
if(!(S.status & ORGAN_ROBOT) || user.a_intent != INTENT_HELP || S.open == 2)
|
||||
return ..()
|
||||
|
||||
if(!isOn()) //why wasn't this being checked already?
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
/////////////////
|
||||
// NEW DEFINES //
|
||||
/////////////////
|
||||
|
||||
/client
|
||||
var/viewingCanvas = 0 //If this is 1, as soon as client /TRIES/ to move the view resets.
|
||||
|
||||
///////////
|
||||
// EASEL //
|
||||
///////////
|
||||
@@ -140,20 +133,4 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
|
||||
icon = blank
|
||||
user.visible_message("<span class='notice'>[user] cleans the canvas.</span>","<span class='notice'>You clean the canvas.</span>")
|
||||
|
||||
//Examine to enlarge
|
||||
/obj/item/weapon/canvas/examine(mob/user)
|
||||
..(user)
|
||||
if(in_range(user, src) && get_turf(src) && user.client && ishuman(user)) //Let only humans be the robust zoominators. I'm too spooked other mobs trying to use it may get broken huds.
|
||||
if(src.loc == user || get_turf(src) == get_turf(user))
|
||||
to_chat(user, "<span class='notice'>[src] has to be on the ground to focus on it!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You focus on \the [src].</span>")
|
||||
user.client.screen = list() //This is because screen objects go way past the view bounds we set, therefore not allowing stretch to fit to zoom in properly.
|
||||
user.client.reset_stretch = winget(user.client, "mapwindow.map", "icon-size") //Remember previous icon-size
|
||||
user.client.view = 3 //Decrease view
|
||||
winset(user.client, "mapwindow.map", "icon-size=0") //Enable stretch-to-fit
|
||||
user.client.viewingCanvas = 1 //Reset everything we just changed as soon as client tries to move
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It is too far away.</span>")
|
||||
|
||||
#undef AMT_OF_CANVASES
|
||||
@@ -193,6 +193,9 @@
|
||||
L[tmpname] = R
|
||||
var/desc = input("Please select a telepad.", "RCS") in L
|
||||
E.pad = L[desc]
|
||||
if(!Adjacent(user))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, too far from crate.</span>")
|
||||
return
|
||||
playsound(E.loc, E.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>Teleporting [name]...</span>")
|
||||
E.teleporting = 1
|
||||
@@ -204,17 +207,22 @@
|
||||
to_chat(user, "<span class='warning'>Error: User located in container--aborting for safety.</span>")
|
||||
playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||
return
|
||||
if(!(E.rcell && E.rcell.use(E.chargecost)))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, insufficient charge.</span>")
|
||||
return
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, E.pad, 0)
|
||||
E.rcell.use(E.chargecost)
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>")
|
||||
return
|
||||
else
|
||||
E.rand_x = rand(50,200)
|
||||
E.rand_y = rand(50,200)
|
||||
var/L = locate(E.rand_x, E.rand_y, 6)
|
||||
if(!Adjacent(user))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, too far from crate.</span>")
|
||||
return
|
||||
playsound(E.loc, E.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>Teleporting [name]...</span>")
|
||||
E.teleporting = 1
|
||||
@@ -226,11 +234,13 @@
|
||||
to_chat(user, "<span class='warning'>Error: User located in container--aborting for safety.</span>")
|
||||
playsound(E.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||
return
|
||||
if(!(E.rcell && E.rcell.use(E.chargecost)))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, insufficient charge.</span>")
|
||||
return
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, L)
|
||||
E.rcell.use(E.chargecost)
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>")
|
||||
return
|
||||
else
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
new /obj/item/clothing/suit/storage/det_suit(src)
|
||||
new /obj/item/clothing/suit/storage/det_suit/forensics/blue(src)
|
||||
new /obj/item/clothing/suit/storage/det_suit/forensics/red(src)
|
||||
new /obj/item/clothing/gloves/color/black(src)
|
||||
new /obj/item/clothing/gloves/color/black/forensics(src)
|
||||
new /obj/item/clothing/head/det_hat(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/weapon/storage/box/evidence(src)
|
||||
|
||||
@@ -102,6 +102,9 @@
|
||||
L[tmpname] = R
|
||||
var/desc = input("Please select a telepad.", "RCS") in L
|
||||
E.pad = L[desc]
|
||||
if(!Adjacent(user))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, too far from crate.</span>")
|
||||
return
|
||||
playsound(E.loc, E.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>Teleporting [src.name]...</span>")
|
||||
E.teleporting = 1
|
||||
@@ -109,17 +112,23 @@
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
if(!(E.rcell && E.rcell.use(E.chargecost)))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, insufficient charge.</span>")
|
||||
return
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, E.pad, 0)
|
||||
E.rcell.use(E.chargecost)
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>")
|
||||
return
|
||||
|
||||
else
|
||||
E.rand_x = rand(50,200)
|
||||
E.rand_y = rand(50,200)
|
||||
var/L = locate(E.rand_x, E.rand_y, 6)
|
||||
if(!Adjacent(user))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, too far from crate.</span>")
|
||||
return
|
||||
playsound(E.loc, E.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>Teleporting [src.name]...</span>")
|
||||
E.teleporting = 1
|
||||
@@ -127,11 +136,13 @@
|
||||
E.teleporting = 0
|
||||
return
|
||||
E.teleporting = 0
|
||||
if(!(E.rcell && E.rcell.use(E.chargecost)))
|
||||
to_chat(user, "<span class='notice'>Unable to teleport, insufficient charge.</span>")
|
||||
return
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
do_teleport(src, L)
|
||||
E.rcell.use(E.chargecost)
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(E.rcell.charge/E.chargecost)] charge\s left.</span>")
|
||||
return
|
||||
else
|
||||
|
||||
@@ -261,7 +261,7 @@ var/global/list/captain_display_cases = list()
|
||||
if(W.flags & ABSTRACT)
|
||||
to_chat(user, "<span class='danger'>You can't put this into the case.</span>")
|
||||
return
|
||||
if(user.a_intent == I_HARM)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
if(locked && !destroyed)
|
||||
src.health -= W.force
|
||||
src.healthcheck()
|
||||
@@ -285,14 +285,14 @@ var/global/list/captain_display_cases = list()
|
||||
update_icon()
|
||||
|
||||
/obj/structure/displaycase/attack_hand(mob/user as mob)
|
||||
if(destroyed || (!locked && user.a_intent == I_HARM))
|
||||
if(destroyed || (!locked && user.a_intent == INTENT_HARM))
|
||||
if(occupant)
|
||||
dump()
|
||||
to_chat(user, "<span class='danger'>You smash your fist into the delicate electronics at the bottom of the case, and deactivate the hover field.</span>")
|
||||
src.add_fingerprint(user)
|
||||
update_icon()
|
||||
else
|
||||
if(user.a_intent == I_HARM)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
user.visible_message("<span class='danger'>[user.name] kicks \the [src]!</span>", \
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
if(do_after(user, digTool.digspeed * hardness, target = src) && src)
|
||||
to_chat(user, "<span class='notice'>You finished digging.</span>")
|
||||
deconstruct(TRUE)
|
||||
else if(user.a_intent != I_HARM)
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
attack_hand(user)
|
||||
else
|
||||
attacked_by(W, user)
|
||||
|
||||
@@ -133,7 +133,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(user.a_intent == I_HARM)
|
||||
else if(user.a_intent == INTENT_HARM)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1)
|
||||
user.visible_message("<span class='warning'>[user.name] bangs against the [src.name]!</span>", \
|
||||
|
||||
@@ -101,7 +101,9 @@ var/global/nologevent = 0
|
||||
<br><br>
|
||||
[check_rights(R_ADMIN,0) ? "<A href='?_src_=holder;traitor=\ref[M]'>Traitor panel</A> | " : "" ]
|
||||
<A href='?_src_=holder;narrateto=\ref[M]'>Narrate to</A> |
|
||||
<A href='?_src_=holder;subtlemessage=\ref[M]'>Subtle message</A>
|
||||
<A href='?_src_=holder;subtlemessage=\ref[M]'>Subtle message</A> |
|
||||
<A href='?_src_=holder;Bless=[M.UID()]'>Bless</A> |
|
||||
<A href='?_src_=holder;Smite=[M.UID()]'>Smite</A>
|
||||
"}
|
||||
|
||||
if(M.client)
|
||||
|
||||
+100
-1
@@ -1546,7 +1546,7 @@
|
||||
to_chat(X, take_msg)
|
||||
else if(is_mhelp && check_rights(R_MOD|R_MENTOR, 0, X.mob))
|
||||
to_chat(X, take_msg)
|
||||
to_chat(M, "<span class='notice'><b>Your question is being attended to by [key_name(usr.client)]. Thanks for your patience!</b></span>")
|
||||
to_chat(M, "<span class='notice'><b>Your question is being attended to by [key_name(usr.client, null, 0)]. Thanks for your patience!</b></span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Unable to locate mob.</span>")
|
||||
|
||||
@@ -1790,9 +1790,15 @@
|
||||
H = M
|
||||
ptypes += "Brain Damage"
|
||||
ptypes += "Honk Tumor"
|
||||
ptypes += "Hallucinate"
|
||||
ptypes += "Cold"
|
||||
ptypes += "Hunger"
|
||||
ptypes += "Cluwne"
|
||||
ptypes += "Mutagen Cookie"
|
||||
ptypes += "Hellwater Cookie"
|
||||
ptypes += "Assassin"
|
||||
ptypes += "Priest"
|
||||
ptypes += "Lynch"
|
||||
var/punishment = input(owner, "How would you like to smite [M]?", "Its good to be baaaad...", "") as null|anything in ptypes
|
||||
if(!(punishment in ptypes))
|
||||
return
|
||||
@@ -1820,6 +1826,15 @@
|
||||
to_chat(H, "<span class='userdanger'>Life seems funnier, somehow.</span>")
|
||||
organ.insert(H)
|
||||
logmsg = "a honk tumor."
|
||||
if("Hallucinate")
|
||||
H.Hallucinate(1000)
|
||||
logmsg = "hallucinations."
|
||||
if("Hunger")
|
||||
H.nutrition = NUTRITION_LEVEL_CURSED
|
||||
logmsg = "starvation."
|
||||
if("Cold")
|
||||
H.reagents.add_reagent("frostoil", 40)
|
||||
H.reagents.add_reagent("ice", 40)
|
||||
if("Cluwne")
|
||||
H.makeCluwne()
|
||||
logmsg = "cluwned."
|
||||
@@ -1828,6 +1843,7 @@
|
||||
evilcookie.reagents.add_reagent("mutagen", 10)
|
||||
evilcookie.desc = "It has a faint green glow."
|
||||
evilcookie.bitesize = 100
|
||||
evilcookie.flags = NODROP
|
||||
H.drop_l_hand()
|
||||
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
|
||||
logmsg = "a mutagen cookie."
|
||||
@@ -1836,9 +1852,92 @@
|
||||
evilcookie.reagents.add_reagent("hell_water", 25)
|
||||
evilcookie.desc = "Sulphur-flavored."
|
||||
evilcookie.bitesize = 100
|
||||
evilcookie.flags = NODROP
|
||||
H.drop_l_hand()
|
||||
H.equip_to_slot_or_del(evilcookie, slot_l_hand)
|
||||
logmsg = "a hellwater cookie."
|
||||
if("Priest")
|
||||
logmsg = "priest."
|
||||
H.mutations |= NOCLONE
|
||||
message_admins("[key_name_admin(owner)] is sending a dark priest to assassinate [key_name_admin(M)]...")
|
||||
var/list/candidates = pollCandidates("Do you want to play as a murderous dark priest?")
|
||||
if(!candidates.len)
|
||||
to_chat(usr, "ERROR: Could not create priest. No valid candidates.")
|
||||
return
|
||||
var/mob/C = pick(candidates)
|
||||
var/key_of_priest = C.key
|
||||
if(!key_of_priest)
|
||||
to_chat(usr, "ERROR: Could not create priest. Could not pick key.")
|
||||
return
|
||||
var/datum/mind/priest_mind = new /datum/mind(key_of_priest)
|
||||
priest_mind.active = 1
|
||||
var/mob/living/carbon/human/priest_mob = new /mob/living/carbon/human(pick(latejoin))
|
||||
priest_mind.transfer_to(priest_mob)
|
||||
var/datum/outfit/admin/dark_priest/O = new /datum/outfit/admin/dark_priest
|
||||
priest_mob.equipOutfit(O, FALSE)
|
||||
var/obj/item/weapon/pinpointer/advpinpointer/N = new /obj/item/weapon/pinpointer/advpinpointer(priest_mob)
|
||||
priest_mob.equip_to_slot_or_del(N, slot_r_store)
|
||||
N.active = 1
|
||||
N.mode = 2
|
||||
N.target = H
|
||||
N.point_at(N.target)
|
||||
N.flags |= NODROP
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = priest_mind
|
||||
kill_objective.target = H.mind
|
||||
kill_objective.explanation_text = "Murder [H.real_name], the [H.mind.assigned_role], in the name of the dark gods."
|
||||
priest_mind.objectives += kill_objective
|
||||
ticker.mode.traitors |= priest_mob.mind
|
||||
to_chat(priest_mob, "<span class='danger'>ATTENTION:</span> You are now a dark priest!")
|
||||
to_chat(priest_mob, "<B>Goal: <span class='danger'>MURDER [H.real_name]</span>, currently in [get_area(H.loc)], in the name of the dark gods. </B>");
|
||||
to_chat(priest_mob, "<B>The gods will prevent their revival.</B>");
|
||||
priest_mob.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
|
||||
tatorhud.join_hud(priest_mob)
|
||||
ticker.mode.set_antag_hud(priest_mob, "hudsyndicate")
|
||||
if("Assassin")
|
||||
logmsg = "assassin."
|
||||
var/list/possible_traitors = list()
|
||||
for(var/mob/living/player in living_mob_list)
|
||||
if(player.client && player.mind && !player.mind.special_role && player.stat != DEAD && player != H)
|
||||
if(ishuman(player))
|
||||
if(player.client && (ROLE_TRAITOR in player.client.prefs.be_special) && !jobban_isbanned(player, ROLE_TRAITOR) && !jobban_isbanned(player, "Syndicate"))
|
||||
possible_traitors += player.mind
|
||||
for(var/datum/mind/player in possible_traitors)
|
||||
if(player.current)
|
||||
if(ismindshielded(player.current))
|
||||
possible_traitors -= player
|
||||
if(possible_traitors.len)
|
||||
var/datum/mind/newtraitormind = pick(possible_traitors)
|
||||
var/mob/living/newtraitor = newtraitormind.current
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = newtraitormind
|
||||
kill_objective.target = H.mind
|
||||
kill_objective.explanation_text = "Assassinate [H.real_name], the [H.mind.assigned_role]."
|
||||
newtraitormind.objectives += kill_objective
|
||||
ticker.mode.equip_traitor(newtraitor)
|
||||
ticker.mode.traitors |= newtraitor.mind
|
||||
to_chat(newtraitor, "<span class='danger'>ATTENTION:</span> It is time to pay your debt to the Syndicate...")
|
||||
to_chat(newtraitor, "<B>You are now a traitor.</B>")
|
||||
to_chat(newtraitor, "<B>Goal: <span class='danger'>KILL [H.real_name]</span>, currently in [get_area(H.loc)]</B>");
|
||||
newtraitor.mind.special_role = SPECIAL_ROLE_TRAITOR
|
||||
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
|
||||
tatorhud.join_hud(newtraitor)
|
||||
ticker.mode.set_antag_hud(newtraitor, "hudsyndicate")
|
||||
else
|
||||
to_chat(usr, "ERROR: Failed to create a traitor.")
|
||||
return
|
||||
if("Lynch")
|
||||
logmsg = "lynch."
|
||||
for(var/datum/mind/crew in ticker.minds)
|
||||
if(!crew.current)
|
||||
continue
|
||||
if(!isliving(crew.current))
|
||||
continue
|
||||
if(crew == H.mind)
|
||||
continue
|
||||
to_chat(crew.current, "<BR><span class='userdanger'>The gods have given you a task: find [H.real_name], located in [get_area(H.loc)], and slay them!</span>");
|
||||
to_chat(crew.current, "<span class='userdanger'>Do not harm anyone other than [H.real_name] while carrying out this task.</span><BR>");
|
||||
if("Gib")
|
||||
logmsg = "gibbed."
|
||||
M.gib(FALSE)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/claymore/highlander(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store)
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
if(armed)
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
if(H.m_intent == MOVE_INTENT_RUN)
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
|
||||
@@ -76,8 +76,6 @@
|
||||
"off" = "borgmacro")
|
||||
)
|
||||
|
||||
var/reset_stretch = 0 //Used by things that fiddle with client's stretch-to-fit.
|
||||
|
||||
var/topic_debugging = 0 //if set to true, allows client to see nanoUI errors -- yes i realize this is messy but it'll make live testing infinitely easier
|
||||
|
||||
control_freak = CONTROL_FREAK_ALL | CONTROL_FREAK_SKIN | CONTROL_FREAK_MACROS
|
||||
@@ -93,7 +91,7 @@
|
||||
|
||||
// Donator stuff.
|
||||
var/donator_level = DONATOR_LEVEL_NONE
|
||||
|
||||
|
||||
// If set to true, this client can interact with atoms such as buttons and doors on top of regular machinery interaction
|
||||
var/advanced_admin_interaction = FALSE
|
||||
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* ViewMods Client module
|
||||
* This should be used by anything that wants to change a client's view range.
|
||||
* Also includes
|
||||
*/
|
||||
|
||||
/* Defines */
|
||||
#define CUSTOM_VIEWRANGES list(1, 2, 3, 4, 5, 6, "RESET")
|
||||
|
||||
/* Viewmods */
|
||||
/client
|
||||
var/list/ViewMods = list()
|
||||
var/ViewModsActive = FALSE
|
||||
var/ViewPreferedIconSize = 0
|
||||
|
||||
/client/proc/AddViewMod(id, size)
|
||||
var/datum/viewmod/V = new /datum/viewmod(id, size)
|
||||
ViewMods[V.id] = V
|
||||
UpdateView()
|
||||
|
||||
/client/proc/CheckViewMod(id)
|
||||
. = 0
|
||||
if(ViewMods[id])
|
||||
. = 1
|
||||
|
||||
/client/proc/RemoveViewMod(id)
|
||||
if(CheckViewMod(id))
|
||||
qdel(ViewMods[id])
|
||||
ViewMods.Remove(id)
|
||||
UpdateView()
|
||||
|
||||
/client/proc/UpdateView()
|
||||
if(!ViewModsActive)
|
||||
ViewPreferedIconSize = winget(src, "mapwindow.map", "icon-size")
|
||||
|
||||
var/highest_range = 0
|
||||
for(var/mod_id in ViewMods)
|
||||
var/datum/viewmod/V = ViewMods[mod_id]
|
||||
highest_range = max(highest_range, V.size)
|
||||
|
||||
SetView(highest_range ? highest_range : world.view)
|
||||
ViewModsActive = (highest_range > 0)
|
||||
|
||||
/client/proc/SetView(view_range)
|
||||
if(view_range == world.view)
|
||||
winset(src, "mapwindow.map", "icon-size=[ViewPreferedIconSize]")
|
||||
else
|
||||
winset(src, "mapwindow.map", "icon-size=0")
|
||||
|
||||
view = view_range
|
||||
|
||||
if(mob && mob.hud_used)
|
||||
// If view range is less than world.view, assume the HUD will not fit under normal mode and turn it to reduced
|
||||
if(view_range < world.view)
|
||||
// If it's really tiny, turn their hud off completely
|
||||
if(view_range <= ARBITRARY_VIEWRANGE_NOHUD)
|
||||
mob.hud_used.show_hud(HUD_STYLE_NOHUD)
|
||||
else
|
||||
mob.hud_used.show_hud(HUD_STYLE_REDUCED)
|
||||
else
|
||||
mob.hud_used.show_hud(HUD_STYLE_STANDARD)
|
||||
|
||||
/* Viewmod datums */
|
||||
/datum/viewmod
|
||||
var/id = ""
|
||||
var/size = -1
|
||||
|
||||
/datum/viewmod/New(new_id, new_size = world.view)
|
||||
. = ..()
|
||||
id = new_id
|
||||
size = new_size
|
||||
|
||||
/* Client verbs */
|
||||
/proc/viewNum_to_text(view)
|
||||
return "[(view * 2) + 1]x[(view * 2) + 1]"
|
||||
|
||||
/client/verb/set_view_range(view_range as null|anything in CUSTOM_VIEWRANGES)
|
||||
set name = "Set View Range"
|
||||
set category = "Preferences"
|
||||
|
||||
if(!view_range)
|
||||
return
|
||||
|
||||
RemoveViewMod("custom")
|
||||
if(view_range == "RESET")
|
||||
to_chat(src, "<span class='notice'>View range reset.</span>")
|
||||
return
|
||||
|
||||
to_chat(src, "<span class='notice'>View range set to [viewNum_to_text(view_range)]</span>")
|
||||
AddViewMod("custom", view_range)
|
||||
@@ -421,7 +421,7 @@ BLIND // can't see anything
|
||||
if(!istype(H) || !istype(T))
|
||||
return 0
|
||||
|
||||
if(H.m_intent == "run")
|
||||
if(H.m_intent == MOVE_INTENT_RUN)
|
||||
if(shoe_sound_footstep >= 2)
|
||||
if(T.shoe_running_volume)
|
||||
playsound(src, shoe_sound, T.shoe_running_volume, 1)
|
||||
|
||||
@@ -17,6 +17,13 @@
|
||||
icon_state = "black"
|
||||
item_state = "r_hands"
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/color/black/forensics
|
||||
name = "forensics gloves"
|
||||
desc = "These high-tech gloves don't leave any material traces on objects they touch. Perfect for leaving crime scenes undisturbed...both before and after the crime."
|
||||
icon_state = "forensics"
|
||||
can_leave_fibers = FALSE
|
||||
|
||||
/obj/item/clothing/gloves/combat
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
@@ -82,7 +89,7 @@
|
||||
return FALSE
|
||||
if(cell)
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.a_intent == I_HARM)
|
||||
if(H.a_intent == INTENT_HARM)
|
||||
var/mob/living/carbon/C = A
|
||||
if(cell.use(stun_cost))
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
@@ -124,4 +131,4 @@
|
||||
to_chat(user, "<span class='notice'>You cut [cell] away from [src].</span>")
|
||||
cell.forceMove(get_turf(loc))
|
||||
cell = null
|
||||
update_icon()
|
||||
update_icon()
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj))
|
||||
to_chat(user, "<span class='warning'>You need an empty hand to draw the [holstered]!</span>")
|
||||
else
|
||||
if(user.a_intent == I_HARM)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
usr.visible_message("<span class='warning'>[user] draws the [holstered], ready to shoot!</span></span>", \
|
||||
"<span class='warning'>You draw the [holstered], ready to shoot!</span>")
|
||||
else
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
usesound = 'sound/items/Welder2.ogg'
|
||||
|
||||
/obj/item/device/fluff/tattoo_gun/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.a_intent == "harm")
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
user.visible_message("<span class='warning'>[user] stabs [M] with the [src]!</span>", "<span class='warning'>You stab [M] with the [src]!</span>")
|
||||
to_chat(M, "<span class='userdanger'>[user] stabs you with the [src]!<br></span><span class = 'warning'>You feel a tiny prick!</span>")
|
||||
return
|
||||
|
||||
@@ -16,33 +16,33 @@ atom/proc/add_fibers(mob/living/carbon/human/M)
|
||||
var/item_multiplier = istype(src,/obj/item)?1.2:1
|
||||
if(M.wear_suit)
|
||||
fibertext = "Material from \a [M.wear_suit]."
|
||||
if(prob(10*item_multiplier) && !(fibertext in suit_fibers))
|
||||
if(prob(10*item_multiplier) && !(fibertext in suit_fibers) && M.wear_suit.can_leave_fibers)
|
||||
//log_to_dd("Added fibertext: [fibertext]")
|
||||
suit_fibers += fibertext
|
||||
if(!(M.wear_suit.body_parts_covered & UPPER_TORSO))
|
||||
if(M.w_uniform)
|
||||
fibertext = "Fibers from \a [M.w_uniform]."
|
||||
if(prob(12*item_multiplier) && !(fibertext in suit_fibers)) //Wearing a suit means less of the uniform exposed.
|
||||
if(prob(12*item_multiplier) && !(fibertext in suit_fibers) && M.w_uniform.can_leave_fibers) //Wearing a suit means less of the uniform exposed.
|
||||
//log_to_dd("Added fibertext: [fibertext]")
|
||||
suit_fibers += fibertext
|
||||
if(!(M.wear_suit.body_parts_covered & HANDS))
|
||||
if(M.gloves)
|
||||
fibertext = "Material from a pair of [M.gloves.name]."
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers)
|
||||
//log_to_dd("Added fibertext: [fibertext]")
|
||||
suit_fibers += fibertext
|
||||
else if(M.w_uniform)
|
||||
fibertext = "Fibers from \a [M.w_uniform]."
|
||||
if(prob(15*item_multiplier) && !(fibertext in suit_fibers))
|
||||
if(prob(15*item_multiplier) && !(fibertext in suit_fibers) && M.w_uniform.can_leave_fibers)
|
||||
// "Added fibertext: [fibertext]"
|
||||
suit_fibers += fibertext
|
||||
if(M.gloves)
|
||||
fibertext = "Material from a pair of [M.gloves.name]."
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers)
|
||||
//log_to_dd("Added fibertext: [fibertext]")
|
||||
suit_fibers += "Material from a pair of [M.gloves.name]."
|
||||
else if(M.gloves)
|
||||
fibertext = "Material from a pair of [M.gloves.name]."
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers))
|
||||
if(prob(20*item_multiplier) && !(fibertext in suit_fibers) && M.gloves.can_leave_fibers)
|
||||
//log_to_dd("Added fibertext: [fibertext]")
|
||||
suit_fibers += "Material from a pair of [M.gloves.name]."
|
||||
suit_fibers += "Material from a pair of [M.gloves.name]."
|
||||
|
||||
@@ -513,7 +513,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 == I_HELP) //Cats can try to fish in open tanks on help intent
|
||||
if(M.a_intent == INTENT_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
|
||||
@@ -535,7 +535,7 @@
|
||||
else
|
||||
attack_generic(M, M.harm_intent_damage)
|
||||
else if(istype(M, /mob/living/simple_animal/hostile/bear))
|
||||
if(M.a_intent == I_HELP) //Bears can try to fish in open tanks on help intent
|
||||
if(M.a_intent == INTENT_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
|
||||
@@ -555,7 +555,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 == I_HARM) //Let any simple_animal try to break tanks when on harm intent
|
||||
else if(M.a_intent == INTENT_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()
|
||||
@@ -575,7 +575,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 == I_HARM)
|
||||
else if(usr.a_intent == INTENT_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>", \
|
||||
@@ -611,7 +611,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 == I_HELP)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
if(W.isOn())
|
||||
if(cur_health < max_health)
|
||||
playsound(loc, W.usesound, 50, 1)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(user.a_intent != I_HARM || !isGlass)
|
||||
if(user.a_intent != INTENT_HARM || !isGlass)
|
||||
return ..()
|
||||
|
||||
force = 15 //Smashing bottles over someoen's head hurts.
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(canopened == 0)
|
||||
to_chat(user, "<span class='notice'>You need to open the drink!</span>")
|
||||
return
|
||||
else if(M == user && !reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head")
|
||||
else if(M == user && !reagents.total_volume && user.a_intent == INTENT_HARM && user.zone_sel.selecting == "head")
|
||||
user.visible_message("<span class='warning'>[user] crushes ["\the [src]"] on \his forehead!</span>", "<span class='notice'>You crush \the [src] on your forehead.</span>")
|
||||
crush(user)
|
||||
return
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/biogenerator/attackby(obj/item/O, mob/user, params)
|
||||
if(user.a_intent == I_HARM)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
return ..()
|
||||
|
||||
if(processing)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
to_chat(user, "<span class='notice'>You add [O] to [name].</span>")
|
||||
updateUsrDialog()
|
||||
return
|
||||
else if(user.a_intent != I_HARM)
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
to_chat(user, "<span class='warning'>You can't extract any seeds from \the [O.name]!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
var/datum/martial_art/base = null // The permanent style
|
||||
var/deflection_chance = 0 //Chance to deflect projectiles
|
||||
var/help_verb = null
|
||||
var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them.
|
||||
var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!)
|
||||
|
||||
/datum/martial_art/proc/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
return 0
|
||||
@@ -207,7 +209,7 @@
|
||||
to_chat(user, "<span class='warning'>It would be dishonorable to attack a foe while they cannot retaliate.</span>")
|
||||
return
|
||||
switch(user.a_intent)
|
||||
if("disarm")
|
||||
if(INTENT_DISARM)
|
||||
if(!wielded)
|
||||
return ..()
|
||||
if(!ishuman(target))
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
name = "The Sleeping Carp"
|
||||
deflection_chance = 100
|
||||
help_verb = /mob/living/carbon/human/proc/sleeping_carp_help
|
||||
no_guns = TRUE
|
||||
no_guns_message = "Use of ranged weaponry would bring dishonor to the clan."
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(findtext(streak,WRIST_WRENCH_COMBO))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
status_flags = CANSTUN|CANWEAKEN|CANPUSH
|
||||
mouse_opacity = 1
|
||||
faction = list("neutral")
|
||||
a_intent = I_HARM
|
||||
a_intent = INTENT_HARM
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
wander = 0
|
||||
@@ -93,7 +93,7 @@
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M)
|
||||
if(M.a_intent == I_HELP)
|
||||
if(M.a_intent == INTENT_HELP)
|
||||
toggle_mode()
|
||||
switch(mode)
|
||||
if(MINEDRONE_COLLECT)
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
/mob/proc/hear_sleep(var/message)
|
||||
var/heard = ""
|
||||
if(prob(15))
|
||||
message = strip_html_properly(message)
|
||||
var/list/punctuation = list(",", "!", ".", ";", "?")
|
||||
var/list/messages = splittext(message, " ")
|
||||
var/R = rand(1, messages.len)
|
||||
|
||||
@@ -273,7 +273,7 @@ Des: Removes all infected images from the alien.
|
||||
if(T.footstep_sounds["xeno"])
|
||||
var/S = pick(T.footstep_sounds["xeno"])
|
||||
if(S)
|
||||
if(m_intent == "run")
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
if(!(step_count % 2)) //every other turf makes a sound
|
||||
return 0
|
||||
|
||||
@@ -281,7 +281,7 @@ Des: Removes all infected images from the alien.
|
||||
range -= 0.666 //-(7 - 2) = (-5) = -5 | -5 - (0.666) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4)
|
||||
var/volume = 5
|
||||
|
||||
if(m_intent == "walk")
|
||||
if(m_intent == MOVE_INTENT_WALK)
|
||||
return 0 //silent when walking
|
||||
|
||||
if(buckled || lying || throwing)
|
||||
|
||||
@@ -15,7 +15,7 @@ In all, this is a lot like the monkey code. /N
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
AdjustSleeping(-5)
|
||||
resting = 0
|
||||
AdjustParalysis(-3)
|
||||
@@ -23,7 +23,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(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
return 1
|
||||
|
||||
@@ -50,11 +50,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(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
help_shake_act(M)
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
if(I_HARM, I_DISARM)
|
||||
if(INTENT_HARM, INTENT_DISARM)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/hunter/handle_environment()
|
||||
if(m_intent == "run" || resting)
|
||||
if(m_intent == MOVE_INTENT_RUN || resting)
|
||||
..()
|
||||
else
|
||||
adjustPlasma(-heal_rate)
|
||||
|
||||
@@ -160,13 +160,13 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
M.do_attack_animation(src)
|
||||
var/damage = rand(1, 9)
|
||||
if(prob(90))
|
||||
@@ -191,7 +191,7 @@
|
||||
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<span class='danger'>[M] has attempted to punch [src]!</span>")
|
||||
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
if(!lying)
|
||||
if(prob(5))//Very small chance to push an alien down.
|
||||
Paralyse(2)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
else if(lying || resting)
|
||||
icon_state = "alien[caste]_sleep"
|
||||
else if(m_intent == "run")
|
||||
else if(m_intent == MOVE_INTENT_RUN)
|
||||
icon_state = "alien[caste]_running"
|
||||
else
|
||||
icon_state = "alien[caste]_s"
|
||||
|
||||
@@ -127,10 +127,10 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
else
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
if(.)
|
||||
if(nutrition && stat != DEAD)
|
||||
nutrition -= hunger_drain / 10
|
||||
if(m_intent == "run")
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= hunger_drain / 10
|
||||
if((FAT in mutations) && m_intent == "run" && bodytemperature <= 360)
|
||||
if((FAT in mutations) && m_intent == MOVE_INTENT_RUN && bodytemperature <= 360)
|
||||
bodytemperature += 2
|
||||
|
||||
// Moving around increases germ_level faster
|
||||
@@ -936,7 +936,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
|
||||
|
||||
/mob/living/carbon/proc/slip(var/description, var/stun, var/weaken, var/tilesSlipped, var/walkSafely, var/slipAny)
|
||||
if(flying || buckled || (walkSafely && m_intent == "walk"))
|
||||
if(flying || buckled || (walkSafely && m_intent == MOVE_INTENT_WALK))
|
||||
return 0
|
||||
if((lying) && (!(tilesSlipped)))
|
||||
return 0
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/mob/living/carbon/attackby(obj/item/I, mob/user, params)
|
||||
if(lying)
|
||||
if(surgeries.len)
|
||||
if(user != src && user.a_intent == "help")
|
||||
if(user != src && user.a_intent == INTENT_HELP)
|
||||
for(var/datum/surgery/S in surgeries)
|
||||
if(S.next_step(user, src))
|
||||
return 1
|
||||
@@ -37,4 +37,4 @@
|
||||
for(var/datum/disease/D in user.viruses)
|
||||
if(D.IsSpreadByTouch())
|
||||
ContractDisease(D)
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob)
|
||||
|
||||
switch(L.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
|
||||
|
||||
|
||||
@@ -1985,8 +1985,8 @@
|
||||
to_chat(src, "<span class='warning'>Your fingers don't fit in the trigger guard!</span>")
|
||||
return 0
|
||||
|
||||
if(martial_art && martial_art.name == "The Sleeping Carp") //great dishonor to famiry
|
||||
to_chat(src, "<span class='warning'>Use of ranged weaponry would bring dishonor to the clan.</span>")
|
||||
if(martial_art && martial_art.no_guns) //great dishonor to famiry
|
||||
to_chat(src, "<span class='warning'>[martial_art.no_guns_message]</span>")
|
||||
return 0
|
||||
|
||||
return .
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
return 0
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
M.do_attack_animation(src)
|
||||
if(w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
@@ -33,7 +33,7 @@
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
updatehealth()
|
||||
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
M.do_attack_animation(src)
|
||||
if(prob(80))
|
||||
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
..()
|
||||
|
||||
if((M != src) && M.a_intent != "help" && check_shields(0, M.name, attack_type = UNARMED_ATTACK))
|
||||
if((M != src) && M.a_intent != INTENT_HELP && check_shields(0, M.name, attack_type = UNARMED_ATTACK))
|
||||
add_logs(M, src, "attempted to touch")
|
||||
visible_message("<span class='warning'>[M] attempted to touch [src]!</span>")
|
||||
return 0
|
||||
@@ -53,7 +53,7 @@
|
||||
species.handle_attack_hand(src,M)
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
if(attacker_style && attacker_style.help_act(H, src))//adminfu only...
|
||||
return 1
|
||||
if(can_operate(src))
|
||||
@@ -99,14 +99,14 @@
|
||||
else
|
||||
to_chat(M, "<span class='danger'>You need to stay still while performing CPR!</span>")
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
if(attacker_style && attacker_style.grab_act(H, src))
|
||||
return 1
|
||||
else
|
||||
src.grabbedby(M)
|
||||
return 1
|
||||
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
//Vampire code
|
||||
if(M.mind && M.mind.vampire && (M.mind in ticker.mode.vampires) && !M.mind.vampire.draining && M.zone_sel && M.zone_sel.selecting == "head" && src != M)
|
||||
if(species && species.flags & NO_BLOOD)//why this hell were we never checkinf for this?
|
||||
@@ -168,7 +168,7 @@
|
||||
forcesay(hit_appends)
|
||||
|
||||
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
if(attacker_style && attacker_style.disarm_act(H, src))
|
||||
return 1
|
||||
else
|
||||
|
||||
@@ -191,7 +191,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/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == I_HARM)
|
||||
if((istype(I, /obj/item/weapon/kitchen/knife/butcher/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == INTENT_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
|
||||
@@ -378,7 +378,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 == I_HARM)
|
||||
if(M.occupant.a_intent == INTENT_HARM)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
|
||||
|
||||
@@ -47,12 +47,12 @@
|
||||
if(T.footstep_sounds["human"])
|
||||
var/S = pick(T.footstep_sounds["human"])
|
||||
if(S)
|
||||
if(m_intent == "run")
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
if(!(step_count % 2)) //every other turf makes a sound
|
||||
return 0
|
||||
|
||||
var/range = -(world.view - 2)
|
||||
if(m_intent == "walk")
|
||||
if(m_intent == MOVE_INTENT_WALK)
|
||||
range -= 0.333
|
||||
if(!shoes)
|
||||
range -= 0.333
|
||||
@@ -65,7 +65,7 @@
|
||||
//-(7 - 2) = (-5) = -5 | -5 - (0.333 * 2) = -5.666 | (7 + -5.666) = 1.334 | 1.334 * 3 = 4.002 | range(4.002) = range(4)
|
||||
|
||||
var/volume = 13
|
||||
if(m_intent == "walk")
|
||||
if(m_intent == MOVE_INTENT_WALK)
|
||||
volume -= 4
|
||||
if(!shoes)
|
||||
volume -= 4
|
||||
@@ -91,4 +91,4 @@
|
||||
playsound(T, S, volume, 1, range)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@@ -638,7 +638,7 @@
|
||||
if(canmove)
|
||||
if((graytide || (TRAITS & TRAIT_MEAN)) || retal)
|
||||
interest += targetInterestShift
|
||||
a_intent = "harm"
|
||||
a_intent = INTENT_HARM
|
||||
zone_sel.selecting = pick("chest","r_leg","l_leg","r_arm","l_arm","head")
|
||||
doing |= SNPC_FIGHTING
|
||||
if(retal)
|
||||
@@ -746,7 +746,7 @@
|
||||
tryWalk(TARGET)
|
||||
else
|
||||
if(Adjacent(TARGET))
|
||||
a_intent = pick("disarm", "harm")
|
||||
a_intent = pick(INTENT_DISARM, INTENT_HARM)
|
||||
M.attack_hand(src)
|
||||
timeout++
|
||||
else if(timeout >= 10 || !(targetRange(M) > 14))
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
var/mob/living/M = target
|
||||
if(istype(M))
|
||||
if(health > 0)
|
||||
if(M.a_intent == "help" && !incapacitated())
|
||||
if(M.a_intent == INTENT_HELP && !incapacitated())
|
||||
chatter()
|
||||
if(istype(target, /mob/living/carbon) && !retal && prob(SNPC_FUZZY_CHANCE_LOW))
|
||||
var/mob/living/carbon/C = target
|
||||
@@ -439,7 +439,7 @@
|
||||
tryWalk(target)
|
||||
else
|
||||
C.help_shake_act(src)
|
||||
if(M.a_intent == "harm")
|
||||
if(M.a_intent == INTENT_HARM)
|
||||
retal = 1
|
||||
retal_target = target
|
||||
|
||||
@@ -658,7 +658,7 @@
|
||||
if(grabbed_by.len > 0)
|
||||
for(var/obj/item/weapon/grab/G in grabbed_by)
|
||||
if(Adjacent(G))
|
||||
a_intent = "disarm"
|
||||
a_intent = INTENT_DISARM
|
||||
G.assailant.attack_hand(src)
|
||||
inactivity_period = 10
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
/datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M)
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
if(M.a_intent == I_HARM)
|
||||
if(M.a_intent == INTENT_HARM)
|
||||
if(H.handcuffed)
|
||||
if(!H.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) return
|
||||
var/turf/p_loc = M.loc
|
||||
|
||||
@@ -1092,8 +1092,8 @@ var/global/list/damage_icon_parts = list()
|
||||
if(legcuffed)
|
||||
overlays_standing[LEGCUFF_LAYER] = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "legcuff1")
|
||||
throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
|
||||
if(m_intent != "walk")
|
||||
m_intent = "walk"
|
||||
if(m_intent != MOVE_INTENT_WALK)
|
||||
m_intent = MOVE_INTENT_WALK
|
||||
if(hud_used && hud_used.move_intent)
|
||||
hud_used.move_intent.icon_state = "walking"
|
||||
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
|
||||
switch(L.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
|
||||
|
||||
|
||||
@@ -322,7 +322,7 @@
|
||||
return
|
||||
else
|
||||
if(stat == DEAD && surgeries.len)
|
||||
if(M.a_intent == I_HELP)
|
||||
if(M.a_intent == INTENT_HELP)
|
||||
for(var/datum/surgery/S in surgeries)
|
||||
if(S.next_step(M, src))
|
||||
return 1
|
||||
@@ -343,10 +343,10 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
help_shake_act(M)
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
else
|
||||
@@ -393,10 +393,10 @@
|
||||
return
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
|
||||
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
M.do_attack_animation(src)
|
||||
if(prob(95))
|
||||
attacked += 10
|
||||
@@ -416,10 +416,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(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
M.do_attack_animation(src)
|
||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
var/damage = 5
|
||||
@@ -460,7 +460,7 @@
|
||||
|
||||
/mob/living/carbon/slime/attackby(obj/item/W, mob/user, params)
|
||||
if(stat == DEAD && surgeries.len)
|
||||
if(user.a_intent == I_HELP)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
for(var/datum/surgery/S in surgeries)
|
||||
if(S.next_step(user, src))
|
||||
return 1
|
||||
|
||||
@@ -60,10 +60,10 @@
|
||||
if(!M.buckled && !M.has_buckled_mobs())
|
||||
var/mob_swap
|
||||
//the puller can always swap with it's victim if on grab intent
|
||||
if(M.pulledby == src && a_intent == I_GRAB)
|
||||
if(M.pulledby == src && a_intent == INTENT_GRAB)
|
||||
mob_swap = 1
|
||||
//restrained people act if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
|
||||
else if((M.restrained() || M.a_intent == I_HELP) && (restrained() || a_intent == I_HELP))
|
||||
else if((M.restrained() || M.a_intent == INTENT_HELP) && (restrained() || a_intent == INTENT_HELP))
|
||||
mob_swap = 1
|
||||
if(mob_swap)
|
||||
//switch our position with M
|
||||
@@ -176,7 +176,7 @@
|
||||
return 0
|
||||
var/obj/item/hand_item = get_active_hand()
|
||||
if(istype(hand_item, /obj/item/weapon/gun) && A != hand_item)
|
||||
if(a_intent == I_HELP || !ismob(A))
|
||||
if(a_intent == INTENT_HELP || !ismob(A))
|
||||
visible_message("<b>[src]</b> points to [A] with [hand_item]")
|
||||
return 1
|
||||
A.visible_message("<span class='danger'>[src] points [hand_item] at [A]!</span>",
|
||||
@@ -937,11 +937,11 @@
|
||||
. += config.run_speed
|
||||
else
|
||||
switch(m_intent)
|
||||
if("run")
|
||||
if(MOVE_INTENT_RUN)
|
||||
if(drowsyness > 0)
|
||||
. += 6
|
||||
. += config.run_speed
|
||||
if("walk")
|
||||
if(MOVE_INTENT_WALK)
|
||||
. += config.walk_speed
|
||||
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
|
||||
/mob/living/mech_melee_attack(obj/mecha/M)
|
||||
if(M.occupant.a_intent == I_HARM)
|
||||
if(M.occupant.a_intent == INTENT_HARM)
|
||||
if(M.damtype == "brute")
|
||||
step_away(src,M,15)
|
||||
switch(M.damtype)
|
||||
|
||||
@@ -677,7 +677,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
visible_message("<span class='notice'>[M] caresses [src]'s plating with its scythe like arm.</span>")
|
||||
|
||||
else //harm
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if((O.client && !( O.blinded )))
|
||||
O.show_message(text("<span class='notice'>[M] caresses [src]'s casing with its scythe like arm.</span>"), 1)
|
||||
@@ -508,7 +508,7 @@
|
||||
/mob/living/silicon/pai/attack_hand(mob/user as mob)
|
||||
if(stat == DEAD)
|
||||
return
|
||||
if(user.a_intent == I_HELP)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
user.visible_message("<span class='notice'>[user] pets [src].</span>")
|
||||
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
else
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
//Actual picking-up event.
|
||||
/mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob)
|
||||
if(M.a_intent == I_HELP)
|
||||
if(M.a_intent == INTENT_HELP)
|
||||
get_scooped(M)
|
||||
|
||||
..()
|
||||
|
||||
@@ -575,7 +575,7 @@ var/list/robot_verbs_default = list(
|
||||
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP)
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == INTENT_HELP)
|
||||
if(W == module_active)
|
||||
return
|
||||
if(!getBruteLoss())
|
||||
@@ -594,7 +594,7 @@ var/list/robot_verbs_default = list(
|
||||
return
|
||||
|
||||
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == I_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == INTENT_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
|
||||
if(!getFireLoss())
|
||||
to_chat(user, "<span class='notice'>Nothing to fix!</span>")
|
||||
return
|
||||
@@ -818,15 +818,15 @@ var/list/robot_verbs_default = list(
|
||||
|
||||
switch(M.a_intent)
|
||||
|
||||
if(I_HELP)
|
||||
if(INTENT_HELP)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if((O.client && !( O.blinded )))
|
||||
O.show_message(text("<span class='notice'>[M] caresses [src]'s plating with its scythe like arm.</span>"), 1)
|
||||
|
||||
if(I_GRAB)
|
||||
if(INTENT_GRAB)
|
||||
grabbedby(M)
|
||||
|
||||
if(I_HARM)
|
||||
if(INTENT_HARM)
|
||||
M.do_attack_animation(src)
|
||||
var/damage = rand(10, 20)
|
||||
if(prob(90))
|
||||
@@ -842,7 +842,7 @@ var/list/robot_verbs_default = list(
|
||||
visible_message("<span class='danger'>[M] took a swipe at [src]!</span>", \
|
||||
"<span class='userdanger'>[M] took a swipe at [src]!</span>")
|
||||
|
||||
if(I_DISARM)
|
||||
if(INTENT_DISARM)
|
||||
if(!(lying))
|
||||
M.do_attack_animation(src)
|
||||
if(prob(85))
|
||||
@@ -923,7 +923,7 @@ var/list/robot_verbs_default = list(
|
||||
diag_hud_set_borgcell()
|
||||
|
||||
if(!opened && (!istype(user, /mob/living/silicon)))
|
||||
if(user.a_intent == I_HELP)
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
user.visible_message("<span class='notice'>[user] pets [src]!</span>", \
|
||||
"<span class='notice'>You pet [src]!</span>")
|
||||
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
new /obj/effect/decal/cleanable/blood/oil(loc)
|
||||
|
||||
/mob/living/simple_animal/bot/attack_hand(mob/living/carbon/human/H)
|
||||
if(H.a_intent == "help")
|
||||
if(H.a_intent == INTENT_HELP)
|
||||
interact(H)
|
||||
else
|
||||
return ..()
|
||||
@@ -329,7 +329,7 @@
|
||||
ejectpai(user)
|
||||
else
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
|
||||
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != INTENT_HARM)
|
||||
if(health >= maxHealth)
|
||||
to_chat(user, "<span class='warning'>[src] does not need a repair!</span>")
|
||||
return
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user