diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e03dec1617d..85ba2e2410a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -21,7 +21,10 @@ set_species() if(species) - name = species.get_random_name(gender) + real_name = species.get_random_name(gender) + name = real_name + if(mind) + mind.name = real_name var/datum/reagents/R = new/datum/reagents(1000) reagents = R diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index ebdfbd8b5aa..89cb1e9a1dc 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -100,9 +100,9 @@ var/hit_zone = H.zone_sel.selecting var/obj/item/organ/external/affecting = get_organ(hit_zone) - if(!affecting || affecting.status & ORGAN_DESTROYED) + if(affecting.is_stump() || !affecting || affecting.status & ORGAN_DESTROYED) M << "They are missing that limb!" - return + return 1 switch(src.a_intent) if(I_HELP) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index b97e8ceed67..6fddbd92ec2 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -168,6 +168,10 @@ /datum/species/proc/get_random_name(var/gender) var/datum/language/species_language = all_languages[language] + if(!species_language) + species_language = all_languages[default_language] + if(!species_language) + return "unknown" return species_language.get_random_name(gender) /datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 0166900a0fb..64e12eadfa1 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -45,11 +45,8 @@ if(prob(1)) H.emote(pick("scratch","jump","roll","tail")) -/datum/species/monkey/handle_post_spawn(var/mob/living/carbon/human/H) - H.real_name = "[lowertext(name)] ([rand(100,999)])" - H.name = H.real_name - - ..() +/datum/species/monkey/get_random_name() + return "[lowertext(name)] ([rand(100,999)])" /datum/species/monkey/tajaran name = "Farwa" diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index 9957ee8b78a..ad47b144293 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -1,5 +1,6 @@ //This is an uguu head restoration surgery TOTALLY not yoinked from chinsky's limb reattacher /datum/surgery_step/attach_head/ + priority = 3 // Must be higher than /datum/surgery_step/internal allowed_tools = list(/obj/item/organ/external/head = 100) can_infect = 0 @@ -7,20 +8,20 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(..()) - var/obj/item/organ/external/head = target.get_organ(target_zone) - return !head && target_zone == "head" + var/obj/item/organ/external/head = target.get_organ(target_zone) + return isnull(head) && target_zone == "head" && !isnull(target.species.has_limbs["head"]) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts attaching [tool] to [target]'s reshaped neck.", \ - "You start attaching [tool] to [target]'s reshaped neck.") + user.visible_message("[user] starts attaching [tool] to [target]'s neck.", \ + "You start attaching [tool] to [target]'s neck.") end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has attached [target]'s head to the body.", \ "\blue You have attached [target]'s head to the body.") var/obj/item/organ/external/head = tool - head.loc = target + user.drop_from_inventory(head) head.replaced(target) + head.loc = target head.status = 0 target.update_body() target.updatehealth()