Revert "(TGCRP) - /tg/ catgirl refugee program"

This commit is contained in:
variableundefined
2018-10-27 13:06:42 +08:00
committed by GitHub
parent d32ce53958
commit c373185e1e
46 changed files with 613 additions and 583 deletions
+4 -6
View File
@@ -26,15 +26,14 @@ var/global/list/frozen_mob_list = list()
/mob/living/var/frozen = null //used for preventing attacks on admin-frozen mobs
/mob/living/var/admin_prev_sleeping = 0 //used for keeping track of previous sleeping value with admin freeze
/mob/living/proc/admin_Freeze(var/client/admin, skip_overlays = FALSE)
/mob/living/proc/admin_Freeze(var/client/admin)
if(istype(admin))
to_chat(src, "<b><font color= red>You have been frozen by [key_name(admin)]</b></font>")
message_admins("<span class='notice'>[key_name_admin(admin)]</span> froze [key_name_admin(src)]")
log_admin("[key_name(admin)] froze [key_name(src)]")
var/obj/effect/overlay/adminoverlay/AO = new
if(skip_overlays)
src.overlays += AO
src.overlays += AO
anchored = 1
frozen = AO
@@ -43,15 +42,14 @@ var/global/list/frozen_mob_list = list()
if(!(src in frozen_mob_list))
frozen_mob_list += src
/mob/living/proc/admin_unFreeze(var/client/admin, skip_overlays = FALSE)
/mob/living/proc/admin_unFreeze(var/client/admin)
if(istype(admin))
to_chat(src, "<b><font color= red>You have been unfrozen by [key_name(admin)]</b></font>")
message_admins("<span class='notice'>[key_name_admin(admin)] unfroze [key_name_admin(src)]</span>")
log_admin("[key_name(admin)] unfroze [key_name(src)]")
anchored = 0
if(skip_overlays)
overlays -= frozen
overlays -= frozen
frozen = null
SetSleeping(admin_prev_sleeping)
admin_prev_sleeping = null
@@ -1195,18 +1195,18 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("age")
age = rand(AGE_MIN, AGE_MAX)
if("hair")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
h_colour = rand_hex_color()
if("secondary_hair")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
h_sec_colour = rand_hex_color()
if("h_style")
h_style = random_hair_style(gender, species, robohead)
if("facial")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
f_colour = rand_hex_color()
if("secondary_facial")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Wryn", "Vulpkanin", "Vox"))
f_sec_colour = rand_hex_color()
if("f_style")
f_style = random_facial_hair_style(gender, species, robohead)
@@ -1276,7 +1276,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(new_age)
age = max(min(round(text2num(new_age)), AGE_MAX),AGE_MIN)
if("species")
var/list/new_species = list("Human", "Felinid", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin")
var/list/new_species = list("Human", "Tajaran", "Skrell", "Unathi", "Diona", "Vulpkanin")
var/prev_species = species
// var/whitelisted = 0
@@ -1407,14 +1407,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
b_type = new_b_type
if("hair")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have hair. (No HAS_HAIR flag)
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have hair. (No HAS_HAIR flag)
var/input = "Choose your character's hair colour:"
var/new_hair = input(user, input, "Character Preference", h_colour) as color|null
if(new_hair)
h_colour = new_hair
if("secondary_hair")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
var/datum/sprite_accessory/hair_style = GLOB.hair_styles_public_list[h_style]
if(hair_style.secondary_theme && !hair_style.no_sec_colour)
var/new_hair = input(user, "Choose your character's secondary hair colour:", "Character Preference", h_sec_colour) as color|null
@@ -1609,13 +1609,13 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
body_accessory = (new_body_accessory == "None") ? null : new_body_accessory
if("facial")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have facial hair. (No HAS_HAIR_FACIAL flag)
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox")) //Species that have facial hair. (No HAS_HAIR_FACIAL flag)
var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", f_colour) as color|null
if(new_facial)
f_colour = new_facial
if("secondary_facial")
if(species in list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
if(species in list("Human", "Unathi", "Tajaran", "Skrell", "Machine", "Vulpkanin", "Vox"))
var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style]
if(facial_hair_style.secondary_theme && !facial_hair_style.no_sec_colour)
var/new_facial = input(user, "Choose your character's secondary facial-hair colour:", "Character Preference", f_sec_colour) as color|null
-1
View File
@@ -4,7 +4,6 @@
icon_state = "earmuffs"
item_state = "earmuffs"
flags = EARBANGPROTECT
flags_2 = HEALS_EARS_2
strip_delay = 15
put_on_delay = 25
burn_state = FLAMMABLE
@@ -6,7 +6,6 @@
anchored = 1
icon = LIGHTING_ICON
layer = LIGHTING_LAYER
plane = LIGHTING_PLANE
invisibility = INVISIBILITY_LIGHTING
color = LIGHTING_BASE_MATRIX
icon_state = "light1"
+2 -1
View File
@@ -48,7 +48,8 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
if(ishuman(body))
var/mob/living/carbon/human/H = body
appearance = H.appearance
icon = H.stand_icon
overlays = H.overlays_standing
else
icon = body.icon
icon_state = body.icon_state
@@ -27,7 +27,6 @@
verbs += /mob/living/verb/lay_down
alien_organs += new /obj/item/organ/internal/brain/xeno
alien_organs += new /obj/item/organ/internal/xenos/hivenode
alien_organs += new /obj/item/organ/internal/ears
for(var/obj/item/organ/internal/I in alien_organs)
I.insert(src)
..()
@@ -63,12 +63,15 @@
f_loss += 60
AdjustEarDamage(30, 120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(3.0)
b_loss += 30
if(prob(50) && !shielded)
Paralyse(1)
AdjustEarDamage(15, 60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
take_overall_damage(b_loss, f_loss)
@@ -78,6 +78,14 @@
else if(eye_blurry) //blurry eyes heal slowly
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
AdjustEarDeaf(-1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
AdjustEarDamage(-0.05)
if(stuttering)
AdjustStuttering(-1)
@@ -56,13 +56,15 @@
f_loss += 60
AdjustEarDamage(30, 120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(3.0)
b_loss += 30
if(prob(50))
Paralyse(1)
AdjustEarDamage(15, 60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
adjustBruteLoss(b_loss)
adjustFireLoss(f_loss)
@@ -46,6 +46,14 @@
else if(eye_blurry) //blurry eyes heal slowly
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
AdjustEarDeaf(-1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold.
AdjustEarDamage(-0.05)
if(stuttering)
AdjustStuttering(-1)
@@ -108,5 +108,8 @@ I'm using this for Stat to give it a more nifty interface to work with
/mob/living/carbon/brain/can_safely_leave_loc()
return 0 //You're not supposed to be ethereal jaunting, brains
/mob/living/carbon/brain/can_hear()
. = TRUE
/mob/living/carbon/brain/SetEarDamage() // no ears to damage or heal
return
/mob/living/carbon/brain/SetEarDeaf()
return
@@ -19,6 +19,12 @@
var/mmi_icon = 'icons/obj/assemblies.dmi'
var/mmi_icon_state = "mmi_full"
/obj/item/organ/internal/brain/surgeryize()
if(!owner)
return
owner.SetEarDeaf(0)
owner.SetEarDamage(0) //Yeah, didn't you...hear? The ears are totally inside the brain.
/obj/item/organ/internal/brain/xeno
name = "xenomorph brain"
desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?"
@@ -7,7 +7,6 @@
var/obj/item/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
/mob/living/carbon/human/New(loc)
icon = null // This is now handled by overlays -- we just keep an icon for the sake of the map editor.
if(length(args) > 1)
log_runtime(EXCEPTION("human/New called with more than 1 argument (REPORT THIS ENTIRE RUNTIME TO A CODER)"))
. = ..()
@@ -265,7 +264,8 @@
else valid_limbs -= processing_dismember
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
AdjustEarDamage(30, 120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(prob(70) && !shielded)
Paralyse(10)
@@ -289,7 +289,8 @@
else valid_limbs -= processing_dismember
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
AdjustEarDamage(15, 60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
if(prob(50) && !shielded)
Paralyse(10)
@@ -1526,9 +1527,8 @@
var/obj/item/organ/external/head/head_organ = get_organ("head")
var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style]
var/icon/hair = new /icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
var/mutable_appearance/MA = mutable_appearance(get_icon_difference(get_eyecon(), hair), layer = LIGHTING_LAYER + 1)
MA.plane = LIGHTING_PLANE
return MA //Cut the hair's pixels from the eyes icon so eyes covered by bangs stay hidden even while on a higher layer.
return image(get_icon_difference(get_eyecon(), hair), layer = LIGHTING_LAYER + 1) //Cut the hair's pixels from the eyes icon so eyes covered by bangs stay hidden even while on a higher layer.
/*Used to check if eyes should shine in the dark. Returns the image of the eyes on the layer where they will appear to shine.
Eyes need to have significantly high darksight to shine unless the mob has the XRAY vision mutation. Eyes will not shine if they are covered in any way.*/
@@ -786,6 +786,20 @@
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
AdjustEarDeaf(-1)
else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster
AdjustEarDamage(-0.15)
EarDeaf(1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
AdjustEarDamage(-0.05)
if(flying)
animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING)
animate(pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING)
@@ -153,9 +153,6 @@
"l_foot" = list("path" = /obj/item/organ/external/foot),
"r_foot" = list("path" = /obj/item/organ/external/foot/right))
// Mutant pieces
var/obj/item/organ/internal/ears/mutantears = /obj/item/organ/internal/ears
/datum/species/New()
//If the species has eyes, they are the default vision organ
if(!vision_organ && has_organ["eyes"])
@@ -168,6 +165,7 @@
return species_language.get_random_name(gender)
/datum/species/proc/create_organs(mob/living/carbon/human/H) //Handles creation of mob organs.
QDEL_LIST(H.internal_organs)
QDEL_LIST(H.bodyparts)
@@ -186,21 +184,12 @@
// organ new code calls `insert` on its own
new organ(H)
create_mutant_organs(H)
for(var/name in H.bodyparts_by_name)
H.bodyparts |= H.bodyparts_by_name[name]
for(var/obj/item/organ/external/O in H.bodyparts)
O.owner = H
/datum/species/proc/create_mutant_organs(mob/living/carbon/human/H)
var/obj/item/organ/internal/ears/ears = H.get_int_organ(/obj/item/organ/internal/ears)
if(ears)
qdel(ears)
ears = new mutantears(H)
/datum/species/proc/breathe(mob/living/carbon/human/H)
if((NO_BREATHE in species_traits) || (BREATHLESS in H.mutations))
return TRUE
@@ -17,11 +17,4 @@
worlds tumultous at best."
reagent_tag = PROCESS_ORG
//Has standard darksight of 2.
/datum/species/human/cat
name = "Felinid"
name_plural = "Felinids"
blurb = "CATGIRLS OMG"
mutantears = /obj/item/organ/internal/ears/cat
//Has standard darksight of 2.
File diff suppressed because it is too large Load Diff
@@ -218,8 +218,15 @@
if(src.eye_blind)
src.SetEyeBlind(0)
if(src.ear_deaf > 0) SetEarDeaf(0)
if(src.ear_damage < 25)
SetEarDamage(0)
src.density = !( src.lying )
if(src.disabilities & DEAF)
EarDeaf(1)
if(src.eye_blurry > 0)
SetEyeBlurry(0)
@@ -489,7 +489,4 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
if(istype(toEat, /obj/item/reagent_containers/food/drinks))
return 1
to_chat(user, "This creature does not seem to have a mouth!")
return 0
/mob/living/carbon/slime/can_hear()
. = TRUE //honestly fuck slimes and organ bullshit
return 0
@@ -27,9 +27,3 @@
setStaminaLoss(health - 2)
handle_hud_icons_health()
return
/mob/living/carbon/can_hear()
. = FALSE
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
if(istype(ears) && !ears.deaf)
. = TRUE
+9
View File
@@ -170,6 +170,15 @@
else if(eye_blurry) //blurry eyes heal slowly
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
EarDeaf(1)
else
// deafness heals slowly over time, unless ear_damage is over 100
if(ear_damage < 100)
AdjustEarDamage(-0.05)
AdjustEarDeaf(-1)
//this handles hud updates. Calls update_vision() and handle_hud_icons()
/mob/living/proc/handle_regular_hud_updates()
if(!client) return 0
+2 -1
View File
@@ -404,7 +404,8 @@
CureNervous()
SetEyeBlind(0)
SetEyeBlurry(0)
RestoreEars()
SetEarDamage(0)
SetEarDeaf(0)
heal_overall_damage(1000, 1000)
ExtinguishMob()
fire_stacks = 0
+6 -2
View File
@@ -330,5 +330,9 @@
return 1
/////////////////////////////////// EAR DAMAGE ////////////////////////////////////
/mob/living/silicon/can_hear()
. = TRUE
/mob/living/silicon/SetEarDamage()
return
/mob/living/silicon/SetEarDeaf()
return
@@ -578,5 +578,9 @@
if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates.
return
/mob/living/simple_animal/can_hear()
. = TRUE
/mob/living/simple_animal/SetEarDamage()
return
/mob/living/simple_animal/SetEarDeaf()
return
+30
View File
@@ -43,6 +43,10 @@
A trippy overlay appears.
* Drunk *
Essentially what your "BAC" is - the higher it is, the more alcohol you have in you
* EarDamage *
Doesn't do much, but if it's 25+, you go deaf. Heals much slower than other statuses - 0.05 normally
* EarDeaf *
You cannot hear. Prevents EarDamage from healing naturally.
* EyeBlind *
You cannot see. Prevents EyeBlurry from healing naturally.
* EyeBlurry *
@@ -111,6 +115,8 @@
var/drowsyness = 0
var/druggy = 0
var/drunk = 0
var/ear_damage = 0
var/ear_deaf = 0
var/eye_blind = 0
var/eye_blurry = 0
var/hallucination = 0
@@ -227,6 +233,30 @@
var/new_value = directional_bounded_sum(druggy, amount, bound_lower, bound_upper)
return SetDruggy(new_value, updating)
// EAR_DAMAGE
/mob/living/EarDamage(amount)
SetEarDamage(max(ear_damage, amount))
/mob/living/SetEarDamage(amount)
ear_damage = max(amount, 0)
/mob/living/AdjustEarDamage(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(ear_damage, amount, bound_lower, bound_upper)
SetEarDamage(new_value)
// EAR_DEAF
/mob/living/EarDeaf(amount)
SetEarDeaf(max(ear_deaf, amount))
/mob/living/SetEarDeaf(amount)
ear_deaf = max(amount, 0)
/mob/living/AdjustEarDeaf(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(ear_deaf, amount, bound_lower, bound_upper)
SetEarDeaf(new_value)
// EYE_BLIND
/mob/living/EyeBlind(amount, updating = TRUE)
+5 -1
View File
@@ -41,7 +41,7 @@
// Whether the mob can hear things
/mob/living/can_hear()
. = !(disabilities & DEAF)
return !(ear_deaf || (disabilities & DEAF))
// Whether the mob is able to see
// `information_only` is for stuff that's purely informational - like understanding nonverbal languages, or blindness overlays
@@ -137,6 +137,10 @@
SetEyeBlind(eye_blind)
if("eye_blurry")
SetEyeBlurry(eye_blurry)
if("ear_deaf")
SetEarDeaf(ear_deaf)
if("ear_damage")
SetEarDamage(ear_damage)
if("druggy")
SetDruggy(druggy)
if("maxHealth")
@@ -48,7 +48,7 @@
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
// Restrict some styles to specific species
var/list/species_allowed = list("Human", "Felinid", "Slime People")
var/list/species_allowed = list("Human", "Slime People")
var/list/models_allowed = list() //Specifies which, if any, hairstyles or markings can be accessed by which prosthetics. Should equal the manufacturing company name in robolimbs.dm.
var/list/heads_allowed = null //Specifies which, if any, alt heads a head marking, hairstyle or facial hair style is compatible with.
var/list/tails_allowed = null //Specifies which, if any, tails a tail marking is compatible with.
@@ -75,7 +75,7 @@
/datum/sprite_accessory/hair/bald
name = "Bald"
icon_state = "bald"
species_allowed = list("Human", "Felinid", "Unathi", "Vox", "Diona", "Kidan", "Grey", "Plasmaman", "Skeleton", "Vulpkanin", "Tajaran")
species_allowed = list("Human", "Unathi", "Vox", "Diona", "Kidan", "Grey", "Plasmaman", "Skeleton", "Vulpkanin", "Tajaran")
glasses_over = 1
/datum/sprite_accessory/hair/short
@@ -169,7 +169,7 @@
name = "Pompadour"
icon_state = "hair_pompadour"
gender = MALE
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
glasses_over = 1
/datum/sprite_accessory/hair/quiff
@@ -194,19 +194,19 @@
name = "Beehive"
icon_state = "hair_beehive"
gender = FEMALE
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
/datum/sprite_accessory/hair/bobcurl
name = "Bobcurl"
icon_state = "hair_bobcurl"
gender = FEMALE
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
/datum/sprite_accessory/hair/bob
name = "Bob"
icon_state = "hair_bobcut"
gender = FEMALE
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
/datum/sprite_accessory/hair/bowl
name = "Bowl"
@@ -234,7 +234,7 @@
name = "Buzzcut"
icon_state = "hair_buzzcut"
gender = MALE
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
glasses_over = 1
/datum/sprite_accessory/hair/crew
@@ -303,7 +303,7 @@
/datum/sprite_accessory/hair/mohawk
name = "Mohawk"
icon_state = "hair_d"
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
glasses_over = 1
/datum/sprite_accessory/hair/jensen
@@ -338,7 +338,7 @@
/datum/sprite_accessory/hair/spiky
name = "Spiky"
icon_state = "hair_spikey"
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
glasses_over = 1
/datum/sprite_accessory/hair/kusanagi
@@ -1535,7 +1535,7 @@
name = "Shaved"
icon_state = "bald"
gender = NEUTER
species_allowed = list("Human", "Felinid", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Vulpkanin", "Slime People")
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Vulpkanin", "Slime People")
/datum/sprite_accessory/facial_hair/watson
name = "Watson Mustache"
@@ -1576,7 +1576,7 @@
/datum/sprite_accessory/facial_hair/elvis
name = "Elvis Sideburns"
icon_state = "facial_elvis"
species_allowed = list("Human", "Felinid", "Slime People", "Unathi")
species_allowed = list("Human", "Slime People", "Unathi")
/datum/sprite_accessory/facial_hair/abe
name = "Abraham Lincoln Beard"
@@ -1813,7 +1813,7 @@
/datum/sprite_accessory/skin/human
name = "Default human skin"
icon_state = "default"
species_allowed = list("Human", "Felinid")
species_allowed = list("Human")
/datum/sprite_accessory/skin/human/human_tatt01
name = "Tatt01 human skin"
@@ -1848,13 +1848,13 @@
///////////////////////////
/datum/sprite_accessory/underwear
icon = 'icons/mob/underwear.dmi'
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
gender = NEUTER
/datum/sprite_accessory/underwear/nude
name = "Nude"
icon_state = null
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
/datum/sprite_accessory/underwear/male
gender = MALE
@@ -1974,13 +1974,13 @@
////////////////////////////
/datum/sprite_accessory/undershirt
icon = 'icons/mob/underwear.dmi'
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
gender = NEUTER
/datum/sprite_accessory/undershirt/nude
name = "Nude"
icon_state = null
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
//plain color shirts
/datum/sprite_accessory/undershirt/shirt_white
@@ -2210,13 +2210,13 @@
///////////////////////
/datum/sprite_accessory/socks
icon = 'icons/mob/underwear.dmi'
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask")
gender = NEUTER
/datum/sprite_accessory/socks/nude
name = "Nude"
icon_state = null
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox")
/datum/sprite_accessory/socks/white_norm
name = "Normal White"
@@ -2342,7 +2342,7 @@
/datum/sprite_accessory/head_accessory/none
name = "None"
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Grey", "Kidan", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox")
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Kidan", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox")
icon_state = "accessory_none"
/datum/sprite_accessory/head_accessory/unathi
@@ -2595,7 +2595,7 @@
/datum/sprite_accessory/body_markings/none
name = "None"
species_allowed = list("Human", "Felinid", "Unathi", "Diona", "Grey", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox", "Kidan")
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox", "Kidan")
icon_state = "accessory_none"
/datum/sprite_accessory/body_markings/tiger
@@ -2863,7 +2863,7 @@
models_allowed = list("Xion Manufacturing Group alt.")
/datum/sprite_accessory/body_markings/tattoo // Tattoos applied post-round startup with tattoo guns in item_defines.dm
species_allowed = list("Human", "Felinid", "Unathi", "Vulpkanin", "Tajaran", "Skrell")
species_allowed = list("Human", "Unathi", "Vulpkanin", "Tajaran", "Skrell")
icon_state = "accessory_none"
/datum/sprite_accessory/body_markings/tattoo/elliot
@@ -2873,7 +2873,7 @@
/datum/sprite_accessory/body_markings/tattoo/tiger_body
name = "Tiger-stripe Tattoo"
species_allowed = list("Human", "Felinid", "Unathi", "Vulpkanin", "Tajaran", "Skrell")
species_allowed = list("Human", "Unathi", "Vulpkanin", "Tajaran", "Skrell")
icon_state = "markings_tiger"
/datum/sprite_accessory/body_markings/tattoo/heart
+12 -2
View File
@@ -52,13 +52,23 @@
return
/mob/proc/RestoreEars()
/mob/proc/EarDamage()
return
/mob/proc/SetEarDamage()
return
/mob/proc/AdjustEarDamage()
return
/mob/proc/MinimumDeafTicks()
/mob/proc/EarDeaf()
return
/mob/proc/SetEarDeaf()
return
/mob/proc/AdjustEarDeaf()
return
+1 -1
View File
@@ -35,7 +35,7 @@
// Procs that give information about the status of the mob
/mob/proc/can_hear()
. = 1
return 1
/mob/proc/has_vision(information_only = FALSE)
return 1
@@ -543,23 +543,21 @@
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(prob(80))
if(iscarbon(M))
var/mob/living/carbon/C = M
var/obj/item/organ/internal/eyes/E = C.get_int_organ(/obj/item/organ/internal/eyes)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.heal_internal_damage(1)
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
if(istype(ears))
ears.AdjustEarDamage(-1)
if(ears.ear_damage < 25 && prob(30))
ears.deaf = 0
update_flags |= M.AdjustEyeBlurry(-1, FALSE)
update_flags |= M.AdjustEarDamage(-1)
update_flags |= M.AdjustEarDamage(-1, FALSE)
if(prob(50))
update_flags |= M.CureNearsighted(FALSE)
if(prob(30))
update_flags |= M.CureBlind(FALSE)
update_flags |= M.SetEyeBlind(0, FALSE)
if(M.ear_damage <= 25)
if(prob(30))
M.SetEarDeaf(0)
return ..() | update_flags
/datum/reagent/medicine/atropine
@@ -287,19 +287,16 @@ datum/chemical_reaction/flash_powder
if(!ear_safety)
M.Stun(max(10/distance, 3))
M.Weaken(max(10/distance, 3))
M.AdjustEarDamage(rand(0, 5), 15)
if(iscarbon(M))
var/mob/living/carbon/C = M
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
if(istype(ears))
if(ears.ear_damage >= 15)
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
if(prob(ears.ear_damage - 5))
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
M.BecomeDeaf()
else
if(ears.ear_damage >= 5)
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
M.AdjustEarDamage(rand(0, 5))
M.EarDeaf(15)
if(M.ear_damage >= 15)
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
if(prob(M.ear_damage - 5))
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
M.disabilities |= DEAF
else
if(M.ear_damage >= 5)
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
holder.remove_reagent("sonic_powder", created_volume)
/datum/chemical_reaction/sonic_powder_deafen
@@ -325,20 +322,16 @@ datum/chemical_reaction/flash_powder
if(!ear_safety)
M.Stun(max(10/distance, 3))
M.Weaken(max(10/distance, 3))
M.AdjustEarDamage(rand(0, 5), 15)
if(iscarbon(M))
var/mob/living/carbon/C = M
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
if(istype(ears))
if(ears.ear_damage >= 15)
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
if(prob(ears.ear_damage - 5))
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
M.BecomeDeaf()
else
if(ears.ear_damage >= 5)
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
M.AdjustEarDamage(rand(0, 5))
M.EarDeaf(15)
if(M.ear_damage >= 15)
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
if(prob(M.ear_damage - 5))
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
M.BecomeDeaf()
else
if(M.ear_damage >= 5)
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
/datum/chemical_reaction/phlogiston
name = "phlogiston"
-76
View File
@@ -1,76 +0,0 @@
/obj/item/organ/internal/ears
name = "ears"
icon_state = "ears"
gender = PLURAL
organ_tag = "ears"
parent_organ = "head"
slot = "ears"
// `deaf` measures "ticks" of deafness. While > 0, the person is deaf.
var/deaf = 0
// `ear_damage` measures long term damage to the ears, if too high,
// the person will not have either `deaf` or `ear_damage` decrease
// without external aid (earmuffs, drugs)
var/ear_damage = 0
/obj/item/organ/internal/ears/on_life()
if(!iscarbon(owner))
return
var/mob/living/carbon/C = owner
// genetic deafness prevents the body from using the ears, even if healthy
if(C.disabilities & DEAF)
deaf = max(deaf, 1)
else
if(ishuman(C))
var/mob/living/carbon/human/H = C
if((H.l_ear && H.l_ear.flags_2 & HEALS_EARS_2) || (H.r_ear && H.r_ear.flags_2 & HEALS_EARS_2))
deaf = max(deaf - 1, 1)
ear_damage = max(ear_damage - 0.10, 0)
// if higher than UNHEALING_EAR_DAMAGE, no natural healing occurs.
if(ear_damage < UNHEALING_EAR_DAMAGE)
ear_damage = max(ear_damage - 0.05, 0)
deaf = max(deaf - 1, 0)
/obj/item/organ/internal/ears/proc/RestoreEars()
deaf = 0
ear_damage = 0
var/mob/living/carbon/C = owner
if(istype(C) && C.disabilities & DEAF)
deaf = 1
/obj/item/organ/internal/ears/proc/AdjustEarDamage(ddmg, ddeaf)
ear_damage = max(ear_damage + ddmg, 0)
deaf = max(deaf + ddeaf, 0)
/obj/item/organ/internal/ears/proc/MinimumDeafTicks(value)
deaf = max(deaf, value)
// Mob procs
/mob/living/carbon/RestoreEars()
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
if(ears)
ears.RestoreEars()
/mob/living/carbon/AdjustEarDamage(ddmg, ddeaf)
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
if(ears)
ears.AdjustEarDamage(ddmg, ddeaf)
/mob/living/carbon/MinimumDeafTicks(value)
var/obj/item/organ/internal/ears/ears = get_int_organ(/obj/item/organ/internal/ears)
if(ears)
ears.MinimumDeafTicks(value)
// Kitty ears!!
/obj/item/organ/internal/ears/cat
name = "cat ears"
icon = 'icons/obj/clothing/hats.dmi'
icon_state = "kitty"
color = "#aa4444"
transform = matrix(0.7, 0, 0, 0, 0.7, 0)
/obj/item/organ/internal/ears/cat/render()
. = mutable_appearance('icons/mob/head.dmi', "kitty", layer = -HEAD_ACC_OVER_LAYER)
@@ -64,7 +64,6 @@
log_runtime(EXCEPTION("[src] attempted to remove from a [parent_organ], but [parent_organ] didn't exist! [atom_loc_line(M)]"), src)
else
parent.internal_organs -= src
H.update_int_organs()
for(var/X in actions)
var/datum/action/A = X
@@ -106,10 +105,6 @@
insert(H)
return 1
// Rendering!
/obj/item/organ/internal/proc/render()
return
/obj/item/reagent_containers/food/snacks/organ
name = "appendix"
icon_state = "appendix"
@@ -252,7 +247,7 @@
to_chat(owner, "<font color='red' size='7'>HONK</font>")
owner.SetSleeping(0)
owner.Stuttering(20)
owner.MinimumDeafTicks(30)
owner.AdjustEarDeaf(30)
owner.Weaken(3)
owner << 'sound/items/AirHorn.ogg'
if(prob(30))
+1 -1
View File
@@ -122,7 +122,7 @@ var/static/regex/multispin_words = regex("like a record baby")
var/mob/living/list/listeners = list()
for(var/mob/living/L in get_mobs_in_view(8, owner, TRUE))
if(L.can_hear() && !L.null_rod_check() && L != owner && L.stat != DEAD)
if(!L.ear_deaf && !L.null_rod_check() && L != owner && L.stat != DEAD)
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))