Skip to content

Commit

Permalink
Fixes #6968, Spawn Alien Larva adminbus event now actually works (#12819
Browse files Browse the repository at this point in the history
)
  • Loading branch information
DrCelt authored and PJB3005 committed Dec 18, 2016
1 parent afb9e88 commit 29d54c2
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 23 deletions.
35 changes: 20 additions & 15 deletions code/game/gamemodes/events.dm
Expand Up @@ -184,31 +184,36 @@
//command_alert("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert")
// world << sound('sound/AI/aliens.ogg')
var/list/vents = list()
var/success = FALSE
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in atmos_machines)
if(temp_vent.loc.z == map.zMainStation && !temp_vent.welded && temp_vent.network && temp_vent.canSpawnMice)
if(temp_vent.network.normal_members.len > 50) // Stops Aliens getting stuck in small networks. See: Security, Virology
vents += temp_vent

var/list/candidates = get_active_candidates(ROLE_ALIEN,buffer=ALIEN_SELECT_AFK_BUFFER, poll=1)
var/list/mob/dead/observer/candidates = get_active_candidates(ROLE_ALIEN, buffer=ALIEN_SELECT_AFK_BUFFER, poll="HEY KID, YOU WANNA BE AN ALIEN LARVA?")

if(prob(40))
spawncount++ //sometimes, have two larvae spawn instead of one
while((spawncount >= 1) && vents.len && candidates.len)
if(candidates.len)
shuffle(candidates)
if(prob(40))
spawncount++ //sometimes, have two larvae spawn instead of one
while((spawncount >= 1) && vents.len && candidates.len)
var/obj/vent = pick(vents)
var/mob/dead/observer/candidate = pick(candidates)

var/obj/vent = pick(vents)
var/candidate = pick(candidates)
if(istype(candidate) && candidate.client && candidate.key)
var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc)
new_xeno.transfer_personality(candidate.client)
success = TRUE

var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc)
new_xeno.key = candidate
new_xeno << sound('sound/voice/alienspawn.ogg')
candidates -= candidate
vents -= vent
spawncount--

candidates -= candidate
vents -= vent
spawncount--

spawn(rand(5000, 6000)) //Delayed announcements to keep the crew on their toes.
command_alert(/datum/command_alert/xenomorphs)
if(success)
spawn(rand(5000, 6000)) //Delayed announcements to keep the crew on their toes.
command_alert(/datum/command_alert/xenomorphs)

return success

/proc/high_radiation_event()

Expand Down
5 changes: 3 additions & 2 deletions code/modules/admin/topic.dm
Expand Up @@ -39,11 +39,12 @@
to_chat(usr, "<span class='warning'>Unfortunately there weren't enough candidates available.</span>")
if("9")
log_admin("[key_name(usr)] has spawned aliens.")
src.makeAliens()
if(!src.makeAliens())
to_chat(usr, "<span class='warning'>Unfortunately, there were no candidates available.</span>")
if("10")
log_admin("[key_name(usr)] has spawned a death squad.")
if(!makeDeathsquad())
to_chat(usr, "<span class='warning'>Unfortunately, there were no candidates available</span>")
to_chat(usr, "<span class='warning'>Unfortunately, there were no candidates available.</span>")
if("11")
log_admin("[key_name(usr)] has spawned vox raiders.")
if(!src.makeVoxRaiders())
Expand Down
7 changes: 3 additions & 4 deletions code/modules/admin/verbs/one_click_antag.dm
Expand Up @@ -294,11 +294,10 @@ client/proc/one_click_antag()



/datum/admins/proc/makeAliens()
return alien_infestation(3)


/datum/admins/proc/makeAliens()
alien_infestation(3)
return 1
/datum/admins/proc/makeDeathsquad()
var/list/mob/dead/observer/candidates = list()
var/mob/dead/observer/theghost = null
Expand Down Expand Up @@ -475,4 +474,4 @@ client/proc/one_click_antag()
ticker.mode.traitors += new_vox.mind
new_vox.equip_vox_raider()

return new_vox
return new_vox
3 changes: 2 additions & 1 deletion code/modules/events/alien_infestation.dm
Expand Up @@ -26,7 +26,7 @@
if(temp_vent.network.normal_members.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
vents += temp_vent

var/list/candidates = get_active_candidates(ROLE_ALIEN, buffer=ALIEN_SELECT_AFK_BUFFER, poll=1)
var/list/candidates = get_active_candidates(ROLE_ALIEN, buffer=ALIEN_SELECT_AFK_BUFFER, poll="HEY KID, YOU WANNA BE AN ALIEN LARVA?")

while(spawncount > 0 && vents.len && candidates.len)
var/obj/vent = pick(vents)
Expand All @@ -40,3 +40,4 @@
vents -= vent
spawncount--
successSpawn = 1
return successSpawn
8 changes: 7 additions & 1 deletion code/modules/mob/living/carbon/alien/larva/larva.dm
Expand Up @@ -299,4 +299,10 @@

/mob/living/carbon/alien/larva/reset_layer()
if(stat == DEAD)
plane = MOB_PLANE
plane = MOB_PLANE

/mob/living/carbon/alien/larva/proc/transfer_personality(var/client/candidate)
ckey = candidate.ckey
src << sound('sound/voice/alienspawn.ogg')
if(src.mind)
src.mind.assigned_role = "Alien"

0 comments on commit 29d54c2

Please sign in to comment.