From a34d283aab9e06626d90013ca894bcb0f6fe4992 Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 28 Nov 2014 01:33:36 +0100 Subject: [PATCH] Cloning and deathsquad fixes --- .../mob/living/carbon/monkey/monkey.dm | 4 +++ code/modules/mob/living/living_defense.dm | 6 ++++ .../modules/mob/living/silicon/robot/robot.dm | 33 +++++++++++-------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 5cbd647983e..04b3e404b80 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -82,6 +82,7 @@ ..() dna.mutantrace = "lizard" greaterform = "Unathi" + dna.species = "Unathi" add_language("Sinta'unathi") /mob/living/carbon/monkey/skrell/New() @@ -89,6 +90,7 @@ ..() dna.mutantrace = "skrell" greaterform = "Skrell" + dna.species = "Skrell" add_language("Skrellian") /mob/living/carbon/monkey/tajara/New() @@ -96,6 +98,7 @@ ..() dna.mutantrace = "tajaran" greaterform = "Tajaran" + dna.species = "Tajaran" add_language("Siik'tajr") /mob/living/carbon/monkey/diona/New() @@ -105,6 +108,7 @@ gender = NEUTER dna.mutantrace = "plant" greaterform = "Diona" + dna.species = "Diona" add_language("Rootspeak") /mob/living/carbon/monkey/movement_delay() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 4b48defb94e..612e5f29e41 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -65,6 +65,12 @@ del P return */ + if(istype(P, /obj/item/projectile/energy/electrode) || istype(P, /obj/item/projectile/bullet/stunshot)) + stun_effect_act(0, P.agony, def_zone, P) + src <<"\red You have been hit by [P]!" + del P + return + //Armor var/absorb = run_armor_check(def_zone, P.flag) var/proj_sharp = is_sharp(P) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6329f2184a7..a70c165b2ed 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -72,7 +72,7 @@ var/pose var/base_icon = "" var/crisis = 0 - var/syndicateborg = 0 + var/hiddenborg = 0 /mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0) spark_system = new /datum/effect/effect/system/spark_spread() @@ -144,7 +144,7 @@ hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") /mob/living/silicon/robot/proc/init(var/alien=0) - if(syndicateborg) + if(hiddenborg) playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) return aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) @@ -170,7 +170,7 @@ if (!rbPDA) rbPDA = new/obj/item/device/pda/ai(src) rbPDA.set_name_and_job(custom_name,braintype) - if(syndicateborg) + if(hiddenborg) rbPDA.hidden = 1 //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO @@ -1409,7 +1409,7 @@ icon_state = "nano_bloodhound" lawupdate = 0 scrambledcodes = 1 - syndicateborg = 1 + hiddenborg = 1 modtype = "Commando" faction = list("nanotrasen") designation = "NT Combat Cyborg" @@ -1422,14 +1422,17 @@ radio = new /obj/item/device/radio/borg/deathsquad(src) module = new /obj/item/weapon/robot_module/deathsquad(src) laws = new /datum/ai_laws/deathsquad() + + Namepick() /mob/living/silicon/robot/deathsquad/attack_hand(mob/user) - if((ckey == null) && searching_for_ckey == 0 && (alert(user,"Attempt to boot NanoTrasen Commando cyborg?","","Yes","No") == "Yes")) - get_borg_occupant(user, get_candidates()) + if((ckey == null) && searching_for_ckey == 0) + var/list/ghosts = list() + for(var/mob/dead/observer/G in player_list) + ghosts += G + get_borg_occupant(user, ghosts) return - ..() - - + /mob/living/silicon/robot/deathsquad/proc/get_borg_occupant(mob/user as mob, var/list/possiblecandidates = list()) var/time_passed = world.time searching_for_ckey = 1 @@ -1441,12 +1444,17 @@ var/possibleborg = pick(possiblecandidates) spawn(0) var/input = alert(possibleborg,"Do you want to spawn in as a cyborg for the NT Deathsquad?","Please answer in thirty seconds!","Yes","No") - if(input == "Yes" && ckey == null) + var/mob/dead/observer/C = possibleborg + if(input == "Yes" && ckey == null && C.client) if((world.time-time_passed)>300) return possiblecandidates -= possibleborg searching_for_ckey = 0 - ckey = possibleborg + C.mind.transfer_to(src) + C.mind.assigned_role = "MODE" + C.mind.special_role = "Death Commando" + ticker.mode.traitors |= C.mind // Adds them to current traitor list. Which is really the extra antagonist list. + src.key = C.key else possiblecandidates -= possibleborg get_borg_occupant(user, possiblecandidates) @@ -1463,7 +1471,7 @@ icon_state = "syndie_bloodhound" lawupdate = 0 scrambledcodes = 1 - syndicateborg = 1 + hiddenborg = 1 modtype = "Synd" faction = list("syndicate") designation = "Syndicate" @@ -1480,7 +1488,6 @@ Namepick() - /mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname) if(!connected_ai) return