Skip to content

Commit

Permalink
Merge pull request Monkestation#813 from wraith-54321/mmmmma
Browse files Browse the repository at this point in the history
Fixes
  • Loading branch information
wraith-54321 authored Jan 21, 2024
2 parents 1c5b47c + 4c1c206 commit ca0568b
Show file tree
Hide file tree
Showing 46 changed files with 203 additions and 113 deletions.
8 changes: 8 additions & 0 deletions code/__DEFINES/~monkestation/twitch.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#define TWITCH_AFFECTS_STREAMER (1 << 0)
#define TWITCH_AFFECTS_ALL (1 << 1)
#define TWITCH_AFFECTS_RANDOM (1 << 2)
#define TWITCH_ALLOW_DUPLICATE_TARGETS (1 << 3)
#define CLEAR_TARGETS_AFTER_EFFECTS (1 << 4)
#define CLEAR_TARGETS_ON_END_EVENT (1 << 5)

// twitch event IDs
#define T_EVENT_AMONGUS_ALL_15 "amongus-all15"
Expand All @@ -11,10 +14,15 @@
#define T_EVENT_CHUCKLENUTS_OOK "chucklenuts-ook"
#define T_EVENT_CHUCKLENUTS_RANDOM "chucklenuts-random"
#define T_EVENT_OOK_DIE_FATE "ook-die-fate"
#define T_EVENT_OOK_DIE_FATE_FORCED "ook-die-fate-forced"
#define T_EVENT_EVERYONE_DIE_FATE "everyone-die-fate"
#define T_EVENT_HYPNO_RANDOM "hypno-random"
#define T_EVENT_HYPNO_OOK "hypno-ook"
#define T_EVENT_HYPNO_EVERYONE "hypno-everyone"
#define T_EVENT_GIVE_OOK_ITEM "give-ook-item"
#define T_EVENT_GIVE_EVERYONE_ITEM "give-everyone-item"
#define T_EVENT_ROD_OOK "rod-ook"
#define T_EVENT_ROD_EVERYONE "rod-everyone"
#define T_EVENT_SKINNY_5 "skinny-5"

//For linking twitch account to ss13
Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/listen_and_repeat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
SIGNAL_HANDLER
var/atom/movable/atom_source = source
var/datum/ai_controller/controller = atom_source.ai_controller
if(LAZYLEN(speech_buffer)) // what? well whatever let's just move on
if(!LAZYLEN(speech_buffer)) // what? well whatever let's just move on
return

controller.set_blackboard_key(BB_EXPORTABLE_STRING_BUFFER_LIST, speech_buffer.Copy())
Expand Down
3 changes: 0 additions & 3 deletions code/modules/antagonists/_common/antag_datum.dm
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,3 @@ GLOBAL_LIST_EMPTY(antagonists)
/// Used to create objectives for the antagonist.
/datum/antagonist/proc/forge_objectives()
return

/datum/antagonist/proc/antag_token(datum/mind/hosts_mind, mob/spender)
return
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@
for(var/i in 1 to (lowpop ? 1 : 2)) //if lowpop then only do one collapse per ring, otherwise do two
addtimer(CALLBACK(pick_n_take(turfs_to_collapse["[iterator]"]), TYPE_PROC_REF(/turf, structural_collapse), 6 SECONDS, list(0, 0, 3), list('sound/effects/creak1.ogg', \
'sound/effects/creak2.ogg', \
'sound/effects/creak3.ogg')), \
'sound/effects/creak3.ogg'), FALSE), \
2 SECONDS * iterator)
//monkestation edit end
priority_announce(
Expand Down
2 changes: 1 addition & 1 deletion code/modules/events/spider_infestation.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/datum/round_event_control/spider_infestation
name = "Spider Infestation"
typepath = /datum/round_event/spider_infestation
weight = 10
weight = 6 //monkestation edit: from 10 to 6
max_occurrences = 1
min_players = 35 //monkie edit: 20 to 35
earliest_start = 60 MINUTES //monke edit: 20 to 60
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/basic/pets/parrot/poly.dm
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
else
var/json_file = file("data/npc_saves/Poly.json")
if(!fexists(json_file))
return
return list()
var/list/json = json_decode(file2text(json_file))
returnable_list = json["phrases"]
rounds_survived = json["roundssurvived"]
Expand Down
8 changes: 5 additions & 3 deletions monkestation/code/__HELPERS/turfs.dm
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
/**Shake() and then explode a turf based on the passed vars
* shake_duration: how long to shake the turf for before calling explosion()
* explosion_stats: a list of what stats to give the called explosion()
* explosion_stats: the list of stats to give the called explosion()
* sound: if passed then what sound to play at the start of the shaking, if a list is passed then it will pick() from that list
* do_log: do we admin log the explosion
**/
/turf/proc/structural_collapse(shake_duration = 1 SECONDS, explosion_stats = list(1, 2, 3), sound/played_sound)
/turf/proc/structural_collapse(shake_duration = 1 SECONDS, explosion_stats = list(1, 2, 3), sound/played_sound, do_log = TRUE)
if(QDELETED(src))
return

if(played_sound)
playsound(src, (islist(played_sound) ? pick(played_sound) : played_sound), 60)
visible_message(span_userdanger("\The [src] looks like its about to collapse!"))
Shake(0.2, 0.2, shake_duration)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), src, explosion_stats[1], explosion_stats[2], explosion_stats[3]), shake_duration)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), src, explosion_stats[1], explosion_stats[2], explosion_stats[3], 0, 0, do_log), shake_duration)
explosion()
2 changes: 1 addition & 1 deletion monkestation/code/datums/keybinding/living.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
user.imode.keybind_act(4)

/datum/keybinding/living/interaction_action5
hotkey_keys = null
hotkey_keys = list("Unbound")
name = "interaction_mode_action_5"
full_name = "Intent Cycle"
description = "Cycles through intents"
Expand Down
6 changes: 3 additions & 3 deletions monkestation/code/datums/quirks/negative_quirks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
var/mob/living/carbon/human/jailbird = quirk_holder
var/quirk_crime = pick(world.file2list("monkestation/strings/random_crimes.txt"))
to_chat(jailbird, "<span class='boldnotice'>You are on parole for the crime of: [quirk_crime]!</span>")
addtimer(CALLBACK(src, .proc/apply_arrest, quirk_crime), 10 SECONDS)
addtimer(CALLBACK(src, PROC_REF(apply_arrest), quirk_crime), 10 SECONDS)


/datum/quirk/jailbird/proc/apply_arrest(crime_name)
Expand Down Expand Up @@ -48,8 +48,8 @@

/datum/quirk/stowaway/post_add()
. = ..()
to_chat(quirk_holder, "<span class='boldnotice'>You've awoken to find yourself inside [GLOB.station_name] without real identification!</span>")
addtimer(CALLBACK(src, .proc/datacore_deletion), 5 SECONDS)
to_chat(quirk_holder, span_boldnotice("You've awoken to find yourself inside [GLOB.station_name] without real identification!"))
addtimer(CALLBACK(src, PROC_REF(datacore_deletion)), 5 SECONDS)

/datum/quirk/stowaway/proc/datacore_deletion()
var/mob/living/carbon/human/stowaway = quirk_holder
Expand Down
2 changes: 2 additions & 0 deletions monkestation/code/modules/antagonists/_common/antag_datum.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/datum/antagonist/proc/antag_token(datum/mind/hosts_mind, mob/spender)
return
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
count_against_dynamic_roll_chance = FALSE
ui_name = "AntagInfoBrainwashed"
suicide_cry = "FOR... SOMEONE!!"
show_to_ghosts = TRUE // ghosts are notified when someone's brain gets washed anyways
var/popup_shown = FALSE // since it's not uncommon for someone to be brainwashed while dead, it's easy for them to completely miss the fact they're brainwashed once they're revived.

/datum/antagonist/brainwashed/on_gain()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
var/mutable_appearance/forbearance
///ref to our turf_healing component, used for deletion when deconverted
var/datum/component/turf_healing/owner_turf_healing
///used for holy water deconversion, slightly easier to have this here then on the team
///used for holy water deconversion, slightly easier to have this here then on the team, might want to refactor this to an assoc global list
var/static/list/servant_deconversion_phrases = list("spoken" = list("VG OHEAF!", "SBE GUR TYBEL-BS ENG'INE!", "Gur yvtug jvyy fuvar.", "Whfgv`pne fnir zr.", "Gur Nex zhfg abg snyy.",
"Rzvarapr V pnyy gur`r!", "Lbh frr bayl qnexarff.", "Guv`f vf abg gur raq.", "Gv`px, Gbpx"),

Expand Down Expand Up @@ -126,9 +126,14 @@
to_chat(owner.current, span_warning("You feel something pushing away the light of Rat'var, but you resist it!"))
return

/datum/antagonist/clock_cultist/antag_token(datum/mind/hosts_mind)
/datum/antagonist/clock_cultist/antag_token(datum/mind/hosts_mind, mob/spender)
. = ..()
hosts_mind.add_antag_datum(/datum/antagonist/clock_cultist)
if(isobserver(spender))
var/mob/living/carbon/human/newmob = spender.change_mob_type(/mob/living/carbon/human , null, null, TRUE)
newmob.equipOutfit(/datum/outfit/job/assistant)
newmob.mind.add_antag_datum(/datum/antagonist/clock_cultist)
else
hosts_mind.add_antag_datum(/datum/antagonist/clock_cultist)

/datum/antagonist/clock_cultist/admin_add(datum/mind/new_owner,mob/admin)
new_owner.add_antag_datum(src)
Expand Down
16 changes: 16 additions & 0 deletions monkestation/code/modules/antagonists/clock_cult/helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,19 @@
ratvar_singularity_component.target = GLOB.cult_narsie
return TRUE
return FALSE

/proc/try_servant_warp(mob/living/servant, turf/target_turf)
var/mob/living/pulled = servant.pulling
playsound(servant, 'sound/magic/magic_missile.ogg', 50, TRUE) //doing this manually for sound volume reasons
playsound(target_turf, 'sound/magic/magic_missile.ogg', 50, TRUE)
do_sparks(3, TRUE, servant)
do_sparks(3, TRUE, target_turf)
do_teleport(servant, target_turf, 0, no_effects = TRUE, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
if(ishuman(servant)) //looks weird on non-humanoids
new /obj/effect/temp_visual/ratvar/warp(target_turf)
to_chat(servant, "You warp to [get_area(target_turf)].")
if(istype(pulled))
do_teleport(pulled, target_turf, 0, no_effects = TRUE, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
if(!IS_CLOCK(pulled))
pulled.Paralyze(3 SECONDS)
to_chat(pulled, span_warning("You feel sick and confused."))
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(cogscarabs)
. = ..()

/mob/living/basic/drone/cogscarab/Life(seconds, times_fired)
if(!on_reebe(src) && !GLOB.ratvar_risen && GLOB.abscond_markers && stay_on_reebe)
if(!on_reebe(src) && !GLOB.ratvar_risen && length(GLOB.abscond_markers) && stay_on_reebe)
try_servant_warp(src, get_turf(pick(GLOB.abscond_markers)))
. = ..()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ GLOBAL_LIST_EMPTY(clock_scriptures_by_type)
to_chat(invoker, span_brass("You need [invokers_required] servants to channel [name]!"))
return FALSE

if(invoker.has_reagent(/datum/reagent/water/holywater))
if(invoker.reagents && invoker.has_reagent(/datum/reagent/water/holywater))
to_chat(invoker, span_brass("The holy water inside you is blocking your ability to invoke!"))
return FALSE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,3 @@

/datum/scripture/abscond/invoke_success()
try_servant_warp(invoker, get_turf(pick(GLOB.abscond_markers)))

/proc/try_servant_warp(mob/living/servant, turf/target_turf)
var/mob/living/pulled = servant.pulling
playsound(servant, 'sound/magic/magic_missile.ogg', 50, TRUE) //doing this manually for sound volume reasons
playsound(target_turf, 'sound/magic/magic_missile.ogg', 50, TRUE)
do_sparks(3, TRUE, servant)
do_sparks(3, TRUE, target_turf)
do_teleport(servant, target_turf, 0, no_effects = TRUE, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
if(ishuman(servant)) //looks weird on non-humanoids
new /obj/effect/temp_visual/ratvar/warp(target_turf)
to_chat(servant, "You warp to [get_area(target_turf)].")
if(istype(pulled))
do_teleport(pulled, target_turf, 0, no_effects = TRUE, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)
if(!IS_CLOCK(pulled))
pulled.Paralyze(3 SECONDS)
to_chat(pulled, span_warning("You feel sick and confused."))
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@
return
var/mob/living/carbon/human/floridan = cast_on
playsound(floridan, 'sound/voice/human/wilhelm_scream.ogg', 50, TRUE)
floridan.visible_message("<span class='warning'>[floridan] howls in rage as he begins to charge!</span>", "<span class='notice'>You feel the strength of Florida wash over you, push through those doors!</span>")
floridan.visible_message(span_warning("[floridan] howls in rage as he begins to charge!"), span_notice("You feel the strength of Florida wash over you, push through those doors!"))
floridan.move_force = MOVE_FORCE_OVERPOWERING
addtimer(CALLBACK(src, .proc/end_florida_doorbuster),5 SECONDS)
addtimer(CALLBACK(src, PROC_REF(end_florida_doorbuster)),5 SECONDS)

/datum/action/cooldown/spell/florida_doorbuster/proc/end_florida_doorbuster()
if(!ishuman(usr))
return
var/mob/living/carbon/human/floridan = usr
floridan.move_force = MOVE_FORCE_NORMAL
floridan.visible_message("<span class='warning'>[floridan] seems to be calmer.</span>", "<span class='warning'>You feel weaker as the strength of Florida leaves you.</span>")
floridan.visible_message(span_warning("[floridan] seems to be calmer."), span_warning("You feel weaker as the strength of Florida leaves you."))
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@
to_chat(owner, span_boldwarning("The souls you have stolen are preventing you from going incorporeal!"))
return

for(var/mob/living/watchers in view(9, target) - target)
for(var/mob/living/watcher in viewers(9, target))
if(!watcher.mind) //only mobs with minds stop you from jaunting
continue

target.balloon_alert(owner, "you can only vanish unseen.")
return

Expand Down Expand Up @@ -78,6 +81,7 @@
REMOVE_TRAIT(jaunter, TRAIT_NO_TRANSFORM, INNATE_TRAIT)

slasherdatum.corporeal = FALSE
ADD_TRAIT(jaunter, TRAIT_NOBREATH, REF(src))

// This needs to happen at the end, after all the traits and stuff is handled
SEND_SIGNAL(jaunter, COMSIG_MOB_ENTER_JAUNT, src, jaunt)
Expand All @@ -99,6 +103,7 @@
qdel(blood_hand)

slasherdatum.corporeal = TRUE
REMOVE_TRAIT(unjaunter, TRAIT_NOBREATH, REF(src))

return TRUE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@
powers |= new_ability

var/mob/living/carbon/human/human = current_mob
human.equipOutfit(/datum/outfit/slasher)
if(istype(human))
human.equipOutfit(/datum/outfit/slasher)
cached_brute_mod = human.dna.species.brutemod


Expand Down
6 changes: 3 additions & 3 deletions monkestation/code/modules/antimatter/code/control.dm
Original file line number Diff line number Diff line change
Expand Up @@ -284,12 +284,12 @@
if(AMS.processing)
AMS.shutdown_core()
AMS.control_unit = null
addtimer(CALLBACK(AMS, /obj/machinery/am_shielding.proc/controllerscan), 10)
addtimer(CALLBACK(AMS, TYPE_PROC_REF(/obj/machinery/am_shielding, controllerscan)), 10)
linked_shielding = list()
else
for(var/obj/machinery/am_shielding/AMS in linked_shielding)
AMS.update_icon()
addtimer(CALLBACK(src, .proc/reset_shield_icon_delay), 20)
addtimer(CALLBACK(src, PROC_REF(reset_shield_icon_delay)), 20)

/obj/machinery/power/am_control_unit/proc/reset_shield_icon_delay()
shield_icon_delay = FALSE
Expand All @@ -304,7 +304,7 @@
stored_core_stability += Shielding.stability

stored_core_stability /= linked_cores.len
addtimer(CALLBACK(src, .proc/reset_stored_core_stability_delay), 40)
addtimer(CALLBACK(src, PROC_REF(reset_stored_core_stability_delay)), 40)

/obj/machinery/power/am_control_unit/proc/reset_stored_core_stability_delay()
stored_core_stability_delay = FALSE
Expand Down
4 changes: 2 additions & 2 deletions monkestation/code/modules/antimatter/code/shielding.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

/obj/machinery/am_shielding/Initialize()
. = ..()
addtimer(CALLBACK(src, .proc/controllerscan), 10)
addtimer(CALLBACK(src, PROC_REF(controllerscan)), 10)

/obj/machinery/am_shielding/proc/overheat()
visible_message(span_danger("[src] melts!"))
Expand Down Expand Up @@ -67,7 +67,7 @@

if(!control_unit)
if(!priorscan)
addtimer(CALLBACK(src, .proc/controllerscan, 1), 20)
addtimer(CALLBACK(src, PROC_REF(controllerscan), 1), 20)
return
collapse()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@

/datum/antagonist/bloodsucker/proc/give_warning(atom/source, danger_level, vampire_warning_message, vassal_warning_message)
SIGNAL_HANDLER
if(!owner)
if(!owner || !owner.current)
return
to_chat(owner, vampire_warning_message)

Expand Down
2 changes: 1 addition & 1 deletion monkestation/code/modules/client/preferences/inventory.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
metacoins = text2num(mc_count)


/datum/preferences/proc/adjust_metacoins(ckey, amount, reason = null, announces =TRUE, donator_multipler = TRUE, respects_roundcap = FALSE)
/datum/preferences/proc/adjust_metacoins(ckey, amount, reason = null, announces = TRUE, donator_multipler = TRUE, respects_roundcap = FALSE)
if(!ckey || !SSdbcore.IsConnected())
return FALSE

Expand Down
7 changes: 4 additions & 3 deletions monkestation/code/modules/client/verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ GLOBAL_LIST_INIT(high_threat_antags, list(
/datum/antagonist/cult,
/datum/antagonist/rev/head,
/datum/antagonist/wizard,
/datum/antagonist/clock_cultist,
/datum/antagonist/ninja,
))

GLOBAL_LIST_INIT(medium_threat_antags, list(
/datum/antagonist/ninja,
/datum/antagonist/heretic,
/datum/antagonist/bloodsucker,
))
Expand Down Expand Up @@ -36,10 +37,10 @@ GLOBAL_LIST_INIT(low_threat_antags, list(
if(!client_token_holder)
client_token_holder = new(src)

var/tier = tgui_input_list(src, "High:[client_token_holder.total_high_threat_tokens] | \
var/tier = tgui_input_list(src, "High: [client_token_holder.total_high_threat_tokens] | \
Med: [client_token_holder.total_medium_threat_tokens] | \
Low: [client_token_holder.total_low_threat_tokens] | \
Donator:[client_token_holder.donator_token]", "Choose A Tier To Spend", list(HIGH_THREAT, MEDIUM_THREAT, LOW_THREAT))
Donator: [client_token_holder.donator_token ? "Yes" : "No"]", "Choose A Tier To Spend", list(HIGH_THREAT, MEDIUM_THREAT, LOW_THREAT))
if(!tier)
return

Expand Down
10 changes: 10 additions & 0 deletions monkestation/code/modules/clothing/~donator/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,16 @@
worn_icon = 'monkestation/icons/donator/mob/clothing/suit.dmi'
icon_state = "CCvest"

/obj/item/clothing/suit/armor/vest/nanotrasen_consultant/hubert/Initialize(mapload)
. = ..()
set_armor(/datum/armor/vest_ntc_hubert)

/datum/armor/vest_ntc_hubert
melee = 0
bullet = 0
energy = 0
laser = 0

//Donation reward for Hacker T.Dog
/obj/item/clothing/under/rank/nanotrasen_consultant/hubert
name = "CC ensign's uniform"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
mind.active = TRUE
mind.transfer_to(operative)
mind.add_antag_datum(/datum/antagonist/traitor/contractor)
operative.fully_heal() //this is a lag issue so this is the best I got

message_admins("[ADMIN_LOOKUPFLW(operative)] has been made into a [src] by an event.")
log_game("[key_name(operative)] was spawned as a [src] by an event.")
Expand Down
Loading

0 comments on commit ca0568b

Please sign in to comment.