From 8813123997497d74352338075116b615dcb1e37c Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Fri, 29 Nov 2013 17:02:23 -0800 Subject: [PATCH 1/7] added config flags for objectives being enabled or disabled. added antag options menu. added ability to choose where a syndicate uplink is installed. --- code/controllers/configuration.dm | 4 ++ code/datums/mind.dm | 12 +++-- .../game/gamemodes/autotraitor/autotraitor.dm | 16 ++++--- code/game/gamemodes/traitor/traitor.dm | 44 ++++++++++++++----- code/modules/client/preferences.dm | 39 ++++++++++++++++ code/modules/client/preferences_savefile.dm | 4 ++ 6 files changed, 98 insertions(+), 21 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 42ac1cdc97f..c7baaddcf98 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -35,6 +35,7 @@ var/del_new_on_log = 1 // del's new players if they log before they spawn in var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard var/traitor_scaling = 0 //if amount of traitors scales based on amount of players + var/objectives_disabled = 0 //if objectives are disabled or not var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other var/continous_rounds = 1 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. var/allow_Metadata = 0 // Metadata is supported. @@ -325,6 +326,9 @@ if ("traitor_scaling") config.traitor_scaling = 1 + if ("objectives_disabled") + config.objectives_disabled = 1 + if("protect_roles_from_antagonist") config.protect_roles_from_antagonist = 1 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 82a26dab653..5e2a2982515 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -127,7 +127,7 @@ datum/mind if (istype(current, /mob/living/carbon/human) || istype(current, /mob/living/carbon/monkey)) /** Impanted**/ if(istype(current, /mob/living/carbon/human)) - if(H.is_loyalty_implanted(H)) + if(H.is_loyalty_implanted(H)) text = "Loyalty Implant:Remove|Implanted
" else text = "Loyalty Implant:No Implant|Implant him!
" @@ -802,14 +802,17 @@ datum/mind special_role = "traitor" current << "\red You are a traitor!" log_admin("[key_name_admin(usr)] has traitor'ed [current].") + if (config.objectives_disabled == 1) + current << "You have been turned into an antagonist- Within the rules, try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonist." if(istype(current, /mob/living/silicon)) var/mob/living/silicon/A = current call(/datum/game_mode/proc/add_law_zero)(A) A.show_laws() if("autoobjectives") - ticker.mode.forge_traitor_objectives(src) - usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually." + if (config.objectives_disabled == 0) + ticker.mode.forge_traitor_objectives(src) + usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually." else if (href_list["monkey"]) var/mob/living/L = current @@ -1019,7 +1022,8 @@ datum/mind if(!(src in ticker.mode.traitors)) ticker.mode.traitors += src special_role = "traitor" - ticker.mode.forge_traitor_objectives(src) + if (config.objectives_disabled == 0) + ticker.mode.forge_traitor_objectives(src) ticker.mode.finalize_traitor(src) ticker.mode.greet_traitor(src) diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index a6da766b4e7..f6500ef8ec6 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -123,7 +123,8 @@ var/mob/living/newtraitor = pick(possible_traitors) //message_admins("[newtraitor.real_name] is the new Traitor.") - forge_traitor_objectives(newtraitor.mind) + if (config.objectives_disabled == 0) + forge_traitor_objectives(newtraitor.mind) if(istype(newtraitor, /mob/living/silicon)) add_law_zero(newtraitor) @@ -188,11 +189,14 @@ traitors += character.mind character << "\red You are the traitor." character.mind.special_role = "traitor" - var/obj_count = 1 - character << "\blue Your current objectives:" - for(var/datum/objective/objective in character.mind.objectives) - character << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ + if (config.objectives_disabled == 1) + character << "You have been selected this round as an antagonist- Within the rules, try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonist." + else + var/obj_count = 1 + character << "\blue Your current objectives:" + for(var/datum/objective/objective in character.mind.objectives) + character << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ //else //message_admins("New traitor roll failed. No new traitor.") //else diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index f7894a9f69d..73a50b93f02 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -12,7 +12,7 @@ recommended_enemies = 4 - uplink_welcome = "Syndicate Uplink Console:" + uplink_welcome = "AntagCorp Portable Teleportation Relay:" uplink_uses = 10 var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) @@ -65,7 +65,8 @@ /datum/game_mode/traitor/post_setup() for(var/datum/mind/traitor in traitors) - forge_traitor_objectives(traitor) + if (config.objectives_disabled == 0) + forge_traitor_objectives(traitor) spawn(rand(10,100)) finalize_traitor(traitor) greet_traitor(traitor) @@ -131,10 +132,13 @@ /datum/game_mode/proc/greet_traitor(var/datum/mind/traitor) traitor.current << "You are the traitor." - var/obj_count = 1 - for(var/datum/objective/objective in traitor.objectives) - traitor.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ + if (config.objectives_disabled == 0) + var/obj_count = 1 + for(var/datum/objective/objective in traitor.objectives) + traitor.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + else + traitor.current << "You have been selected this round as an antagonist- Within the rules, try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonist." return @@ -229,6 +233,7 @@ /datum/game_mode/proc/equip_traitor(mob/living/carbon/human/traitor_mob, var/safety = 0) + if (!istype(traitor_mob)) return . = 1 @@ -239,12 +244,29 @@ // find a radio! toolbox(es), backpack, belt, headset var/loc = "" - var/obj/item/R = locate(/obj/item/device/pda) in traitor_mob.contents //Hide the uplink in a PDA if available, otherwise radio - if(!R) + var/obj/item/R = locate() //Hide the uplink in a PDA if available, otherwise radio + + if(traitor_mob.client.prefs.uplinklocation == "Headset") R = locate(/obj/item/device/radio) in traitor_mob.contents + if(!R) + R = locate(/obj/item/device/pda) in traitor_mob.contents + traitor_mob << "Could not locate a Radio, installing in PDA instead!" + if (!R) + traitor_mob << "Unfortunately, neither a radio or a PDA relay could be installed." + + if(traitor_mob.client.prefs.uplinklocation == "PDA") + R = locate(/obj/item/device/pda) in traitor_mob.contents + if(!R) + R = locate(/obj/item/device/radio) in traitor_mob.contents + traitor_mob << "Could not locate a PDA, installing into a Radio instead!" + if (!R) + traitor_mob << "Unfortunately, neither a radio or a PDA relay could be installed." + + if(traitor_mob.client.prefs.uplinklocation == "None") + traitor_mob << "You have elected to not have an AntagCorp portable teleportation relay installed!" + R = null if (!R) - traitor_mob << "Unfortunately, the Syndicate wasn't able to get you a radio." . = 0 else if (istype(R, /obj/item/device/radio)) @@ -263,7 +285,7 @@ var/obj/item/device/uplink/hidden/T = new(R) target_radio.hidden_uplink = T target_radio.traitor_frequency = freq - traitor_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features." + traitor_mob << "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features." traitor_mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).") else if (istype(R, /obj/item/device/pda)) // generate a passcode if the uplink is hidden in a PDA @@ -274,7 +296,7 @@ var/obj/item/device/pda/P = R P.lock_code = pda_pass - traitor_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features." + traitor_mob << "A portable object teleportation relay has been installed in your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features." traitor_mob.mind.store_memory("Uplink Passcode: [pda_pass] ([R.name] [loc]).") //Begin code phrase. if(!safety)//If they are not a rev. Can be added on to. diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ca9b23ef3d3..74116852a02 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -107,6 +107,8 @@ datum/preferences var/nanotrasen_relation = "Neutral" + var/uplinklocation = "PDA" + // OOC Metadata: var/metadata = "" var/slot_name = "" @@ -320,6 +322,8 @@ datum/preferences else dat += "Character Records
" + dat += "Set Antag Options
" + dat += "\tSet Skills ([GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])
" dat += "Set Flavor Text
" @@ -518,6 +522,24 @@ datum/preferences user << browse(HTML, "window=records;size=350x300") return + proc/SetAntagoptions(mob/user) + var/HTML = "" + HTML += "
" + HTML += "Antagonist Options
" + HTML += "
" + HTML +="Uplink Type : [uplinklocation]" + HTML +="
" + HTML +="
" + HTML +="\[Done\]" + + HTML += "
" + + user << browse(null, "window=preferences") + user << browse(HTML, "window=antagoptions") + return + + + proc/GetPlayerAltTitle(datum/job/job) return player_alt_titles.Find(job.title) > 0 \ ? player_alt_titles[job.title] \ @@ -753,6 +775,23 @@ datum/preferences gen_record = genmsg SetRecords(user) + else if (href_list["preference"] == "antagoptions") + if(text2num(href_list["active"]) == 0) + SetAntagoptions(user) + return + if (href_list["antagtask"] == "uplinktype") + if (uplinklocation == "PDA") + uplinklocation = "Headset" + else if(uplinklocation == "Headset") + uplinklocation = "None" + else + uplinklocation = "PDA" + SetAntagoptions(user) + if (href_list["antagtask"] == "done") + user << browse(null, "window=antagoptions") + ShowChoices(user) + return 1 + switch(href_list["task"]) if("random") switch(href_list["preference"]) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 64564552c95..ae44fd6600b 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -150,6 +150,8 @@ S["nanotrasen_relation"] >> nanotrasen_relation //S["skin_style"] >> skin_style + S["uplinklocation"] >> uplinklocation + //Sanitize metadata = sanitize_text(metadata, initial(metadata)) real_name = reject_bad_name(real_name) @@ -254,6 +256,8 @@ S["nanotrasen_relation"] << nanotrasen_relation //S["skin_style"] << skin_style + S["uplinklocation"] << uplinklocation + return 1 From 70a1c768ad1b16273565f9b0d0b3022961c09f77 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Mon, 3 Feb 2014 00:28:15 +1300 Subject: [PATCH 2/7] Broken heart fix Code was using a switch with variables in it. This doesn't work. Replaced it with an if..else sequence. Thanks to the guys from Paradise for finding this. Note: this only fixes literal heart problems, it won't do anything for relationship issues. --- code/modules/organs/blood.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 4e300dbaea2..c3e623271bc 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -64,13 +64,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 // Damaged heart virtually reduces the blood volume, as the blood isn't // being pumped properly anymore. var/datum/organ/internal/heart/heart = internal_organs["heart"] - switch(heart.damage) - if(1 to heart.min_bruised_damage) - blood_volume *= 0.8 - if(heart.min_bruised_damage to heart.min_broken_damage) - blood_volume *= 0.6 - if(heart.min_broken_damage to INFINITY) - blood_volume *= 0.3 + + if(heart.damage > 1 && heart.damage < heart.min_bruised_damage) + blood_volume *= 0.8 + else if(heart.damage >= heart.min_bruised_damage && heart.damage < heart.min_broken_damage) + blood_volume *= 0.6 + else if(heart.damage >= heart.min_broken_damage && heart.damage < INFINITY) + blood_volume *= 0.3 //Effects of bloodloss switch(blood_volume) From 35f534854ac5bbd74a4e497bb41a0aa191ea35c5 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sun, 2 Feb 2014 16:57:07 -0600 Subject: [PATCH 3/7] Commented out the AI Announcement verbs Now the AI won't get it's hopes up that it can have the CAPTAIN REPORT TO THE BAR FOR JOHNSON INSPECTION --- code/modules/mob/living/silicon/ai/ai.dm | 4 ++++ code/modules/mob/living/silicon/ai/say.dm | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 42c4b0745b2..08d3b012a9b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -95,6 +95,7 @@ var/list/ai_list = list() /mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \ /mob/living/silicon/ai/proc/toggle_camera_light) + if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. new/obj/structure/AIcore/deactivated(loc)//New empty terminal. @@ -338,9 +339,12 @@ var/list/ai_list = list() // src << text ("Switching Law [L]'s report status to []", lawcheck[L+1]) checklaws() + //Uncomment this line of code if you are enabling the AI Vocal (VOX) announcements. +/* if(href_list["say_word"]) play_vox_word(href_list["say_word"], null, src) return +*/ if (href_list["lawi"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite var/L = text2num(href_list["lawi"]) diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 3267f222c72..7705e5aedce 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -14,6 +14,13 @@ return 1 return ..() + + +// These Verbs are commented out since we've disabled the AI vocal (VOX) announcements. +// If you re-enable them there is 3 lines in ai.dm Topic() that you need to uncomment as well. +// just search for VOX in there. + +/* var/announcing_vox = 0 // Stores the time of the last announcement var/const/VOX_CHANNEL = 200 var/const/VOX_DELAY = 100 // 10 seconds @@ -128,3 +135,6 @@ var/const/VOX_PATH = "sound/vox/" // src << "Downloading [file]" var/sound/S = sound("[VOX_PATH][file]") src << browse_rsc(S) + + +*/ From 83246df6d5942ac9c372dc7052bbd6ea7927a1c1 Mon Sep 17 00:00:00 2001 From: Segrain Date: Mon, 3 Feb 2014 07:32:53 +0300 Subject: [PATCH 4/7] Fix for #4297. --- .../components/unary/vent_pump.dm | 6 +- code/modules/mob/living/carbon/carbon.dm | 93 ------------------ code/modules/mob/living/living.dm | 94 ++++++++++++++++++- .../living/simple_animal/friendly/mouse.dm | 49 +--------- 4 files changed, 97 insertions(+), 145 deletions(-) diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 4a633030c28..83f8eb7fcf6 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -338,13 +338,13 @@ return /* - Alt-click to ventcrawl - Monkeys, aliens, and slimes + Alt-click to ventcrawl - Monkeys, aliens, slimes and mice. This is a little buggy but somehow that just seems to plague ventcrawl. I am sorry, I don't know why. */ -/obj/machinery/atmospherics/unary/vent_pump/AltClick(var/mob/living/carbon/ML) +/obj/machinery/atmospherics/unary/vent_pump/AltClick(var/mob/living/ML) if(istype(ML)) - var/list/ventcrawl_verbs = list(/mob/living/carbon/monkey/verb/ventcrawl, /mob/living/carbon/alien/verb/ventcrawl, /mob/living/carbon/slime/verb/ventcrawl) + var/list/ventcrawl_verbs = list(/mob/living/carbon/monkey/verb/ventcrawl, /mob/living/carbon/alien/verb/ventcrawl, /mob/living/carbon/slime/verb/ventcrawl,/mob/living/simple_animal/mouse/verb/ventcrawl) if(length(ML.verbs & ventcrawl_verbs)) // alien queens have this removed, an istype would be complicated ML.handle_ventcrawl(src) return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f841b09d13d..feacbe4a981 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -221,99 +221,6 @@ // ++++ROCKDTBEN++++ MOB PROCS //END -/mob/living/carbon/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null) // -- TLE -- Merged by Carn - if(stat) - src << "You must be conscious to do this!" - return - if(lying) - src << "You can't vent crawl while you're stunned!" - return - - if(vent_found) // one was passed in, probably from vent/AltClick() - if(vent_found.welded) - src << "That vent is welded shut." - return - if(!vent_found.Adjacent(src)) - return // don't even acknowledge that - else - for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src)) - if(!v.welded) - if(v.Adjacent(src)) - vent_found = v - if(!vent_found) - src << "You'll need a non-welded vent to crawl into!" - return - - if(!vent_found.network || !vent_found.network.normal_members.len) - src << "This vent is not connected to anything." - return - - var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) - if(temp_vent.welded) - continue - if(temp_vent in loc) - continue - var/turf/T = get_turf(temp_vent) - - if(!T || T.z != loc.z) - continue - - var/i = 1 - var/index = "[T.loc.name]\[[i]\]" - while(index in vents) - i++ - index = "[T.loc.name]\[[i]\]" - vents[index] = temp_vent - if(!vents.len) - src << "\red There are no available vents to travel to, they could be welded." - return - - var/obj/selection = input("Select a destination.", "Duct System") as null|anything in sortAssoc(vents) - if(!selection) return - - if(!vent_found.Adjacent(src)) - src << "Never mind, you left." - return - - for(var/obj/item/carried_item in contents)//If the monkey got on objects. - if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger - src << "\red You can't be carrying items or have items equipped when vent crawling!" - return - if(isslime(src)) - var/mob/living/carbon/slime/S = src - if(S.Victim) - src << "\red You'll have to let [S.Victim] go or finish eating \him first." - return - - var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection] - if(!target_vent) - return - - for(var/mob/O in viewers(src, null)) - O.show_message(text("[src] scrambles into the ventillation ducts!"), 1) - loc = target_vent - - var/travel_time = round(get_dist(loc, target_vent.loc) / 2) - - spawn(travel_time) - - if(!target_vent) return - for(var/mob/O in hearers(target_vent,null)) - O.show_message("You hear something squeezing through the ventilation ducts.",2) - - sleep(travel_time) - - if(!target_vent) return - if(target_vent.welded) //the vent can be welded while alien scrolled through the list or travelled. - target_vent = vent_found //travel back. No additional time required. - src << "\red The vent you were heading to appears to be welded." - loc = target_vent.loc - var/area/new_area = get_area(loc) - if(new_area) - new_area.Entered(src) - - /mob/living/carbon/clean_blood() . = ..() if(ishuman(src)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a111125c269..57bb02ce5c3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -674,4 +674,96 @@ set category = "IC" resting = !resting - src << "\blue You are now [resting ? "resting" : "getting up"]" \ No newline at end of file + src << "\blue You are now [resting ? "resting" : "getting up"]" + +/mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null) // -- TLE -- Merged by Carn + if(stat) + src << "You must be conscious to do this!" + return + if(lying) + src << "You can't vent crawl while you're stunned!" + return + + if(vent_found) // one was passed in, probably from vent/AltClick() + if(vent_found.welded) + src << "That vent is welded shut." + return + if(!vent_found.Adjacent(src)) + return // don't even acknowledge that + else + for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src)) + if(!v.welded) + if(v.Adjacent(src)) + vent_found = v + if(!vent_found) + src << "You'll need a non-welded vent to crawl into!" + return + + if(!vent_found.network || !vent_found.network.normal_members.len) + src << "This vent is not connected to anything." + return + + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) + if(temp_vent.welded) + continue + if(temp_vent in loc) + continue + var/turf/T = get_turf(temp_vent) + + if(!T || T.z != loc.z) + continue + + var/i = 1 + var/index = "[T.loc.name]\[[i]\]" + while(index in vents) + i++ + index = "[T.loc.name]\[[i]\]" + vents[index] = temp_vent + if(!vents.len) + src << "\red There are no available vents to travel to, they could be welded." + return + + var/obj/selection = input("Select a destination.", "Duct System") as null|anything in sortAssoc(vents) + if(!selection) return + + if(!vent_found.Adjacent(src)) + src << "Never mind, you left." + return + + for(var/obj/item/carried_item in contents)//If the monkey got on objects. + if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger + src << "\red You can't be carrying items or have items equipped when vent crawling!" + return + if(isslime(src)) + var/mob/living/carbon/slime/S = src + if(S.Victim) + src << "\red You'll have to let [S.Victim] go or finish eating \him first." + return + + var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection] + if(!target_vent) + return + + for(var/mob/O in viewers(src, null)) + O.show_message(text("[src] scrambles into the ventillation ducts!"), 1) + loc = target_vent + + var/travel_time = round(get_dist(loc, target_vent.loc) / 2) + + spawn(travel_time) + + if(!target_vent) return + for(var/mob/O in hearers(target_vent,null)) + O.show_message("You hear something squeezing through the ventilation ducts.",2) + + sleep(travel_time) + + if(!target_vent) return + if(target_vent.welded) //the vent can be welded while alien scrolled through the list or travelled. + target_vent = vent_found //travel back. No additional time required. + src << "\red The vent you were heading to appears to be welded." + loc = target_vent.loc + var/area/new_area = get_area(loc) + if(new_area) + new_area.Entered(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 491841ebada..2687827d385 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -69,58 +69,11 @@ if(client) client.time_died_as_mouse = world.time -//copy paste from alien/larva, if that func is updated please update this one also /mob/living/simple_animal/mouse/verb/ventcrawl() set name = "Crawl through Vent" set desc = "Enter an air vent and crawl through the pipe system." set category = "Mouse" - -// if(!istype(V,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent)) -// return - - if(src.stat != CONSCIOUS) return - - var/obj/machinery/atmospherics/unary/vent_pump/vent_found - var/welded = 0 - for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src)) - if(!v.welded) - vent_found = v - break - else - welded = 1 - if(vent_found) - if(vent_found.network&&vent_found.network.normal_members.len) - var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) - if(temp_vent.loc == loc) - continue - vents.Add(temp_vent) - var/list/choices = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents) - if(vent.loc.z != loc.z) - continue - var/atom/a = get_turf(vent) - choices.Add(a.loc) - var/turf/startloc = loc - var/obj/selection = input("Select a destination.", "Duct System") in choices - var/selection_position = choices.Find(selection) - if(loc==startloc) - var/obj/target_vent = vents[selection_position] - if(target_vent) - /* - for(var/mob/O in oviewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("[src] scrambles into the ventillation ducts!"), 1) - */ - loc = target_vent.loc - else - src << "\blue You need to remain still while entering a vent." - else - src << "\blue This vent is not connected to anything." - else if(welded) - src << "\red That vent is welded." - else - src << "\blue You must be standing on or beside an air vent to enter it." + handle_ventcrawl() return //copy paste from alien/larva, if that func is updated please update this one alsoghost From 39820724d26ff4fb52a4fff29c62013c0cdb5332 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Mon, 3 Feb 2014 07:34:27 -0800 Subject: [PATCH 5/7] Fix to Papadrow's custom item dress. --- icons/mob/uniform.dmi | Bin 199738 -> 199732 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index c0b89d053d8214ad8141ab90125413a0e5f18fd8..354a0b6fbf8d8f22bbfaffaec650dfb1d696c0fb 100644 GIT binary patch delta 1149 zcmV-@1cLjzm<+U-43H#$QhHQabVOxyV{&P5bZKvH004NLm6^|O+%^!#&)%mHl511c zX%4;kQaC7bNM1phC1=Ii9dVQyYGu8B50abskm3`3GVmjJNY39+@4LT0|MTTr_x$zC z>CPTvwR`G5{r<=4VUgTQ_tgFQ@$^twhSIiwqEX}Sse5K08V#UUR<#8H>HACoHqAaM za&VQQG?+H0Iw0UA6?sRMp|ru75f@S!N(24!*q&|+0;Aman5YSv{05#%Whf1cq)dLp z$V5{kK`b4dR{-OGI!Hy1Lv6GGxMCAPHG7d7XuzjJ6Pj%XuG}OY*qcX*<}143E^cZA z%wNp8hNJ+qD)li7lB_~eGIQh95u4#vXqC%db z&<;*u3@Vmcu2yPAV(>~;njx2|w5;qs8Vfs)9qYfnq3kw)#hS`5!M{!qnU&V=seAnG z&EK2ALz;rKQo2PkZ%Fnz>&!4bICF(*=X_-66^0Y}fV3Uoks!+AoG@ofMW7cbYj&Hg zN`fyHO-#-iMH>^G@Amk>V7s%EDsr}Fvr9nMQfhKBLvm@PVy1&Q0#D+EHOVp}SlC?{ zsy1uQlCa-@-eUG9P|rO|g$jw=*_x#Icz}iKgEZ*(e*lmF+e!45k=bDHQ}6|mgloh3 zy-&dxoONa}W^SSgR%Z`%%ixz4t*j%7j)ahRNl+B<%Zdg}a%!ny$t@W{V<-7wjiFul zGCj?X^w~~Q&(N&uOsZ>tD0N=B2Gm;(N?8aiOObqkJ_p!_Y%n^#Z8SVU|8y4@MvCuQ zXYQx zEjnad%r!d))KQtf^}b)!pX)qMF-yx>65Ycf6^6>+E_$K(HXWmM%Bg=fA8`iF**Rja zaxq7LBGb7|rZ|6P=W*>9(@Xz|^m{_JM<4X;k~u~aNE>pF=r7_(#@b+5_&d8~#_?z_ z)5P8nM_{B(?OF<0b*OS50#6Qac`!Pbm0IhMI9QG%-jME8YGbdYbh(f?lr0t+;i-Rz zvHH2l*u&*>kr8b?Vv!LP9$q!giy~sl=Cj~`@irJQ_%4}2tG7@~gj~kP!Wy%4L=TGc z8;psrBh{N!L284NWLOGPl8j&Sh99|P$I&3gK5=bNjcT}AVgkGVI(uMWXEHnF@rhLD z5tcJFW1~@-ox^5_2Bf>ad`J{C=?A17{)8h5af%f@U9o8?G6r&QROvth4^wi2Yq*MI zN-GEUA4RQDDh!DtyK0@xCj$ka;B<&D7KixB6nvyt(oGc$^Vjbah_eLUW~aW`?M9NV zzsYD7(N9N`ex-^uF9X-6sB+<%AT>lq6=)ORcb~sKch6tHoc;y(Nu}g8OSn#hg#?F% P1ObPI1Om5(1Ov4PTTmxc delta 1155 zcmV-}1bq9nm<+m@43H#$Sb9`gbVOxyV{&P5bZKvH004NLm6^eA+&Bz|&zYw%+Us_) z>GrUfT#6Kn9@SQ_Y;$M$r)Au!5qkBOR)$uHokRL0VXuhHguHvRP z!u(*)H6#U?RjH3fkYp8#l9?N)CRZqH+>pd-!yt(rxnHg=*#vn`IOpCJxuzWkM1?#< zp&gvS7*s5?JXxs~iNPnT(hRvwrQ6Ehqp`5#*s;Fv4Q01~Io4Eu3I21s%dE6^58eGA zul`;I9#RyXmC_}Oc|)?#Sr>-k(U~huJLe-iuP~g*N2Kidh6GU-=Y%;^DgwPgS+m=0 zRT6xuXkv2CDB76de7DC32HTaLRFShaTU-LNmQs_!49TUDikXh$2t11uRwT=WU}0Bb zNNv`dC1JmRy~XTBpqhJ<3JHnZ*_xzye}IMbK^pY?KY;uHtt9%&NN=#$Dfog&!nNW2 zUZ>y-&blxdGZ#?=tBVJ^W$^QgD(gg|6CvbP5)=jeyrKb za6hk4G!a-)9H5KESr<-ftuVMCSGul;Ry3+Ozjp!0%-RXDQnPbF6_x30@B4-RJT224i?oa-(LD@OVMzY=p%;p8-7!k1ocb5@5ogexogW<$;q{UDBHtPO?-e`lA>I3CSq zp4t2H2#mMhg~A(yeS@Qm3xq6dfa z8;lKIC#n~zf@p)1WOx*$BpJWt4L@?pj-x?}ed5}l8lB;0i5aZ=>*9fZoyqKw$0t%< zCU~5o8EcKo;vBX()F55$`CXz|NZ%oH_!EvK#5q>*bj9XdktvXSqe=%7c$ktCtl=tY zDy2KrR3P From 2ec805630e308023346e0c25a96913ae37bfff57 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Tue, 4 Feb 2014 11:30:35 -0800 Subject: [PATCH 6/7] Because we HAVE to define Del() three times /obj/item/device/gps/Del() GPS_list.Remove(src) ..() /obj/item/device/gps/Del() GPS_list.Remove(src) ..() /obj/item/device/gps/Del() GPS_list.Remove(src) ..() --- code/modules/telesci/gps.dm | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index b4fa7704a39..94ea86e23d6 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -19,14 +19,6 @@ var/list/GPS_list = list() /obj/item/device/gps/Del() GPS_list.Remove(src) ..() -/obj/item/device/gps/Del() - GPS_list.Remove(src) - ..() - -/obj/item/device/gps/Del() - GPS_list.Remove(src) - ..() - /obj/item/device/gps/emp_act(severity) emped = 1 overlays -= "working" @@ -75,4 +67,4 @@ var/list/GPS_list = list() /obj/item/device/gps/engineering icon_state = "gps-e" - gpstag = "ENG0" \ No newline at end of file + gpstag = "ENG0" From 9c803dc1f60584a1d2e687f2524b87c80fd4baf3 Mon Sep 17 00:00:00 2001 From: DJSnapshot Date: Tue, 4 Feb 2014 23:51:34 -0800 Subject: [PATCH 7/7] Added the rest of the objectiveless antag types --- code/controllers/configuration.dm | 2 +- code/datums/mind.dm | 36 ++++++--- .../game/gamemodes/autotraitor/autotraitor.dm | 4 +- code/game/gamemodes/changeling/changeling.dm | 57 +++++++------ .../game/gamemodes/changeling/traitor_chan.dm | 3 +- code/game/gamemodes/cult/cult.dm | 80 ++++++++++--------- code/game/gamemodes/heist/heist.dm | 12 ++- code/game/gamemodes/ninja/ninja.dm | 18 +++-- code/game/gamemodes/nuclear/nuclear.dm | 15 ++-- code/game/gamemodes/revolution/revolution.dm | 59 ++++++++------ .../gamemodes/revolution/rp_revolution.dm | 44 +++++----- code/game/gamemodes/traitor/traitor.dm | 18 ++--- code/game/gamemodes/wizard/wizard.dm | 46 ++++++----- config/example/config.txt | 3 + 14 files changed, 229 insertions(+), 168 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index f58c8e4b4f6..356a21ede7b 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -36,7 +36,7 @@ var/del_new_on_log = 1 // del's new players if they log before they spawn in var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard var/traitor_scaling = 0 //if amount of traitors scales based on amount of players - var/objectives_disabled = 0 //if objectives are disabled or not + var/objectives_disabled = 0 //if objectives are disabled or not var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other var/continous_rounds = 1 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. var/allow_Metadata = 0 // Metadata is supported. diff --git a/code/datums/mind.dm b/code/datums/mind.dm index d85c1a61f1a..8d2a926c8ea 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -74,7 +74,7 @@ datum/mind current.mind = null if(new_character.mind) //remove any mind currently in our new body's mind variable new_character.mind.current = null - + nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user current = new_character //link ourself to our new body @@ -562,6 +562,7 @@ datum/mind current << "\red Revolution has been disappointed of your leader traits! You are a regular revolutionary now!" else if(!(src in ticker.mode.revolutionaries)) current << "\red You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!" + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." else return ticker.mode.revolutionaries += src @@ -574,6 +575,7 @@ datum/mind ticker.mode.revolutionaries -= src ticker.mode.update_rev_icons_removed(src) current << "\red You have proved your devotion to revoltion! You are a head revolutionary now!" + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." else if(!(src in ticker.mode.head_revolutionaries)) current << "\blue You are a member of the revolutionaries' leadership now!" else @@ -639,7 +641,8 @@ datum/mind special_role = null var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) - cult.memoize_cult_objectives(src) + if(!config.objectives_disabled) + cult.memoize_cult_objectives(src) current << "\red You have been brainwashed! You are no longer a cultist!" memory = "" log_admin("[key_name_admin(usr)] has de-cult'ed [current].") @@ -650,9 +653,11 @@ datum/mind special_role = "Cultist" current << "You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie." current << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) - cult.memoize_cult_objectives(src) + if(!config.objectives_disabled) + cult.memoize_cult_objectives(src) log_admin("[key_name_admin(usr)] has cult'ed [current].") if("tome") var/mob/living/carbon/human/H = current @@ -691,6 +696,7 @@ datum/mind special_role = "Wizard" //ticker.mode.learn_basic_spells(current) current << "\red You are the Space Wizard!" + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." log_admin("[key_name_admin(usr)] has wizard'ed [current].") if("lair") current.loc = pick(wizardstart) @@ -699,8 +705,9 @@ datum/mind if("name") ticker.mode.name_wizard(current) if("autoobjectives") - ticker.mode.forge_wizard_objectives(src) - usr << "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually." + if(!config.objectives_disabled) + ticker.mode.forge_wizard_objectives(src) + usr << "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually." else if (href_list["changeling"]) switch(href_list["changeling"]) @@ -719,9 +726,12 @@ datum/mind ticker.mode.grant_changeling_powers(current) special_role = "Changeling" current << "Your powers are awoken. A flash of memory returns to us...we are a changeling!" + if(config.objectives_disabled) + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." log_admin("[key_name_admin(usr)] has changeling'ed [current].") if("autoobjectives") - ticker.mode.forge_changeling_objectives(src) + if(!config.objectives_disabled) + ticker.mode.forge_changeling_objectives(src) usr << "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually." if("initialdna") @@ -754,7 +764,10 @@ datum/mind current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]" special_role = "Syndicate" current << "\blue You are a [syndicate_name()] agent!" - ticker.mode.forge_syndicate_objectives(src) + if(config.objectives_disabled) + current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." + else + ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) log_admin("[key_name_admin(usr)] has nuke op'ed [current].") if("lair") @@ -806,7 +819,7 @@ datum/mind special_role = "traitor" current << "\red You are a traitor!" log_admin("[key_name_admin(usr)] has traitor'ed [current].") - if (config.objectives_disabled == 1) + if (config.objectives_disabled) current << "You have been turned into an antagonist- Within the rules, try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonist." if(istype(current, /mob/living/silicon)) var/mob/living/silicon/A = current @@ -814,7 +827,7 @@ datum/mind A.show_laws() if("autoobjectives") - if (config.objectives_disabled == 0) + if (!config.objectives_disabled) ticker.mode.forge_traitor_objectives(src) usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually." @@ -1026,7 +1039,7 @@ datum/mind if(!(src in ticker.mode.traitors)) ticker.mode.traitors += src special_role = "traitor" - if (config.objectives_disabled == 0) + if (!config.objectives_disabled) ticker.mode.forge_traitor_objectives(src) ticker.mode.finalize_traitor(src) ticker.mode.greet_traitor(src) @@ -1066,7 +1079,8 @@ datum/mind ticker.mode.changelings += src ticker.mode.grant_changeling_powers(current) special_role = "Changeling" - ticker.mode.forge_changeling_objectives(src) + if(!config.objectives_disabled) + ticker.mode.forge_changeling_objectives(src) ticker.mode.greet_changeling(src) proc/make_Wizard() diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index f6500ef8ec6..5df7f0581e1 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -123,7 +123,7 @@ var/mob/living/newtraitor = pick(possible_traitors) //message_admins("[newtraitor.real_name] is the new Traitor.") - if (config.objectives_disabled == 0) + if (!config.objectives_disabled) forge_traitor_objectives(newtraitor.mind) if(istype(newtraitor, /mob/living/silicon)) @@ -189,7 +189,7 @@ traitors += character.mind character << "\red You are the traitor." character.mind.special_role = "traitor" - if (config.objectives_disabled == 1) + if (config.objectives_disabled) character << "You have been selected this round as an antagonist- Within the rules, try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonist." else var/obj_count = 1 diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 6a3bbd19c82..1978df1ae44 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -72,7 +72,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" for(var/datum/mind/changeling in changelings) grant_changeling_powers(changeling.current) changeling.special_role = "Changeling" - forge_changeling_objectives(changeling) + if(!config.objectives_disabled) + forge_changeling_objectives(changeling) greet_changeling(changeling) spawn (rand(waittime_l, waittime_h)) @@ -120,18 +121,24 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" if (you_are) changeling.current << "\red You are a changeling!" changeling.current << "\red Use say \":g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them." - changeling.current << "You must complete the following tasks:" + + if(config.objectives_disabled) + changeling.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." + + if (!config.objectives_disabled) + changeling.current << "You must complete the following tasks:" if (changeling.current.mind) if (changeling.current.mind.assigned_role == "Clown") changeling.current << "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself." changeling.current.mutations.Remove(CLUMSY) - var/obj_count = 1 - for(var/datum/objective/objective in changeling.objectives) - changeling.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ - return + if (!config.objectives_disabled) + var/obj_count = 1 + for(var/datum/objective/objective in changeling.objectives) + changeling.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + return /*/datum/game_mode/changeling/check_finished() var/changelings_alive = 0 @@ -181,25 +188,25 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" //Removed sanity if(changeling) because we -want- a runtime to inform us that the changelings list is incorrect and needs to be fixed. text += "
Changeling ID: [changeling.changeling.changelingID]." text += "
Genomes Absorbed: [changeling.changeling.absorbedcount]" - - if(changeling.objectives.len) - var/count = 1 - for(var/datum/objective/objective in changeling.objectives) - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - feedback_add_details("changeling_objective","[objective.type]|SUCCESS") + if(!config.objectives_disabled) + if(changeling.objectives.len) + var/count = 1 + for(var/datum/objective/objective in changeling.objectives) + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + feedback_add_details("changeling_objective","[objective.type]|SUCCESS") + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + feedback_add_details("changeling_objective","[objective.type]|FAIL") + changelingwin = 0 + count++ + if(!config.objectives_disabled) + if(changelingwin) + text += "
The changeling was successful!" + feedback_add_details("changeling_success","SUCCESS") else - text += "
Objective #[count]: [objective.explanation_text] Fail." - feedback_add_details("changeling_objective","[objective.type]|FAIL") - changelingwin = 0 - count++ - - if(changelingwin) - text += "
The changeling was successful!" - feedback_add_details("changeling_success","SUCCESS") - else - text += "
The changeling has failed." - feedback_add_details("changeling_success","FAIL") + text += "
The changeling has failed." + feedback_add_details("changeling_success","FAIL") world << text diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 12a5525428e..2dbec4fa60c 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -37,7 +37,8 @@ for(var/datum/mind/changeling in changelings) grant_changeling_powers(changeling.current) changeling.special_role = "Changeling" - forge_changeling_objectives(changeling) + if(!config.objectives_disabled) + forge_changeling_objectives(changeling) greet_changeling(changeling) ..() return \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index ee16e21a771..45452a95e1c 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -53,12 +53,13 @@ /datum/game_mode/cult/pre_setup() - if(prob(50)) - objectives += "survive" - objectives += "sacrifice" - else - objectives += "eldergod" - objectives += "sacrifice" + if(!config.objectives_disabled) + if(prob(50)) + objectives += "survive" + objectives += "sacrifice" + else + objectives += "eldergod" + objectives += "sacrifice" if(config.protect_roles_from_antagonist) restricted_jobs += protected_jobs @@ -97,7 +98,10 @@ grant_runeword(cult_mind.current) update_cult_icons_added(cult_mind) cult_mind.current << "\blue You are a member of the cult!" - memoize_cult_objectives(cult_mind) + if(!config.objectives_disabled) + memoize_cult_objectives(cult_mind) + else + cult_mind.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." cult_mind.special_role = "Cultist" spawn (rand(waittime_l, waittime_h)) @@ -181,7 +185,8 @@ /datum/game_mode/cult/add_cultist(datum/mind/cult_mind) //INHERIT if (!..(cult_mind)) return - memoize_cult_objectives(cult_mind) + if (!config.objectives_disabled) + memoize_cult_objectives(cult_mind) /datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1) @@ -276,7 +281,8 @@ /datum/game_mode/cult/declare_completion() - + if(config.objectives_disabled) + return 1 if(!check_cult_victory()) feedback_set_details("round_end_result","win - cult win") feedback_set("round_end_result",acolytes_survived) @@ -287,38 +293,38 @@ world << "\red The staff managed to stop the cult!" var/text = "Cultists escaped: [acolytes_survived]" - - if(objectives.len) - text += "
The cultists' objectives were:" - for(var/obj_count=1, obj_count <= objectives.len, obj_count++) - var/explanation - switch(objectives[obj_count]) - if("survive") - if(!check_survive()) - explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. Success!" - feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]") - else - explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. Fail." - feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]") - if("sacrifice") - if(sacrifice_target) - if(sacrifice_target in sacrificed) - explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. Success!" - feedback_add_details("cult_objective","cult_sacrifice|SUCCESS") - else if(sacrifice_target && sacrifice_target.current) - explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. Fail." - feedback_add_details("cult_objective","cult_sacrifice|FAIL") + if(!config.objectives_disabled) + if(objectives.len) + text += "
The cultists' objectives were:" + for(var/obj_count=1, obj_count <= objectives.len, obj_count++) + var/explanation + switch(objectives[obj_count]) + if("survive") + if(!check_survive()) + explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. Success!" + feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]") + else + explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. Fail." + feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]") + if("sacrifice") + if(sacrifice_target) + if(sacrifice_target in sacrificed) + explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. Success!" + feedback_add_details("cult_objective","cult_sacrifice|SUCCESS") + else if(sacrifice_target && sacrifice_target.current) + explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. Fail." + feedback_add_details("cult_objective","cult_sacrifice|FAIL") else explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. Fail (Gibbed)." feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED") - if("eldergod") - if(!eldergod) - explanation = "Summon Nar-Sie. Success!" - feedback_add_details("cult_objective","cult_narsie|SUCCESS") - else - explanation = "Summon Nar-Sie. Fail." + if("eldergod") + if(!eldergod) + explanation = "Summon Nar-Sie. Success!" + feedback_add_details("cult_objective","cult_narsie|SUCCESS") + else + explanation = "Summon Nar-Sie. Fail." feedback_add_details("cult_objective","cult_narsie|FAIL") - text += "
Objective #[obj_count]: [explanation]" + text += "
Objective #[obj_count]: [explanation]" world << text ..() diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index fd2cdf88ade..f556f43b4a7 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -69,7 +69,8 @@ VOX HEIST ROUNDTYPE continue //Generate objectives for the group. - raid_objectives = forge_vox_objectives() + if(!config.objectives_disabled) + raid_objectives = forge_vox_objectives() var/index = 1 @@ -167,9 +168,12 @@ VOX HEIST ROUNDTYPE raider.current << "\blue Use :V to voxtalk, :H to talk on your encrypted channel, and don't forget to turn on your nitrogen internals!" raider.current << "\red IF YOU HAVE NOT PLAYED A VOX BEFORE, REVIEW THIS THREAD: http://baystation12.net/forums/viewtopic.php?f=6&t=8657." var/obj_count = 1 - for(var/datum/objective/objective in raider.objectives) - raider.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ + if(!config.objectives_disabled) + for(var/datum/objective/objective in raider.objectives) + raider.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + else + raider.current << "Within the rules, try to act as an opposing force to the crew or come up with other fun ideas. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." /datum/game_mode/heist/declare_completion() diff --git a/code/game/gamemodes/ninja/ninja.dm b/code/game/gamemodes/ninja/ninja.dm index ac2ab258bf3..42f5b69d7f8 100644 --- a/code/game/gamemodes/ninja/ninja.dm +++ b/code/game/gamemodes/ninja/ninja.dm @@ -54,7 +54,10 @@ /datum/game_mode/ninja/post_setup() for(var/datum/mind/ninja in ninjas) if(ninja.current && !(istype(ninja.current,/mob/living/carbon/human))) return 0 - forge_ninja_objectives(ninja) + if(!config.objectives_disabled) + forge_ninja_objectives(ninja) + else + ninja.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." var/mob/living/carbon/human/N = ninja.current N.internal = N.s_store N.internals.icon_state = "internal1" @@ -176,12 +179,13 @@ else special_role_text = "antagonist" - if(ninjawin) - text += "
The [special_role_text] was successful!" - feedback_add_details("traitor_success","SUCCESS") - else - text += "
The [special_role_text] has failed!" - feedback_add_details("traitor_success","FAIL") + if(!config.objectives_disabled) + if(ninjawin) + text += "
The [special_role_text] was successful!" + feedback_add_details("traitor_success","SUCCESS") + else + text += "
The [special_role_text] has failed!" + feedback_add_details("traitor_success","FAIL") world << text return 1 diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 595dfe02264..5674ea90987 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -139,8 +139,8 @@ synd_mind.current.real_name = "[syndicate_name()] Operative" // placeholder while we get their actual name spawn(0) NukeNameAssign(synd_mind) - - forge_syndicate_objectives(synd_mind) + if(!config.objectives_disabled) + forge_syndicate_objectives(synd_mind) greet_syndicate(synd_mind) equip_syndicate(synd_mind.current) @@ -195,9 +195,12 @@ if (you_are) syndicate.current << "\blue You are a [syndicate_name()] agent!" var/obj_count = 1 - for(var/datum/objective/objective in syndicate.objectives) - syndicate.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ + if(!config.objectives_disabled) + for(var/datum/objective/objective in syndicate.objectives) + syndicate.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + else + syndicate.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." return @@ -267,6 +270,8 @@ /datum/game_mode/nuclear/declare_completion() + if(config.objectives_disabled) + return var/disk_rescued = 1 for(var/obj/item/weapon/disk/nuclear/D in world) var/disk_area = get_area(D) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index e94baa3ede0..3211c496429 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -21,7 +21,7 @@ recommended_enemies = 3 - uplink_welcome = "Revolutionary Uplink Console:" + uplink_welcome = "AntagCorp Uplink Console:" uplink_uses = 10 var/finished = 0 @@ -73,14 +73,14 @@ /datum/game_mode/revolution/post_setup() var/list/heads = get_living_heads() - for(var/datum/mind/rev_mind in head_revolutionaries) - for(var/datum/mind/head_mind in heads) - var/datum/objective/mutiny/rev_obj = new - rev_obj.owner = rev_mind - rev_obj.target = head_mind - rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]." - rev_mind.objectives += rev_obj + if(!config.objectives_disabled) + for(var/datum/mind/head_mind in heads) + var/datum/objective/mutiny/rev_obj = new + rev_obj.owner = rev_mind + rev_obj.target = head_mind + rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]." + rev_mind.objectives += rev_obj // equip_traitor(rev_mind.current, 1) //changing how revs get assigned their uplink so they can get PDA uplinks. --NEO // Removing revolutionary uplinks. -Pete @@ -107,22 +107,26 @@ /datum/game_mode/proc/forge_revolutionary_objectives(var/datum/mind/rev_mind) - var/list/heads = get_living_heads() - for(var/datum/mind/head_mind in heads) - var/datum/objective/mutiny/rev_obj = new - rev_obj.owner = rev_mind - rev_obj.target = head_mind - rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]." - rev_mind.objectives += rev_obj + if(!config.objectives_disabled) + var/list/heads = get_living_heads() + for(var/datum/mind/head_mind in heads) + var/datum/objective/mutiny/rev_obj = new + rev_obj.owner = rev_mind + rev_obj.target = head_mind + rev_obj.explanation_text = "Assassinate [head_mind.name], the [head_mind.assigned_role]." + rev_mind.objectives += rev_obj /datum/game_mode/proc/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1) var/obj_count = 1 if (you_are) rev_mind.current << "\blue You are a member of the revolutionaries' leadership!" - for(var/datum/objective/objective in rev_mind.objectives) - rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]" - rev_mind.special_role = "Head Revolutionary" - obj_count++ + if(!config.objectives_disabled) + for(var/datum/objective/objective in rev_mind.objectives) + rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]" + rev_mind.special_role = "Head Revolutionary" + obj_count++ + else + rev_mind.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." ///////////////////////////////////////////////////////////////////////////////// //This are equips the rev heads with their gear, and makes the clown not clumsy// @@ -193,6 +197,8 @@ revolutionaries += rev_mind rev_mind.current << "\red You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!" rev_mind.special_role = "Revolutionary" + if(config.objectives_disabled) + rev_mind.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." update_rev_icons_added(rev_mind) return 1 ////////////////////////////////////////////////////////////////////////////// @@ -342,13 +348,14 @@ //Announces the end of the game with all relavent information stated// ////////////////////////////////////////////////////////////////////// /datum/game_mode/revolution/declare_completion() - if(finished == 1) - feedback_set_details("round_end_result","win - heads killed") - world << "\red The heads of staff were killed or abandoned the station! The revolutionaries win!" - else if(finished == 2) - feedback_set_details("round_end_result","loss - rev heads killed") - world << "\red The heads of staff managed to stop the revolution!" - ..() + if(!config.objectives_disabled) + if(finished == 1) + feedback_set_details("round_end_result","win - heads killed") + world << "\red The heads of staff were killed or abandoned the station! The revolutionaries win!" + else if(finished == 2) + feedback_set_details("round_end_result","loss - rev heads killed") + world << "\red The heads of staff managed to stop the revolution!" + ..() return 1 /datum/game_mode/proc/auto_declare_completion_revolution() diff --git a/code/game/gamemodes/revolution/rp_revolution.dm b/code/game/gamemodes/revolution/rp_revolution.dm index 98f97cf4600..4df4329baf6 100644 --- a/code/game/gamemodes/revolution/rp_revolution.dm +++ b/code/game/gamemodes/revolution/rp_revolution.dm @@ -8,7 +8,7 @@ required_enemies = 3 recommended_enemies = 3 - uplink_welcome = "Revolutionary Uplink Console:" + uplink_welcome = "AntagCorp Uplink Console:" uplink_uses = 5 newscaster_announcements = /datum/news_announcement/revolution_inciting_event @@ -57,14 +57,14 @@ /datum/game_mode/revolution/rp_revolution/post_setup() heads = get_living_heads() - for(var/datum/mind/rev_mind in head_revolutionaries) - for(var/datum/mind/head_mind in heads) - var/datum/objective/mutiny/rp/rev_obj = new - rev_obj.owner = rev_mind - rev_obj.target = head_mind - rev_obj.explanation_text = "Assassinate, convert or capture [head_mind.name], the [head_mind.assigned_role]." - rev_mind.objectives += rev_obj + if(!config.objectives_disabled) + for(var/datum/mind/head_mind in heads) + var/datum/objective/mutiny/rp/rev_obj = new + rev_obj.owner = rev_mind + rev_obj.target = head_mind + rev_obj.explanation_text = "Assassinate, convert or capture [head_mind.name], the [head_mind.assigned_role]." + rev_mind.objectives += rev_obj update_rev_icons_added(rev_mind) @@ -81,10 +81,13 @@ var/obj_count = 1 if (you_are) rev_mind.current << "\blue You are a member of the revolutionaries' leadership!" - for(var/datum/objective/objective in rev_mind.objectives) - rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]" - rev_mind.special_role = "Head Revolutionary" - obj_count++ + if(!config.objectives_disabled) + for(var/datum/objective/objective in rev_mind.objectives) + rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]" + rev_mind.special_role = "Head Revolutionary" + obj_count++ + else + rev_mind.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." // Show each head revolutionary up to 3 candidates var/list/already_considered = list() @@ -110,6 +113,8 @@ revolutionaries += rev_mind rev_mind.current << "\red You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill, capture or convert the heads to win the revolution!" rev_mind.special_role = "Revolutionary" + if(config.objectives_disabled) + rev_mind.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." update_rev_icons_added(rev_mind) return 1 @@ -140,13 +145,14 @@ //Announces the end of the game with all relavent information stated// ////////////////////////////////////////////////////////////////////// /datum/game_mode/revolution/rp_revolution/declare_completion() - if(finished == 1) - feedback_set_details("round_end_result","win - heads overthrown") - world << "\red The heads of staff were overthrown! The revolutionaries win!" - else if(finished == 2) - feedback_set_details("round_end_result","loss - revolution stopped") - world << "\red The heads of staff managed to stop the revolution!" - ..() + if(!config.objectives_disabled) + if(finished == 1) + feedback_set_details("round_end_result","win - heads overthrown") + world << "\red The heads of staff were overthrown! The revolutionaries win!" + else if(finished == 2) + feedback_set_details("round_end_result","loss - revolution stopped") + world << "\red The heads of staff managed to stop the revolution!" + ..() return 1 /datum/game_mode/revolution/proc/is_convertible(mob/M) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 73a50b93f02..f4015d7ad59 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -65,7 +65,7 @@ /datum/game_mode/traitor/post_setup() for(var/datum/mind/traitor in traitors) - if (config.objectives_disabled == 0) + if (!config.objectives_disabled) forge_traitor_objectives(traitor) spawn(rand(10,100)) finalize_traitor(traitor) @@ -132,7 +132,7 @@ /datum/game_mode/proc/greet_traitor(var/datum/mind/traitor) traitor.current << "You are the traitor." - if (config.objectives_disabled == 0) + if (!config.objectives_disabled) var/obj_count = 1 for(var/datum/objective/objective in traitor.objectives) traitor.current << "Objective #[obj_count]: [objective.explanation_text]" @@ -220,13 +220,13 @@ special_role_text = lowertext(traitor.special_role) else special_role_text = "antagonist" - - if(traitorwin) - text += "
The [special_role_text] was successful!" - feedback_add_details("traitor_success","SUCCESS") - else - text += "
The [special_role_text] has failed!" - feedback_add_details("traitor_success","FAIL") + if(!config.objectives_disabled) + if(traitorwin) + text += "
The [special_role_text] was successful!" + feedback_add_details("traitor_success","SUCCESS") + else + text += "
The [special_role_text] has failed!" + feedback_add_details("traitor_success","FAIL") world << text return 1 diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index add8ee00a66..751092f3888 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -50,7 +50,8 @@ /datum/game_mode/wizard/post_setup() for(var/datum/mind/wizard in wizards) - forge_wizard_objectives(wizard) + if(!config.objectives_disabled) + forge_wizard_objectives(wizard) //learn_basic_spells(wizard.current) equip_wizard(wizard.current) name_wizard(wizard.current) @@ -132,11 +133,13 @@ if (you_are) wizard.current << "\red You are the Space Wizard!" wizard.current << "The Space Wizards Federation has given you the following tasks:" - - var/obj_count = 1 - for(var/datum/objective/objective in wizard.objectives) - wizard.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ + if(!config.objectives_disabled) + var/obj_count = 1 + for(var/datum/objective/objective in wizard.objectives) + wizard.current << "Objective #[obj_count]: [objective.explanation_text]" + obj_count++ + else + wizard.current << "Within the rules, try to act as an opposing force to the crew. Further RP and try to make sure other players have fun! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! Please remember all rules aside from those without explicit exceptions apply to antagonists." return @@ -231,22 +234,23 @@ var/count = 1 var/wizardwin = 1 - for(var/datum/objective/objective in wizard.objectives) - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - feedback_add_details("wizard_objective","[objective.type]|SUCCESS") - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - feedback_add_details("wizard_objective","[objective.type]|FAIL") - wizardwin = 0 - count++ + if(!config.objectives_disabled) + for(var/datum/objective/objective in wizard.objectives) + if(objective.check_completion()) + text += "
Objective #[count]: [objective.explanation_text] Success!" + feedback_add_details("wizard_objective","[objective.type]|SUCCESS") + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + feedback_add_details("wizard_objective","[objective.type]|FAIL") + wizardwin = 0 + count++ - if(wizard.current && wizard.current.stat!=2 && wizardwin) - text += "
The wizard was successful!" - feedback_add_details("wizard_success","SUCCESS") - else - text += "
The wizard has failed!" - feedback_add_details("wizard_success","FAIL") + if(wizard.current && wizard.current.stat!=2 && wizardwin) + text += "
The wizard was successful!" + feedback_add_details("wizard_success","SUCCESS") + else + text += "
The wizard has failed!" + feedback_add_details("wizard_success","FAIL") world << text return 1 diff --git a/config/example/config.txt b/config/example/config.txt index 783adb23afa..7a2638f0207 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -91,6 +91,9 @@ ALLOW_RANDOM_EVENTS ## if amount of traitors scales or not TRAITOR_SCALING +## if objectives are disabled +OBJECTIVES_DISABLED + ## If security is prohibited from being most antagonists #PROTECT_ROLES_FROM_ANTAGONIST