diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/say.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/say.dm index de333045f0b..4ab6c96894b 100644 --- a/code/WorkInProgress/Cael_Aislinn/Tajara/say.dm +++ b/code/WorkInProgress/Cael_Aislinn/Tajara/say.dm @@ -184,7 +184,7 @@ var/is_speaking_taj = 0 if(copytext(message, 1, 3) == ":j" || copytext(message, 1, 3) == ":J") message = copytext(message, 3) - if(taj_talk_understand) + if(taj_talk_understand || universal_speak) is_speaking_taj = 1 if( !message_mode && (disease_symptoms & DISEASE_WHISPER)) @@ -403,7 +403,7 @@ for (var/mob/M in listening) //if speaking in tajaran, only let other tajs understand - if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj) ) + if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj || M.universal_speak) ) heard_a += M else heard_b += M diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm index 1814d6c4ead..048aadd1657 100644 --- a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm +++ b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm @@ -80,6 +80,18 @@ del(stand_icon) if(lying_icon) del(lying_icon) + if("skrell") + body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s") + body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l") +// This needs to be matched up with humans, but I'm too lazy right now +// if(face_standing) +// del(face_standing) +// if(face_lying) +// del(face_lying) + if(stand_icon) + del(stand_icon) + if(lying_icon) + del(lying_icon) if("plant") if(stat != 2) //if not dead, that is overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace][fat]_[gender][!lying ? "_s" : "_l"]") diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/whisper.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/whisper.dm index e4c91900877..a4315a0ba9f 100644 --- a/code/WorkInProgress/Cael_Aislinn/Tajara/whisper.dm +++ b/code/WorkInProgress/Cael_Aislinn/Tajara/whisper.dm @@ -35,7 +35,7 @@ var/is_speaking_taj = 0 if(copytext(message, 1, 4) == ":j ") message = copytext(message, 4) - if(taj_talk_understand) + if(taj_talk_understand || universal_speak) is_speaking_taj = 1 if(istype(src.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)&&src.wear_mask:voice=="Unknown") @@ -84,7 +84,7 @@ var/list/heard_b = list() // didn't understand us for (var/mob/M in listening) - if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj) ) + if ( M.say_understands(src) && (M.taj_talk_understand || !is_speaking_taj || M.universal_speak) ) heard_a += M else heard_b += M diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index f0d7113b7d2..871c134542c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1311,6 +1311,19 @@ var/global/BSACooldown = 0 alert("You cannot perform this action. You must be of a higher administrative rank!") return + if (href_list["grantskrell"]) + if (src.level>=5) + var/mob/M = locate(href_list["grantskrell"]) + for (var/s in alien_whitelist) + if(findtext(s,"[M.ckey] - Skrell")) + alert("This key is already on the whitelist!", null, null, null, null, null) + return + alien_whitelist += "[M.ckey] - Skrell" + usr << "[M.ckey] added to Skrell whitelist." + else + alert("You cannot perform this action. You must be of a higher administrative rank!") + return + /***************** BEFORE************** if (href_list["l_players"]) @@ -2537,6 +2550,7 @@ var/global/BSACooldown = 0 body += "Thunderdome Observer | " body += "Grant Tajaran (Temp) | " body += "Grant Soghun (Temp) | " + body += "Grant Skrell (Temp) | " body += "
" body += "" @@ -2611,6 +2625,20 @@ var/global/BSACooldown = 0 return +/client/proc/update_mob_sprite(mob/living/carbon/human/H as mob) + set category = "Admin" + set name = "Update Mob Sprite" + set desc = "Should fix any mob sprite update errors." + + if (!holder) + src << "Only administrators may use this command." + return + + if(istype(H)) + H.update_body() + H.update_clothing() + H.update_face() + /obj/admins/proc/Jobbans() if ((src.rank in list( "Game Admin", "Game Master" ))) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index fe7e54a1978..6c847a17b88 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -109,6 +109,7 @@ verbs += /client/proc/cmd_admin_say verbs += /client/proc/cmd_mod_say verbs += /client/proc/cmd_admin_gib_self + verbs += /client/proc/update_mob_sprite verbs += /client/proc/deadmin_self else if (holder.level == -3) // Retired Admin verbs += /client/proc/cmd_admin_say @@ -417,6 +418,7 @@ //verbs -= /client/proc/air_report verbs -= /client/proc/cmd_admin_say verbs -= /client/proc/cmd_admin_gib_self + verbs -= /client/proc/update_mob_sprite verbs -= /client/proc/restartcontroller verbs -= /client/proc/play_local_sound verbs -= /client/proc/enable_debug_verbs diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cecb9c9df86..b59aeef6c31 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -888,51 +888,6 @@ body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_s") body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_l") - if (mutantrace) - switch(mutantrace) - if("golem","metroid") - body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_s") - body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_l") - if(face_standing) - del(face_standing) - if(face_lying) - del(face_lying) - if(stand_icon) - del(stand_icon) - if(lying_icon) - del(lying_icon) - if("lizard") - body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s") - body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l") - if(face_standing) - del(face_standing) - if(face_lying) - del(face_lying) - if(stand_icon) - del(stand_icon) - if(lying_icon) - del(lying_icon) - if("plant") - if(stat != 2) //if not dead, that is - body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s") - body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l") - else - // not sure why this doesn't need separate lying/standing states - body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_d") - if(face_standing) - del(face_standing) - if(face_lying) - del(face_lying) - if(stand_icon) - del(stand_icon) - if(lying_icon) - del(lying_icon) - else - // TODO: rewrite update_face() and update_body() if necessary - if(!face_standing || !face_lying) - update_face() - if(!stand_icon || !lying_icon) - update_body() // Other procs(probably update_face() and update_body() ) also rebuild their own // kinds of overlay lists. Think about merging those procs into this proc. @@ -1406,7 +1361,7 @@ /mob/living/carbon/human/proc/update_body() if(stand_icon) del(stand_icon) if(lying_icon) del(lying_icon) - if(mutantrace) return +// if(mutantrace) return var/g = "m" if(gender == FEMALE) g = "f" @@ -1441,6 +1396,31 @@ stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY) lying_icon.Blend(new /icon('human.dmi', "groin_[g]_l"), ICON_OVERLAY) + if (mutantrace) + switch(mutantrace) + if("golem","metroid") + stand_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_s"), ICON_OVERLAY) + lying_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_l"), ICON_OVERLAY) + if("lizard") + stand_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s"), ICON_OVERLAY) + lying_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l"), ICON_OVERLAY) + if("skrell") + stand_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s"), ICON_OVERLAY) + lying_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l"), ICON_OVERLAY) + if("plant") + if(stat != 2) //if not dead, that is + stand_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s"), ICON_OVERLAY) + lying_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l"), ICON_OVERLAY) + else + // not sure why this doesn't need separate lying/standing states + lying_icon.Blend(new /icon('genetics.dmi', "icon_state" = "[mutantrace]_d"), ICON_OVERLAY) + else + // TODO: rewrite update_face() and update_body() if necessary + if(!face_standing || !face_lying) + update_face() + if(!stand_icon || !lying_icon) + update_body() + if (husk) var/icon/husk_s = new /icon('human.dmi', "husk_s") var/icon/husk_l = new /icon('human.dmi', "husk_l") @@ -1487,15 +1467,16 @@ if(!facial_hair_style || !hair_style) return//Seems people like to lose their icons, this should stop the runtimes for now if(face_standing) del(face_standing) if(face_lying) del(face_lying) - if(mutantrace) return +// if(mutantrace) return var/g = "m" if (gender == FEMALE) g = "f" var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s") var/icon/eyes_l = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_l") - eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) - eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + if(species != "Skrell") + eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s") var/icon/hair_l = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_l") @@ -1515,8 +1496,9 @@ eyes_s.Blend(hair_s, ICON_OVERLAY) eyes_l.Blend(hair_l, ICON_OVERLAY) - eyes_s.Blend(mouth_s, ICON_OVERLAY) - eyes_l.Blend(mouth_l, ICON_OVERLAY) + if(species == "Human") + eyes_s.Blend(mouth_s, ICON_OVERLAY) + eyes_l.Blend(mouth_l, ICON_OVERLAY) // if BLOCKHAIR, do not apply facial hair if((!(head && (head.flags & BLOCKHAIR))) && !(wear_mask && (wear_mask.flags & BLOCKHAIR))) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 7bbc891f678..3a72f0647d8 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -154,11 +154,10 @@ var/damage = rand(0, 5) if(!damage) - switch(attack_verb) - if(("slash") || ("scratch")) - playsound(loc, 'slashmiss.ogg', 25, 1, -1) - else - playsound(loc, 'punchmiss.ogg', 25, 1, -1) + if(attack_verb == "scratch" || attack_verb == "slash") + playsound(loc, 'slashmiss.ogg', 25, 1, -1) + else + playsound(loc, 'punchmiss.ogg', 25, 1, -1) visible_message("\red [M] has attempted to [attack_verb] [src]!") return 0 @@ -169,13 +168,11 @@ if(HULK in M.mutations) damage += 5 if(SUPRSTR in M.augmentations) damage += 5 - - switch(attack_verb) - if(("slash") || ("scratch")) - damage += 10 - playsound(loc, 'slice.ogg', 25, 1, -1) - else - playsound(loc, "punch", 25, 1, -1) + if(attack_verb == "scratch" || attack_verb == "slash") + damage += 7 + playsound(loc, 'slice.ogg', 25, 1, -1) + else + playsound(loc, "punch", 25, 1, -1) visible_message("\red [M] has [attack_verb]ed [src]!") diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 1e9cb3248a3..9531b79fbca 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -69,9 +69,10 @@ return emote(copytext(message, 2)) var/alt_name = "" - if (istype(src, /mob/living/carbon/human) && name != real_name) + if (istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_id_name("Unknown")])" + if(H.get_face_name() != real_name) + alt_name = " (as [H.get_id_name("Unknown")])" var/italics = 0 var/message_range = null var/message_mode = null @@ -156,6 +157,21 @@ if (!message) return + //work out if we're speaking skrell or not + var/is_speaking_skrell = 0 + + if(copytext(message, 1, 3) == ":k" || copytext(message, 1, 3) == ":K") + message = copytext(message, 3) + if(skrell_talk_understand || universal_speak) + is_speaking_skrell = 1 + + //work out if we're speaking soghun or not + var/is_speaking_soghun = 0 + if(copytext(message, 1, 3) == ":o" || copytext(message, 1, 3) == ":O") + message = copytext(message, 3) + if(soghun_talk_understand || universal_speak) + is_speaking_soghun = 1 + if( !message_mode && (disease_symptoms & DISEASE_WHISPER)) message_mode = "whisper" @@ -403,7 +419,12 @@ var/list/heard_b = list() // didn't understand us for (var/mob/M in listening) - if (M.say_understands(src)) + //if speaking in skrell, only let other skrell understand + if (M.say_understands(src) && !is_speaking_skrell && !is_speaking_soghun) //This could probably be merged into say_understands(), but I'm too lazy + heard_a += M + else if(is_speaking_skrell && (M.skrell_talk_understand || M.universal_speak)) + heard_a += M + else if(is_speaking_soghun && (M.soghun_talk_understand || M.universal_speak)) heard_a += M else heard_b += M @@ -413,18 +434,20 @@ var/rendered = null if (length(heard_a)) - var/message_a = say_quote(message) + var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell) if (italics) message_a = "[message_a]" if (!istype(src, /mob/living/carbon/human)) rendered = "[name] [message_a]" else if(istype(wear_mask, /obj/item/clothing/mask/gas/voice)) + var/mob/living/carbon/human/H = src if(wear_mask:vchange) rendered = "[wear_mask:voice] [message_a]" else - rendered = "[name] [message_a]" + rendered = "[H.get_visible_name()] [message_a]" else - rendered = "[real_name][alt_name] [message_a]" + var/mob/living/carbon/human/H = src + rendered = "[H.get_face_name()][alt_name] [message_a]" /* // Create speech bubble @@ -491,7 +514,7 @@ message_b = voice_message else message_b = stars(message) - message_b = say_quote(message_b) + message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell) if (italics) message_b = "[message_b]" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index a525e6122c3..7e7daa258ab 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -255,6 +255,8 @@ var/robot_talk_understand = 0 var/alien_talk_understand = 0 var/taj_talk_understand = 0 + var/soghun_talk_understand = 0 + var/skrell_talk_understand = 0 //You can guess what these are for. --SkyMarshal var/list/atom/hallucinations = list() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 23a92505145..5e6e9f2a5c1 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -358,6 +358,12 @@ preferences.copy_to(new_character) if((preferences.species == "Soghun") && (is_alien_whitelisted(src, "Soghun"))) //This probably shouldn't be here, but I can't think of any other way new_character.mutantrace = "lizard" + new_character.soghun_talk_understand = 1 + new_character.voice_name = "Soghun" + if((preferences.species == "Skrell") && (is_alien_whitelisted(src, "Skrell"))) + new_character.mutantrace = "skrell" + new_character.skrell_talk_understand = 1 + new_character.voice_name = "Skrell" src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) new_character.dna.ready_dna(new_character) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index dc7fbfbc983..84c4f0f27a1 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -731,17 +731,25 @@ datum/preferences 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" - if(is_alien_whitelisted(user, "Tajaran")) //Check for Tajaran + if(is_alien_whitelisted(user, "Tajaran")) //Check for Tajaran and admins new_species += "Tajaran" + if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins + new_species += "Skrell" else //Not using the whitelist? Aliens for everyone! new_species += "Tajaran" 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(link_tags["hair"]) switch(link_tags["hair"]) @@ -781,16 +789,16 @@ datum/preferences if("random") randomize_skin_tone() if("input") - var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black) or 20-70 for Tajarans", "Character Generation") as num + var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black) or 20-70 for other species.", "Character Generation") as num if(new_tone) - if(species == "Tajaran") + if(species != "Human") s_tone = max(min(round(text2num(new_tone)), 70), 20) else s_tone = max(min(round(text2num(new_tone)), 220), 1) s_tone = -s_tone + 35 if(link_tags["h_style"]) - if(species != "Human") + if(species == "Tajaran" || species == "Soghun") return switch(link_tags["h_style"]) @@ -803,7 +811,13 @@ datum/preferences if("input") // input hair selection // Generate list of hairs via typesof() - var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair + var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair - typesof(/datum/sprite_accessory/hair/alien) + + if(species == "Skrell") + if(gender == FEMALE) + all_hairs = typesof(/datum/sprite_accessory/hair/alien/skrell/female) - /datum/sprite_accessory/hair/alien/skrell/female + else + all_hairs = typesof(/datum/sprite_accessory/hair/alien/skrell/male) - /datum/sprite_accessory/hair/alien/skrell/male // List of hair names var/list/hairs = list() @@ -836,7 +850,7 @@ datum/preferences src.ooccolor = ooccolor if(link_tags["f_style"]) - if(species != "Human") //Tajarans and Soghuns don't have hair stuff yet. + if(species != "Human") //Non-humans don't have hair stuff yet. return switch(link_tags["f_style"]) @@ -868,8 +882,12 @@ datum/preferences if(link_tags["gender"]) if(gender == MALE) gender = FEMALE + if(species == "Skrell") + hair_style = new/datum/sprite_accessory/hair/alien/skrell/female/tentacle else gender = MALE + if(species == "Skrell") + hair_style = new/datum/sprite_accessory/hair/alien/skrell/male/tentacle if(link_tags["UI"]) switch(UI_style) @@ -1063,6 +1081,8 @@ datum/preferences character.real_name = real_name character.original_name = real_name //Original name is only used in ghost chat! It is not to be edited by anything! + character.species = species + character.flavor_text = flavor_text character.med_record = med_record character.sec_record = sec_record diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index cf0861e366f..7c3c2a2f1e7 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -27,7 +27,7 @@ datum/preferences proc/randomize_hair(var/gender) // Generate list of all possible hairs via typesof(), subtract the parent type however - var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair + var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair - typesof(/datum/sprite_accessory/hair/alien) // List of hair datums. Used in pick() to select random hair var/list/hairs = list() @@ -213,6 +213,11 @@ datum/preferences preview_icon = new /icon('genetics.dmi', "lizard_male_s", "dir" = preview_dir) else if(g == "f") preview_icon = new /icon('genetics.dmi', "lizard_female_s", "dir" = preview_dir) + else if(species == "Skrell") + if(g == "m") + preview_icon = new /icon('genetics.dmi', "skrell_male_s", "dir" = preview_dir) + else if(g == "f") + preview_icon = new /icon('genetics.dmi', "skrell_female_s", "dir" = preview_dir) else preview_icon = new /icon('human.dmi', "body_[g]_s", "dir" = preview_dir) @@ -226,7 +231,8 @@ datum/preferences preview_icon.Blend(new /icon('human.dmi', "underwear[underwear]_[g]_s", "dir" = preview_dir), ICON_OVERLAY) var/icon/eyes_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "eyes_s", "dir" = preview_dir) - eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) + if(species != "Skrell") + eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD) // Hair and facial hair, improved by Doohl @@ -240,7 +246,8 @@ datum/preferences var/icon/mouth_s = new/icon("icon" = 'human_face.dmi', "icon_state" = "mouth_[g]_s", "dir" = preview_dir) eyes_s.Blend(hair_s, ICON_OVERLAY) - eyes_s.Blend(mouth_s, ICON_OVERLAY) + if(species == "Human") + eyes_s.Blend(mouth_s, ICON_OVERLAY) eyes_s.Blend(facial_s, ICON_OVERLAY) preview_icon.Blend(eyes_s, ICON_OVERLAY) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 5195257a8cb..58cb8a5b8ce 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -153,6 +153,22 @@ spikey name = "Spikey" icon_state = "hair_spikey" +////// +//Begin Alien Hairstyle +////// + alien +//Skrell + skrell + + male + tentacle + name = "Skrell Male Tentacles" + icon_state = "skrell_hair_m" + + female + tentacle + name = "Skrell Female Tentacles" + icon_state = "skrell_hair_f" /* /////////////////////////////////// diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 04f1c747853..28076938709 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -51,7 +51,7 @@ return 1 return 0 -/mob/proc/say_quote(var/text) +/mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell) if(!text) return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code var/ending = copytext(text, length(text)) @@ -67,6 +67,10 @@ return "asks, \"[text]\""; if (ending == "!") return "exclaims, \"[text]\""; + if (is_speaking_soghun) + return "hisses, \"[text]\""; + if (is_speaking_skrell) + return "warbles, \"[text]\""; return "says, \"[text]\""; diff --git a/icons/effects/genetics.dmi b/icons/effects/genetics.dmi index c756929a8e6..359b48593bf 100644 Binary files a/icons/effects/genetics.dmi and b/icons/effects/genetics.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 77f41fd2bf9..06b66128303 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ