From e71299699ef5f642063182811c2ccc461e203322 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Fri, 26 May 2017 16:15:32 -0300 Subject: [PATCH] Adds more mixed gamemodes and make them votable (#2420) -allow voting for most mixed gamemodes, with exception of bughunt and infection -adds crossfire(merc and heister), also adds a raider frequency to don't mix them with mercs -adds siege(rev and merc) -adds visitors(ninja and wizard) --- baystation12.dme | 3 +++ code/__defines/radio.dm | 4 +++- code/controllers/subsystems/statistics.dm | 1 + code/game/antagonist/antagonist_create.dm | 12 ++++++++---- code/game/antagonist/outsider/raider.dm | 2 +- code/game/gamemodes/mixed/conflux.dm | 5 ++--- code/game/gamemodes/mixed/crossfire.dm | 12 ++++++++++++ code/game/gamemodes/mixed/infestation.dm | 4 ++-- code/game/gamemodes/mixed/intrigue.dm | 10 ++++++++++ code/game/gamemodes/mixed/paranoia.dm | 14 +++++++------- code/game/gamemodes/mixed/siege.dm | 10 ++++++++++ code/game/gamemodes/mixed/traitorling.dm | 2 +- code/game/gamemodes/mixed/uprising.dm | 4 ++-- code/game/gamemodes/mixed/visitors.dm | 10 ++++++++++ code/game/gamemodes/vampire/vampire.dm | 8 +++++--- code/game/machinery/telecomms/broadcaster.dm | 4 ++++ .../objects/items/devices/radio/encryptionkey.dm | 6 ++++++ code/game/objects/items/devices/radio/headset.dm | 5 +++++ code/game/objects/items/devices/radio/intercom.dm | 11 +++++++++++ code/modules/mob/living/say.dm | 2 ++ 20 files changed, 105 insertions(+), 24 deletions(-) create mode 100644 code/game/gamemodes/mixed/crossfire.dm create mode 100644 code/game/gamemodes/mixed/intrigue.dm create mode 100644 code/game/gamemodes/mixed/siege.dm create mode 100644 code/game/gamemodes/mixed/visitors.dm diff --git a/baystation12.dme b/baystation12.dme index 7638750075e..c98420a95af 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -414,10 +414,13 @@ #include "code\game\gamemodes\meteor\meteors.dm" #include "code\game\gamemodes\mixed\bughunt.dm" #include "code\game\gamemodes\mixed\conflux.dm" +#include "code\game\gamemodes\mixed\crossfire.dm" #include "code\game\gamemodes\mixed\infestation.dm" #include "code\game\gamemodes\mixed\paranoia.dm" +#include "code\game\gamemodes\mixed\siege.dm" #include "code\game\gamemodes\mixed\traitorling.dm" #include "code\game\gamemodes\mixed\uprising.dm" +#include "code\game\gamemodes\mixed\visitors.dm" #include "code\game\gamemodes\ninja\ninja.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" diff --git a/code/__defines/radio.dm b/code/__defines/radio.dm index c4e44d4420d..2fd45c22ed8 100644 --- a/code/__defines/radio.dm +++ b/code/__defines/radio.dm @@ -9,6 +9,7 @@ var/const/ERT_FREQ = 1345 var/const/AI_FREQ = 1343 var/const/DTH_FREQ = 1341 var/const/SYND_FREQ = 1213 +var/const/RAID_FREQ = 1277 var/const/ENT_FREQ = 1461 //entertainment frequency. This is not a diona exclusive frequency. // department channels @@ -34,6 +35,7 @@ var/list/radiochannels = list( "Response Team" = ERT_FREQ, "Special Ops" = DTH_FREQ, "Mercenary" = SYND_FREQ, + "Raider" = RAID_FREQ, "Supply" = SUP_FREQ, "Service" = SRV_FREQ, "AI Private" = AI_FREQ, @@ -46,7 +48,7 @@ var/list/radiochannels = list( var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ) // Antag channels, i.e. Syndicate -var/list/ANTAG_FREQS = list(SYND_FREQ) +var/list/ANTAG_FREQS = list(SYND_FREQ, RAID_FREQ) //Department channels, arranged lexically var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ, ENT_FREQ) diff --git a/code/controllers/subsystems/statistics.dm b/code/controllers/subsystems/statistics.dm index 81b3bd685b0..5d6584ecf81 100644 --- a/code/controllers/subsystems/statistics.dm +++ b/code/controllers/subsystems/statistics.dm @@ -17,6 +17,7 @@ var/list/msg_security = list() var/list/msg_deathsquad = list() var/list/msg_syndicate = list() + var/list/msg_raider = list() var/list/msg_cargo = list() var/list/msg_service = list() diff --git a/code/game/antagonist/antagonist_create.dm b/code/game/antagonist/antagonist_create.dm index cd32f497c8e..fb28f4e7b70 100644 --- a/code/game/antagonist/antagonist_create.dm +++ b/code/game/antagonist/antagonist_create.dm @@ -44,10 +44,14 @@ /datum/antagonist/proc/create_radio(var/freq, var/mob/living/carbon/human/player) var/obj/item/device/radio/R - if(freq == SYND_FREQ) - R = new/obj/item/device/radio/headset/syndicate(player) - else - R = new/obj/item/device/radio/headset(player) + switch(freq) + if(SYND_FREQ) + R = new/obj/item/device/radio/headset/syndicate(player) + if(RAID_FREQ) + R = new/obj/item/device/radio/headset/raider(player) + else + R = new/obj/item/device/radio/headset(player) + R.set_frequency(freq) R.set_frequency(freq) player.equip_to_slot_or_del(R, slot_l_ear) diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 7918105f9cd..22cf2495e4b 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -243,7 +243,7 @@ var/datum/antagonist/raider/raiders W.handle_item_insertion(id) player.equip_to_slot_or_del(W, slot_wear_id) spawn_money(rand(50,150)*10,W) - create_radio(SYND_FREQ, player) + create_radio(RAID_FREQ, player) return 1 diff --git a/code/game/gamemodes/mixed/conflux.dm b/code/game/gamemodes/mixed/conflux.dm index 1923c3fbf92..304238cbd03 100644 --- a/code/game/gamemodes/mixed/conflux.dm +++ b/code/game/gamemodes/mixed/conflux.dm @@ -1,11 +1,10 @@ /datum/game_mode/conflux - name = "conflux" + name = "Conflux" round_description = "A space wizard and a cult have invaded the station!" extended_round_description = "Cultists and wizards spawn during this round." config_tag = "conflux" required_players = 15 required_enemies = 5 - end_on_antag_death = 1 + end_on_antag_death = 0 antag_tags = list(MODE_WIZARD, MODE_CULTIST) require_all_templates = 1 - votable = 0 \ No newline at end of file diff --git a/code/game/gamemodes/mixed/crossfire.dm b/code/game/gamemodes/mixed/crossfire.dm new file mode 100644 index 00000000000..3acfcff388b --- /dev/null +++ b/code/game/gamemodes/mixed/crossfire.dm @@ -0,0 +1,12 @@ +/datum/game_mode/crossfire + name = "Crossfire" + round_description = "Mercenaries and raiders are approaching the station." + extended_round_description = "NanoTrasen's wealth and success created several enemies over the years \ + and many seek to undermine them using illegal ways. Their crown jewel research stations are not safe from those \ + malicious activities." + config_tag = "crossfire" + required_players = 25 + required_enemies = 8 + end_on_antag_death = 0 + antag_tags = list(MODE_RAIDER, MODE_MERCENARY) + require_all_templates = 1 diff --git a/code/game/gamemodes/mixed/infestation.dm b/code/game/gamemodes/mixed/infestation.dm index 71e9ebe180b..3d792d8be90 100644 --- a/code/game/gamemodes/mixed/infestation.dm +++ b/code/game/gamemodes/mixed/infestation.dm @@ -1,5 +1,5 @@ /datum/game_mode/infestation - name = "infestation" + name = "Infestation" round_description = "There's something in the walls!" extended_round_description = "Two alien antagonists (Xenomorphs, Cortical Borers or Changelings) may spawn during this round." config_tag = "infestation" @@ -13,4 +13,4 @@ /datum/game_mode/infestation/create_antagonists() // Two of the three. antag_tags -= pick(antag_tags) - ..() \ No newline at end of file + ..() diff --git a/code/game/gamemodes/mixed/intrigue.dm b/code/game/gamemodes/mixed/intrigue.dm new file mode 100644 index 00000000000..da236492d06 --- /dev/null +++ b/code/game/gamemodes/mixed/intrigue.dm @@ -0,0 +1,10 @@ +/datum/game_mode/intrigue + name = "Intrigue" + round_description = "Crewmembers are contacted by external elements while an outsider infiltrates the station." + extended_round_description = "Traitors and a ninja spawn during this round." + config_tag = "intrigue" + required_players = 15 + required_enemies = 4 + end_on_antag_death = 0 + antag_tags = list(MODE_NINJA, MODE_TRAITOR) + require_all_templates = 1 diff --git a/code/game/gamemodes/mixed/paranoia.dm b/code/game/gamemodes/mixed/paranoia.dm index de7a9d153e7..d5e26d93bfa 100644 --- a/code/game/gamemodes/mixed/paranoia.dm +++ b/code/game/gamemodes/mixed/paranoia.dm @@ -1,11 +1,11 @@ /datum/game_mode/paranoia - name = "paranoia" - round_description = "The AI has malfunctioned, and subversive elements infest the crew..." - extended_round_description = "Rampant AIs, renegades and changelings spawn in this mode." + name = "Paranoia" + round_description = "The AI has malfunctioned, and subversive elements infest the crew." + extended_round_description = "Rampant AIs, traitors and changelings spawn in this mode." config_tag = "paranoia" - required_players = 2 - required_enemies = 1 + required_players = 15 + required_enemies = 5 end_on_antag_death = 1 require_all_templates = 1 - votable = 0 - antag_tags = list(MODE_MALFUNCTION, MODE_RENEGADE, MODE_CHANGELING) + votable = 1 + antag_tags = list(MODE_MALFUNCTION, MODE_TRAITOR, MODE_CHANGELING) diff --git a/code/game/gamemodes/mixed/siege.dm b/code/game/gamemodes/mixed/siege.dm new file mode 100644 index 00000000000..0dcdc6aa4c1 --- /dev/null +++ b/code/game/gamemodes/mixed/siege.dm @@ -0,0 +1,10 @@ +/datum/game_mode/siege + name = "Siege" + config_tag = "siege" + round_description = "Some crewmembers are attempting to start a revolution while a mercenary strike force is approaching the station!" + extended_round_description = "Getting stuck between a rock and a hard place, maybe the nice visitors can help with your internal security problem?" + required_players = 20 + required_enemies = 7 + end_on_antag_death = 0 + antag_tags = list(MODE_REVOLUTIONARY, MODE_LOYALIST, MODE_MERCENARY) + require_all_templates = 1 diff --git a/code/game/gamemodes/mixed/traitorling.dm b/code/game/gamemodes/mixed/traitorling.dm index 6972aee5540..a37a8d3108e 100644 --- a/code/game/gamemodes/mixed/traitorling.dm +++ b/code/game/gamemodes/mixed/traitorling.dm @@ -1,5 +1,5 @@ /datum/game_mode/traitorling - name = "traitorling" + name = "Traitorling" round_description = "There are traitors and alien changelings on the station. Do not let the changelings succeed!" extended_round_description = "Traitors and changelings both spawn during this mode." config_tag = "traitorling" diff --git a/code/game/gamemodes/mixed/uprising.dm b/code/game/gamemodes/mixed/uprising.dm index 9dad2ecfa97..085fdb8f314 100644 --- a/code/game/gamemodes/mixed/uprising.dm +++ b/code/game/gamemodes/mixed/uprising.dm @@ -1,5 +1,5 @@ /datum/game_mode/uprising - name = "uprising" + name = "Uprising" config_tag = "uprising" round_description = "Some crewmembers are attempting to start a revolution while a cult plots in the shadows!" extended_round_description = "Cultists and revolutionaries spawn in this round." @@ -8,4 +8,4 @@ end_on_antag_death = 1 antag_tags = list(MODE_REVOLUTIONARY, MODE_LOYALIST, MODE_CULTIST) require_all_templates = 1 - votable = 0 \ No newline at end of file + votable = 1 diff --git a/code/game/gamemodes/mixed/visitors.dm b/code/game/gamemodes/mixed/visitors.dm new file mode 100644 index 00000000000..6d83df036e6 --- /dev/null +++ b/code/game/gamemodes/mixed/visitors.dm @@ -0,0 +1,10 @@ +/datum/game_mode/visitors + name = "Visitors" + round_description = "A space wizard and a ninja have invaded the station!" + extended_round_description = "A ninja and wizard spawn during this round." + config_tag = "visitors" + required_players = 15 + required_enemies = 2 + end_on_antag_death = 0 + antag_tags = list(MODE_WIZARD, MODE_NINJA) + require_all_templates = 1 diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index cf27f230531..e382c4d0192 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -1,11 +1,13 @@ /datum/game_mode/vampire name = "Vampire" - round_description = "There are Vampires from Space Transylvania on the station, keep your blood close and neck safe!" - extended_round_description = "Life always finds a way. However, life can sometimes take a more disturbing route. Humanity's extensive knowledge of xeno-biological specimens has made them confident and arrogant. Yet something slipped past their eyes. Something dangerous. Something alive. Most frightening of all, however, is that this something is someone. An unknown alien specimen has incorporated itself into the crew of the NSS Exodus. No one knows where it came from. No one knows who it is or what it wants. One thing is for certain though... there is never just one of them. Good luck." + round_description = "There are vampires on the station, keep your blood close and neck safe!" + extended_round_description = "And He said, \"What have you done? Hark! Your brother's blood cries out to Me from the earth. \ + And now, you are cursed even more than the ground, which opened its mouth to take your brother's blood from your hand. \ + When you till the soil, it will not continue to give its strength to you; you shall be a wanderer and an exile in the land.\"" config_tag = "vampire" required_players = 2 required_enemies = 1 - end_on_antag_death = 1 + end_on_antag_death = 0 antag_scaling_coeff = 8 antag_tags = list(MODE_VAMPIRE) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 1b46e51e587..346dffe593b 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -378,6 +378,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept SSfeedback.msg_deathsquad += blackbox_msg if(SYND_FREQ) SSfeedback.msg_syndicate += blackbox_msg + if(RAID_FREQ) + SSfeedback.msg_raider += blackbox_msg if(SUP_FREQ) SSfeedback.msg_cargo += blackbox_msg if(SRV_FREQ) @@ -562,6 +564,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept SSfeedback.msg_deathsquad += blackbox_msg if(SYND_FREQ) SSfeedback.msg_syndicate += blackbox_msg + if(RAID_FREQ) + SSfeedback.msg_raider += blackbox_msg if(SUP_FREQ) SSfeedback.msg_cargo += blackbox_msg if(SRV_FREQ) diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index d6c3f5870b7..0bd11adf889 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -21,6 +21,12 @@ origin_tech = list(TECH_ILLEGAL = 3) syndie = 1//Signifies that it de-crypts Syndicate transmissions +/obj/item/device/encryptionkey/raider + icon_state = "cypherkey" + channels = list("Raider" = 1) + origin_tech = list(TECH_ILLEGAL = 2) + syndie = 1 + /obj/item/device/encryptionkey/binary icon_state = "cypherkey" translate_binary = 1 diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index dadaabfe38c..5be20e10e09 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -79,6 +79,11 @@ syndie = 1 ks1type = /obj/item/device/encryptionkey/syndicate +/obj/item/device/radio/headset/raider + origin_tech = list(TECH_ILLEGAL = 2) + syndie = 1 + ks1type = /obj/item/device/encryptionkey/raider + /obj/item/device/radio/headset/binary origin_tech = list(TECH_ILLEGAL = 3) ks1type = /obj/item/device/encryptionkey/binary diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 022bb36cfe5..93f6b0796f1 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -77,6 +77,17 @@ . = ..() internal_channels[num2text(SYND_FREQ)] = list(access_syndicate) +/obj/item/device/radio/intercom/raider + name = "illicit intercom" + desc = "Pirate radio, but not in the usual sense of the word." + frequency = RAID_FREQ + subspace_transmission = 1 + syndie = 1 + +/obj/item/device/radio/intercom/syndicate/Initialize() + . = ..() + internal_channels[num2text(RAID_FREQ)] = list(access_syndicate) + /obj/item/device/radio/intercom/Destroy() QDEL_NULL(power_interface) return ..() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 1b222728d53..3138774d662 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -11,6 +11,7 @@ var/list/department_radio_keys = list( ":s" = "Security", ".s" = "Security", ":w" = "whisper", ".w" = "whisper", ":t" = "Mercenary", ".t" = "Mercenary", + ":x" = "Raider", ".x" = "Raider", ":u" = "Supply", ".u" = "Supply", ":v" = "Service", ".v" = "Service", ":p" = "AI Private", ".p" = "AI Private", @@ -27,6 +28,7 @@ var/list/department_radio_keys = list( ":S" = "Security", ".S" = "Security", ":W" = "whisper", ".W" = "whisper", ":T" = "Mercenary", ".T" = "Mercenary", + ":X" = "Raider", ".X" = "Raider", ":U" = "Supply", ".U" = "Supply", ":V" = "Service", ".V" = "Service", ":P" = "AI Private", ".P" = "AI Private",