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 +"} 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" = ( 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/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/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) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 65c7dbaf4c..f2c9cd3315 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -268,3 +268,8 @@ CONFIG_DEF(flag/allow_extended_miscreants) 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/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 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()]"]!") 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)) 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 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 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) 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()) 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/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 diff --git a/config/game_options.txt b/config/game_options.txt index 3fc1787726..d577756061 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -496,6 +496,8 @@ 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 ## CREW OBJECTIVES ## ## Comment to disable objectives for innocent crew members. @@ -506,4 +508,4 @@ ALLOW_CREW_OBJECTIVES ALLOW_MISCREANTS ## Uncomment to let miscreants spawn during Extended. I hold no responsibility for fun that may occur while this is enabled. -#ALLOW_EXTENDED_MISCREANTS \ No newline at end of file +#ALLOW_EXTENDED_MISCREANTS 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." 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." 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" 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." diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index c8b96b8469..1c519473ae 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index f0eb817549..7eec51e46e 100644 Binary files a/icons/obj/plushes.dmi and b/icons/obj/plushes.dmi differ 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"