diff --git a/baystation12.dme b/baystation12.dme index b82ce97a578..8afc68318e4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -787,10 +787,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\DetectiveWork\detective_work.dm" -#include "code\modules\DetectiveWork\evidence.dm" -#include "code\modules\DetectiveWork\footprints_and_rag.dm" -#include "code\modules\DetectiveWork\scanner.dm" +#include "code\modules\detectivework\detective_work.dm" +#include "code\modules\detectivework\evidence.dm" +#include "code\modules\detectivework\footprints_and_rag.dm" +#include "code\modules\detectivework\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index e73cfeb9422..e5be5d60a7a 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -271,21 +271,7 @@ var/list/sacrificed = list() usr << "\red You require a restless spirit which clings to this world. Beckon their prescence with the sacred chants of Nar-Sie." return fizzle() - for(var/datum/organ/external/affecting in corpse_to_raise.organs) - affecting.heal_damage(1000, 1000) - corpse_to_raise.setToxLoss(0) - corpse_to_raise.setOxyLoss(0) - corpse_to_raise.SetParalysis(0) - corpse_to_raise.SetStunned(0) - corpse_to_raise.SetWeakened(0) - corpse_to_raise.radiation = 0 -// corpse_to_raise.buckled = null -// if(corpse_to_raise.handcuffed) -// del(corpse_to_raise.handcuffed) -// corpse_to_raise.update_inv_handcuffed(0) - corpse_to_raise.stat = CONSCIOUS - corpse_to_raise.updatehealth() - corpse_to_raise.UpdateDamageIcon() + corpse_to_raise.revive() corpse_to_raise.key = ghost.key //the corpse will keep its old mind! but a new player takes ownership of it (they are essentially possessed) //This means, should that player leave the body, the original may re-enter diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 33fc438c4ac..378d08f880d 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -288,7 +288,7 @@ var/global/list/obj/item/device/pda/PDAs = list() return 0 var/mob/M = loc - if(!M.canmove) + if(M.stat || M.restrained() || M.paralysis || M.stunned || M.weakened) return 0 if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) )) return 1 @@ -306,7 +306,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/MouseDrop(obj/over_object as obj, src_location, over_location) var/mob/M = usr - if((!istype(over_object, /obj/screen)) && !M.restrained() && !M.stat && can_use()) + if((!istype(over_object, /obj/screen)) && can_use()) return attack_self(M) return @@ -520,231 +520,226 @@ var/global/list/obj/item/device/pda/PDAs = list() //if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) ) if(can_use()) //Why reinvent the wheel? There's a proc that does exactly that. - if ( !(U.stat || U.restrained()) ) - add_fingerprint(U) - U.set_machine(src) + add_fingerprint(U) + U.set_machine(src) - switch(href_list["choice"]) + switch(href_list["choice"]) //BASIC FUNCTIONS=================================== - if("Close")//Self explanatory - U.unset_machine() - U << browse(null, "window=pda") - return - if("Refresh")//Refresh, goes to the end of the proc. - if("Return")//Return - if(mode<=9) + if("Close")//Self explanatory + U.unset_machine() + U << browse(null, "window=pda") + return + if("Refresh")//Refresh, goes to the end of the proc. + if("Return")//Return + if(mode<=9) + mode = 0 + else + mode = round(mode/10) + if(mode==4)//Fix for cartridges. Redirects to hub. mode = 0 - else - mode = round(mode/10) - if(mode==4)//Fix for cartridges. Redirects to hub. - mode = 0 - else if(mode >= 40 && mode <= 49)//Fix for cartridges. Redirects to refresh the menu. - cartridge.mode = mode - cartridge.unlock() - if ("Authenticate")//Checks for ID - id_check(U, 1) - if("UpdateInfo") - ownjob = id.assignment - name = "PDA-[owner] ([ownjob])" - if("Eject")//Ejects the cart, only done from hub. - if (!isnull(cartridge)) - var/turf/T = loc - if(ismob(T)) - T = T.loc - cartridge.loc = T - scanmode = 0 - if (cartridge.radio) - cartridge.radio.hostpda = null - cartridge = null + else if(mode >= 40 && mode <= 49)//Fix for cartridges. Redirects to refresh the menu. + cartridge.mode = mode + cartridge.unlock() + if ("Authenticate")//Checks for ID + id_check(U, 1) + if("UpdateInfo") + ownjob = id.assignment + name = "PDA-[owner] ([ownjob])" + if("Eject")//Ejects the cart, only done from hub. + if (!isnull(cartridge)) + var/turf/T = loc + if(ismob(T)) + T = T.loc + cartridge.loc = T + scanmode = 0 + if (cartridge.radio) + cartridge.radio.hostpda = null + cartridge = null //MENU FUNCTIONS=================================== - if("0")//Hub - mode = 0 - if("1")//Notes - mode = 1 - if("2")//Messenger - mode = 2 - if("21")//Read messeges - mode = 21 - if("3")//Atmos scan - mode = 3 - if("4")//Redirects to hub - mode = 0 - if("chatroom") // chatroom hub - mode = 5 - if("41") //Manifest - mode = 41 + if("0")//Hub + mode = 0 + if("1")//Notes + mode = 1 + if("2")//Messenger + mode = 2 + if("21")//Read messeges + mode = 21 + if("3")//Atmos scan + mode = 3 + if("4")//Redirects to hub + mode = 0 + if("chatroom") // chatroom hub + mode = 5 + if("41") //Manifest + mode = 41 //MAIN FUNCTIONS=================================== - if("Light") - if(fon) - fon = 0 - if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum) - else SetLuminosity(0) - else - fon = 1 - if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum) - else SetLuminosity(f_lum) - if("Medical Scan") - if(scanmode == 1) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_medical)) - scanmode = 1 - if("Reagent Scan") - if(scanmode == 3) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_reagent_scanner)) - scanmode = 3 - if("Halogen Counter") - if(scanmode == 4) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_engine)) - scanmode = 4 - if("Honk") - if ( !(last_honk && world.time < last_honk + 20) ) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) - last_honk = world.time - if("Gas Scan") - if(scanmode == 5) - scanmode = 0 - else if((!isnull(cartridge)) && (cartridge.access_atmos)) - scanmode = 5 + if("Light") + if(fon) + fon = 0 + if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum) + else SetLuminosity(0) + else + fon = 1 + if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum) + else SetLuminosity(f_lum) + if("Medical Scan") + if(scanmode == 1) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_medical)) + scanmode = 1 + if("Reagent Scan") + if(scanmode == 3) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_reagent_scanner)) + scanmode = 3 + if("Halogen Counter") + if(scanmode == 4) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_engine)) + scanmode = 4 + if("Honk") + if ( !(last_honk && world.time < last_honk + 20) ) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) + last_honk = world.time + if("Gas Scan") + if(scanmode == 5) + scanmode = 0 + else if((!isnull(cartridge)) && (cartridge.access_atmos)) + scanmode = 5 //MESSENGER/NOTE FUNCTIONS=================================== - if ("Edit") - var/n = input(U, "Please enter message", name, notehtml) as message - if (in_range(src, U) && loc == U) - n = copytext(adminscrub(n), 1, MAX_MESSAGE_LEN) - if (mode == 1) - note = replacetext(n, "\n", "
") - notehtml = n - else - U << browse(null, "window=pda") - return - if("Toggle Messenger") - toff = !toff - if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status - silent = !silent - if("Clear")//Clears messages - tnote = null - if("Ringtone") - var/t = input(U, "Please enter new ringtone", name, ttone) as text - if (in_range(src, U) && loc == U) - if (t) - if(src.hidden_uplink && hidden_uplink.check_trigger(U, lowertext(t), lowertext(lock_code))) - U << "The PDA softly beeps." - U << browse(null, "window=pda") - else - t = copytext(sanitize(t), 1, 20) - ttone = t - else - U << browse(null, "window=pda") - return - if("Message") - var/obj/item/device/pda/P = locate(href_list["target"]) - src.create_message(U, P) + if ("Edit") + var/n = input(U, "Please enter message", name, notehtml) as message + if (in_range(src, U) && loc == U) + n = copytext(adminscrub(n), 1, MAX_MESSAGE_LEN) + if (mode == 1) + note = replacetext(n, "\n", "
") + notehtml = n + else + U << browse(null, "window=pda") + return + if("Toggle Messenger") + toff = !toff + if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status + silent = !silent + if("Clear")//Clears messages + tnote = null + if("Ringtone") + var/t = input(U, "Please enter new ringtone", name, ttone) as text + if (in_range(src, U) && loc == U) + if (t) + if(src.hidden_uplink && hidden_uplink.check_trigger(U, lowertext(t), lowertext(lock_code))) + U << "The PDA softly beeps." + U << browse(null, "window=pda") + else + t = copytext(sanitize(t), 1, 20) + ttone = t + else + U << browse(null, "window=pda") + return + if("Message") + var/obj/item/device/pda/P = locate(href_list["target"]) + src.create_message(U, P) - if("Send Honk")//Honk virus - if(istype(cartridge, /obj/item/weapon/cartridge/clown))//Cartridge checks are kind of unnecessary since everything is done through switch. - var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess. - if(!isnull(P)) - if (!P.toff && cartridge:honk_charges > 0) - cartridge:honk_charges-- - U.show_message("\blue Virus sent!", 1) - P.honkamt = (rand(15,20)) - else - U << "PDA not found." + if("Send Honk")//Honk virus + if(istype(cartridge, /obj/item/weapon/cartridge/clown))//Cartridge checks are kind of unnecessary since everything is done through switch. + var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess. + if(!isnull(P)) + if (!P.toff && cartridge:honk_charges > 0) + cartridge:honk_charges-- + U.show_message("\blue Virus sent!", 1) + P.honkamt = (rand(15,20)) else - U << browse(null, "window=pda") - return - if("Send Silence")//Silent virus - if(istype(cartridge, /obj/item/weapon/cartridge/mime)) - var/obj/item/device/pda/P = locate(href_list["target"]) - if(!isnull(P)) - if (!P.toff && cartridge:mime_charges > 0) - cartridge:mime_charges-- - U.show_message("\blue Virus sent!", 1) - P.silent = 1 - P.ttone = "silence" - else - U << "PDA not found." + U << "PDA not found." + else + U << browse(null, "window=pda") + return + if("Send Silence")//Silent virus + if(istype(cartridge, /obj/item/weapon/cartridge/mime)) + var/obj/item/device/pda/P = locate(href_list["target"]) + if(!isnull(P)) + if (!P.toff && cartridge:mime_charges > 0) + cartridge:mime_charges-- + U.show_message("\blue Virus sent!", 1) + P.silent = 1 + P.ttone = "silence" else - U << browse(null, "window=pda") - return + U << "PDA not found." + else + U << browse(null, "window=pda") + return //SYNDICATE FUNCTIONS=================================== - if("Toggle Door") - if(cartridge && cartridge.access_remote_door) - for(var/obj/machinery/door/poddoor/M in world) - if(M.id == cartridge.remote_door_id) - if(M.density) - M.open() - else - M.close() + if("Toggle Door") + if(cartridge && cartridge.access_remote_door) + for(var/obj/machinery/door/poddoor/M in world) + if(M.id == cartridge.remote_door_id) + if(M.density) + M.open() + else + M.close() - if("Detonate")//Detonate PDA - if(istype(cartridge, /obj/item/weapon/cartridge/syndicate)) - var/obj/item/device/pda/P = locate(href_list["target"]) - if(!isnull(P)) - if (!P.toff && cartridge:shock_charges > 0) - cartridge:shock_charges-- + if("Detonate")//Detonate PDA + if(istype(cartridge, /obj/item/weapon/cartridge/syndicate)) + var/obj/item/device/pda/P = locate(href_list["target"]) + if(!isnull(P)) + if (!P.toff && cartridge:shock_charges > 0) + cartridge:shock_charges-- - var/difficulty = 0 + var/difficulty = 0 - if(P.cartridge) - difficulty += P.cartridge.access_medical - difficulty += P.cartridge.access_security - difficulty += P.cartridge.access_engine - difficulty += P.cartridge.access_clown - difficulty += P.cartridge.access_janitor - else - difficulty += 2 + if(P.cartridge) + difficulty += P.cartridge.access_medical + difficulty += P.cartridge.access_security + difficulty += P.cartridge.access_engine + difficulty += P.cartridge.access_clown + difficulty += P.cartridge.access_janitor + else + difficulty += 2 - if(prob(difficulty * 12) || (P.hidden_uplink)) - U.show_message("\red An error flashes on your [src].", 1) - else if (prob(difficulty * 3)) - U.show_message("\red Energy feeds back into your [src]!", 1) - U << browse(null, "window=pda") - explode() - else - U.show_message("\blue Success!", 1) - P.explode() - else - U << "PDA not found." + if(prob(difficulty * 12) || (P.hidden_uplink)) + U.show_message("\red An error flashes on your [src].", 1) + else if (prob(difficulty * 3)) + U.show_message("\red Energy feeds back into your [src]!", 1) + U << browse(null, "window=pda") + explode() + else + U.show_message("\blue Success!", 1) + P.explode() else - U.unset_machine() - U << browse(null, "window=pda") - return + U << "PDA not found." + else + U.unset_machine() + U << browse(null, "window=pda") + return //pAI FUNCTIONS=================================== - if("pai") - switch(href_list["option"]) - if("1") // Configure pAI device - pai.attack_self(U) - if("2") // Eject pAI device - var/turf/T = get_turf_or_move(src.loc) - if(T) - pai.loc = T + if("pai") + switch(href_list["option"]) + if("1") // Configure pAI device + pai.attack_self(U) + if("2") // Eject pAI device + var/turf/T = get_turf_or_move(src.loc) + if(T) + pai.loc = T //LINK FUNCTIONS=================================== - else//Cartridge menu linking - mode = text2num(href_list["choice"]) - cartridge.mode = mode - cartridge.unlock() - else//If can't interact. - U.unset_machine() - U << browse(null, "window=pda") - return + else//Cartridge menu linking + mode = text2num(href_list["choice"]) + cartridge.mode = mode + cartridge.unlock() else//If not in range or not using the pda. U.unset_machine() U << browse(null, "window=pda") @@ -866,7 +861,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if(issilicon(usr)) return - if ( !(usr.stat || usr.restrained()) ) + if ( can_use(usr) ) if(id) remove_id() else @@ -883,7 +878,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if(issilicon(usr)) return - if ( !(usr.stat || usr.restrained()) ) + if ( can_use(usr) ) var/obj/item/weapon/pen/O = locate() in src if(O) if (istype(loc, /mob)) @@ -943,7 +938,7 @@ var/global/list/obj/item/device/pda/PDAs = list() else //Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand. if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) ) - if(!(user.stat || user.restrained()) )//If they can still act. + if( can_use(user) )//If they can still act. id_check(user, 2) user << "You put the ID into \the [src]'s slot." updateSelfDialog()//Update self dialog on success. diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 7a76812b34e..5011f5346ee 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -30,6 +30,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" + R.base_icon = "robot" del(R.module) R.module = null R.camera.network.Remove(list("Medical","MINE")) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1bd4b34547a..803f2b12545 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2029,17 +2029,13 @@ if("virus") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","V") - var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Make Your Own","Random","Choose") - if(answer=="Random") - viral_outbreak() - message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1) - else if(answer == "Choose") - var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat") - var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses - viral_outbreak(V) - message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1) + var/answer = alert("Do you want this to be a greater disease or a lesser one?",,"Greater","Lesser") + if(answer=="Lesser") + virus2_lesser_infection() + message_admins("[key_name_admin(usr)] has triggered a lesser virus outbreak.", 1) else - AdminCreateVirus(usr) + virus2_greater_infection() + message_admins("[key_name_admin(usr)] has triggered a greater virus outbreak.", 1) if("retardify") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","RET") diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index cb161b9d944..0c6b8172a28 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -12,6 +12,8 @@ ..() + M.delay_click(10) + if((M != src) && check_shields(0, M.name)) visible_message("\red [M] attempted to touch [src]!") return 0 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 162a69b49c7..245a372d2a0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -269,6 +269,15 @@ if(iscarbon(src)) var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + for(var/datum/organ/external/O in H.organs) + O.heal_damage(1000,1000,1,1) + for(var/datum/organ/internal/I in H.internal_organs) + I.damage = 0 + for (var/ID in H.virus2) + var/datum/disease2/disease/V = H.virus2[ID] + V.cure(src) for(var/datum/disease/D in viruses) D.cure(0) if(stat == 2) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 46ff70493c9..647f9318afa 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -42,7 +42,6 @@ var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin. var/mob/living/carbon/human/host // Human host for the brain worm. var/truename // Name used for brainworm-speak. - var/bonded // Var for full bonding with the host brain. var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth. var/controlling // Used in human death check. @@ -135,7 +134,7 @@ spawn(300+(host.brainloss*5)) - if(!host || !src) return + if(!host || !src || controlling) return else src << "\red You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system." @@ -165,7 +164,6 @@ mob/living/simple_animal/borer/verb/release_host() if(!host || !src) return src << "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal." - bonded = 0 if(!host.stat) host << "An odd, uncomfortable pressure begins to build inside your skull, behind your ear..." @@ -193,6 +191,12 @@ mob/living/simple_animal/borer/proc/detatch() src.loc = get_turf(host) controlling = 0 + reset_view(null) + machine = null + + host.reset_view(null) + host.machine = null + host.verbs -= /mob/living/carbon/human/proc/release_control host.verbs -= /mob/living/carbon/human/proc/punish_host host.verbs -= /mob/living/carbon/human/proc/spawn_larvae @@ -220,7 +224,7 @@ mob/living/simple_animal/borer/proc/detatch() return var/list/choices = list() - for(var/mob/living/C in view(1,src)) + for(var/mob/living/carbon/human/C in view(1,src)) if(istype(C,/mob/living/carbon/human) && C.stat != 2) choices += C @@ -230,6 +234,7 @@ mob/living/simple_animal/borer/proc/detatch() if(M.has_brain_worms()) src << "You cannot infest someone who is already infested!" + return M << "Something slimy begins probing at the opening of your ear canal..." src << "You slither up [M] and begin probing at their ear canal..." @@ -257,7 +262,6 @@ mob/living/simple_animal/borer/proc/detatch() var/datum/organ/external/head = M.get_organ("head") head.implants += src src.loc = M - bonded = 0 host_brain.name = M.name host_brain.real_name = M.real_name diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 68941a4d090..07a07500083 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -162,6 +162,8 @@ if(killing) return + assailant.delay_click(10) + switch(S.id) if(1.0) if (state < 2) diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index c83ba829a9d..441a0d961fe 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -631,6 +631,10 @@ H.name = "host brain" H.real_name = "host brain" + verbs -= /mob/living/carbon/human/proc/release_control + verbs -= /mob/living/carbon/human/proc/punish_host + verbs -= /mob/living/carbon/human/proc/spawn_larvae + return //resisting grabs (as if it helps anyone...) diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 7e240f737e3..edc89ac0ac2 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -184,7 +184,10 @@ //Handle possessive brain borers. if(istype(obj,/mob/living/simple_animal/borer)) - target.release_control() + var/mob/living/simple_animal/borer/worm = obj + if(worm.controlling) + target.release_control() + worm.detatch() obj.loc = get_turf(target) if(istype(obj,/obj/item/weapon/implant)) diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 84fcf486e4f..8efff4f1ca4 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -162,3 +162,27 @@ var/global/list/virusDB = list() v.fields["spread type"] = spreadtype virusDB["[uniqueID]"] = v return 1 + +proc/virus2_lesser_infection() + var/list/candidates = list() //list of candidate keys + + for(var/mob/living/carbon/human/G in player_list) + if(G.client && G.stat != DEAD) + candidates += G + if(!candidates.len) return + + candidates = shuffle(candidates) + + infect_mob_random_lesser(candidates[1]) + +proc/virus2_greater_infection() + var/list/candidates = list() //list of candidate keys + + for(var/mob/living/carbon/human/G in player_list) + if(G.client && G.stat != DEAD) + candidates += G + if(!candidates.len) return + + candidates = shuffle(candidates) + + infect_mob_random_greater(candidates[1]) diff --git a/html/changelog.html b/html/changelog.html index bb4b1216868..844c8ce2bc3 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,7 +57,16 @@ Stuff which is in development and not yet visible to players or just code relate (ie. code improvements for expandability, etc.) should not be listed here. They should be listed in the changelog upon commit though. Thanks. -->
+

August 8th, 2013

+

Erthilo updated:

+ +
+

2013/08/4

Chinsky updated: