From b17a770299ca7fedc22ef4fc74ec7f82981572d1 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 6 Oct 2017 22:34:40 -0400 Subject: [PATCH 01/31] Config option to automatically call the shuttle for high casualties (#31309) --- .../configuration/entries/game_options.dm | 5 ++++ code/controllers/subsystem/shuttle.dm | 28 ++++++++++++++++++- config/game_options.txt | 2 ++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 106804a576..cb4109436c 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -264,3 +264,8 @@ CONFIG_DEF(number/bombcap) GLOB.MAX_EX_LIGHT_RANGE = value GLOB.MAX_EX_FLASH_RANGE = value GLOB.MAX_EX_FLAME_RANGE = value + +CONFIG_DEF(number/emergency_shuttle_autocall_threshold) + min_val = 0 + max_val = 1 + integer = FALSE diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 705f0dbd81..9973a43430 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -136,6 +136,7 @@ SUBSYSTEM_DEF(shuttle) if(changed_transit) color_space() #endif + CheckAutoEvac() while(transit_requesters.len) var/requester = popleft(transit_requesters) @@ -148,7 +149,32 @@ SUBSYSTEM_DEF(shuttle) var/obj/docking_port/mobile/M = requester M.transit_failure() if(MC_TICK_CHECK) - return + break + +/datum/controller/subsystem/shuttle/proc/CheckAutoEvac() + if(emergencyNoEscape || emergencyNoRecall || !emergency) + return + + var/threshold = CONFIG_GET(number/emergency_shuttle_autocall_threshold) + if(!threshold) + return + + var/alive = 0 + for(var/I in GLOB.player_list) + var/mob/M = I + if(M.stat != DEAD) + ++alive + + var/total = GLOB.joined_player_list.len + + if(alive / total <= threshold) + var/msg = "Automatically dispatching shuttle due to crew death." + message_admins(msg) + log_game("[msg] Alive: [alive], Roundstart: [total], Threshold: [threshold]") + emergencyNoRecall = TRUE + priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") + if(emergency.timeLeft(1) > emergencyCallTime * 0.4) + emergency.request(null, set_coefficient = 0.4) /datum/controller/subsystem/shuttle/proc/getShuttle(id) for(var/obj/docking_port/mobile/M in mobile) diff --git a/config/game_options.txt b/config/game_options.txt index 77e33fa873..b3b6024d20 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -496,3 +496,5 @@ ARRIVALS_SHUTTLE_DOCK_WINDOW 55 MICE_ROUNDSTART 10 +## If the percentage of players alive (doesn't count conversions) drops below this threshold the emergency shuttle will be forcefully called (provided it can be) +#EMERGENCY_SHUTTLE_AUTOCALL_THRESHOLD 0.2 From 466a6806e1f3c96161b9da143bb4baf0a74f8c56 Mon Sep 17 00:00:00 2001 From: jughu Date: Sat, 7 Oct 2017 07:17:14 +0200 Subject: [PATCH 03/31] Allows shotgun darts to cause reagent reactions (#31337) --- code/modules/projectiles/ammunition/ammo_casings.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 848d690853..d9bf309267 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -288,7 +288,7 @@ ..() container_type |= OPENCONTAINER_1 create_reagents(30) - reagents.set_reacting(FALSE) + reagents.set_reacting(TRUE) /obj/item/ammo_casing/shotgun/dart/attackby() return From 84490f919e694043cbe1a1cd925f8d52bce01a20 Mon Sep 17 00:00:00 2001 From: AnturK Date: Fri, 6 Oct 2017 09:54:55 +0200 Subject: [PATCH 05/31] Fixes clockcult runtime --- code/__DEFINES/clockcult.dm | 2 -- .../gamemodes/clock_cult/clock_items/replica_fabricator.dm | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index fc93ccbf1c..5f167bf96c 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -55,8 +55,6 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define POWER_PLASTEEL (CLOCKCULT_POWER_UNIT*0.05) //how much power is in one sheet of plasteel -#define RATVAR_POWER_CHECK "ratvar?" //when passed into can_use_power(), converts it into a check for if ratvar has woken/the fabricator is debug - //Ark defines #define GATEWAY_SUMMON_RATE 1 //the time amount the Gateway to the Celestial Derelict gets each process tick; defaults to 1 per tick diff --git a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm b/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm index ae001c03e5..44fa24c134 100644 --- a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm +++ b/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm @@ -90,7 +90,7 @@ if(!no_table_check) return TRUE return FALSE - if(get_clockwork_power(RATVAR_POWER_CHECK)) + if(GLOB.ratvar_awakens) fabrication_values["power_cost"] = 0 var/turf/Y = get_turf(user) @@ -167,7 +167,7 @@ return FALSE if(target.type != expected_type) return FALSE - if(get_clockwork_power(RATVAR_POWER_CHECK)) + if(GLOB.ratvar_awakens) fabrication_values["power_cost"] = 0 if(!get_clockwork_power(fabrication_values["power_cost"])) if(get_clockwork_power() - fabrication_values["power_cost"] < 0) @@ -212,7 +212,7 @@ return FALSE repair_values["healing_for_cycle"] = min(repair_values["amount_to_heal"], FABRICATOR_REPAIR_PER_TICK) //modify the healing for this cycle repair_values["power_required"] = round(repair_values["healing_for_cycle"]*MIN_CLOCKCULT_POWER, MIN_CLOCKCULT_POWER) //and get the power cost from that - if(!get_clockwork_power(RATVAR_POWER_CHECK) && !get_clockwork_power(repair_values["power_required"])) + if(!GLOB.ratvar_awakens && !get_clockwork_power(repair_values["power_required"])) if(!silent) to_chat(user, "You need at least [DisplayPower(repair_values["power_required"])] power to start repairin[target == user ? "g yourself" : "g [target]"], and at least \ [DisplayPower(repair_values["amount_to_heal"]*MIN_CLOCKCULT_POWER, MIN_CLOCKCULT_POWER)] to fully repair [target == user ? "yourself" : "[target.p_them()]"]!") From 614caa782a8e928ef0c7c04bef58e6871ee5d0ca Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Sat, 7 Oct 2017 06:36:19 -0700 Subject: [PATCH 07/31] Adds a rdconsole to omegastation robotics (#31380) --- _maps/map_files/OmegaStation/OmegaStation.dmm | 1 + 1 file changed, 1 insertion(+) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 2badff3bb5..bf75b2ac43 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -30349,6 +30349,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, +/obj/machinery/computer/rdconsole, /turf/open/floor/plasteel, /area/science/robotics/lab) "bbP" = ( From a8c4a155a57468ee7ebe1921da1a4b29354b422b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 7 Oct 2017 09:37:58 -0400 Subject: [PATCH 09/31] Merge pull request #31383 from BeeSting12/youlights Fixes grammar on zippos --- code/game/objects/items/cigs_lighters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index f04f8d4441..13fe778a38 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -513,7 +513,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!lit) set_lit(TRUE) if(fancy) - user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "Without even breaking stride, you flip open and lights [src] in one smooth movement.") + user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "Without even breaking stride, you flip open and light [src] in one smooth movement.") else var/prot = FALSE var/mob/living/carbon/human/H = user From 13aa6f8650d6dd48baa53b62e7bf8fe657bcd514 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Sat, 7 Oct 2017 06:39:39 -0700 Subject: [PATCH 11/31] Lets cyborgs use ladders (#31378) --- code/game/objects/structures/ladders.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index d0ad32113d..6093d73bc5 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -100,6 +100,10 @@ /obj/structure/ladder/attackby(obj/item/W, mob/user, params) return attack_hand(user) +/obj/structure/ladder/attack_robot(mob/living/silicon/robot/R) + if(R.Adjacent(src)) + return attack_hand(R) + /obj/structure/ladder/attack_ghost(mob/dead/observer/user) use(user,1) From 39728cc9b3255e9c79b319e2a249222dfc88ee97 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 7 Oct 2017 08:41:04 -0500 Subject: [PATCH 13/31] Nightmare spawn event (#31376) * Nightmare Event * Update nightmare.dm * Standards --- code/modules/events/nightmare.dm | 43 ++++++++++++++++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 44 insertions(+) create mode 100644 code/modules/events/nightmare.dm diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm new file mode 100644 index 0000000000..7be5db8e84 --- /dev/null +++ b/code/modules/events/nightmare.dm @@ -0,0 +1,43 @@ +/datum/round_event_control/nightmare + name = "Spawn Nightmare" + typepath = /datum/round_event/ghost_role/nightmare + max_occurrences = 1 + min_players = 20 + +/datum/round_event/ghost_role/nightmare + minimum_required = 1 + role_name = "nightmare" + +/datum/round_event/ghost_role/nightmare/spawn_role() + var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + var/mob/dead/selected = pick(candidates) + + var/datum/mind/player_mind = new /datum/mind(selected.key) + player_mind.active = TRUE + + var/list/spawn_locs = list() + for(var/obj/effect/landmark/xeno_spawn/L in GLOB.landmarks_list) + if(isturf(L.loc)) + var/turf/T = L.loc + var/light_amount = T.get_lumcount() + if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) + spawn_locs += T + + if(!spawn_locs.len) + message_admins("No valid spawn locations found, aborting...") + return MAP_ERROR + + var/mob/living/carbon/human/S = new ((pick(spawn_locs))) + player_mind.transfer_to(S) + player_mind.assigned_role = "Nightmare" + player_mind.special_role = "Nightmare" + SSticker.mode.traitors += player_mind + S.set_species(/datum/species/shadow/nightmare) + playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1) + message_admins("[key_name_admin(S)] has been made into a Nightmare by an event.") + log_game("[key_name(S)] was spawned as a Nightmare by an event.") + spawned_mobs += S + return SUCCESSFUL_SPAWN diff --git a/tgstation.dme b/tgstation.dme index 32de5b6c33..ab5b26b120 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1346,6 +1346,7 @@ #include "code\modules\events\meateor_wave.dm" #include "code\modules\events\meteor_wave.dm" #include "code\modules\events\mice_migration.dm" +#include "code\modules\events\nightmare.dm" #include "code\modules\events\operative.dm" #include "code\modules\events\portal_storm.dm" #include "code\modules\events\prison_break.dm" From 20172ca2bdee5cec42297ab8f295c01be166a4fe Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 7 Oct 2017 09:42:33 -0400 Subject: [PATCH 15/31] Merge pull request #31372 from ShizCalev/cool-runnings Fixes cool threads grammar issue --- code/modules/clothing/clothing.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 237714eb8e..985db1947e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -144,15 +144,15 @@ if(pockets) var/list/how_cool_are_your_threads = list("") if(pockets.priority) - how_cool_are_your_threads += "Your [src]'s storage opens when clicked.\n" + how_cool_are_your_threads += "[src]'s storage opens when clicked.\n" else - how_cool_are_your_threads += "Your [src]'s storage opens when dragged to yourself.\n" - how_cool_are_your_threads += "Your [src] can store [pockets.storage_slots] item[pockets.storage_slots > 1 ? "s" : ""].\n" - how_cool_are_your_threads += "Your [src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n" + how_cool_are_your_threads += "[src]'s storage opens when dragged to yourself.\n" + how_cool_are_your_threads += "[src] can store [pockets.storage_slots] item[pockets.storage_slots > 1 ? "s" : ""].\n" + how_cool_are_your_threads += "[src] can store items that are [weightclass2text(pockets.max_w_class)] or smaller.\n" if(pockets.quickdraw) - how_cool_are_your_threads += "You can quickly remove an item from your [src] using Alt-Click.\n" + how_cool_are_your_threads += "You can quickly remove an item from [src] using Alt-Click.\n" if(pockets.silent) - how_cool_are_your_threads += "Adding or Removing items from your [src] makes no noise.\n" + how_cool_are_your_threads += "Adding or removing items from [src] makes no noise.\n" how_cool_are_your_threads += "" to_chat(user, how_cool_are_your_threads.Join()) From 91aa560f0dbb3494e35b3468f12aea9e17d3743d Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 7 Oct 2017 09:42:15 -0400 Subject: [PATCH 17/31] High pop reduced MC processing mode. --- code/__DEFINES/configuration.dm | 1 + .../configuration/entries/config.dm | 25 +++++++++++++++- code/controllers/master.dm | 10 +++++++ code/modules/client/client_procs.dm | 5 ++++ config/config.txt | 29 ++++++++++++++++++- 5 files changed, 68 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index c78dfb28ab..3db0ca24c2 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -2,6 +2,7 @@ #define CONFIG_DEF(X) /datum/config_entry/##X { resident_file = CURRENT_RESIDENT_FILE }; /datum/config_entry/##X #define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X) #define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) +#define CONFIG_TWEAK(X) /datum/config_entry/##X #define CONFIG_MAPS_FILE "maps.txt" diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index ec96e88553..eea47b6612 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -351,4 +351,27 @@ CONFIG_DEF(number/error_msg_delay) // How long to wait between messaging admins CONFIG_DEF(flag/irc_announce_new_game) -CONFIG_DEF(flag/debug_admin_hrefs) \ No newline at end of file +CONFIG_DEF(flag/debug_admin_hrefs) + + +CONFIG_DEF(number/mc_tick_rate/base_mc_tick_rate) + integer = FALSE + value = 1 + +CONFIG_DEF(number/mc_tick_rate/high_pop_mc_tick_rate) + integer = FALSE + value = 1.1 + +CONFIG_DEF(number/mc_tick_rate/high_pop_mc_mode_amount) + value = 65 + +CONFIG_DEF(number/mc_tick_rate/disable_high_pop_mc_mode_amount) + value = 60 + +CONFIG_TWEAK(number/mc_tick_rate) + abstract_type = /datum/config_entry/number/mc_tick_rate + +CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val)) + . = ..() + if (.) + Master.UpdateTickRate() diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6ed3121179..b92853a2c4 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -573,3 +573,13 @@ GLOBAL_REAL(Master, /datum/controller/master) = new for(var/S in subsystems) var/datum/controller/subsystem/SS = S SS.StopLoadingMap() + + +/datum/controller/master/proc/UpdateTickRate() + if (!processing) + return + var/client_count = length(GLOB.clients) + if (client_count < CONFIG_GET(number/mc_tick_rate/disable_high_pop_mc_mode_amount)) + processing = CONFIG_GET(number/mc_tick_rate/base_mc_tick_rate) + else if (client_count > CONFIG_GET(number/mc_tick_rate/high_pop_mc_mode_amount)) + processing = CONFIG_GET(number/mc_tick_rate/high_pop_mc_tick_rate) \ No newline at end of file diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 60936aa5fb..8e8361194d 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -351,7 +351,11 @@ GLOBAL_LIST(external_rsc_urls) if (menuitem) menuitem.Load_checked(src) +<<<<<<< HEAD hook_vr("client_new",list(src)) +======= + Master.UpdateTickRate() +>>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode ////////////// //DISCONNECT// @@ -399,6 +403,7 @@ GLOBAL_LIST(external_rsc_urls) if(movingmob != null) movingmob.client_mobs_in_contents -= mob UNSETEMPTY(movingmob.client_mobs_in_contents) + Master.UpdateTickRate() return ..() /client/Destroy() diff --git a/config/config.txt b/config/config.txt index 72f168dcce..a81bdf0d8e 100644 --- a/config/config.txt +++ b/config/config.txt @@ -228,9 +228,13 @@ ALLOW_HOLIDAYS ##This is currently a testing optimized setting. A good value for production would be 98. TICK_LIMIT_MC_INIT 500 -##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother. +##Defines the ticklag for the world. Ticklag is the amount of time between game ticks (aka byond ticks) (in 1/10ths of a second). +## This also controls the client network update rate, as well as the default client fps TICKLAG 0.5 +##Can also be set as per-second value, the following value is identical to the above. +#FPS 20 + ## Comment this out to disable automuting #AUTOMUTE_ON @@ -351,3 +355,26 @@ MINUTE_TOPIC_LIMIT 100 ## Allow admin hrefs that don't use the new token system, will eventually be removed DEBUG_ADMIN_HREFS +<<<<<<< HEAD +======= + +###Master Controller High Pop Mode### + +##The Master Controller(MC) is the primary system controlling timed tasks and events in SS13 (lobby timer, game checks, lighting updates, atmos, etc) +##Default base MC tick rate (1 = process every "byond tick" (see: tick_lag/fps config settings), 2 = process every 2 byond ticks, etc) +## Setting this to 0 will prevent the Master Controller from ticking +BASE_MC_TICK_RATE 1 + +##High population MC tick rate +## Byond rounds timer values UP, but the tick rate is modified with heuristics during lag spites so setting this to something like 2 +## will make it run every 2 byond ticks, but will also double the effect of anti-lag heuristics. You can instead set it to something like +## 1.1 to make it run every 2 byond ticks, but only increase the effect of anti-lag heuristics by 10%. or 1.5 for 50%. +## (As an aside, you could in theory also reduce the effect of anti-lag heuristics in the base tick rate by setting it to something like 0.5) +HIGH_POP_MC_TICK_RATE 1.1 + +##Engage high pop mode if player count raises above this (Player in this context means any connected user. Lobby, ghost or in-game all count) +HIGH_POP_MC_MODE_AMOUNT 65 + +##Disengage high pop mode if player count drops below this +DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 +>>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode From 4bc4ab7fc555ed757b8f3914fda441c477a15966 Mon Sep 17 00:00:00 2001 From: Neri Date: Sat, 7 Oct 2017 14:01:43 -0700 Subject: [PATCH 18/31] Oh. That's what was missing. (#3143) Boop. --- code/game/gamemodes/cult/cult_structures.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 8140dffe53..2dcaf23bc6 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -100,9 +100,10 @@ if(cooldowntime > world.time) to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return - var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword") + var/option = "Shielded Robe" + option = input(user, "You study the schematics etched into the forge...", "[src]", option) as null|anything in list("Shielded Robe", "Flagellant's Robe", "Bastard Sword", "Nar-Sien Hardsuit") var/pickedtype - switch(choice) + switch(option) if("Shielded Robe") pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield if("Flagellant's Robe") @@ -115,6 +116,9 @@ to_chat(user, "The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].") cooldowntime = 0 return + if("Nar-Sien Hardsuit") + pickedtype = /obj/item/clothing/suit/space/hardsuit/cult + if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 var/obj/item/N = new pickedtype(get_turf(src)) From d600df9ba29fecd9cb4ac97cf0fd6731f61134c5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 7 Oct 2017 16:01:44 -0500 Subject: [PATCH 19/31] Automatic changelog generation for PR #3143 [ci skip] --- html/changelogs/AutoChangeLog-pr-3143.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3143.yml diff --git a/html/changelogs/AutoChangeLog-pr-3143.yml b/html/changelogs/AutoChangeLog-pr-3143.yml new file mode 100644 index 0000000000..4e48f367b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3143.yml @@ -0,0 +1,7 @@ +author: "Kevak/Neri" +delete-after: True +changes: + - rscadd: "Readds Cult Hardsuits. or more specifically, makes cult forges be able to make hardsuits. They never got removed from the code." + - tweak: "Cultforge uses Option instead of Choice. (Aka ye get a menu instead of three buttons)" + - balance: "Cultforge can make hardsuits again." + - bugfix: "Fixed Cultforge procs, Slightly cleaner code." From 47866c823c5818535431eb87716b95d7aea4ba9d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 7 Oct 2017 22:44:07 -0500 Subject: [PATCH 20/31] Automatic changelog generation for PR #3203 [ci skip] --- html/changelogs/AutoChangeLog-pr-3203.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3203.yml diff --git a/html/changelogs/AutoChangeLog-pr-3203.yml b/html/changelogs/AutoChangeLog-pr-3203.yml new file mode 100644 index 0000000000..e4061e3cd6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3203.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - rscadd: "Nightmares now have a chance to spawn via event." From 661c2d293b69e4399476fe115a873d1c8a9d96eb Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 7 Oct 2017 22:45:04 -0500 Subject: [PATCH 21/31] Update client_procs.dm --- code/modules/client/client_procs.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 8e8361194d..e755ff28ac 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -351,11 +351,8 @@ GLOBAL_LIST(external_rsc_urls) if (menuitem) menuitem.Load_checked(src) -<<<<<<< HEAD hook_vr("client_new",list(src)) -======= Master.UpdateTickRate() ->>>>>>> bc4d4e7... Merge pull request #31374 from MrStonedOne/highpopmode ////////////// //DISCONNECT// From 2acc9904259c179dda924e03e144179ab3edf1e7 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 7 Oct 2017 23:27:25 -0500 Subject: [PATCH 22/31] donation items / framework for some --- code/citadel/custom_loadout/custom_items.dm | 11 +++++++++++ icons/obj/custom.dmi | Bin 1278 -> 1460 bytes icons/obj/plushes.dmi | Bin 5362 -> 7914 bytes 3 files changed, 11 insertions(+) diff --git a/code/citadel/custom_loadout/custom_items.dm b/code/citadel/custom_loadout/custom_items.dm index 397f4c6576..5041532a02 100644 --- a/code/citadel/custom_loadout/custom_items.dm +++ b/code/citadel/custom_loadout/custom_items.dm @@ -93,6 +93,17 @@ w_class = WEIGHT_CLASS_SMALL body_parts_covered = CHEST|GROIN|LEGS|ARMS +/obj/item/toy/plush/tree + name = "christmass tree plushie" + desc = "A festive plush that squeeks when you squeeze it!" + icon = 'icons/obj/plushes.dmi' + icon_state = "pine_c" + item_state = "pine_c" + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("slapped") + resistance_flags = FLAMMABLE + squeak_override = list('sound/items/bikehorn.ogg'= 1) + /*Zigfie*/ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index c8b96b84695d149ff71df71bf28cf99559584018..1c519473ae7ba975c338e39406f1e75bb7378a74 100644 GIT binary patch delta 804 zcmV+<1Ka%m3A76(iBL{Q4GJ0x0000DNk~Le0001B0001B2m=5B0M$l^3IG5CQjsO8 z37G(9f+ZfA0L-z@K>-6XF)@=50!}9YrKJGBzmZok|Hc5*iUGjDz$CUi82|tP0d!JM zQvg8b*k%9#0FRS_0(E~SsH`BhBso7PC$Weel_n@El@(n5T)@5u08G0}NjMD6fdBvk zbxA})RA_oX5s@s0 zQ~{frK#GVhTeWV}wq5%U9XoaI(zRRn9zA>Y?vtS)8jZ@aSWL#(^aA?!>px)Nput0i z4jVpVx(s?{ZH)~;K>VdJLFTefc7zGLUE-Fxo;!Rx_y7=?!EgD9zJ^f&lpTB(lCVsa)Mcx9X0w=?dpVpV`*Y7{#U)zi3DZtsP zN-^LfB=WH^heY{QsH%_{G=V}9`1{zYf)F2$0(1QYXM;B>6*#sCuRie$DDc<=CE22o z1Z0zmAy|Jt!<3bAEXT3t#c@7sfhW}WAg78j;{gBw@&cqG4G%<{*HZo+=Mf2U%O}tb z*iN7>fCRWtlPleT%Jp(Y4ZvVMeKMKrvIs*rT;e@I@#2w76PPUWNpCd6&@|U3WCcQo zt{dUyGiHyoX|gXv$oT*O00000d4bExIKXWVAlEe0cRbzgXzW8_I&|8suI1unj1XNA i>bV#I0002~XZ`^>>;M1)Ly;w^ zvDZNXlN$m~B*4JHnE+;jB_5do%rP-BTfC=z00001bW%=J06^y0W&i*HfRm5{b$`XB zOj*Iz&jsvK04QcMexm~YRsaA2-AP12R9J;$U>F6Y0!Aig$_!v)VWrRoY?Qcwot>S7 zlZ%CHN3e6l02UK?Faf#}R&H*bCh+j^^6~NUqXKjz@E8Epj>QE)BZxGBhZks@fS{1D zh^UyjgrtX9}g}ASbtCr;N#~}R#8<`*U;3`*3s3|H!w6ZHZe6L)&P(L z%q=XftZi)V>>V7PoLyYq+&w(KynRqjV8>|y&;h=F{sDnO!6Bhx;SrHh(J`@c@d=4Z zsG)${0HC_$l+-lW^o-1`?3~=Z{DQ)w;*!#`@(SV&sI024sjaJTXl!b3X@6~N@96C6 z?&qmXPom08Gk!{CwcV3_^T3lJc%y+%SZh zn~2FwySTZb2#Wzk03;V+%YV;A7=R}X=wkrG?%k{`tgI{`iY)!3U=)mkQ9wVickkYP z`}gnP2c!qc00y`LWa5l_6+zbE!002ovPDHLk FV1jO`5U~IN diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index f0eb8175497e73f02a005bfd6b4ac1994a187c73..7eec51e46e6e1c5bb5179c42d7ba12876d289f32 100644 GIT binary patch literal 7914 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 EKfCB~!vFvP From 280b5f5e6f358fec49e69091d071d1c63bacb32d Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 8 Oct 2017 05:52:43 +0000 Subject: [PATCH 23/31] Adds kinkmates to Metastation and Deltastation (+Box tweaks) (#3214) * adds kinkmates to deltastation * added kinkmates to metastation * hides atmos pipes in maint dorms --- _maps/map_files/BoxStation/BoxStation.dmm | 22 +++++++++---------- .../map_files/Deltastation/DeltaStation2.dmm | 17 +++++++++----- _maps/map_files/MetaStation/MetaStation.dmm | 6 ++--- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 67f6208e52..15b9f0ff9e 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -2281,7 +2281,7 @@ name = "Emergency Shuttle Airlock" }, /obj/docking_port/mobile/emergency{ - name = "Box emergency shuttle"; + name = "Box emergency shuttle" }, /obj/docking_port/stationary{ dir = 4; @@ -42528,14 +42528,14 @@ }, /area/maintenance/port/aft) "bTt" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 4 }, -/obj/structure/closet/secure_closet/personal, /turf/open/floor/wood, /area/maintenance/port/aft) "bTu" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ +/obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 4 }, /turf/closed/wall, @@ -42549,9 +42549,9 @@ /turf/open/floor/wood, /area/maintenance/port/aft) "bTw" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, /obj/machinery/light/small, /obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/manifold/general/hidden, /turf/open/floor/wood, /area/maintenance/port/aft) "bTx" = ( @@ -64125,19 +64125,19 @@ /turf/open/floor/wood, /area/maintenance/port/aft) "cUq" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, /obj/machinery/light/small, /obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 5 + }, /turf/open/floor/wood, /area/maintenance/port/aft) "cUr" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, /obj/structure/bed, /obj/item/bedsheet, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, /turf/open/floor/wood, /area/maintenance/port/aft) "cUs" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index b2c40d5672..9ee5a65764 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -97094,8 +97094,7 @@ /turf/open/floor/plating, /area/crew_quarters/theatre/abandoned) "dHa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/twohanded/required/kirbyplants/random, +/obj/machinery/vending/kink, /turf/open/floor/wood, /area/crew_quarters/theatre/abandoned) "dHb" = ( @@ -113139,6 +113138,14 @@ "esH" = ( /turf/closed/wall, /area/maintenance/department/medical/morgue) +"esI" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/maintenance/port/fore) +"esJ" = ( +/obj/machinery/vending/kink, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) (1,1,1) = {" aaa @@ -137474,7 +137481,7 @@ dmb dnA doK dqw -diJ +esJ aJm aHW aaf @@ -143545,7 +143552,7 @@ aib asx atw auQ -aic +esI awX aye azn @@ -178674,4 +178681,4 @@ aaa aaa aaa aaa -"} \ No newline at end of file +"} diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 5a1762e989..665b0a39ae 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -28522,7 +28522,7 @@ }, /area/security/checkpoint/engineering) "bcO" = ( -/obj/structure/easel, +/obj/machinery/vending/kink, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -64306,10 +64306,10 @@ /turf/open/space, /area/space) "ctn" = ( -/obj/machinery/vending/cigarette, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/port/aft) "cto" = ( @@ -155921,4 +155921,4 @@ aaa aaa aaa aaa -"} \ No newline at end of file +"} From dee8efc7e8fc1465f1a2920e914194e793ea6626 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 00:52:45 -0500 Subject: [PATCH 24/31] Automatic changelog generation for PR #3214 [ci skip] --- html/changelogs/AutoChangeLog-pr-3214.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3214.yml diff --git a/html/changelogs/AutoChangeLog-pr-3214.yml b/html/changelogs/AutoChangeLog-pr-3214.yml new file mode 100644 index 0000000000..3a2840f45c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3214.yml @@ -0,0 +1,6 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Added kinkmates to Delta in the gambling den (replacing the cigarette vendor), abandoned theatre (replacing a plant), and the abandoned theatre backstage in port bow maintenance." + - rscadd: "Added kinkmates to Meta in the abandoned bar, maintenance storage room (replacing an easel), and in maintenance right below science (also replacing an easel)." + - tweak: "Made the atmos pipes in maint dorms hidden." From f579a3bf74c69d4a350e887e60fa40729fd3008f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 01:04:14 -0500 Subject: [PATCH 25/31] [MIRROR] Fix adding bad config entries (#3219) * Fixes adding bad config entries (#31390) * Fix adding bad config entries --- code/controllers/configuration/configuration.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index a9807a599c..bf4f562f36 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -49,7 +49,6 @@ GLOBAL_PROTECT(config_dir) if(initial(E.abstract_type) == I) continue E = new I - _entries_by_type[I] = E var/esname = E.name var/datum/config_entry/test = _entries[esname] if(test) @@ -57,6 +56,7 @@ GLOBAL_PROTECT(config_dir) qdel(E) continue _entries[esname] = E + _entries_by_type[I] = E .[E.resident_file] = TRUE /datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE) From d1dcfb63f8912196249636abf0998a0fd1994db0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 01:04:26 -0500 Subject: [PATCH 26/31] [MIRROR] Miscellaneous virus fixes (#3216) * Miscellaneous virus fixes (#31391) * Probably fixes neutering bugs * Proper targeting for healing * Fixes itching affecting roboparts * Miscellaneous virus fixes --- code/datums/diseases/advance/advance.dm | 2 +- code/datums/diseases/advance/symptoms/heal.dm | 8 ++++---- code/datums/diseases/advance/symptoms/itching.dm | 13 ++++++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 26f42fa059..1b3633207c 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -123,7 +123,7 @@ /datum/disease/advance/proc/HasSymptom(datum/symptom/S) for(var/datum/symptom/symp in symptoms) - if(symp.id == S.id) + if(symp.type == S.type) return 1 return 0 diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 5167b17e0d..869cea19da 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -131,7 +131,7 @@ Bonus /datum/symptom/heal/brute/Heal(mob/living/carbon/M, datum/disease/advance/A) var/heal_amt = 2 * power - var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs. + var/list/parts = M.get_damaged_bodyparts(1,0) //brute only if(!parts.len) return @@ -175,7 +175,7 @@ Bonus /datum/symptom/heal/brute/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) var/heal_amt = 4 * power - var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs. + var/list/parts = M.get_damaged_bodyparts(1,0) //brute only if(M.getCloneLoss() > 0) M.adjustCloneLoss(-1) @@ -225,7 +225,7 @@ Bonus /datum/symptom/heal/burn/Heal(mob/living/carbon/M, datum/disease/advance/A) var/heal_amt = 2 * power - var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs. + var/list/parts = M.get_damaged_bodyparts(0,1) //burn only if(!parts.len) return @@ -268,7 +268,7 @@ Bonus /datum/symptom/heal/burn/plus/Heal(mob/living/carbon/M, datum/disease/advance/A) var/heal_amt = 4 * power - var/list/parts = M.get_damaged_bodyparts(1,1) //1,1 because it needs inputs. + var/list/parts = M.get_damaged_bodyparts(0,1) //burn only if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (10 * heal_amt * TEMPERATURE_DAMAGE_COEFFICIENT)) diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index 119b04b48a..ea9156bfbd 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -43,8 +43,11 @@ BONUS /datum/symptom/itching/Activate(datum/disease/advance/A) if(!..()) return - var/mob/living/M = A.affected_mob - var/can_scratch = scratch && !M.incapacitated() - to_chat(M, "Your [pick("back", "arm", "leg", "elbow", "head")] itches. [can_scratch ? " You scratch it." : ""]") - if(can_scratch) - M.adjustBruteLoss(0.5) \ No newline at end of file + var/mob/living/carbon/M = A.affected_mob + var/picked_bodypart = pick("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg") + var/obj/item/bodypart/bodypart = M.get_bodypart(picked_bodypart) + if(bodypart && bodypart.status == BODYPART_ORGANIC && !bodypart.is_pseudopart) //robotic limbs will mean less scratching overall + var/can_scratch = scratch && !M.incapacitated() && get_location_accessible(M, picked_bodypart) + M.visible_message("[can_scratch ? "[M] scratches [M.p_their()] [bodypart.name]." : ""]", "Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]") + if(can_scratch) + bodypart.receive_damage(0.5) \ No newline at end of file From 57d58163d20eaa4e1841eb4ebd03c202d5929aa1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 01:04:36 -0500 Subject: [PATCH 27/31] [MIRROR] Overloaded leg actuators now consume at least 100 power per step (#3211) * Merge pull request #31389 from Y0SH1M4S73R/patch-1 Overloaded leg actuators now consume at least 100 power per step * Overloaded leg actuators now consume at least 100 power per step --- code/game/mecha/mecha.dm | 1 + code/game/mecha/mecha_actions.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 9b27e1e7c6..f06d355078 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -30,6 +30,7 @@ var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South. var/step_energy_drain = 10 var/melee_energy_drain = 15 + var/overload_step_energy_drain_min = 100 max_integrity = 300 //max_integrity is base health var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act. armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100) diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 4102ba914b..96576db154 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -203,7 +203,7 @@ chassis.leg_overload_mode = 1 chassis.bumpsmash = 1 chassis.step_in = min(1, round(chassis.step_in/2)) - chassis.step_energy_drain = chassis.step_energy_drain*chassis.leg_overload_coeff + chassis.step_energy_drain = max(chassis.overload_step_energy_drain_min,chassis.step_energy_drain*chassis.leg_overload_coeff) chassis.occupant_message("You enable leg actuators overload.") else chassis.leg_overload_mode = 0 From c222fa42f92e139b59c6e967557231817c5e75cb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 01:04:39 -0500 Subject: [PATCH 28/31] Automatic changelog generation for PR #3211 [ci skip] --- html/changelogs/AutoChangeLog-pr-3211.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3211.yml diff --git a/html/changelogs/AutoChangeLog-pr-3211.yml b/html/changelogs/AutoChangeLog-pr-3211.yml new file mode 100644 index 0000000000..491dd057e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3211.yml @@ -0,0 +1,4 @@ +author: "Y0SH1_M4S73R" +delete-after: True +changes: + - balance: "Gygax overdrive consumes at least 100 power per step" From 5d0853e16a494bfcf99c883124c966e87e3df3e2 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 8 Oct 2017 17:05:40 +0000 Subject: [PATCH 29/31] Crew objective/miscreant system tweaks (#3213) * Loadsa tweaks * adds miscreant pref, other fixes * fixes runtime * fixes compiling errors for REAL now hopefully * HOPEFULLY fixes compiling errors * COMPILE! --- code/__DEFINES/citadel_defines.dm | 2 +- code/__DEFINES/role_preferences.dm | 4 ++- code/citadel/cit_crewobjectives.dm | 5 ++-- code/citadel/cit_miscreants.dm | 7 ++++- .../cit_crewobjectives_civilian.dm | 27 +++---------------- .../cit_crewobjectives_medical.dm | 2 +- code/controllers/subsystem/ticker.dm | 12 ++++----- .../modules/mob/dead/new_player/new_player.dm | 4 +-- 8 files changed, 25 insertions(+), 38 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 51ba9d4c59..4c8243cdc5 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -70,4 +70,4 @@ #define ADMIN_MARKREAD(client) "(MARK READ)"//marks an adminhelp as read and under investigation #define ADMIN_IC(client) "(IC)"//marks and adminhelp as an IC issue -#define ADMIN_REJECT(client) "(REJT)"//Rejects an adminhelp for being unclear or otherwise unhelpful. resets their adminhelp timer \ No newline at end of file +#define ADMIN_REJECT(client) "(REJT)"//Rejects an adminhelp for being unclear or otherwise unhelpful. resets their adminhelp timer diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index cea6bc5e36..ab62710652 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -24,6 +24,7 @@ #define ROLE_SERVANT_OF_RATVAR "servant of Ratvar" #define ROLE_BORER "borer" #define ROLE_BROTHER "blood brother" +#define ROLE_MISCREANT "miscreant" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough @@ -46,7 +47,8 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_ABDUCTOR = /datum/game_mode/abduction, ROLE_DEVIL = /datum/game_mode/devil, ROLE_BORER, - ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult + ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult, + ROLE_MISCREANT )) //Job defines for what happens when you fail to qualify for any job during job selection diff --git a/code/citadel/cit_crewobjectives.dm b/code/citadel/cit_crewobjectives.dm index 2d9149f5b1..90a655b622 100644 --- a/code/citadel/cit_crewobjectives.dm +++ b/code/citadel/cit_crewobjectives.dm @@ -1,6 +1,6 @@ /datum/controller/subsystem/ticker/proc/generate_crew_objectives() for(var/datum/mind/crewMind in SSticker.minds) - if(prob(2) && !issilicon(crewMind.current) && !jobban_isbanned(crewMind, "Syndicate") && GLOB.miscreants_allowed) + if(prob(2) && !issilicon(crewMind.current) && !jobban_isbanned(crewMind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in crewMind.current.client.prefs.be_special) generate_miscreant_objectives(crewMind) else if(CONFIG_GET(flag/allow_crew_objectives)) @@ -25,7 +25,8 @@ return newObjective.owner = crewMind crewMind.objectives += newObjective - to_chat(crewMind, "Your objective: [newObjective.explanation_text]") + to_chat(crewMind, "As a part of Nanotrasen's anti-tide efforts, you have been assigned an optional objective. It will be checked at the end of the shift. Performing traitorous acts in pursuit of your objective may result in termination of your employment.") + to_chat(crewMind, "Your optional objective: [newObjective.explanation_text]") /datum/controller/subsystem/ticker/proc/get_valid_crew_objs(var/job = "")//taken from old hippie with adjustments var/list/objpaths = typesof(/datum/objective/crew) diff --git a/code/citadel/cit_miscreants.dm b/code/citadel/cit_miscreants.dm index f828127b55..e658fad097 100644 --- a/code/citadel/cit_miscreants.dm +++ b/code/citadel/cit_miscreants.dm @@ -7,6 +7,8 @@ return if(!crewMind.assigned_role) return + if(ROLE_MISCREANT in crewMind.current.client.prefs.be_special) + return if(jobban_isbanned(crewMind, "Syndicate")) return var/list/objectiveTypes = typesof(/datum/objective/miscreant) - /datum/objective/miscreant @@ -58,4 +60,7 @@ explanation_text = "Act as out of character as you possibly can." /datum/objective/miscreant/racism - explanation_text = "Attempt to establish superiority of your race." + explanation_text = "Attempt to establish superiority of your species." + +/datum/objective/miscreant/cargonia + explanation_text = "Attempt to establish independence of your department." diff --git a/code/citadel/crew_objectives/cit_crewobjectives_civilian.dm b/code/citadel/crew_objectives/cit_crewobjectives_civilian.dm index 81427c7951..9be0e1c028 100644 --- a/code/citadel/crew_objectives/cit_crewobjectives_civilian.dm +++ b/code/citadel/crew_objectives/cit_crewobjectives_civilian.dm @@ -185,29 +185,6 @@ else return FALSE -/datum/objective/crew/departmentclothes - var/obj/item/clothing/under/rank/targetuniform - explanation_text = "Be wearing a (Yo, this objective broke. report this to citadels discord via the development channel) at the end of the shift." - jobs = "assistant" - -/datum/objective/crew/departmentclothes/New() - . = ..() - var/list/blacklist = list(/obj/item/clothing/under/rank, /obj/item/clothing/under/rank/miner, /obj/item/clothing/under/rank/medical/blue, /obj/item/clothing/under/rank/medical/green, /obj/item/clothing/under/rank/medical/purple, /obj/item/clothing/under/rank/security/grey, /obj/item/clothing/under/rank/warden/grey, /obj/item/clothing/under/rank/head_of_security/grey, /obj/item/clothing/under/rank/mailman, /obj/item/clothing/under/rank/psyche, /obj/item/clothing/under/rank/clown/sexy, /obj/item/clothing/under/rank/centcom_officer, /obj/item/clothing/under/rank/centcom_commander, /obj/item/clothing/under/rank/security/navyblue/russian, /obj/item/clothing/under/rank/security/blueshirt) - var/list/validclothes = typesof(/obj/item/clothing/under/rank) - blacklist - targetuniform = pick(validclothes) - update_explanation_text() - -/datum/objective/crew/departmentclothes/update_explanation_text() - . = ..() - explanation_text = "Be wearing a [initial(targetuniform.name)] at the end of the shift." - -/datum/objective/crew/departmentclothes/check_completion() - if(owner && owner.current) - var/mob/living/carbon/human/H = owner.current - if(istype(H.w_uniform, targetuniform)) - return TRUE - return FALSE - /datum/objective/crew/pwrgame //ported from Goon with adjustments var/obj/item/clothing/targettidegarb explanation_text = "Get your grubby hands on a (Dear god something broke. Report this to Citadel's development dicussion channel)." @@ -215,7 +192,9 @@ /datum/objective/crew/pwrgame/New() . = ..() - var/list/muhvalids = list(/obj/item/clothing/mask/gas, /obj/item/clothing/head/welding, /obj/item/clothing/head/ushanka, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas/owl_mask, /obj/item/clothing/suit/space) + var/list/muhvalids = list(/obj/item/clothing/mask/gas, /obj/item/clothing/head/welding, /obj/item/clothing/head/ushanka, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas/owl_mask) + if(prob(10)) + muhvalids += list(/obj/item/clothing/suit/space) targettidegarb = pick(muhvalids) update_explanation_text() diff --git a/code/citadel/crew_objectives/cit_crewobjectives_medical.dm b/code/citadel/crew_objectives/cit_crewobjectives_medical.dm index 43d470f2f3..53a9dc73aa 100644 --- a/code/citadel/crew_objectives/cit_crewobjectives_medical.dm +++ b/code/citadel/crew_objectives/cit_crewobjectives_medical.dm @@ -74,7 +74,7 @@ return FALSE /datum/objective/crew/noinfections - explanation_text = "Ensure no living crew members are infected with harmful viruses at the end of the shift" + explanation_text = "Make sure there are no crew members with harmful diseases at the end of the shift." jobs = "virologist" /datum/objective/crew/noinfections/check_completion() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index fc53bfa25a..b7c3176067 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -258,7 +258,7 @@ SUBSYSTEM_DEF(ticker) //Deleting Startpoints but we need the ai point to AI-ize people later if(S.name != "AI") qdel(S) - + //assign crew objectives and generate miscreants if(CONFIG_GET(flag/allow_extended_miscreants) && GLOB.master_mode == "extended") GLOB.miscreants_allowed = TRUE @@ -282,7 +282,7 @@ SUBSYSTEM_DEF(ticker) qdel(bomb) if(epi) explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE) - + /datum/controller/subsystem/ticker/proc/create_characters() for(var/mob/dead/new_player/player in GLOB.player_list) if(player.ready == PLAYER_READY_TO_PLAY && player.mind) @@ -472,13 +472,13 @@ SUBSYSTEM_DEF(ticker) if(!crewMind.current || !crewMind.objectives.len) continue for(var/datum/objective/miscreant/MO in crewMind.objectives) - miscreants += "[crewMind.current.real_name] (Played by: [crewMind.key]). Objective: [MO.explanation_text]" + miscreants += "[crewMind.current.real_name] (Played by: [crewMind.key])
Objective: [MO.explanation_text] (Optional)
" for(var/datum/objective/crew/CO in crewMind.objectives) if(CO.check_completion()) - to_chat(crewMind.current, "
Your objective: [CO.explanation_text] Success!") - successfulCrew += "[crewMind.current.real_name] (Played by: [crewMind.key]). Objective: [CO.explanation_text]" + to_chat(crewMind.current, "
Your optional objective: [CO.explanation_text] Success!") + successfulCrew += "[crewMind.current.real_name] (Played by: [crewMind.key])
Objective: [CO.explanation_text] Success! (Optional)
" else - to_chat(crewMind.current, "
Your objective: [CO.explanation_text] Failed.") + to_chat(crewMind.current, "
Your optional objective: [CO.explanation_text] Failed.") if (successfulCrew.len) var/completedObjectives = "The following crew members completed their Crew Objectives:
" diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 9aab9e54f1..b692ab2d32 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -80,7 +80,7 @@ if(SSticker.current_state == GAME_STATE_PREGAME) var/time_remaining = SSticker.GetTimeLeft() if(time_remaining > 0) - stat("Time To Start:", "[round(time_remaining/10)]s") + stat("Time To Start:", "[round(time_remaining/10)]s") else if(time_remaining == -10) stat("Time To Start:", "DELAYED") else @@ -375,7 +375,7 @@ if(GLOB.highlander) to_chat(humanc, "THERE CAN BE ONLY ONE!!!") humanc.make_scottish() - if(prob(2) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed) + if(prob(2) && !issilicon(humanc) && !jobban_isbanned(humanc.mind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in humanc.client.prefs.be_special) SSticker.generate_miscreant_objectives(humanc.mind) else if(CONFIG_GET(flag/allow_crew_objectives)) From c91d54c6a66e353c6ed3ec428fc8809817795993 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 12:05:42 -0500 Subject: [PATCH 30/31] Automatic changelog generation for PR #3213 [ci skip] --- html/changelogs/AutoChangeLog-pr-3213.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3213.yml diff --git a/html/changelogs/AutoChangeLog-pr-3213.yml b/html/changelogs/AutoChangeLog-pr-3213.yml new file mode 100644 index 0000000000..cc1948c676 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3213.yml @@ -0,0 +1,9 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "Crew objectives are now more clearly stated to be assigned by Nanotrasen." + - tweak: "You can now opt out of being a miscreant in your preferences" + - tweak: "Round end objective display is a lot more readable" + - tweak: "Crew objectives and miscreant objectives now have more emphasis on being optional" + - tweak: "Space suits are a much rarer target for the pwrgame objective" + - rscdel: "Got rid of the departmental clothing objective" From 0f5443140d7e3dc989ff3a98295eefbccd2f58ce Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 8 Oct 2017 14:36:40 -0500 Subject: [PATCH 31/31] Automatic changelog generation for PR #3205 [ci skip] --- html/changelogs/AutoChangeLog-pr-3205.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3205.yml diff --git a/html/changelogs/AutoChangeLog-pr-3205.yml b/html/changelogs/AutoChangeLog-pr-3205.yml new file mode 100644 index 0000000000..7385e023e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3205.yml @@ -0,0 +1,6 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "The MC will now reduce tick rate during high populations to keep it from fighting with byond for processing time. +config: Added config options to control MC tick rate +admin: Admins can no longer manually control the mc's tick rate by editing the MC's processing value, instead you will have to edit the config datum's values for high/low pop tick rates."