From 3d0cb39e91157900499f53c5c7625e9e42739ac1 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 18:42:47 +0200 Subject: [PATCH 01/44] Removes revenant blight's shabby tox damage in favor of negative mood effects, and necropolis curse if not cured. --- code/__DEFINES/components.dm | 2 ++ code/datums/components/mood.dm | 26 +++++++++------- .../mood_events/generic_negative_events.dm | 7 +++++ code/datums/status_effects/debuffs.dm | 6 ++-- .../antagonists/revenant/revenant_blight.dm | 31 ++++++++++++------- 5 files changed, 46 insertions(+), 26 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 40aea24105..86ac003da2 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -222,6 +222,8 @@ //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. +#define COMSIG_INCREASE_SANITY "decrease_sanity" //Called when you want to increase sanity from anywhere in the code. +#define COMSIG_DECREASE_SANITY "increase_sanity" //Same as above but to decrease sanity instead. //NTnet #define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata)) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 730ffa9ff0..70c66b9e70 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -21,6 +21,8 @@ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event) RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) + RegisterSignal(parent, COMSIG_INCREASE_SANITY, .proc/IncreaseSanity) + RegisterSignal(parent, COMSIG_DECREASE_SANITY, .proc/DecreaseSanity) RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud) var/mob/living/owner = parent @@ -129,23 +131,23 @@ switch(mood_level) if(1) - DecreaseSanity(0.2) + DecreaseSanity(src, 0.2) if(2) - DecreaseSanity(0.125, SANITY_CRAZY) + DecreaseSanity(src, 0.125, SANITY_CRAZY) if(3) - DecreaseSanity(0.075, SANITY_UNSTABLE) + DecreaseSanity(src, 0.075, SANITY_UNSTABLE) if(4) - DecreaseSanity(0.025, SANITY_DISTURBED) + DecreaseSanity(src, 0.025, SANITY_DISTURBED) if(5) - IncreaseSanity(0.1) + IncreaseSanity(src, 0.1) if(6) - IncreaseSanity(0.15) + IncreaseSanity(src, 0.15) if(7) - IncreaseSanity(0.20) + IncreaseSanity(src, 0.20) if(8) - IncreaseSanity(0.25, SANITY_GREAT) + IncreaseSanity(src, 0.25, SANITY_GREAT) if(9) - IncreaseSanity(0.4, SANITY_GREAT) + IncreaseSanity(src, 0.4, SANITY_GREAT) if(insanity_effect != holdmyinsanityeffect) if(insanity_effect > holdmyinsanityeffect) @@ -218,7 +220,7 @@ master.crit_threshold = (master.crit_threshold - insanity_effect) + newval insanity_effect = newval -/datum/component/mood/proc/DecreaseSanity(amount, minimum = SANITY_INSANE) +/datum/component/mood/proc/DecreaseSanity(datum/source, amount, minimum = SANITY_INSANE) if(sanity < minimum) //This might make KevinZ stop fucking pinging me. IncreaseSanity(0.5) else @@ -229,7 +231,7 @@ else insanity_effect = (MINOR_INSANITY_PEN) -/datum/component/mood/proc/IncreaseSanity(amount, maximum = SANITY_NEUTRAL) +/datum/component/mood/proc/IncreaseSanity(datum/source, amount, maximum = SANITY_NEUTRAL) // Disturbed stops you from getting any more sane - I'm just gonna bung this in here var/mob/living/owner = parent if(HAS_TRAIT(owner, TRAIT_UNSTABLE)) @@ -262,6 +264,8 @@ if(the_event.timeout) addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) + return the_event + /datum/component/mood/proc/clear_event(datum/source, category) var/datum/mood_event/event = mood_events[category] if(!event) diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 69f1a66814..f747c563ad 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -169,3 +169,10 @@ /datum/mood_event/sad_empath/add_effects(mob/sadtarget) description = "[sadtarget.name] seems upset...\n" + +/datum/mood_event/revenant_blight + description = "Just give up, honk...\n" + mood_change = -5 + +/datum/mood_event/revenant_blight/add_effects() + description = "Just give up, [pick("no one will miss you", "there is nothing you can do to help", "even a clown would be more useful than you", "does it even matter in the end?")]...\n" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index e930c77c36..158dfe0dae 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -358,7 +358,7 @@ else new /obj/effect/temp_visual/bleed(get_turf(owner)) -/mob/living/proc/apply_necropolis_curse(set_curse) +/mob/living/proc/apply_necropolis_curse(set_curse, duration = 10 MINUTES) var/datum/status_effect/necropolis_curse/C = has_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) if(!set_curse) set_curse = pick(CURSE_BLINDING, CURSE_SPAWNING, CURSE_WASTING, CURSE_GRASPING) @@ -366,11 +366,11 @@ apply_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE, set_curse) else C.apply_curse(set_curse) - C.duration += 3000 //additional curses add 5 minutes + C.duration += duration * 0.5 //additional curses add half their duration /datum/status_effect/necropolis_curse id = "necrocurse" - duration = 6000 //you're cursed for 10 minutes have fun + duration = 10 MINUTES //you're cursed for 10 minutes have fun tick_interval = 50 alert_type = null var/curse_flags = NONE diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 7037ecae86..645a664f66 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -12,8 +12,8 @@ disease_flags = CURABLE permeability_mod = 1 severity = DISEASE_SEVERITY_HARMFUL - var/stagedamage = 0 //Highest stage reached. var/finalstage = 0 //Because we're spawning off the cure in the final stage, we need to check if we've done the final stage's effects. + var/datum/mood_event/revenant_blight/depression /datum/disease/revblight/cure() if(affected_mob) @@ -21,12 +21,13 @@ if(affected_mob.dna && affected_mob.dna.species) affected_mob.dna.species.handle_mutant_bodyparts(affected_mob) affected_mob.dna.species.handle_hair(affected_mob) - to_chat(affected_mob, "You feel better.") + SEND_SIGNAL(affected_mob, COMSIG_CLEAR_MOOD_EVENT, "rev_blight") ..() /datum/disease/revblight/stage_act() if(!finalstage) - if(affected_mob.lying && prob(stage*6)) + if(affected_mob.lying && prob(stage*4)) + to_chat(affected_mob, "You feel better.") cure() return if(prob(stage*3)) @@ -34,10 +35,6 @@ affected_mob.confused += 8 affected_mob.adjustStaminaLoss(8) new /obj/effect/temp_visual/revenant(affected_mob.loc) - if(stagedamage < stage) - stagedamage++ - affected_mob.adjustToxLoss(stage*2) //should, normally, do about 30 toxin damage. - new /obj/effect/temp_visual/revenant(affected_mob.loc) if(prob(45)) affected_mob.adjustStaminaLoss(stage) ..() //So we don't increase a stage before applying the stage damage. @@ -46,9 +43,13 @@ if(prob(5)) affected_mob.emote("pale") if(3) + if(!depression) + depression = SEND_SIGNAL(affected_mob, COMSIG_ADD_MOOD_EVENT, "rev_blight", /datum/mood_event/revenant_blight) + SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.12, SANITY_CRAZY) if(prob(10)) affected_mob.emote(pick("pale","shiver")) if(4) + SEND_SIGNAL(affected_mob, COMSIG_DECREASE_SANITY, 0.18, SANITY_CRAZY) if(prob(15)) affected_mob.emote(pick("pale","shiver","cries")) if(5) @@ -56,12 +57,18 @@ finalstage = TRUE to_chat(affected_mob, "You feel like [pick("nothing's worth it anymore", "nobody ever needed your help", "nothing you did mattered", "everything you tried to do was worthless")].") affected_mob.adjustStaminaLoss(45) - new /obj/effect/temp_visual/revenant(affected_mob.loc) - if(affected_mob.dna && affected_mob.dna.species) + if(affected_mob.dna?.species) affected_mob.dna.species.handle_mutant_bodyparts(affected_mob,"#1d2953") affected_mob.dna.species.handle_hair(affected_mob,"#1d2953") affected_mob.visible_message("[affected_mob] looks terrifyingly gaunt...", "You suddenly feel like your skin is wrong...") affected_mob.add_atom_colour("#1d2953", TEMPORARY_COLOUR_PRIORITY) - addtimer(CALLBACK(src, .proc/cure), 100) - else - return + new /obj/effect/temp_visual/revenant(affected_mob.loc) + addtimer(CALLBACK(src, .proc/curses), 150) + +/datum/disease/revblight/proc/curses() + if(QDELETED(affected_mob)) + return + affected_mob.playsound_local(affected_mob, 'sound/effects/curse5.ogg', 40, 1, -1) + to_chat(affected_mob, "You sense the terrific curse of a vengeful ghost befall upon you...") + target_mob.apply_necropolis_curse(null, 7 MINUTES) //Once the blight has done its course without being cured beforehand, it will cast a necrocurse to compensate how underpowered it's. + cure() From 75ae73dc1b83bc795e6bcb49eae57a4d6fdc1597 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 18:43:44 +0200 Subject: [PATCH 02/44] u n d e f i n e d v a r --- code/modules/antagonists/revenant/revenant_blight.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 645a664f66..10ba843975 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -70,5 +70,5 @@ return affected_mob.playsound_local(affected_mob, 'sound/effects/curse5.ogg', 40, 1, -1) to_chat(affected_mob, "You sense the terrific curse of a vengeful ghost befall upon you...") - target_mob.apply_necropolis_curse(null, 7 MINUTES) //Once the blight has done its course without being cured beforehand, it will cast a necrocurse to compensate how underpowered it's. + affected_mob.apply_necropolis_curse(null, 7 MINUTES) //Once the blight has done its course without being cured beforehand, it will cast a necrocurse to compensate how underpowered it's. cure() From bb4e279b72e992eb65f1076c01775cb6aa951570 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 18:54:33 +0200 Subject: [PATCH 03/44] Bumping harmfulness. --- code/modules/antagonists/revenant/revenant_blight.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 10ba843975..89d8de283a 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -11,7 +11,7 @@ viable_mobtypes = list(/mob/living/carbon/human) disease_flags = CURABLE permeability_mod = 1 - severity = DISEASE_SEVERITY_HARMFUL + severity = DISEASE_SEVERITY_DANGEROUS var/finalstage = 0 //Because we're spawning off the cure in the final stage, we need to check if we've done the final stage's effects. var/datum/mood_event/revenant_blight/depression From 9cc480a5eb07ebea9e3ca8f81c2555e80b418162 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 19:02:49 +0200 Subject: [PATCH 04/44] datum source. --- code/datums/components/mood.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 70c66b9e70..eb381af577 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -222,7 +222,7 @@ /datum/component/mood/proc/DecreaseSanity(datum/source, amount, minimum = SANITY_INSANE) if(sanity < minimum) //This might make KevinZ stop fucking pinging me. - IncreaseSanity(0.5) + IncreaseSanity(src, 0.5) else sanity = max(minimum, sanity - amount) if(sanity < SANITY_UNSTABLE) @@ -237,7 +237,7 @@ if(HAS_TRAIT(owner, TRAIT_UNSTABLE)) return if(sanity > maximum) - DecreaseSanity(0.5) //Removes some sanity to go back to our current limit. + DecreaseSanity(src, 0.5) //Removes some sanity to go back to our current limit. else sanity = min(maximum, sanity + amount) if(sanity > SANITY_CRAZY) From fc933ab7bbb6f1ba3f05073895b55b9f3700f9c7 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 19:05:55 +0200 Subject: [PATCH 05/44] setting durations. --- code/datums/status_effects/debuffs.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 158dfe0dae..269b880ecc 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -363,7 +363,8 @@ if(!set_curse) set_curse = pick(CURSE_BLINDING, CURSE_SPAWNING, CURSE_WASTING, CURSE_GRASPING) if(QDELETED(C)) - apply_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE, set_curse) + apply_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE, set_curse, duration) + else C.apply_curse(set_curse) C.duration += duration * 0.5 //additional curses add half their duration @@ -378,7 +379,8 @@ var/effect_cooldown = 100 var/obj/effect/temp_visual/curse/wasting_effect = new -/datum/status_effect/necropolis_curse/on_creation(mob/living/new_owner, set_curse) +/datum/status_effect/necropolis_curse/on_creation(mob/living/new_owner, set_curse, _duration) + duration = _duration . = ..() if(.) apply_curse(set_curse) From f449849bca92fabcf8e33e21d9d3f939204b59c3 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 22 Sep 2019 19:06:34 +0200 Subject: [PATCH 06/44] if --- code/datums/status_effects/debuffs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 269b880ecc..8191ea985c 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -380,7 +380,8 @@ var/obj/effect/temp_visual/curse/wasting_effect = new /datum/status_effect/necropolis_curse/on_creation(mob/living/new_owner, set_curse, _duration) - duration = _duration + if(_duration) + duration = _duration . = ..() if(.) apply_curse(set_curse) From d706944e20a9027f818a2cd0d0c496ab4d73e9ea Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 5 Oct 2019 04:37:01 +0200 Subject: [PATCH 07/44] The niche singularity beacon now also moderately buffs meteor waves. --- code/game/machinery/syndicatebeacon.dm | 14 ++++++++++++++ code/modules/events/meteor_wave.dm | 8 ++++++++ code/modules/uplink/uplink_items.dm | 7 ++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index a1ed7fb848..cacc109793 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -1,3 +1,7 @@ +GLOBAL_INIT_LIST(singularity_beacons) + +#define METEOR_DISASTER_MODIFIER 0.5 + //////////////////////////////////////// //Singularity beacon //////////////////////////////////////// @@ -18,11 +22,16 @@ var/icontype = "beacon" + + /obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null) if(surplus() < 1500) if(user) to_chat(user, "The connected wire doesn't have enough current.") return + GLOB.singularity_beacons += src + for(var/datum/round_event_control/meteor_wave/W in SSevents.control) + W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER)) for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.z == z) singulo.target = src @@ -40,6 +49,9 @@ active = 0 if(user) to_chat(user, "You deactivate the beacon.") + GLOB.singularity_beacons -= src + for(var/datum/round_event_control/meteor_wave/W in SSevents.control) + W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER)) /obj/machinery/power/singularity_beacon/attack_ai(mob/user) @@ -133,3 +145,5 @@ /obj/item/sbeacondrop/clownbomb desc = "A label on it reads: Warning: Activating this device will send a silly explosive to your location." droptype = /obj/machinery/syndicatebomb/badmin/clown + +#undef METEOR_DISASTER_MODIFIER diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index af22ae3b96..fc10b5ac90 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -1,5 +1,8 @@ // Normal strength +#define SINGULO_BEACON_DISTURBANCE 0.2 //singularity beacon also improve the odds of meteor waves and speed them up a little. +#define SINGULO_BEACON_MAX_DISTURBANCE 0.6 //maximum cap due to how meteor waves can be potentially round ending. + /datum/round_event_control/meteor_wave name = "Meteor Wave: Normal" typepath = /datum/round_event/meteor_wave @@ -18,6 +21,8 @@ /datum/round_event/meteor_wave/setup() announceWhen = 1 startWhen = rand(300, 600) //Yeah for SOME REASON this is measured in seconds and not deciseconds??? + if(GLOB.singularity_beacons.len) + startWhen *= 1 - min(GLOB.singularity_beacons.len * SINGULO_BEACON_DISTURBANCE, SINGULO_BEACON_MAX_DISTURBANCE) endWhen = startWhen + 60 @@ -79,3 +84,6 @@ /datum/round_event/meteor_wave/catastrophic wave_name = "catastrophic" + +#undef SINGULO_BEACON_DISTURBANCE +#undef SINGULO_BEACON_MAX_DISTURBANCE diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 09e955d2f9..c7cc7d59e8 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1487,9 +1487,10 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes /datum/uplink_item/device_tools/singularity_beacon name = "Power Beacon" desc = "When screwed to wiring attached to an electric grid and activated, this large device pulls any \ - active gravitational singularities or tesla balls towards it. This will not work when the engine is still \ - in containment. Because of its size, it cannot be carried. Ordering this \ - sends you a small beacon that will teleport the larger beacon to your location upon activation." + active gravitational singularities or tesla balls towards it (provided they are not safely \ + contained), as well as increasing the odds of incoming meteor waves. \ + Because of its size, it cannot be carried. Ordering this sends you a small beacon \ + that will teleport the larger beacon to your location upon activation." item = /obj/item/sbeacondrop cost = 14 From 35a69913008073ecfe2c9919159deb46b817b4b6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 5 Oct 2019 05:14:38 +0200 Subject: [PATCH 08/44] lone rogue parenthesis --- code/game/machinery/syndicatebeacon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index cacc109793..175a3f72ec 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -31,7 +31,7 @@ GLOBAL_INIT_LIST(singularity_beacons) return GLOB.singularity_beacons += src for(var/datum/round_event_control/meteor_wave/W in SSevents.control) - W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER)) + W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER) for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.z == z) singulo.target = src @@ -51,7 +51,7 @@ GLOBAL_INIT_LIST(singularity_beacons) to_chat(user, "You deactivate the beacon.") GLOB.singularity_beacons -= src for(var/datum/round_event_control/meteor_wave/W in SSevents.control) - W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER)) + W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER) /obj/machinery/power/singularity_beacon/attack_ai(mob/user) From 52fb4b03ac30d80035c89c3788d0b93905ec9ef4 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 5 Oct 2019 05:29:57 +0200 Subject: [PATCH 09/44] we are only keeping track of the number of singu beacons, var more efficient. --- code/game/machinery/syndicatebeacon.dm | 6 +++--- code/modules/events/meteor_wave.dm | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 175a3f72ec..3fb78ad37f 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -1,4 +1,4 @@ -GLOBAL_INIT_LIST(singularity_beacons) +GLOBAL_VAR_INIT(singularity_counter, 0) #define METEOR_DISASTER_MODIFIER 0.5 @@ -29,7 +29,7 @@ GLOBAL_INIT_LIST(singularity_beacons) if(user) to_chat(user, "The connected wire doesn't have enough current.") return - GLOB.singularity_beacons += src + GLOB.singularity_counter++ for(var/datum/round_event_control/meteor_wave/W in SSevents.control) W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER) for(var/obj/singularity/singulo in GLOB.singularities) @@ -49,7 +49,7 @@ GLOBAL_INIT_LIST(singularity_beacons) active = 0 if(user) to_chat(user, "You deactivate the beacon.") - GLOB.singularity_beacons -= src + GLOB.singularity_counter-- for(var/datum/round_event_control/meteor_wave/W in SSevents.control) W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER) diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index fc10b5ac90..6f01caa275 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -21,8 +21,8 @@ /datum/round_event/meteor_wave/setup() announceWhen = 1 startWhen = rand(300, 600) //Yeah for SOME REASON this is measured in seconds and not deciseconds??? - if(GLOB.singularity_beacons.len) - startWhen *= 1 - min(GLOB.singularity_beacons.len * SINGULO_BEACON_DISTURBANCE, SINGULO_BEACON_MAX_DISTURBANCE) + if(GLOB.singularity_counter) + startWhen *= 1 - min(GLOB.singularity_counter * SINGULO_BEACON_DISTURBANCE, SINGULO_BEACON_MAX_DISTURBANCE) endWhen = startWhen + 60 From fce6f134719ee788ea646f33ab8d64950e566f76 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 7 Oct 2019 23:58:15 +0200 Subject: [PATCH 10/44] Ports "Chat Subsystem ported from TerraGov-Marine-Corps" --- code/__DEFINES/misc.dm | 3 ++ code/__DEFINES/subsystems.dm | 5 +- code/__HELPERS/roundend.dm | 30 +++++------ code/_globalvars/misc.dm | 2 - code/controllers/subsystem/chat.dm | 67 +++++++++++++++++++++++++ code/modules/admin/verbs/adminhelp.dm | 6 +-- code/modules/antagonists/devil/devil.dm | 8 +-- code/modules/goonchat/browserOutput.dm | 11 ++-- tgstation.dme | 1 + 9 files changed, 105 insertions(+), 28 deletions(-) create mode 100644 code/controllers/subsystem/chat.dm diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index b6115e93e9..97c904d4c8 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -499,3 +499,6 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define VOMIT_TOXIC 1 #define VOMIT_PURPLE 2 + +//Misc text define. Does 4 spaces. Used as a makeshift tabulator. +#define FOURSPACES "    " diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 3394fba90c..d4086bc4d9 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -83,7 +83,9 @@ #define INIT_ORDER_SHUTTLE -21 #define INIT_ORDER_MINOR_MAPPING -40 #define INIT_ORDER_PATH -50 -#define INIT_ORDER_PERSISTENCE -100 +#define INIT_ORDER_PERSISTENCE -95 +#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. + // Subsystem fire priority, from lowest to highest priority // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) @@ -114,6 +116,7 @@ #define FIRE_PRIORITY_MOBS 100 #define FIRE_PRIORITY_TGUI 110 #define FIRE_PRIORITY_TICKER 200 +#define FIRE_PRIORITY_CHAT 400 #define FIRE_PRIORITY_OVERLAYS 500 #define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost. diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 0e9413520b..8e59106d98 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -280,41 +280,41 @@ if(GLOB.round_id) var/statspage = CONFIG_GET(string/roundstatsurl) var/info = statspage ? "[GLOB.round_id]" : GLOB.round_id - parts += "[GLOB.TAB]Round ID: [info]" + parts += "[FOURSPACES]Round ID: [info]" var/list/voting_results = SSvote.stored_gamemode_votes if(length(voting_results)) - parts += "[GLOB.TAB]Voting: " + parts += "[FOURSPACES]Voting: " var/total_score = 0 for(var/choice in voting_results) var/score = voting_results[choice] total_score += score - parts += "[GLOB.TAB][GLOB.TAB][choice]: [score]" + parts += "[FOURSPACES][FOURSPACES][choice]: [score]" - parts += "[GLOB.TAB]Shift Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]" - parts += "[GLOB.TAB]Station Integrity: [mode.station_was_nuked ? "Destroyed" : "[popcount["station_integrity"]]%"]" + parts += "[FOURSPACES]Shift Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]" + parts += "[FOURSPACES]Station Integrity: [mode.station_was_nuked ? "Destroyed" : "[popcount["station_integrity"]]%"]" var/total_players = GLOB.joined_player_list.len if(total_players) - parts+= "[GLOB.TAB]Total Population: [total_players]" + parts+= "[FOURSPACES]Total Population: [total_players]" if(station_evacuated) - parts += "
[GLOB.TAB]Evacuation Rate: [popcount[POPCOUNT_ESCAPEES]] ([PERCENT(popcount[POPCOUNT_ESCAPEES]/total_players)]%)" - parts += "[GLOB.TAB](on emergency shuttle): [popcount[POPCOUNT_SHUTTLE_ESCAPEES]] ([PERCENT(popcount[POPCOUNT_SHUTTLE_ESCAPEES]/total_players)]%)" - parts += "[GLOB.TAB]Survival Rate: [popcount[POPCOUNT_SURVIVORS]] ([PERCENT(popcount[POPCOUNT_SURVIVORS]/total_players)]%)" + parts += "
[FOURSPACES]Evacuation Rate: [popcount[POPCOUNT_ESCAPEES]] ([PERCENT(popcount[POPCOUNT_ESCAPEES]/total_players)]%)" + parts += "[FOURSPACES](on emergency shuttle): [popcount[POPCOUNT_SHUTTLE_ESCAPEES]] ([PERCENT(popcount[POPCOUNT_SHUTTLE_ESCAPEES]/total_players)]%)" + parts += "[FOURSPACES]Survival Rate: [popcount[POPCOUNT_SURVIVORS]] ([PERCENT(popcount[POPCOUNT_SURVIVORS]/total_players)]%)" if(SSblackbox.first_death) var/list/ded = SSblackbox.first_death if(ded.len) - parts += "[GLOB.TAB]First Death: [ded["name"]], [ded["role"]], at [ded["area"]]. Damage taken: [ded["damage"]].[ded["last_words"] ? " Their last words were: \"[ded["last_words"]]\"" : ""]" + parts += "[FOURSPACES]First Death: [ded["name"]], [ded["role"]], at [ded["area"]]. Damage taken: [ded["damage"]].[ded["last_words"] ? " Their last words were: \"[ded["last_words"]]\"" : ""]" //ignore this comment, it fixes the broken sytax parsing caused by the " above else - parts += "[GLOB.TAB]Nobody died this shift!" + parts += "[FOURSPACES]Nobody died this shift!" if(istype(SSticker.mode, /datum/game_mode/dynamic)) var/datum/game_mode/dynamic/mode = SSticker.mode - parts += "[GLOB.TAB]Threat level: [mode.threat_level]" - parts += "[GLOB.TAB]Threat left: [mode.threat]" - parts += "[GLOB.TAB]Executed rules:" + parts += "[FOURSPACES]Threat level: [mode.threat_level]" + parts += "[FOURSPACES]Threat left: [mode.threat]" + parts += "[FOURSPACES]Executed rules:" for(var/datum/dynamic_ruleset/rule in mode.executed_rules) - parts += "[GLOB.TAB][GLOB.TAB][rule.ruletype] - [rule.name]: -[rule.cost] threat" + parts += "[FOURSPACES][FOURSPACES][rule.ruletype] - [rule.name]: -[rule.cost] threat" return parts.Join("
") /client/proc/roundend_report_file() diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index e7b2ae6cbe..037e5067d8 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -6,8 +6,6 @@ GLOBAL_VAR_INIT(timezoneOffset, 0) // The difference betwen midnight (of the hos // However it'd be ok to use for accessing attack logs and such too, which are even laggier. GLOBAL_VAR_INIT(fileaccess_timer, 0) -GLOBAL_VAR_INIT(TAB, "    ") - GLOBAL_DATUM_INIT(data_core, /datum/datacore, new) GLOBAL_VAR_INIT(CELLRATE, 0.002) // conversion ratio between a watt-tick and kilojoule diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm new file mode 100644 index 0000000000..37e53e8990 --- /dev/null +++ b/code/controllers/subsystem/chat.dm @@ -0,0 +1,67 @@ +SUBSYSTEM_DEF(chat) + name = "Chat" + flags = SS_TICKER|SS_NO_INIT + wait = 1 + priority = FIRE_PRIORITY_CHAT + init_order = INIT_ORDER_CHAT + var/list/payload = list() + + +/datum/controller/subsystem/chat/fire() + for(var/i in payload) + var/client/C = i + C << output(payload[C], "browseroutput:output") + payload -= C + + if(MC_TICK_CHECK) + return + + +/datum/controller/subsystem/chat/proc/queue(target, message, handle_whitespace = TRUE) + if(!target || !message) + return + + if(!istext(message)) + stack_trace("to_chat called with invalid input type") + return + + if(target == world) + target = GLOB.clients + + //Some macros remain in the string even after parsing and fuck up the eventual output + message = replacetext(message, "\improper", "") + message = replacetext(message, "\proper", "") + if(handle_whitespace) + message = replacetext(message, "\n", "
") + message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]") + message += "
" + + + //url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript. + //Do the double-encoding here to save nanoseconds + var/twiceEncoded = url_encode(url_encode(message)) + + if(islist(target)) + for(var/I in target) + var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible + + if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file. + continue + + if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue + C.chatOutput.messageQueue += message + continue + + payload[C] += twiceEncoded + + else + var/client/C = CLIENT_FROM_VAR(target) //Grab us a client if possible + + if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file. + return + + if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue + C.chatOutput.messageQueue += message + return + + payload[C] += twiceEncoded diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 91fdc78d20..4e58a9cba5 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -413,9 +413,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) dat += "CLOSED" else dat += "UNKNOWN" - dat += "[GLOB.TAB][TicketHref("Refresh", ref_src)][GLOB.TAB][TicketHref("Re-Title", ref_src, "retitle")]" + dat += "[FOURSPACES][TicketHref("Refresh", ref_src)][FOURSPACES][TicketHref("Re-Title", ref_src, "retitle")]" if(state != AHELP_ACTIVE) - dat += "[GLOB.TAB][TicketHref("Reopen", ref_src, "reopen")]" + dat += "[FOURSPACES][TicketHref("Reopen", ref_src, "reopen")]" dat += "

Opened at: [GAMETIMESTAMP("hh:mm:ss", closed_at)] (Approx [DisplayTimeText(world.time - opened_at)] ago)" if(closed_at) dat += "
Closed at: [GAMETIMESTAMP("hh:mm:ss", closed_at)] (Approx [DisplayTimeText(world.time - closed_at)] ago)" @@ -423,7 +423,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(initiator) dat += "Actions: [FullMonty(ref_src)]
" else - dat += "DISCONNECTED[GLOB.TAB][ClosureLinks(ref_src)]
" + dat += "DISCONNECTED[FOURSPACES][ClosureLinks(ref_src)]
" dat += "
Log:

" for(var/I in _interactions) dat += "[I]
" diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 3f2bd003a3..dc649025d2 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -539,10 +539,10 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/list/parts = list() parts += "The devil's true name is: [truename]" parts += "The devil's bans were:" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][ban]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][bane]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][obligation]]" - parts += "[GLOB.TAB][GLOB.lawlorify[LORE][banish]]" + parts += "[FOURSPACES][GLOB.lawlorify[LORE][ban]]" + parts += "[FOURSPACES][GLOB.lawlorify[LORE][bane]]" + parts += "[FOURSPACES][GLOB.lawlorify[LORE][obligation]]" + parts += "[FOURSPACES][GLOB.lawlorify[LORE][banish]]" return parts.Join("
") /datum/antagonist/devil/roundend_report() diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 082f20f524..72e0576f4c 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -181,8 +181,8 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico log_world("\[[time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")]\] Client: [(src.owner.key ? src.owner.key : src.owner)] triggered JS error: [error]") //Global chat procs -/proc/to_chat(target, message, handle_whitespace=TRUE) - if(!target) +/proc/to_chat_immediate(target, message, handle_whitespace=TRUE) + if(!target || !message) return //Ok so I did my best but I accept that some calls to this will be for shit like sound and images @@ -204,7 +204,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico message = replacetext(message, "\proper", "") if(handle_whitespace) message = replacetext(message, "\n", "
") - message = replacetext(message, "\t", "[GLOB.TAB][GLOB.TAB]") + message = replacetext(message, "\t", "[FOURSPACES][FOURSPACES]") if(islist(target)) // Do the double-encoding outside the loop to save nanoseconds @@ -247,6 +247,11 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("tmp/iconCache.sav")) //Cache of ico // url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript. C << output(url_encode(url_encode(message)), "browseroutput:output") +/proc/to_chat(target, message, handle_whitespace = TRUE) + if(Master.current_runlevel == RUNLEVEL_INIT || !SSchat?.initialized) + to_chat_immediate(target, message, handle_whitespace) + return + SSchat.queue(target, message, handle_whitespace) /datum/chatOutput/proc/swaptolightmode() //Dark mode light mode stuff. Yell at KMC if this breaks! (See darkmode.dm for documentation) owner.force_white_theme() diff --git a/tgstation.dme b/tgstation.dme index cceeb1f915..8b5ea81313 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -231,6 +231,7 @@ #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\augury.dm" #include "code\controllers\subsystem\blackbox.dm" +#include "code\controllers\subsystem\chat.dm" #include "code\controllers\subsystem\communications.dm" #include "code\controllers\subsystem\dbcore.dm" #include "code\controllers\subsystem\dcs.dm" From 9ee1987dec41ef91ff44a4216a376e69fd4d990e Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 8 Oct 2019 20:04:08 +0200 Subject: [PATCH 11/44] Applying kevinz' ominous warning suggestion --- code/game/machinery/syndicatebeacon.dm | 14 ++++++++++---- code/modules/events/meteor_wave.dm | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 3fb78ad37f..67c9627423 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -25,10 +25,12 @@ GLOBAL_VAR_INIT(singularity_counter, 0) /obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null) + if(active) + return FALSE if(surplus() < 1500) if(user) to_chat(user, "The connected wire doesn't have enough current.") - return + return FALSE GLOB.singularity_counter++ for(var/datum/round_event_control/meteor_wave/W in SSevents.control) W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER) @@ -36,22 +38,26 @@ GLOBAL_VAR_INIT(singularity_counter, 0) if(singulo.z == z) singulo.target = src icon_state = "[icontype]1" - active = 1 + active = TRUE if(user) to_chat(user, "You activate the beacon.") + return TRUE -/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null) +/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user) + if(!active) + return FALSE for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.target == src) singulo.target = null icon_state = "[icontype]0" - active = 0 + active = FALSE if(user) to_chat(user, "You deactivate the beacon.") GLOB.singularity_counter-- for(var/datum/round_event_control/meteor_wave/W in SSevents.control) W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER) + return TRUE /obj/machinery/power/singularity_beacon/attack_ai(mob/user) diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 6f01caa275..4584d1c2e9 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -57,7 +57,7 @@ kill() /datum/round_event/meteor_wave/announce(fake) - priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.", "Meteor Alert", 'sound/ai/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely.", ""]", "Meteor Alert", 'sound/ai/meteors.ogg') /datum/round_event/meteor_wave/tick() if(ISMULTIPLE(activeFor, 3)) From 2bce423ec316b6ac34411d2d3e5a860433aa1c50 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Thu, 10 Oct 2019 14:08:14 -0400 Subject: [PATCH 12/44] Added a -ton- of stuff to the Kinkmate --- code/modules/clothing/under/accessories.dm | 8 +++++ .../reagents/reagent_containers/bottle.dm | 22 +++++++++++++ .../code/game/machinery/vending.dm | 31 +++++++++++++------ 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 878030bc5d..6dd6164d79 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -355,6 +355,14 @@ above_suit = TRUE armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25) +/obj/item/clothing/accessory/skullcodpiece/fake + name = "false codpiece" + desc = "A plastic ornament, intended to protect the important things in life. It's not very good at it." + icon_state = "skull" + item_color = "skull" + above_suit = TRUE + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + ///////////////////// //Synda Accessories// ///////////////////// diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 249ed56d20..afe48ab3fb 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -404,3 +404,25 @@ /obj/item/reagent_containers/glass/bottle/bromine name = "bromine bottle" list_reagents = list("bromine" = 30) + +//Lewd Stuff + +/obj/item/reagent_containers/glass/bottle/crocin + name = "Crocin bottle" + desc = "A bottle of mild aphrodisiac. Increases libido." + list_reagents = list("aphro" = 30) + +/obj/item/reagent_containers/glass/bottle/hexacrocin + name = "Hexacrocin bottle" + desc = "A bottle of strong aphrodisiac. Increases libido." + list_reagents = list("aphro+" = 30) + +/obj/item/reagent_containers/glass/bottle/camphor + name = "Camphor bottle" + desc = "A bottle of mild anaphrodisiac. Reduces libido." + list_reagents = list("anaphro" = 30) + +/obj/item/reagent_containers/glass/bottle/hexacamphor + name = "Hexacamphor bottle" + desc = "A bottle of strong anaphrodisiac. Reduces libido." + list_reagents = list("anaphro+" = 30) \ No newline at end of file diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 2de98a3171..be4b71ce1d 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -43,18 +43,31 @@ vend_reply = "Have fun, you shameless pervert!" products = list( /obj/item/clothing/under/maid = 5, - /obj/item/clothing/under/stripper_pink = 5, - /obj/item/clothing/under/stripper_green = 5, - /obj/item/dildo/custom = 5 - ) - contraband = list(/obj/item/restraints/handcuffs/fake/kinky = 5, /obj/item/clothing/neck/petcollar = 5, - /obj/item/clothing/under/mankini = 1, - /obj/item/dildo/flared/huge = 1 + /obj/item/clothing/neck/petcollar/choker = 5, + /obj/item/clothing/neck/petcollar/leather = 5, + /obj/item/restraints/handcuffs/fake/kinky = 5, + /obj/item/clothing/glasses/sunglasses/blindfold = 4, + /obj/item/clothing/mask/muzzle = 4, + /obj/item/clothing/under/stripper_pink = 3, + /obj/item/clothing/under/stripper_green = 3, + /obj/item/dildo/custom = 5, + /obj/item/electropack/shockcollar = 3, + /obj/item/assembly/signaler = 3 + ) + contraband = list( + /obj/item/clothing/neck/petcollar/locked = 2, + /obj/item/key/collar = 2, + /obj/item/clothing/head/kitty = 3, + /obj/item/clothing/under/mankini = 2, + /obj/item/clothing/under/jabroni = 2, + /obj/item/dildo/flared/huge = 1, + /obj/item/reagent_containers/glass/bottle/crocin = 5, + /obj/item/reagent_containers/glass/bottle/camphor = 5 ) premium = list( - /obj/item/electropack/shockcollar = 3, - /obj/item/clothing/neck/petcollar/locked = 1 + /obj/item/clothing/accessory/skullcodpiece/fake = 1, + /obj/item/reagent_containers/glass/bottle/hexacrocin = 5 ) refill_canister = /obj/item/vending_refill/kink /* From e83460853ce806f319ff757372377a955a8c4af8 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:09 -0400 Subject: [PATCH 13/44] Update furrypeople.dm --- .../mob/living/carbon/human/species_types/furrypeople.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index e726d45347..ccdd0f4afe 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -5,8 +5,8 @@ should_draw_citadel = TRUE species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) - mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "taur", "horns", "legs") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", + mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "deco_wings", "taur", "horns", "legs") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "Angel", "mam_body_markings" = "Husky", "taur" = "None", "horns" = "None", "legs" = "Plantigrade", "meat_type" = "Mammalian") attack_verb = "claw" attack_sound = 'sound/weapons/slash.ogg' From 0d5770f986d4de1a8258ef150ca70d896089123c Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:12 -0400 Subject: [PATCH 14/44] Update species.dm --- code/modules/mob/living/carbon/human/species.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index b6346bead8..e248fe22fb 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -731,6 +731,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) S = GLOB.wings_list[H.dna.features["wings"]] if("wingsopen") S = GLOB.wings_open_list[H.dna.features["wings"]] + if("deco_wings") + S = GLOB.deco_wings_list[H.dna.features["deco_wings"]] if("legs") S = GLOB.legs_list[H.dna.features["legs"]] if("insect_wings") From 2d84b541cf6d4a52e0dcc389f68136f0b7ce25ed Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:15 -0400 Subject: [PATCH 15/44] Update wings.dm --- .../mob/dead/new_player/sprite_accessories/wings.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index dc0e0222bf..00e03efa6b 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -27,6 +27,16 @@ dimension_y = 34 locked = TRUE +// Decorative wings +/datum/sprite_accessory/deco_wings + icon = 'icons/mob/wings.dmi' + color_src = null + +/datum/sprite_accessory/deco_wings/none + name = "None" + icon_state = "none" + + //INSECT WINGS /datum/sprite_accessory/insect_wings From ce81e657b56945b7d556f19d52920d382599c799 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:17 -0400 Subject: [PATCH 16/44] Update preferences_savefile.dm --- code/modules/client/preferences_savefile.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index ebd135916c..94c1158885 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -352,6 +352,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_human_tail"] >> features["tail_human"] S["feature_human_ears"] >> features["ears"] S["feature_insect_wings"] >> features["insect_wings"] + S["feature_deco_wings"] >> features["deco_wings"] S["feature_insect_fluff"] >> features["insect_fluff"] //Custom names @@ -484,6 +485,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) + features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list) features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) @@ -553,6 +555,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) WRITE_FILE(S["feature_insect_wings"] , features["insect_wings"]) + WRITE_FILE(S["feature_deco_wings"] , features["deco_wings"]) WRITE_FILE(S["feature_insect_fluff"] , features["insect_fluff"]) WRITE_FILE(S["feature_meat"] , features["meat_type"]) From a61fed2a73d28154c3ba9ef106676dd4b3985134 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:19 -0400 Subject: [PATCH 17/44] Update preferences.dm --- code/modules/client/preferences.dm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ae6de5ba05..c6166ca970 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -95,6 +95,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "ears" = "None", "wings" = "None", "frills" = "None", + "deco_wings" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Plantigrade", @@ -583,6 +584,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(mutant_category >= MAX_MUTANT_ROWS) dat += "" mutant_category = 0 + if("deco_wings" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

Decorative wings

" + + dat += "[features["deco_wings"]]" if("insect_wings" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -1722,7 +1730,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) new_insect_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.insect_wings_list if(new_insect_wings) features["insect_wings"] = new_insect_wings - + + if("deco_wings") + var/new_deco_wings + new_deco_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.deco_wings_list + if(new_deco_wings) + features["deco_wings"] = new_deco_wings + if("insect_fluffs") var/new_insect_fluff new_insect_fluff = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.insect_fluffs_list From fb715ed955f26b6aef69d81fa1e5cc313f2f5c36 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:20 -0400 Subject: [PATCH 18/44] Update create_mob.dm --- code/modules/admin/create_mob.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 8b6f471e7d..cff7faadd8 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -35,8 +35,9 @@ H.dna.features["spines"] = pick(GLOB.spines_list) H.dna.features["body_markings"] = pick(GLOB.body_markings_list) H.dna.features["insect_wings"] = pick(GLOB.insect_wings_list) + H.dna.features["deco_wings"] = pick(GLOB.deco_wings_list) H.dna.features["insect_fluff"] = pick(GLOB.insect_fluffs_list) H.update_body() H.update_hair() - H.update_body_parts() \ No newline at end of file + H.update_body_parts() From fef7dd4ac576556ac61b854e9fe95014aba17eae Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:22 -0400 Subject: [PATCH 19/44] Update flavor_misc.dm --- code/_globalvars/lists/flavor_misc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index c759658bd4..a2135b93b2 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -33,6 +33,7 @@ GLOBAL_LIST_EMPTY(animated_tails_list_human) GLOBAL_LIST_EMPTY(ears_list) GLOBAL_LIST_EMPTY(wings_list) GLOBAL_LIST_EMPTY(wings_open_list) +GLOBAL_LIST_EMPTY(deco_wings_list) GLOBAL_LIST_EMPTY(r_wings_list) GLOBAL_LIST_EMPTY(insect_wings_list) GLOBAL_LIST_EMPTY(insect_fluffs_list) From 05fa19c8562dbdc757b9c35e487c31e86f77385f Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:24 -0400 Subject: [PATCH 20/44] Update mobs.dm --- code/__HELPERS/mobs.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 8f3cd4f60d..c20b3b8d36 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -70,6 +70,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) if(!GLOB.wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) + if(!GLOB.deco_wings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.deco_wings_list) if(!GLOB.insect_wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) if(!GLOB.insect_fluffs_list.len) @@ -138,6 +140,7 @@ "tail_lizard" = pick(GLOB.tails_list_lizard), "tail_human" = "None", "wings" = "None", + "deco_wings" = "None", "snout" = pick(GLOB.snouts_list), "horns" = pick(GLOB.horns_list), "ears" = "None", From 2822f437205e3d33f65dae97ec3f6823dc1aa42f Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:32:25 -0400 Subject: [PATCH 21/44] Update global_lists.dm --- code/__HELPERS/global_lists.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index b20122e653..4f7a041745 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -32,6 +32,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.deco_wings_list) //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) From e85e4995047ba191e10924c7ad681b69835429d5 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 20:45:38 -0400 Subject: [PATCH 22/44] I forgot a part. Copy-pasted the Angel's wings' bit of code to have something to show. --- .../mob/dead/new_player/sprite_accessories/wings.dm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 00e03efa6b..2ddfd16188 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -30,7 +30,15 @@ // Decorative wings /datum/sprite_accessory/deco_wings icon = 'icons/mob/wings.dmi' - color_src = null + +/datum/sprite_accessory/deco_wings/angel + name = "Angel" + icon_state = "angel" + color_src = 0 + dimension_x = 46 + center = TRUE + dimension_y = 34 + locked = TRUE /datum/sprite_accessory/deco_wings/none name = "None" From 618f8f30c548811c9f972432088a68addfac2890 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:09:09 -0400 Subject: [PATCH 23/44] Update code/__HELPERS/global_lists.dm Co-Authored-By: Poojawa --- code/__HELPERS/global_lists.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 4f7a041745..6fca4eed3d 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -32,7 +32,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.deco_wings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/deco_wings, GLOB.deco_wings_list) //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) From 8b1e140fa0d43455e6bdee345ecb654dc5ce43cd Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:09:14 -0400 Subject: [PATCH 24/44] Update code/__HELPERS/mobs.dm Co-Authored-By: Poojawa --- code/__HELPERS/mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index c20b3b8d36..39d58ec15a 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -71,7 +71,7 @@ if(!GLOB.wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) if(!GLOB.deco_wings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.deco_wings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/deco_wings, GLOB.deco_wings_list) if(!GLOB.insect_wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) if(!GLOB.insect_fluffs_list.len) From 6b2a68f77afe9cd5716d4821f304ad0970c9ea18 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:09:28 -0400 Subject: [PATCH 25/44] Update code/modules/mob/living/carbon/human/species_types/furrypeople.dm Co-Authored-By: Poojawa --- .../mob/living/carbon/human/species_types/furrypeople.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index ccdd0f4afe..07e594d20b 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -6,7 +6,7 @@ species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,HORNCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) mutant_bodyparts = list("mam_tail", "mam_ears", "mam_body_markings", "mam_snouts", "deco_wings", "taur", "horns", "legs") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "Angel", + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "deco_wings" = "None", "mam_body_markings" = "Husky", "taur" = "None", "horns" = "None", "legs" = "Plantigrade", "meat_type" = "Mammalian") attack_verb = "claw" attack_sound = 'sound/weapons/slash.ogg' From 1b08c541e2232fb7450c569f063bfd9f3fb5f199 Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:11:48 -0400 Subject: [PATCH 26/44] Update wings.dm --- .../new_player/sprite_accessories/wings.dm | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 2ddfd16188..4ea68492b1 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -30,6 +30,72 @@ // Decorative wings /datum/sprite_accessory/deco_wings icon = 'icons/mob/wings.dmi' + +/datum/sprite_accessory/deco_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/deco_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/deco_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/deco_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/deco_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/deco_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/deco_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/deco_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/deco_wings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/deco_wings/punished + name = "Burnt Off" + icon_state = "punished" + locked = TRUE + +/datum/sprite_accessory/deco_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/deco_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/deco_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/deco_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/deco_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/deco_wings/snow + name = "Snow" + icon_state = "snow" + /datum/sprite_accessory/deco_wings/angel name = "Angel" From 3afbc5733cc7e62a5c2392d8fd6a743b7754a17c Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Fri, 11 Oct 2019 01:14:09 -0400 Subject: [PATCH 27/44] Update vending.dm --- modular_citadel/code/game/machinery/vending.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index be4b71ce1d..1bfd46ca53 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -59,6 +59,7 @@ /obj/item/clothing/neck/petcollar/locked = 2, /obj/item/key/collar = 2, /obj/item/clothing/head/kitty = 3, + /obj/item/clothing/head/rabbitears = 3, /obj/item/clothing/under/mankini = 2, /obj/item/clothing/under/jabroni = 2, /obj/item/dildo/flared/huge = 1, From 988a943f0130fd08e7566688f9c8d80ded1f2ac8 Mon Sep 17 00:00:00 2001 From: JTGSZ <46565256+JTGSZ@users.noreply.github.com> Date: Fri, 11 Oct 2019 02:36:10 -0400 Subject: [PATCH 28/44] Try number 2 --- code/__DEFINES/jobs.dm | 1 + code/modules/mob/dead/new_player/new_player.dm | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index e6eb9f313e..ed45da9923 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -48,6 +48,7 @@ #define JOB_UNAVAILABLE_PLAYTIME 3 #define JOB_UNAVAILABLE_ACCOUNTAGE 4 #define JOB_UNAVAILABLE_SLOTFULL 5 +#define JOB_UNAVAILABLE_SPECIESLOCK 6 #define DEFAULT_RELIGION "Christianity" #define DEFAULT_DEITY "Space Jesus" diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index f0b7c18b28..8cfe2c31c3 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -315,6 +315,8 @@ return "Your account is not old enough for [jobtitle]." if(JOB_UNAVAILABLE_SLOTFULL) return "[jobtitle] is already filled to capacity." + if(JOB_UNAVAILABLE_SPECIESLOCK) + return "Your species cannot play as a [jobtitle]." return "Error: Unknown job availability." /mob/dead/new_player/proc/IsJobUnavailable(rank, latejoin = FALSE) @@ -340,6 +342,8 @@ return JOB_UNAVAILABLE_PLAYTIME if(latejoin && !job.special_check_latejoin(client)) return JOB_UNAVAILABLE_GENERIC + if(!client.prefs.pref_species.qualifies_for_rank(rank, client.prefs.features)) + return JOB_UNAVAILABLE_SPECIESLOCK return JOB_AVAILABLE /mob/dead/new_player/proc/AttemptLateSpawn(rank) From 7a454e448a16817feb4170c61b4c6ad5cdd35b84 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Fri, 11 Oct 2019 02:54:23 -0400 Subject: [PATCH 29/44] I forgot the one item I wanted to add. --- modular_citadel/code/game/machinery/vending.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 1bfd46ca53..9d3f4a8975 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -68,7 +68,8 @@ ) premium = list( /obj/item/clothing/accessory/skullcodpiece/fake = 1, - /obj/item/reagent_containers/glass/bottle/hexacrocin = 5 + /obj/item/clothing/under/gear_harness = 10, + /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 ) refill_canister = /obj/item/vending_refill/kink /* From 2c54e7390d00b3440b5944a8bee3da02ab2581a3 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Fri, 11 Oct 2019 02:54:44 -0400 Subject: [PATCH 30/44] Update vending.dm --- modular_citadel/code/game/machinery/vending.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 9d3f4a8975..100d628c0e 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -67,7 +67,7 @@ /obj/item/reagent_containers/glass/bottle/camphor = 5 ) premium = list( - /obj/item/clothing/accessory/skullcodpiece/fake = 1, + /obj/item/clothing/accessory/skullcodpiece/fake = 3, /obj/item/clothing/under/gear_harness = 10, /obj/item/reagent_containers/glass/bottle/hexacrocin = 10 ) From 3e7131c7f676338b8854f9db5512795c8066232e Mon Sep 17 00:00:00 2001 From: r4d6 <50276533+r4d6@users.noreply.github.com> Date: Fri, 11 Oct 2019 05:43:55 -0400 Subject: [PATCH 31/44] Update wings.dm --- code/modules/mob/dead/new_player/sprite_accessories/wings.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 4ea68492b1..aaffc0389d 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -100,11 +100,6 @@ /datum/sprite_accessory/deco_wings/angel name = "Angel" icon_state = "angel" - color_src = 0 - dimension_x = 46 - center = TRUE - dimension_y = 34 - locked = TRUE /datum/sprite_accessory/deco_wings/none name = "None" From 6709dbd161cc1aa248598dda9af850a778c67001 Mon Sep 17 00:00:00 2001 From: Winter Flare <7543955+Owai-Seek@users.noreply.github.com> Date: Fri, 11 Oct 2019 13:25:23 -0400 Subject: [PATCH 32/44] Requested Change --- modular_citadel/code/game/machinery/vending.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm index 100d628c0e..6a91810173 100755 --- a/modular_citadel/code/game/machinery/vending.dm +++ b/modular_citadel/code/game/machinery/vending.dm @@ -62,7 +62,7 @@ /obj/item/clothing/head/rabbitears = 3, /obj/item/clothing/under/mankini = 2, /obj/item/clothing/under/jabroni = 2, - /obj/item/dildo/flared/huge = 1, + /obj/item/dildo/flared/huge = 3, /obj/item/reagent_containers/glass/bottle/crocin = 5, /obj/item/reagent_containers/glass/bottle/camphor = 5 ) From 7495de7d152e9b44b7cb999a639f2c73ae407ab1 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 11 Oct 2019 14:04:08 -0400 Subject: [PATCH 33/44] Update granters.dm --- code/game/objects/items/granters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index e4e16fbfb4..fdb016df38 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -302,7 +302,7 @@ spellname = "charge" icon_state ="bookcharge" desc = "This book is made of 100% postconsumer wizard." - remarks = list("I feel ALIVE!", "I CAN TASTE THE MANA!", "What a RUSH!", "I'm FLYING through these pages!", "THIS GENIUS IS MAKING IT!", "This book is ACTION PAcKED!", "HE'S DONE IT", "LETS GOOOOOOOOOOOO") + remarks = list("I feel ALIVE!", "I CAN TASTE THE MANA!", "What a RUSH!", "I'm FLYING through these pages!", "THIS GENIUS IS MAKING IT!", "This book is ACTION PAcKED!", "HE'S DONE IT", "LETS GOOOOOOOOOOOO", "Just wait faster is all...") /obj/item/book/granter/spell/charge/recoil(mob/user) ..() From c389099a4754e478fac7ae1f35d9d816e35a168d Mon Sep 17 00:00:00 2001 From: Putnam Date: Fri, 11 Oct 2019 23:58:34 -0700 Subject: [PATCH 34/44] Makes brain-healing nanites not work uselessly --- .../research/nanites/nanite_programs/healing.dm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index 8aab7f1e2b..38935a531d 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -72,8 +72,10 @@ /datum/nanite_program/brain_heal/check_conditions() if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - if(length(C.get_traumas())) - return ..() + for(var/X in C.get_traumas()) + var/datum/brain_trauma/BT = X + if(BT.resilience <= TRAUMA_RESILIENCE_BASIC) + return ..() if(host_mob.getBrainLoss()) return ..() return FALSE @@ -193,8 +195,10 @@ /datum/nanite_program/brain_heal_advanced/check_conditions() if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - if(length(C.get_traumas())) - return ..() + for(var/X in C.get_traumas()) + var/datum/brain_trauma/BT = X + if(BT.resilience <= TRAUMA_RESILIENCE_LOBOTOMY) + return ..() if(host_mob.getBrainLoss()) return ..() return FALSE From db1f459151b39d78177e11fdd06fdc9c8573067f Mon Sep 17 00:00:00 2001 From: Persi Date: Sat, 12 Oct 2019 03:01:52 -0400 Subject: [PATCH 35/44] Set clockcult teleport in Captain's Quarters to false. --- code/game/area/Space_Station_13_areas.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 8a40fc8b56..798cd9c026 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -339,6 +339,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/heads/captain name = "Captain's Office" icon_state = "captain" + clockwork_warp_allowed = FALSE /area/crew_quarters/heads/captain/private name = "Captain's Quarters" From 7b65343f45bb67f722521814084d02bdca75617c Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 13 Oct 2019 06:04:57 +0200 Subject: [PATCH 36/44] z-level checks. --- code/game/machinery/syndicatebeacon.dm | 34 +++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 67c9627423..8a33241d46 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -17,13 +17,10 @@ GLOBAL_VAR_INIT(singularity_counter, 0) stat = 0 verb_say = "states" var/cooldown = 0 - - var/active = 0 + var/active = FALSE + var/meteor_buff = FALSE var/icontype = "beacon" - - - /obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null) if(active) return FALSE @@ -31,9 +28,8 @@ GLOBAL_VAR_INIT(singularity_counter, 0) if(user) to_chat(user, "The connected wire doesn't have enough current.") return FALSE - GLOB.singularity_counter++ - for(var/datum/round_event_control/meteor_wave/W in SSevents.control) - W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER) + if(is_station_level(z)) + increment_meteor_waves() for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.z == z) singulo.target = src @@ -43,7 +39,6 @@ GLOBAL_VAR_INIT(singularity_counter, 0) to_chat(user, "You activate the beacon.") return TRUE - /obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user) if(!active) return FALSE @@ -54,16 +49,25 @@ GLOBAL_VAR_INIT(singularity_counter, 0) active = FALSE if(user) to_chat(user, "You deactivate the beacon.") + if(meteor_buff) + decrement_meteor_waves() + return TRUE + +/obj/machinery/power/singularity_beacon/proc/increment_meteor_waves() + meteor_buff = TRUE + GLOB.singularity_counter++ + for(var/datum/round_event_control/meteor_wave/W in SSevents.control) + W.weight += round(initial(W.weight) * METEOR_DISASTER_MODIFIER) + +/obj/machinery/power/singularity_beacon/proc/decrement_meteor_waves() + meteor_buff = FALSE GLOB.singularity_counter-- for(var/datum/round_event_control/meteor_wave/W in SSevents.control) W.weight -= round(initial(W.weight) * METEOR_DISASTER_MODIFIER) - return TRUE - /obj/machinery/power/singularity_beacon/attack_ai(mob/user) return - /obj/machinery/power/singularity_beacon/attack_hand(mob/user) . = ..() if(.) @@ -104,6 +108,12 @@ GLOBAL_VAR_INIT(singularity_counter, 0) if(!active) return + var/is_on_station = is_station_level(z) + if(meteor_buff && !is_on_station) + decrement_meteor_waves() + else if(!meteor_buff && is_on_station) + increment_meteor_waves() + if(surplus() >= 1500) add_load(1500) if(cooldown <= world.time) From c78078bdd41cc4bf32a628cdb04a06eb61a30529 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sun, 13 Oct 2019 06:08:53 +0200 Subject: [PATCH 37/44] typo --- code/modules/events/meteor_wave.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm index 4584d1c2e9..c575c97901 100644 --- a/code/modules/events/meteor_wave.dm +++ b/code/modules/events/meteor_wave.dm @@ -57,7 +57,7 @@ kill() /datum/round_event/meteor_wave/announce(fake) - priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely.", ""]", "Meteor Alert", 'sound/ai/meteors.ogg') + priority_announce("Meteors have been detected on collision course with the station. Estimated time until impact: [round(startWhen/60)] minutes.[GLOB.singularity_counter ? " Warning: Anomalous gravity pulse detected, Syndicate technology interference likely." : ""]", "Meteor Alert", 'sound/ai/meteors.ogg') /datum/round_event/meteor_wave/tick() if(ISMULTIPLE(activeFor, 3)) From 89f39a8ddb12c2783402fa3bd2c24c8aafbacccf Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 15:46:42 -0500 Subject: [PATCH 38/44] Automatic changelog generation for PR #9473 [ci skip] --- html/changelogs/AutoChangeLog-pr-9473.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9473.yml diff --git a/html/changelogs/AutoChangeLog-pr-9473.yml b/html/changelogs/AutoChangeLog-pr-9473.yml new file mode 100644 index 0000000000..def08d4acd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9473.yml @@ -0,0 +1,4 @@ +author: "PersianXerxes" +delete-after: True +changes: + - code_imp: "Adds the clockwork_warp_allowed flag to the Captain's Office area, set to FALSE the same way it is for the chapel and armory." From 1332c15087fe1bd291477293e36219fb3e90e974 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 15:54:27 -0500 Subject: [PATCH 39/44] Automatic changelog generation for PR #9463 [ci skip] --- html/changelogs/AutoChangeLog-pr-9463.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9463.yml diff --git a/html/changelogs/AutoChangeLog-pr-9463.yml b/html/changelogs/AutoChangeLog-pr-9463.yml new file mode 100644 index 0000000000..3a465c5a05 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9463.yml @@ -0,0 +1,6 @@ +author: "Owai-Seek" +delete-after: True +changes: + - rscadd: "false codpiece" + - rscadd: "crocin/camphor bottles" + - tweak: "updated kinkmate item list" From 9e944bffb8da5c436bf89c595eb78909fb05be77 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 15:55:07 -0500 Subject: [PATCH 40/44] Automatic changelog generation for PR #9474 [ci skip] --- html/changelogs/AutoChangeLog-pr-9474.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9474.yml diff --git a/html/changelogs/AutoChangeLog-pr-9474.yml b/html/changelogs/AutoChangeLog-pr-9474.yml new file mode 100644 index 0000000000..1e3737f1a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9474.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "neural nanites only work/drain if you have brain damage or traumas the nanites can fix" From ea44c60923ea0d2be85e38dacdc5f924a0de1082 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 15:55:23 -0500 Subject: [PATCH 41/44] Automatic changelog generation for PR #9464 [ci skip] --- html/changelogs/AutoChangeLog-pr-9464.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9464.yml diff --git a/html/changelogs/AutoChangeLog-pr-9464.yml b/html/changelogs/AutoChangeLog-pr-9464.yml new file mode 100644 index 0000000000..79a5960abd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9464.yml @@ -0,0 +1,4 @@ +author: "JTGSZ" +delete-after: True +changes: + - bugfix: "qualifies_for_rank now checks latejoin menu" From c9960cdcb01669ed81db75b7a0358a3e14f4f00e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 15:56:05 -0500 Subject: [PATCH 42/44] Automatic changelog generation for PR #9416 [ci skip] --- html/changelogs/AutoChangeLog-pr-9416.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9416.yml diff --git a/html/changelogs/AutoChangeLog-pr-9416.yml b/html/changelogs/AutoChangeLog-pr-9416.yml new file mode 100644 index 0000000000..cf36873498 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9416.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Singularity beacons now also moderately increases the odds meteor waves, while lowering their estimeed arrival countdown." From bd12f2336ceb8f80eeedb945dae1f4702ac0618e Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 16:00:10 -0500 Subject: [PATCH 43/44] Automatic changelog generation for PR #9461 [ci skip] --- html/changelogs/AutoChangeLog-pr-9461.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9461.yml diff --git a/html/changelogs/AutoChangeLog-pr-9461.yml b/html/changelogs/AutoChangeLog-pr-9461.yml new file mode 100644 index 0000000000..91288f23fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9461.yml @@ -0,0 +1,4 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added decoratives angel wings for Mammalians only" From 304eae340796fc51972aa5cde2f19992d1729135 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 13 Oct 2019 16:00:54 -0500 Subject: [PATCH 44/44] Automatic changelog generation for PR #9339 [ci skip] --- html/changelogs/AutoChangeLog-pr-9339.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9339.yml diff --git a/html/changelogs/AutoChangeLog-pr-9339.yml b/html/changelogs/AutoChangeLog-pr-9339.yml new file mode 100644 index 0000000000..eeb5ae632c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9339.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Removes revenant blight's shabby toxin damage in favor of mood maluses, and a dangerous necropolis curse if not cured in time. Remember"