From fe4490a295f17c922a1e16aa8f4627c87526203f Mon Sep 17 00:00:00 2001 From: Mloc Date: Sun, 26 Jul 2015 20:53:13 +0100 Subject: [PATCH 01/20] fixes #10316 Signed-off-by: Mloc --- code/game/objects/items/weapons/tools.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 5f83f325818..aa2a8734a6b 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -211,8 +211,12 @@ /obj/item/weapon/weldingtool/process() - if(welding && prob(5) && !remove_fuel(1)) - setWelding(0) + if(welding) + if(prob(5)) + remove_fuel(1) + + if(get_fuel() == 0) + setWelding(0) //I'm not sure what this does. I assume it has to do with starting fires... //...but it doesnt check to see if the welder is on or not. From 1d8e015334db1077a1607af9f4e88d51c6adcdd8 Mon Sep 17 00:00:00 2001 From: Mloc Date: Mon, 27 Jul 2015 10:49:51 +0100 Subject: [PATCH 02/20] fixes #10141 also clean up alloy_data handling Signed-off-by: Mloc --- code/modules/mining/alloys.dm | 4 ++-- code/modules/mining/machine_processing.dm | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/mining/alloys.dm b/code/modules/mining/alloys.dm index 9461c1e6b92..dac05badd02 100644 --- a/code/modules/mining/alloys.dm +++ b/code/modules/mining/alloys.dm @@ -12,7 +12,7 @@ metaltag = "plasteel" requires = list( "platinum" = 1, - "coal" = 2, + "carbon" = 2, "hematite" = 2 ) product_mod = 0.3 @@ -21,7 +21,7 @@ /datum/alloy/steel metaltag = DEFAULT_WALL_MATERIAL requires = list( - "coal" = 1, + "carbon" = 1, "hematite" = 1 ) product = /obj/item/stack/material/steel \ No newline at end of file diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 649dee1e1e5..0eb8bdaa1f8 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -112,16 +112,17 @@ var/sheets_per_tick = 10 var/list/ores_processing[0] var/list/ores_stored[0] - var/list/alloy_data[0] + var/static/list/alloy_data var/active = 0 /obj/machinery/mineral/processing_unit/New() - ..() - //TODO: Ore and alloy global storage datum. - for(var/alloytype in typesof(/datum/alloy)-/datum/alloy) - alloy_data += new alloytype() + // initialize static alloy_data list + if(!alloy_data) + alloy_data = list() + for(var/alloytype in typesof(/datum/alloy)-/datum/alloy) + alloy_data += new alloytype() if(!ore_data || !ore_data.len) for(var/oretype in typesof(/ore)-/ore) From aab326e05f3089783d4c287de571933499c6fcfe Mon Sep 17 00:00:00 2001 From: Mloc Date: Mon, 27 Jul 2015 11:40:37 +0100 Subject: [PATCH 03/20] fixes #10232 makes lights trigger on forceMove using a vg change Signed-off-by: Mloc --- code/modules/lighting/lighting_atom.dm | 14 +++----------- code/modules/lighting/lighting_overlay.dm | 2 ++ code/modules/lighting/lighting_turf.dm | 10 ++++++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 92500ecc1d9..6968a4ed63f 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -46,21 +46,13 @@ T.reconsider_lights() return ..() -/atom/movable/Move() - var/turf/old_loc = loc +/atom/Entered(atom/movable/obj, atom/prev_loc) . = ..() - if(loc != old_loc) - for(var/datum/light_source/L in light_sources) + if(obj && prev_loc != src) + for(var/datum/light_source/L in obj.light_sources) L.source_atom.update_light() - var/turf/new_loc = loc - if(istype(old_loc) && opacity) - old_loc.reconsider_lights() - - if(istype(new_loc) && opacity) - new_loc.reconsider_lights() - /atom/proc/set_opacity(new_opacity) var/old_opacity = opacity opacity = new_opacity diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm index ca9d9b391f5..2dd3889e4e9 100644 --- a/code/modules/lighting/lighting_overlay.dm +++ b/code/modules/lighting/lighting_overlay.dm @@ -98,3 +98,5 @@ var/turf/T = loc if(istype(T)) T.lighting_overlay = null + + ..() diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm index a7a59907097..e261931c41c 100644 --- a/code/modules/lighting/lighting_turf.dm +++ b/code/modules/lighting/lighting_turf.dm @@ -16,3 +16,13 @@ if(A.lighting_use_dynamic) var/atom/movable/lighting_overlay/O = PoolOrNew(/atom/movable/lighting_overlay, src) lighting_overlay = O + +/turf/Entered(atom/movable/obj) + . = ..() + if(obj && obj.opacity) + reconsider_lights() + +/turf/Exited(atom/movable/obj) + . = ..() + if(obj && obj.opacity) + reconsider_lights() From e10a1f3e0137c0d345da0d7a2e24ca547da40de6 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Tue, 28 Jul 2015 10:48:22 +0200 Subject: [PATCH 04/20] Mercenaries/Raiders should now have proper headset again - This should fix #10313 --- code/game/antagonist/antagonist_create.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm index 3e6585f6b9e..502f1366839 100644 --- a/code/game/antagonist/antagonist_create.dm +++ b/code/game/antagonist/antagonist_create.dm @@ -42,7 +42,13 @@ return W /datum/antagonist/proc/create_radio(var/freq, var/mob/living/carbon/human/player) - var/obj/item/device/radio/R = new /obj/item/device/radio/headset(player) + var/obj/item/device/radio/R + + if(freq == SYND_FREQ) + R = new/obj/item/device/radio/headset/syndicate(player) + else + R = new/obj/item/device/radio/headset(player) + R.set_frequency(freq) player.equip_to_slot_or_del(R, slot_l_ear) return R From 2fb1d74444a7ea741c6009ed4ef110b11feb39e3 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Tue, 28 Jul 2015 12:34:57 +0200 Subject: [PATCH 05/20] Telecommunications adjustment - This commit attempts to resolve #7294 - Common and AI Private channels are now separate from other non-department frequencies. I hope this will reduce load on Common server, therefore mitigating the overload? problems that may cause duplication of messages. - Another server has been added, which handles all non-department non-common frequencies. This server is likely to be under minimal load so i hope the duplication bug shouldn't happen again. - Unmaps one broadcaster and receiver from telecomms in another attempt to remove duplication --- code/game/machinery/telecomms/presets.dm | 45 +++++++++--------------- maps/exodus-3.dmm | 15 ++++---- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 35c2ecdc1f5..18b5d849af8 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -40,8 +40,8 @@ id = "Hub" network = "tcommsat" autolinkers = list("hub", "relay", "c_relay", "s_relay", "m_relay", "r_relay", "science", "medical", - "supply", "service", "common", "command", "engineering", "security", - "receiverA", "receiverB", "broadcasterA", "broadcasterB") + "supply", "service", "common", "command", "engineering", "security", "unused", + "receiverA", "broadcasterA") /obj/machinery/telecomms/hub/preset_cent id = "CentComm Hub" @@ -52,22 +52,11 @@ //Receivers -//--PRESET LEFT--// - -/obj/machinery/telecomms/receiver/preset_left +/obj/machinery/telecomms/receiver/preset_right id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ) // science, medical, supply, service - - -//--PRESET RIGHT--// - -/obj/machinery/telecomms/receiver/preset_right - id = "Receiver B" - network = "tcommsat" - autolinkers = list("receiverB") // link to relay - freq_listening = list(COMM_FREQ, ENG_FREQ, SEC_FREQ) //command, engineering, security + freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) //Common and other radio frequencies for people to freely use New() @@ -95,7 +84,7 @@ id = "Bus 2" network = "tcommsat" freq_listening = list(SUP_FREQ, SRV_FREQ) - autolinkers = list("processor2", "supply", "service") + autolinkers = list("processor2", "supply", "service", "unused") /obj/machinery/telecomms/bus/preset_three id = "Bus 3" @@ -169,7 +158,7 @@ id = "Supply Server" freq_listening = list(SUP_FREQ) autolinkers = list("supply") - + /obj/machinery/telecomms/server/presets/service id = "Service Server" freq_listening = list(SRV_FREQ) @@ -177,14 +166,19 @@ /obj/machinery/telecomms/server/presets/common id = "Common Server" - freq_listening = list() + freq_listening = list(1447, 1459) // AI Private and Common autolinkers = list("common") - //Common and other radio frequencies for people to freely use - // 1441 to 1489 -/obj/machinery/telecomms/server/presets/common/New() +// "Unused" channels, AKA all others. +/obj/machinery/telecomms/server/presets/unused + id = "Unused Server" + freq_listening = list() + autolinkers = list("unused") + +/obj/machinery/telecomms/server/presets/unused/New() for(var/i = 1441, i < 1489, i += 2) freq_listening |= i + freq_listening -= list(1447, 1459) ..() /obj/machinery/telecomms/server/presets/command @@ -213,18 +207,11 @@ //--PRESET LEFT--// -/obj/machinery/telecomms/broadcaster/preset_left +/obj/machinery/telecomms/broadcaster/preset_right id = "Broadcaster A" network = "tcommsat" autolinkers = list("broadcasterA") -//--PRESET RIGHT--// - -/obj/machinery/telecomms/broadcaster/preset_right - id = "Broadcaster B" - network = "tcommsat" - autolinkers = list("broadcasterB") - /obj/machinery/telecomms/broadcaster/preset_cent id = "CentComm Broadcaster" network = "tcommsat" diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm index f747f6627b4..7154dd56a3e 100644 --- a/maps/exodus-3.dmm +++ b/maps/exodus-3.dmm @@ -240,8 +240,8 @@ "eF" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/turf/simulated/floor,/area/turret_protected/tcomsat) "eG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Central Compartment North"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eH" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/telecom{c_tag = "Telecoms Storage"},/turf/simulated/floor,/area/turret_protected/tcomsat) -"eI" = (/obj/machinery/telecomms/broadcaster/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"eJ" = (/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"eI" = (/obj/machinery/telecomms/server/presets/unused,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"eJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/telecomms/broadcaster/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eK" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/space,/area/turret_protected/tcomsat) "eL" = (/obj/machinery/airlock_sensor/airlock_interior{frequency = 1381; id_tag = "server_access_in_sensor"; master_tag = "server_access_airlock"; name = "interior sensor"; pixel_x = 8; pixel_y = 25},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) @@ -270,8 +270,8 @@ "fj" = (/obj/machinery/telecomms/bus/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fk" = (/obj/machinery/telecomms/processor/preset_one,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fl" = (/obj/machinery/bluespacerelay,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fm" = (/obj/machinery/telecomms/receiver/preset_left,/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fn" = (/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fm" = (/turf/simulated/floor{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"fn" = (/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fo" = (/obj/machinery/telecomms/processor/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fp" = (/obj/machinery/telecomms/bus/preset_three,/turf/simulated/floor{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/space,/area/turret_protected/tcomsat) @@ -400,6 +400,7 @@ "hJ" = (/obj/machinery/door/airlock/hatch{name = "Telecoms East Wing"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/turret_protected/tcomfoyer) "hK" = (/obj/structure/grille/broken,/turf/simulated/floor/plating/airless,/area/AIsattele) "hL" = (/obj/structure/grille/broken,/turf/space,/area/AIsattele) +"hM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/telecomms/receiver/preset_right,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -524,11 +525,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUbYcecfchdTchdUdIcCdwdwdwdwdwfefBfAgcgbdwdwfDdwdwdUebfCchdTchcfcebYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJedeedwefefefegekeieGefdZeLeBeleodwdUebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaacacacacacacacacacacacacacacacacacaaabYcecfcichcicJemendwefelelelecelepelecelelelefdwdUebcPeqerescfcecebYaUcacacacacacacacacacacacacacacacacaaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJeteudwefevewelecelexeleceleyezefdweAgdcPeCeDeHeFcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacacEbYcecfcichcicJebejdwefeleleleceIexeJecelelelefdweKeheMeNeOePeQcfcebYeEcaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJeteudwefeveweIeceleJeleceleyezefdweAgdcPeCeDeHeFcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacacEbYcecfcichcicJebejdwefelelelecfmexfnecelelelefdweKeheMeNeOePeQcfcebYeEcaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaeScdcecfchchchdUdIeTdweUeVeWeXdZefeYefdZeZfafbfcdwfdeadnfffgfhficfcecdeScaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaacaaabYcecfcichcicJdIcPdweffjfkflecfmexfnecflfofpefdwcJebfqfrfsftfucfcebYaacaaaaaaaaaaaaUaaaaaaaaaUaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJebcPdwefelelelecelexelecelelelefdwcJebcPeCfvfwfxcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZcaaabYcecfcichcicJebcPdwefelelelecelhMelecelelelefdwcJebcPeCfvfwfxcfcebYaacabZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaacacacacacacacacacacacacacacacacacaaabYcecfcichcicJdIcPdweffyfzgsgtelepelgugyfEfFefdwcJebcPfGerescfcecebYaUcacacacacacacacacacacacacacacacacaaUbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaaaabYcecfcichcicJdIcPdwefefeffHefefgFefeffJefefefdwcJebcPcichcicfcebYbYaaaUbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZbZaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYbYcecfchdTchdUebcCdwdwdwdwdwdwdwfKdwdwdwdwdwdwdwdUebcCchdTchcfcebYbYbYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 57e8d07085d340557a299c180a928271c0ce2346 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Tue, 28 Jul 2015 13:29:50 +0100 Subject: [PATCH 06/20] Adds a log_and_message_admins call to cult communication rune --- code/game/gamemodes/cult/runes.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index f7c638be9b3..f79c5ce88fa 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -598,6 +598,7 @@ var/list/sacrificed = list() usr.say("[input]") else usr.whisper("[input]") + log_and_message_admins("used a communicate rune to say '[input]'") for(var/datum/mind/H in ticker.mode.cult) if (H.current) H.current << "\red \b [input]" From 07daa25de950c5f20160446ddeca56168f044d70 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Wed, 29 Jul 2015 11:17:42 +0200 Subject: [PATCH 07/20] Updates telecommunications presets - Changes some hardcoded frequency numbers i used to use proper constants. - Fixes non-common channels not working due to signal not getting to the server. --- code/game/machinery/telecomms/presets.dm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 18b5d849af8..f91fd2d40c5 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -86,6 +86,13 @@ freq_listening = list(SUP_FREQ, SRV_FREQ) autolinkers = list("processor2", "supply", "service", "unused") +/obj/machinery/telecomms/bus/preset_two/New() + for(var/i = 1441, i < 1489, i += 2) + if(i == AI_FREQ || i == PUB_FREQ) + continue + freq_listening |= i + ..() + /obj/machinery/telecomms/bus/preset_three id = "Bus 3" network = "tcommsat" @@ -95,14 +102,9 @@ /obj/machinery/telecomms/bus/preset_four id = "Bus 4" network = "tcommsat" - freq_listening = list(ENG_FREQ) + freq_listening = list(ENG_FREQ, AI_FREQ, PUB_FREQ) autolinkers = list("processor4", "engineering", "common") -/obj/machinery/telecomms/bus/preset_four/New() - for(var/i = 1441, i < 1489, i += 2) - freq_listening |= i - ..() - /obj/machinery/telecomms/bus/preset_cent id = "CentComm Bus" network = "tcommsat" @@ -166,7 +168,7 @@ /obj/machinery/telecomms/server/presets/common id = "Common Server" - freq_listening = list(1447, 1459) // AI Private and Common + freq_listening = list(PUB_FREQ, AI_FREQ) // AI Private and Common autolinkers = list("common") // "Unused" channels, AKA all others. @@ -177,8 +179,9 @@ /obj/machinery/telecomms/server/presets/unused/New() for(var/i = 1441, i < 1489, i += 2) + if(i == AI_FREQ || i == PUB_FREQ) + continue freq_listening |= i - freq_listening -= list(1447, 1459) ..() /obj/machinery/telecomms/server/presets/command From 55e41b9afd19e57d3d69e21d73c90b3b03ceddf1 Mon Sep 17 00:00:00 2001 From: Atlantis Date: Wed, 29 Jul 2015 20:19:31 +0200 Subject: [PATCH 08/20] Fixes #10356 - Maintenance drone law reset no longer spam admin's logs. --- code/modules/mob/living/silicon/laws.dm | 15 +++++++++------ .../mob/living/silicon/robot/drone/drone.dm | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index 69d957fbaf9..c4a4d634488 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -39,20 +39,23 @@ laws.delete_law(law) log_and_message_admins("has deleted a law belonging to [src]: [law.law]") -/mob/living/silicon/proc/clear_inherent_laws() +/mob/living/silicon/proc/clear_inherent_laws(var/silent = 0) laws_sanity_check() laws.clear_inherent_laws() - log_and_message_admins("cleared the inherent laws of [src]") + if(!silent) + log_and_message_admins("cleared the inherent laws of [src]") -/mob/living/silicon/proc/clear_ion_laws() +/mob/living/silicon/proc/clear_ion_laws(var/silent = 0) laws_sanity_check() laws.clear_ion_laws() - log_and_message_admins("cleared the ion laws of [src]") + if(!silent) + log_and_message_admins("cleared the ion laws of [src]") -/mob/living/silicon/proc/clear_supplied_laws() +/mob/living/silicon/proc/clear_supplied_laws(var/silent = 0) laws_sanity_check() laws.clear_supplied_laws() - log_and_message_admins("cleared the supplied laws of [src]") + if(!silent) + log_and_message_admins("cleared the supplied laws of [src]") /mob/living/silicon/proc/statelaws(var/datum/ai_laws/laws) var/prefix = "" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 754129ce547..201d5ecdb92 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -217,9 +217,9 @@ death() /mob/living/silicon/robot/drone/proc/full_law_reset() - clear_supplied_laws() - clear_inherent_laws() - clear_ion_laws() + clear_supplied_laws(1) + clear_inherent_laws(1) + clear_ion_laws(1) laws = new law_type //Reboot procs. From d384150a48b2649a6ce430ba4c144da4b1b47369 Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 29 Jul 2015 16:31:36 -0400 Subject: [PATCH 09/20] Fixes wound max_bleeding_stage oddness The max_bleeding_stage given to /datum/wound/cut/flesh led to "Doctor places a bandaid on Patient's flesh wound." Also fixed the bleeding stage for stumps, so that "bloody stump" counts as a bleeding stage. --- code/modules/organs/wound.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index 8f39b91555a..b5e6113aa9c 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -248,6 +248,7 @@ /** CUTS **/ /datum/wound/cut/small // link wound descriptions to amounts of damage + // All cuts have max_bleeding_stage set to the stage that bears the wound type's name. max_bleeding_stage = 2 stages = list("ugly ripped cut" = 20, "ripped cut" = 10, "cut" = 5, "healing cut" = 2, "small scab" = 0) damage_type = CUT @@ -258,7 +259,7 @@ damage_type = CUT /datum/wound/cut/flesh - max_bleeding_stage = 4 + max_bleeding_stage = 3 stages = list("ugly ripped flesh wound" = 35, "ugly flesh wound" = 30, "flesh wound" = 25, "blood soaked clot" = 15, "large scab" = 5, "fresh skin" = 0) damage_type = CUT @@ -279,7 +280,7 @@ datum/wound/cut/massive /** BRUISES **/ /datum/wound/bruise - stages = list("monumental bruise" = 80, "huge bruise" = 50, "large bruise" = 30,\ + stages = list("monumental bruise" = 80, "huge bruise" = 50, "large bruise" = 30, "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5) max_bleeding_stage = 3 autoheal_cutoff = 30 @@ -323,7 +324,7 @@ datum/wound/cut/massive switch(losstype) if(DROPLIMB_EDGE, DROPLIMB_BLUNT) damage_type = CUT - max_bleeding_stage = 3 + max_bleeding_stage = 2 stages = list( "ripped stump" = damage_amt*1.3, "bloody stump" = damage_amt, @@ -332,7 +333,6 @@ datum/wound/cut/massive ) if(DROPLIMB_BURN) damage_type = BURN - max_bleeding_stage = 1 stages = list( "ripped charred stump" = damage_amt*1.3, "charred stump" = damage_amt, From 3d10955ccb68ea37ea275ab27b991dbbf69b500b Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 29 Jul 2015 16:46:50 -0400 Subject: [PATCH 10/20] Adds missing clot stages to gaping_big and massive cuts. Without the clot stages the jump between the next two stages was abnormally large, and the values given for max_bleeding_stage did not make much sense. --- code/modules/organs/wound.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index b5e6113aa9c..d544840612c 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -270,12 +270,12 @@ /datum/wound/cut/gaping_big max_bleeding_stage = 2 - stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large angry scar" = 10, "large straight scar" = 0) + stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large clot" = 20, "large angry scar" = 10, "large straight scar" = 0) damage_type = CUT datum/wound/cut/massive max_bleeding_stage = 2 - stages = list("massive wound" = 70, "massive healing wound" = 50, "massive angry scar" = 10, "massive jagged scar" = 0) + stages = list("massive wound" = 70, "massive healing wound" = 50, "large clot" = 20, "massive angry scar" = 10, "massive jagged scar" = 0) damage_type = CUT /** BRUISES **/ From 171991faf8669d62a3744595b45eadfcbe14b99f Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 29 Jul 2015 16:53:31 -0400 Subject: [PATCH 11/20] Attempts to prevent future max_bleeding_stage confusion max_bleeding_stage no longer switches itself around in New(). Instead, the value given refers directly to the index of the maximum bleeding stage. Should also make wound datums more friendly to initial(), if that's ever needed. --- code/modules/organs/wound.dm | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index d544840612c..81a3fb92fcb 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -36,9 +36,8 @@ var/list/stages // internal wounds can only be fixed through surgery var/internal = 0 - // maximum stage at which bleeding should still happen, counted from the right rather than the left of the list - // 1 means all stages except the last should bleed - var/max_bleeding_stage = 1 + // maximum stage at which bleeding should still happen. Beyond this stage bleeding is prevented. + var/max_bleeding_stage = 0 // one of CUT, BRUISE, BURN var/damage_type = CUT // whether this wound needs a bandage/salve to heal at all @@ -64,8 +63,6 @@ src.damage = damage - max_bleeding_stage = src.desc_list.len - max_bleeding_stage - // initialize with the appropriate stage src.init_stage(damage) @@ -248,8 +245,9 @@ /** CUTS **/ /datum/wound/cut/small // link wound descriptions to amounts of damage - // All cuts have max_bleeding_stage set to the stage that bears the wound type's name. - max_bleeding_stage = 2 + // Minor cuts have max_bleeding_stage set to the stage that bears the wound type's name. + // The major cut types have the max_bleeding_stage set to the clot stage. + max_bleeding_stage = 3 stages = list("ugly ripped cut" = 20, "ripped cut" = 10, "cut" = 5, "healing cut" = 2, "small scab" = 0) damage_type = CUT @@ -264,17 +262,17 @@ damage_type = CUT /datum/wound/cut/gaping - max_bleeding_stage = 2 + max_bleeding_stage = 3 stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "large clot" = 15, "small angry scar" = 5, "small straight scar" = 0) damage_type = CUT /datum/wound/cut/gaping_big - max_bleeding_stage = 2 + max_bleeding_stage = 3 stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large clot" = 20, "large angry scar" = 10, "large straight scar" = 0) damage_type = CUT datum/wound/cut/massive - max_bleeding_stage = 2 + max_bleeding_stage = 3 stages = list("massive wound" = 70, "massive healing wound" = 50, "large clot" = 20, "massive angry scar" = 10, "massive jagged scar" = 0) damage_type = CUT @@ -282,7 +280,7 @@ datum/wound/cut/massive /datum/wound/bruise stages = list("monumental bruise" = 80, "huge bruise" = 50, "large bruise" = 30, "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5) - max_bleeding_stage = 3 + max_bleeding_stage = 3 //only large bruise and above can bleed. autoheal_cutoff = 30 damage_type = BRUISE @@ -312,7 +310,7 @@ datum/wound/cut/massive internal = 1 stages = list("severed artery" = 30, "cut artery" = 20, "damaged artery" = 10, "bruised artery" = 5) autoheal_cutoff = 5 - max_bleeding_stage = 0 //all stages bleed. It's called internal bleeding after all. + max_bleeding_stage = 4 //all stages bleed. It's called internal bleeding after all. /** EXTERNAL ORGAN LOSS **/ /datum/wound/lost_limb @@ -324,7 +322,7 @@ datum/wound/cut/massive switch(losstype) if(DROPLIMB_EDGE, DROPLIMB_BLUNT) damage_type = CUT - max_bleeding_stage = 2 + max_bleeding_stage = 3 //clotted stump and above can bleed. stages = list( "ripped stump" = damage_amt*1.3, "bloody stump" = damage_amt, From a38ac6c8b7bdf876687b7d8c6c8671698364bc42 Mon Sep 17 00:00:00 2001 From: Karolis2011 Date: Thu, 30 Jul 2015 12:37:10 +0300 Subject: [PATCH 12/20] Fix for invisible tagger pipes --- code/modules/recycling/disposal-construction.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index d88d5cb5947..3ee774e0123 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -83,7 +83,7 @@ ///// Z-Level stuff - if(ptype<6 || ptype>8 && !(ptype==11 || ptype==12)) + if(!(ptype in list(6, 7, 8, 11, 12, 13, 14))) ///// Z-Level stuff icon_state = "con[base_state]" else From c29dd9063c1b6cd741ec312209d2dcb5b37bdb01 Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Wed, 29 Jul 2015 17:27:52 -0400 Subject: [PATCH 13/20] More tweaks to cut wound stages. Enforced "blood soaked" clots where the clot stage was also a bleeding stage, adjusted the thresholds for gaping_big and massive wounds to be more even. --- code/modules/organs/wound.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index 81a3fb92fcb..850f5114c03 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -246,7 +246,7 @@ /datum/wound/cut/small // link wound descriptions to amounts of damage // Minor cuts have max_bleeding_stage set to the stage that bears the wound type's name. - // The major cut types have the max_bleeding_stage set to the clot stage. + // The major cut types have the max_bleeding_stage set to the clot stage (which is accordingly given the "blood soaked" descriptor). max_bleeding_stage = 3 stages = list("ugly ripped cut" = 20, "ripped cut" = 10, "cut" = 5, "healing cut" = 2, "small scab" = 0) damage_type = CUT @@ -257,23 +257,23 @@ damage_type = CUT /datum/wound/cut/flesh - max_bleeding_stage = 3 + max_bleeding_stage = 4 stages = list("ugly ripped flesh wound" = 35, "ugly flesh wound" = 30, "flesh wound" = 25, "blood soaked clot" = 15, "large scab" = 5, "fresh skin" = 0) damage_type = CUT /datum/wound/cut/gaping max_bleeding_stage = 3 - stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "large clot" = 15, "small angry scar" = 5, "small straight scar" = 0) + stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "blood soaked clot" = 15, "small angry scar" = 5, "small straight scar" = 0) damage_type = CUT /datum/wound/cut/gaping_big max_bleeding_stage = 3 - stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large clot" = 20, "large angry scar" = 10, "large straight scar" = 0) + stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large blood soaked clot" = 25, "large angry scar" = 10, "large straight scar" = 0) damage_type = CUT datum/wound/cut/massive max_bleeding_stage = 3 - stages = list("massive wound" = 70, "massive healing wound" = 50, "large clot" = 20, "massive angry scar" = 10, "massive jagged scar" = 0) + stages = list("massive wound" = 70, "massive healing wound" = 50, "massive blood soaked clot" = 25, "massive angry scar" = 10, "massive jagged scar" = 0) damage_type = CUT /** BRUISES **/ From 3461b7fb5cde5db9e3279d7471d8a37308e6f9c3 Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 30 Jul 2015 19:05:00 +0100 Subject: [PATCH 14/20] minor antag distribution fix Signed-off-by: Mloc --- code/game/antagonist/antagonist.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index efe744174bf..4d2ff951ea5 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -99,7 +99,7 @@ return 0 //Grab candidates randomly until we have enough. - while(candidates.len) + while(candidates.len && pending_antagonists.len < cur_max) var/datum/mind/player = pick(candidates) pending_antagonists |= player candidates -= player @@ -111,4 +111,4 @@ for(var/datum/mind/player in pending_antagonists) if(can_become_antag(player) && !player.special_role) add_antagonist(player,0,0,1) - pending_antagonists.Cut() \ No newline at end of file + pending_antagonists.Cut() From 4413356a63849ec4e34ab00a1e1577283fbd5012 Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 30 Jul 2015 19:05:18 +0100 Subject: [PATCH 15/20] fix some weirdness with wall damage overlays Signed-off-by: Mloc --- code/game/turfs/simulated/wall_icon.dm | 26 +++++++++++++++++--------- code/game/turfs/simulated/walls.dm | 4 ++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index fa6ee92855e..364f58c29e9 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -44,6 +44,7 @@ return overlays.Cut() + damage_overlay = 0 if(!wall_cache["[new_state]-[material.icon_colour]"]) var/image/I = image(icon='icons/turf/wall_masks.dmi',icon_state="[new_state]") @@ -74,7 +75,6 @@ check_relatives(1) /turf/simulated/wall/proc/update_icon() - if(!material) return @@ -86,15 +86,23 @@ else set_wall_state("[material.icon_base]fwall_open") - var/dmg_amt = material.integrity - if(reinf_material) - dmg_amt += reinf_material.integrity - var/overlay = round(damage / dmg_amt * damage_overlays.len) + 1 - if(overlay > damage_overlays.len) - overlay = damage_overlays.len - if(density) + if(damage == 0) + if(damage_overlay != 0) + overlays -= damage_overlays[damage_overlay] + damage_overlay = 0 + else if(density) + var/integrity = material.integrity + if(reinf_material) + integrity += reinf_material.integrity + + var/overlay = round(damage / integrity * damage_overlays.len) + 1 + if(overlay > damage_overlays.len) + overlay = damage_overlays.len + if(damage_overlay && overlay == damage_overlay) //No need to update. return + + if(damage_overlay) overlays -= damage_overlays[damage_overlay] overlays += damage_overlays[overlay] damage_overlay = overlay return @@ -131,4 +139,4 @@ /turf/simulated/wall/proc/can_join_with(var/turf/simulated/wall/W) if(material && W.material && material.icon_base == W.material.icon_base) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 5185c9b81c9..662c245da6e 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -12,8 +12,8 @@ var/list/global/wall_cache = list() heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall var/damage = 0 - var/damage_overlay - var/global/damage_overlays[8] + var/damage_overlay = 0 + var/global/damage_overlays[16] var/active var/can_open = 0 var/material/material From ac5774c81c42daf6d1b28008e762f11153b685ee Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 30 Jul 2015 19:50:32 +0100 Subject: [PATCH 16/20] some dview tweaks & fixes Signed-off-by: Mloc --- code/__HELPERS/unsorted.dm | 3 +++ code/modules/lighting/light_source.dm | 3 ++- code/setup.dm | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 98f487a71be..a20eeea3614 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1322,3 +1322,6 @@ var/mob/dview/dview_mob = new see_in_dark = 1e6 +/mob/dview/New() + // do nothing. we don't want to be in any mob lists; we're a dummy not a mob. + diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index 1ee235fa6f6..ce2ee837a62 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -177,6 +177,7 @@ T.affecting_lights += src effect_turf += T + END_FOR_DVIEW /datum/light_source/proc/remove_lum() applied = 0 @@ -201,11 +202,11 @@ var/list/view[0] FOR_DVIEW(var/turf/T, light_range, source_turf, INVISIBILITY_LIGHTING) view += T //Filter out turfs. + END_FOR_DVIEW //This is the part where we calculate new turfs (if any) var/list/new_turfs = view - effect_turf //This will result with all the tiles that are added. for(var/turf/T in new_turfs) - //Big huge copy paste from apply_lum() incoming because screw unreadable defines and screw proc call overhead. if(T.lighting_overlay) LUM_FALLOFF(., T, source_turf) . *= light_power diff --git a/code/setup.dm b/code/setup.dm index 98957e23046..78f3f8280af 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -1002,3 +1002,4 @@ var/list/be_special_flags = list( dview_mob.loc = center; \ dview_mob.see_invisible = invis_flags; \ for(type in view(range, dview_mob)) +#define END_FOR_DVIEW dview_mob.loc = null From cfac670cb68dfb383886caf40259be9061009f30 Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 30 Jul 2015 19:51:11 +0100 Subject: [PATCH 17/20] anchored and unsimulated objects are no longer considered for airflow Signed-off-by: Mloc --- code/ZAS/Airflow.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 62a6daea16f..304029429f5 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -241,7 +241,7 @@ mob/living/carbon/human/airflow_hit(atom/A) zone/proc/movables() . = list() for(var/turf/T in contents) - for(var/atom/A in T) - if(istype(A, /obj/effect) || istype(A, /mob/aiEye)) + for(var/atom/movable/A in T) + if(A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/aiEye)) continue - . += A \ No newline at end of file + . += A From b727de839834e43dc741e48e4e648ac298d632c2 Mon Sep 17 00:00:00 2001 From: Mloc Date: Thu, 30 Jul 2015 20:55:18 +0100 Subject: [PATCH 18/20] anchored and unsimulated objects are no longer considered for airflow Signed-off-by: Mloc --- code/ZAS/Airflow.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 304029429f5..07c7b650d1f 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -242,6 +242,6 @@ zone/proc/movables() . = list() for(var/turf/T in contents) for(var/atom/movable/A in T) - if(A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/aiEye)) + if(!A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/aiEye)) continue . += A From 47d30a49a03603e58da90c51eac7969be73c8cff Mon Sep 17 00:00:00 2001 From: mwerezak Date: Fri, 31 Jul 2015 01:33:43 -0400 Subject: [PATCH 19/20] Fixes #10389 Allows glasses to set the see_invisible of their wearer. --- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/glasses/glasses.dm | 3 +-- code/modules/clothing/glasses/hud.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 10 +++++----- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2bfcce82b6d..e811c5a9aaf 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -176,7 +176,7 @@ BLIND // can't see anything slot_flags = SLOT_EYES var/vision_flags = 0 var/darkness_view = 0//Base human is 2 - var/invisa_view = 0 + var/see_invisible = -1 sprite_sheets = list("Vox" = 'icons/mob/species/vox/eyes.dmi') /obj/item/clothing/glasses/update_clothing_icon() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 82331722111..0c778dc04a1 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -7,7 +7,6 @@ //slot_flags = SLOT_EYES //var/vision_flags = 0 //var/darkness_view = 0//Base human is 2 - //var/invisa_view = 0 var/prescription = 0 var/toggleable = 0 var/off_state = "degoggles" @@ -75,6 +74,7 @@ origin_tech = "magnets=2" darkness_view = 7 toggleable = 1 + see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING icon_action_button = "action_nvg" off_state = "denight" @@ -224,7 +224,6 @@ toggleable = 1 icon_action_button = "action_thermal" vision_flags = SEE_MOBS - invisa_view = 2 emp_act(severity) if(istype(src.loc, /mob/living/carbon/human)) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 60dd6174b15..fb3d94ee89d 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -33,7 +33,7 @@ icon_state = "jensenshades" item_state = "jensenshades" vision_flags = SEE_MOBS - invisa_view = 2 + see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING /obj/item/clothing/glasses/hud/security/process_hud(var/mob/M) process_sec_hud(M, 1) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 75629d88fce..18312abf924 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1244,6 +1244,9 @@ else seer = 0 + if(!seer) + see_invisible = SEE_INVISIBLE_LIVING + var/equipped_glasses = glasses var/obj/item/weapon/rig/rig = back if(istype(rig) && rig.visor) @@ -1253,9 +1256,6 @@ if(equipped_glasses) process_glasses(equipped_glasses) - if(!seer) - see_invisible = SEE_INVISIBLE_LIVING - if(healths) if (analgesic > 100) healths.icon_state = "health_health_numb" @@ -1403,8 +1403,8 @@ sight |= G.vision_flags if(!druggy && !seer) see_invisible = SEE_INVISIBLE_MINIMUM - if(istype(G,/obj/item/clothing/glasses/night) && !seer) - see_invisible = SEE_INVISIBLE_MINIMUM + if(G.see_invisible >= 0) + see_invisible = G.see_invisible /* HUD shit goes here, as long as it doesn't modify sight flags */ // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl var/obj/item/clothing/glasses/hud/O = G From 2a9194b807f9fa7dd90f13f58d54732ff21afdd4 Mon Sep 17 00:00:00 2001 From: PsiOmegaDelta Date: Fri, 31 Jul 2015 09:48:42 +0200 Subject: [PATCH 20/20] Updates changelog. --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 5 +++++ html/changelogs/HarpyEagle-dev-freeze.yml | 3 +-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 08fec2e3048..0f347f664fe 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
+

31 July 2015

+

HarpyEagle updated:

+
    +
  • Fixed projectiles being able to hit people in body parts that they don't have. This will also mean that the less limbs someone has the less effective they will be as a body shield.
  • +
+

29 July 2015

Karolis2011 updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 748013489c4..08d266b8708 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1985,3 +1985,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Made tagger and sorting pipes dispensible. - bugfix: Unwelding and welding sorting/tagger pipes, no longer delete data about them. +2015-07-31: + HarpyEagle: + - bugfix: Fixed projectiles being able to hit people in body parts that they don't + have. This will also mean that the less limbs someone has the less effective + they will be as a body shield. diff --git a/html/changelogs/HarpyEagle-dev-freeze.yml b/html/changelogs/HarpyEagle-dev-freeze.yml index d7bf101a08f..a999f1236dc 100644 --- a/html/changelogs/HarpyEagle-dev-freeze.yml +++ b/html/changelogs/HarpyEagle-dev-freeze.yml @@ -1,4 +1,3 @@ author: HarpyEagle +changes: [] delete-after: false -changes: - - bugfix: "Fixed projectiles being able to hit people in body parts that they don't have. This will also mean that the less limbs someone has the less effective they will be as a body shield." \ No newline at end of file