diff --git a/code/defines/mob/living/silicon/pai.dm b/code/defines/mob/living/silicon/pai.dm index 6837ba99b77..ddc38fb6298 100644 --- a/code/defines/mob/living/silicon/pai.dm +++ b/code/defines/mob/living/silicon/pai.dm @@ -3,7 +3,7 @@ icon = 'mob.dmi'// icon_state = "shadow" - robot_talk_understand = 0 + robot_talk_understand = 1 //pAI's can now use binary var/network = "SS13" var/obj/machinery/camera/current = null diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 758ff767b76..7cebf6ff6b9 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -237,7 +237,7 @@ synd_mob.equip_if_possible(new /obj/item/weapon/reagent_containers/pill/cyanide(synd_mob), synd_mob.slot_in_backpack) synd_mob.equip_if_possible(new /obj/item/weapon/gun/projectile/automatic/c20r(synd_mob), synd_mob.slot_belt) synd_mob.equip_if_possible(new /obj/item/weapon/storage/box/engineer(synd_mob.back), synd_mob.slot_in_backpack) - var/datum/organ/external/O = pick(synd_mob.organs) + var/datum/organ/external/O = synd_mob.organs[pick(synd_mob.organs)] var/obj/item/weapon/implant/dexplosive/E = new/obj/item/weapon/implant/dexplosive(O) O.implant += E E.imp_in = synd_mob diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm index 6e6bce5da89..65827342fbc 100755 --- a/code/game/objects/devices/PDA/PDA.dm +++ b/code/game/objects/devices/PDA/PDA.dm @@ -416,7 +416,7 @@ //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()) ) + if ( !(U.stat || U.restrained()) && (src in U.contents)) add_fingerprint(U) U.machine = src @@ -587,7 +587,7 @@ // Give every ghost the ability to see all messages for (var/mob/dead/observer/G in world) G.show_message("PDA message from [src.owner] to [P:owner]: [t]") - + if (prob(15)) //Give the AI a chance of intercepting the message var/who = src.owner if(prob(50)) @@ -681,7 +681,7 @@ if("Toggle Door") if(!isnull(cartridge) && cartridge.access_remote_door) - for(var/obj/machinery/door/poddoor/M in machines) + for(var/obj/machinery/door/poddoor/M in world) //world is probably a bad idea, but at least it works? if(M.id == cartridge.remote_door_id) if(M.density) spawn(0) diff --git a/code/game/objects/radio/electropack.dm b/code/game/objects/radio/electropack.dm index dd5462fbff5..d19ff24fde2 100644 --- a/code/game/objects/radio/electropack.dm +++ b/code/game/objects/radio/electropack.dm @@ -36,8 +36,6 @@ return /obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (istype(W, /obj/item/weapon/screwdriver)) src.e_pads = !( src.e_pads ) if (src.e_pads) @@ -46,32 +44,33 @@ user.show_message("\blue The electric pads have been reinserted!") src.add_fingerprint(user) return + else if (istype(W, /obj/item/clothing/head/helmet)) + var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) + A.icon = 'assemblies.dmi' + W.loc = A + A.part1 = W + W.layer = initial(W.layer) + if (user.client) + user.client.screen -= W + if (user.r_hand == W) + user.u_equip(W) + user.r_hand = A + else + user.u_equip(W) + user.l_hand = A + W.master = A + src.master = A + src.layer = initial(src.layer) + user.u_equip(src) + if (user.client) + user.client.screen -= src + src.loc = A + A.part2 = src + A.layer = 20 + src.add_fingerprint(user) + A.add_fingerprint(user) else - if (istype(W, /obj/item/clothing/head/helmet)) - var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) - A.icon = 'assemblies.dmi' - W.loc = A - A.part1 = W - W.layer = initial(W.layer) - if (user.client) - user.client.screen -= W - if (user.r_hand == W) - user.u_equip(W) - user.r_hand = A - else - user.u_equip(W) - user.l_hand = A - W.master = A - src.master = A - src.layer = initial(src.layer) - user.u_equip(src) - if (user.client) - user.client.screen -= src - src.loc = A - A.part2 = src - A.layer = 20 - src.add_fingerprint(user) - A.add_fingerprint(user) + ..() return /obj/item/device/radio/electropack/Topic(href, href_list) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index 22809ece5af..46612817ea6 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -171,6 +171,7 @@ proc/trigger_armed_response_team(var/force = 0) else M.gender = FEMALE M.rebuild_appearance() + M.update_body() M.real_name = commando_name M.name = commando_name diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c5c899958c1..292fffc6672 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1013,6 +1013,7 @@ else M.gender = FEMALE M.rebuild_appearance() + M.update_body() M.check_dna(M) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9a5de65385b..94ba2c3ebbb 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2718,10 +2718,11 @@ It can still be worn/put on as normal. else gender = FEMALE rebuild_appearance() + update_body() check_dna() for(var/mob/M in view()) - M.show_message("[src.name] just morphed!") + user.visible_message("\blue \The [src] morphs and changes [user.get_gender_form() == MALE ? "his" : user.get_gender_form() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!") /mob/living/carbon/human/proc/remotesay() set name = "Project mind" @@ -2784,4 +2785,4 @@ It can still be worn/put on as normal. /mob/living/carbon/human/get_visible_gender() if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask)) return NEUTER - return gender \ No newline at end of file + return gender diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index c8c291131a2..3fe605ceec2 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -165,5 +165,5 @@ for (var/mob/M in world) if (istype(M, /mob/new_player)) continue - if (M.stat > 1 && !(M in heard_a)) + if (M.stat > 1 && !(M in heard_a) && M.client.ghost_ears) M.show_message(rendered, 2) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 4d1670873bf..dd38ee299fb 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -47,7 +47,7 @@ if(STUN) Stun((effect - (min(effect*getarmor(null, "laser"), effect*(0.75 + (blocked*0.05)))))) if(WEAKEN) - Weaken((effect - (min(effect*getarmor(null, "laser"), effect*(0.75 + (blocked*0.05)))))) + Weaken(effect/(blocked+1)) if(PARALYZE) Paralyse(effect/(blocked+1)) if(IRRADIATE) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 9fd3422db22..61cae03a498 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -759,6 +759,7 @@ datum/preferences switch(link_tags["species"]) if("input") var/list/new_species = list("Human") + var/prev_species = species if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it! if(is_alien_whitelisted(user, "Soghun")) //Check for Soghun and admins new_species += "Soghun" @@ -771,16 +772,17 @@ datum/preferences new_species += "Soghun" new_species += "Skrell" species = input("Please select a species", "Character Generation", null) in new_species - h_style = "Bald" //Try not to carry face/head hair over. - f_style = "Shaved" - s_tone = 0 //Don't carry over skintone either. - hair_style = new/datum/sprite_accessory/hair/bald - facial_hair_style = new/datum/sprite_accessory/facial_hair/shaved - if(species == "Skrell") - if(gender == FEMALE) - hair_style = new/datum/sprite_accessory/hair/alien/skrell/female/tentacle - else - hair_style = new/datum/sprite_accessory/hair/alien/skrell/male/tentacle + if(prev_species != species) + h_style = "Bald" //Try not to carry face/head hair over. + f_style = "Shaved" + s_tone = 0 //Don't carry over skintone either. + hair_style = new/datum/sprite_accessory/hair/bald + facial_hair_style = new/datum/sprite_accessory/facial_hair/shaved + if(species == "Skrell") + if(gender == FEMALE) + hair_style = new/datum/sprite_accessory/hair/alien/skrell/female/tentacle + else + hair_style = new/datum/sprite_accessory/hair/alien/skrell/male/tentacle if(link_tags["hair"]) switch(link_tags["hair"])