diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 8b49a4574a2..475b13c3f7a 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -2,8 +2,12 @@ VOX HEIST ROUNDTYPE */ +var/global/list/raider_spawn = list() +var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' objective. Clumsy, rewrite sometime. + /datum/game_mode/ var/list/datum/mind/raiders = list() //Antags. + var/list/raid_objectives = list() //Raid objectives /datum/game_mode/heist name = "heist" @@ -16,9 +20,6 @@ VOX HEIST ROUNDTYPE var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/list/raid_objectives = list() //Raid objectives. - var/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' objective. - /datum/game_mode/heist/announce() world << "The current game mode is - Heist!" world << "An unidentified bluespace signature has slipped past the Icarus and is approaching [station_name()]!" @@ -59,15 +60,6 @@ VOX HEIST ROUNDTYPE /datum/game_mode/heist/post_setup() - //Build a list of spawn points. - var/list/turf/raider_spawn = list() - - for(var/obj/effect/landmark/L in landmarks_list) - if(L.name == "voxstart") - raider_spawn += get_turf(L) - del(L) - continue - //Generate objectives for the group. if(!config.objectives_disabled) raid_objectives = forge_vox_objectives() @@ -83,49 +75,57 @@ VOX HEIST ROUNDTYPE raider.current.loc = raider_spawn[index] index++ - var/sounds = rand(2,8) - var/i = 0 - var/newname = "" - - while(i<=sounds) - i++ - newname += pick(list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah")) - - var/mob/living/carbon/human/vox = raider.current - - vox.real_name = capitalize(newname) - vox.name = vox.real_name - raider.name = vox.name - vox.age = rand(12,20) - vox.dna.mutantrace = "vox" - vox.set_species("Vox") - vox.languages = list() // Removing language from chargen. - vox.flavor_text = "" - vox.add_language("Vox-pidgin") - vox.h_style = "Short Vox Quills" - vox.f_style = "Shaved" - for(var/datum/organ/external/limb in vox.organs) - limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT) - - //Now apply cortical stack. - var/datum/organ/external/E = vox.get_organ("head") - var/obj/item/weapon/implant/cortical/I = new(vox) - I.imp_in = vox - I.implanted = 1 - I.part = E - E.implants += I - cortical_stacks += I - - vox.equip_vox_raider() - vox.regenerate_icons() - - raider.objectives = raid_objectives + create_vox(raider) greet_vox(raider) + if(!config.objectives_disabled && raid_objectives) + raider.objectives = raid_objectives + spawn (rand(waittime_l, waittime_h)) send_intercept() -/datum/game_mode/heist/proc/is_raider_crew_safe() +/datum/game_mode/proc/create_vox(var/datum/mind/newraider) + + + var/sounds = rand(2,8) + var/i = 0 + var/newname = "" + + while(i<=sounds) + i++ + newname += pick(list("ti","hi","ki","ya","ta","ha","ka","ya","chi","cha","kah")) + + var/mob/living/carbon/human/vox = newraider.current + + vox.real_name = capitalize(newname) + vox.name = vox.real_name + newraider.name = vox.name + vox.age = rand(12,20) + vox.dna.mutantrace = "vox" + vox.set_species("Vox") + vox.languages = list() // Removing language from chargen. + vox.flavor_text = "" + vox.add_language("Vox-pidgin") + vox.h_style = "Short Vox Quills" + vox.f_style = "Shaved" + + for(var/datum/organ/external/limb in vox.organs) + limb.status &= ~(ORGAN_DESTROYED | ORGAN_ROBOT) + + //Generate cortical stack. + var/datum/organ/external/affected = vox.get_organ("head") + + var/obj/item/weapon/implant/cortical/I = new(vox) + I.imp_in = vox + I.implanted = 1 + affected.implants += I + I.part = affected + cortical_stacks += I + + vox.equip_vox_raider() + vox.regenerate_icons() + +/datum/game_mode/proc/is_raider_crew_safe() if(cortical_stacks.len == 0) return 0 @@ -135,7 +135,7 @@ VOX HEIST ROUNDTYPE return 0 return 1 -/datum/game_mode/heist/proc/is_raider_crew_alive() +/datum/game_mode/proc/is_raider_crew_alive() for(var/datum/mind/raider in raiders) if(raider.current) @@ -143,7 +143,7 @@ VOX HEIST ROUNDTYPE return 1 return 0 -/datum/game_mode/heist/proc/forge_vox_objectives() +/datum/game_mode/proc/forge_vox_objectives() var/i = 1 var/max_objectives = pick(2,2,2,2,3,3,3,4) @@ -171,7 +171,7 @@ VOX HEIST ROUNDTYPE return objs -/datum/game_mode/heist/proc/greet_vox(var/datum/mind/raider) +/datum/game_mode/proc/greet_vox(var/datum/mind/raider) raider.current << "\blue You are a Vox Raider, fresh from the Shoal!" raider.current << "\blue The Vox are a race of cunning, sharp-eyed nomadic raiders and traders endemic to the frontier and much of the unexplored galaxy. You and the crew have come to the Exodus for plunder, trade or both." raider.current << "\blue Vox are cowardly and will flee from larger groups, but corner one or find them en masse and they are vicious." @@ -294,4 +294,4 @@ datum/game_mode/proc/auto_declare_completion_heist() //maybe send the player a message that they've gone home/been kidnapped? Someone responsible for vox lore should write that. Del(M) for (var/obj/O in skipjack.contents) - Del(O) //no hiding in lockers or anything + Del(O) //no hiding in lockers or anything \ No newline at end of file diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 53fbcba2f41..484dbd57e7d 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -1,3 +1,10 @@ +/* + NUCLEAR EMERGENCY ROUNDTYPE +*/ + +var/global/list/turf/synd_spawn = list() + + /datum/game_mode var/list/datum/mind/syndicates = list() @@ -116,14 +123,6 @@ /datum/game_mode/nuclear/post_setup() - var/list/turf/synd_spawn = list() - - for(var/obj/effect/landmark/A in landmarks_list) - if(A.name == "Syndicate-Spawn") - synd_spawn += get_turf(A) - del(A) - continue - var/obj/effect/landmark/uplinkdevice = locate("landmark*Syndicate-Uplink") //i will be rewriting this shortly var/obj/effect/landmark/nuke_spawn = locate("landmark*Nuclear-Bomb") diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index e287ee845d6..514a5b38f9f 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -81,6 +81,14 @@ ninjastart += loc del(src) + if("voxstart") + raider_spawn += loc + del(src) + + if("Syndicate-Spawn") + synd_spawn += loc + del(src) + landmarks_list += src return 1 diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index ac67a624e35..0a83ce49030 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -481,6 +481,9 @@ if(ticker.mode.traitors.len) dat += check_role_table("Traitors", ticker.mode.traitors, src) + if(ticker.mode.borers.len) + dat += check_role_table("Cortical Borers", ticker.mode.borers, src) + var/datum/game_mode/mutiny/mutiny = get_mutiny_mode() if(mutiny) dat += mutiny.check_antagonists_ui(src) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index fc147e04fda..95fbc615c8a 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -533,7 +533,7 @@ client/proc/one_click_antag() if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) ) var/datum/game_mode/heist/M = ticker.mode - M.cortical_stacks += I + cortical_stacks += I M.raiders[new_vox.mind] = I ticker.mode.traitors += new_vox.mind