mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 19:22:56 +00:00
Merge pull request #6618 from Zuhayr/dev
Bunch of minor fixes for xenomorphs and borer husks.
This commit is contained in:
@@ -296,7 +296,8 @@
|
|||||||
"tg_diseases_list" = H.viruses.Copy(),
|
"tg_diseases_list" = H.viruses.Copy(),
|
||||||
"lung_ruptured" = H.is_lung_ruptured(),
|
"lung_ruptured" = H.is_lung_ruptured(),
|
||||||
"external_organs" = H.organs.Copy(),
|
"external_organs" = H.organs.Copy(),
|
||||||
"internal_organs" = H.internal_organs.Copy()
|
"internal_organs" = H.internal_organs.Copy(),
|
||||||
|
"species_organs" = H.species.has_organ //Just pass a reference for this, it shouldn't ever be modified outside of the datum.
|
||||||
)
|
)
|
||||||
return occupant_data
|
return occupant_data
|
||||||
|
|
||||||
@@ -413,6 +414,7 @@
|
|||||||
dat += "</tr>"
|
dat += "</tr>"
|
||||||
|
|
||||||
for(var/datum/organ/internal/i in occ["internal_organs"])
|
for(var/datum/organ/internal/i in occ["internal_organs"])
|
||||||
|
|
||||||
var/mech = ""
|
var/mech = ""
|
||||||
if(i.robotic == 1)
|
if(i.robotic == 1)
|
||||||
mech = "Assisted:"
|
mech = "Assisted:"
|
||||||
@@ -439,6 +441,11 @@
|
|||||||
dat += "</tr>"
|
dat += "</tr>"
|
||||||
dat += "</table>"
|
dat += "</table>"
|
||||||
|
|
||||||
|
var/list/species_organs = occ["species_organs"]
|
||||||
|
for(var/organ_name in species_organs)
|
||||||
|
if(!locate(species_organs[organ_name]) in occ["internal_organs"])
|
||||||
|
dat += text("<font color='red'>No [organ_name] detected.</font><BR>")
|
||||||
|
|
||||||
if(occ["sdisabilities"] & BLIND)
|
if(occ["sdisabilities"] & BLIND)
|
||||||
dat += text("<font color='red'>Cataracts detected.</font><BR>")
|
dat += text("<font color='red'>Cataracts detected.</font><BR>")
|
||||||
if(occ["sdisabilities"] & NEARSIGHTED)
|
if(occ["sdisabilities"] & NEARSIGHTED)
|
||||||
|
|||||||
@@ -22,12 +22,16 @@
|
|||||||
|
|
||||||
if(istype(player,/mob/dead))
|
if(istype(player,/mob/dead))
|
||||||
understood = 1
|
understood = 1
|
||||||
else if(src in player.languages)
|
else if((src in player.languages) && check_special_condition(player))
|
||||||
understood = 1
|
understood = 1
|
||||||
|
|
||||||
if(understood)
|
if(understood)
|
||||||
if(!speaker_mask) speaker_mask = speaker.name
|
if(!speaker_mask) speaker_mask = speaker.name
|
||||||
player << "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> <span class='message'>[speech_verb], \"<span class='[colour]'>[message]</span><span class='message'>\"</span></span></i>"
|
var/msg = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> <span class='message'>[speech_verb], \"<span class='[colour]'>[message]</span><span class='message'>\"</span></span></i>"
|
||||||
|
player << "[msg]"
|
||||||
|
|
||||||
|
/datum/language/proc/check_special_condition(var/mob/other)
|
||||||
|
return 1
|
||||||
|
|
||||||
/datum/language/unathi
|
/datum/language/unathi
|
||||||
name = "Sinta'unathi"
|
name = "Sinta'unathi"
|
||||||
@@ -69,6 +73,13 @@
|
|||||||
key = "q"
|
key = "q"
|
||||||
flags = RESTRICTED
|
flags = RESTRICTED
|
||||||
|
|
||||||
|
/datum/language/common
|
||||||
|
name = "Galactic Common"
|
||||||
|
desc = "The common galactic tongue."
|
||||||
|
speech_verb = "says"
|
||||||
|
key = "0"
|
||||||
|
flags = RESTRICTED
|
||||||
|
|
||||||
/datum/language/human
|
/datum/language/human
|
||||||
name = "Sol Common"
|
name = "Sol Common"
|
||||||
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
|
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
|
||||||
@@ -91,6 +102,14 @@
|
|||||||
colour = "rough"
|
colour = "rough"
|
||||||
key = "3"
|
key = "3"
|
||||||
|
|
||||||
|
/datum/language/xenocommon
|
||||||
|
name = "Xenomorph"
|
||||||
|
colour = "alien"
|
||||||
|
desc = "The common tongue of the xenomorphs."
|
||||||
|
speech_verb = "hisses"
|
||||||
|
key = "4"
|
||||||
|
flags = RESTRICTED
|
||||||
|
|
||||||
/datum/language/xenos
|
/datum/language/xenos
|
||||||
name = "Hivemind"
|
name = "Hivemind"
|
||||||
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
|
desc = "Xenomorphs have the strange ability to commune over a psychic hivemind."
|
||||||
@@ -99,6 +118,16 @@
|
|||||||
key = "a"
|
key = "a"
|
||||||
flags = RESTRICTED | HIVEMIND
|
flags = RESTRICTED | HIVEMIND
|
||||||
|
|
||||||
|
/datum/language/xenos/check_special_condition(var/mob/other)
|
||||||
|
|
||||||
|
var/mob/living/carbon/M = other
|
||||||
|
if(!istype(M))
|
||||||
|
return 1
|
||||||
|
if(locate(/datum/organ/internal/xenos/hivenode) in M.internal_organs)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
/datum/language/ling
|
/datum/language/ling
|
||||||
name = "Changeling"
|
name = "Changeling"
|
||||||
desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance."
|
desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance."
|
||||||
@@ -116,7 +145,7 @@
|
|||||||
|
|
||||||
/datum/language/corticalborer
|
/datum/language/corticalborer
|
||||||
name = "Cortical Link"
|
name = "Cortical Link"
|
||||||
desc = "Cortical borers possess a strange between their tiny minds."
|
desc = "Cortical borers possess a strange link between their tiny minds."
|
||||||
speech_verb = "sings"
|
speech_verb = "sings"
|
||||||
colour = "alien"
|
colour = "alien"
|
||||||
key = "x"
|
key = "x"
|
||||||
|
|||||||
@@ -16,4 +16,4 @@
|
|||||||
|
|
||||||
/mob/living/carbon/alien/larva/New()
|
/mob/living/carbon/alien/larva/New()
|
||||||
..()
|
..()
|
||||||
add_language("Rootspeak")
|
add_language("Xenomorph") //Bonus language.
|
||||||
@@ -12,6 +12,9 @@
|
|||||||
if(stat == 2)
|
if(stat == 2)
|
||||||
return say_dead(message)
|
return say_dead(message)
|
||||||
|
|
||||||
|
if(copytext(message,1,2) == "*")
|
||||||
|
return emote(copytext(message,2))
|
||||||
|
|
||||||
var/datum/language/speaking = null
|
var/datum/language/speaking = null
|
||||||
|
|
||||||
if(length(message) >= 2)
|
if(length(message) >= 2)
|
||||||
|
|||||||
@@ -23,9 +23,15 @@
|
|||||||
|
|
||||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
if(istype(O,/obj/item/organ/brain) && !brainmob) //Time to stick a brain in it --NEO
|
if(istype(O,/obj/item/organ/brain) && !brainmob) //Time to stick a brain in it --NEO
|
||||||
if(!O:brainmob)
|
|
||||||
|
var/obj/item/organ/brain/B = O
|
||||||
|
if(B.health <= 0)
|
||||||
|
user << "\red That brain is well and truly dead."
|
||||||
|
return
|
||||||
|
else if(!B.brainmob)
|
||||||
user << "\red You aren't sure where this brain came from, but you're pretty sure it's a useless brain."
|
user << "\red You aren't sure where this brain came from, but you're pretty sure it's a useless brain."
|
||||||
return
|
return
|
||||||
|
|
||||||
for(var/mob/V in viewers(src, null))
|
for(var/mob/V in viewers(src, null))
|
||||||
V.show_message(text("\blue [user] sticks \a [O] into \the [src]."))
|
V.show_message(text("\blue [user] sticks \a [O] into \the [src]."))
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,12 @@
|
|||||||
|
|
||||||
var/mob/living/carbon/brain/brainmob = null
|
var/mob/living/carbon/brain/brainmob = null
|
||||||
|
|
||||||
|
/obj/item/organ/brain/xeno
|
||||||
|
name = "thinkpan"
|
||||||
|
desc = "It looks kind of like an enormous wad of purple bubblegum."
|
||||||
|
icon = 'icons/mob/alien.dmi'
|
||||||
|
icon_state = "chitin"
|
||||||
|
|
||||||
/obj/item/organ/brain/New()
|
/obj/item/organ/brain/New()
|
||||||
..()
|
..()
|
||||||
spawn(5)
|
spawn(5)
|
||||||
|
|||||||
@@ -23,10 +23,6 @@ proc/create_new_xenomorph(var/alien_caste,var/target)
|
|||||||
h_style = "Bald"
|
h_style = "Bald"
|
||||||
..(new_loc, "Xenomorph Queen")
|
..(new_loc, "Xenomorph Queen")
|
||||||
|
|
||||||
/mob/living/carbon/human/Stat()
|
|
||||||
|
|
||||||
..()
|
|
||||||
|
|
||||||
// I feel like we should generalize/condense down all the various icon-rendering antag procs.
|
// I feel like we should generalize/condense down all the various icon-rendering antag procs.
|
||||||
/*----------------------------------------
|
/*----------------------------------------
|
||||||
Proc: AddInfectionImages()
|
Proc: AddInfectionImages()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
//Stand-in until this is made more lore-friendly.
|
//Stand-in until this is made more lore-friendly.
|
||||||
/datum/species/xenos
|
/datum/species/xenos
|
||||||
name = "Xenomorph"
|
name = "Xenomorph"
|
||||||
|
default_language = "Xenomorph"
|
||||||
language = "Hivemind"
|
language = "Hivemind"
|
||||||
unarmed_type = /datum/unarmed_attack/claws/strong
|
unarmed_type = /datum/unarmed_attack/claws/strong
|
||||||
secondary_unarmed_type = /datum/unarmed_attack/bite/strong
|
secondary_unarmed_type = /datum/unarmed_attack/bite/strong
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
"lungs" = /datum/organ/internal/lungs,
|
||||||
"brain" = /datum/organ/internal/brain,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
"nutrient vessel" = /datum/organ/internal/diona/nutrients
|
"nutrient vessel" = /datum/organ/internal/diona/nutrients
|
||||||
@@ -51,6 +52,13 @@
|
|||||||
var/weeds_heal_rate = 1 // Health regen on weeds.
|
var/weeds_heal_rate = 1 // Health regen on weeds.
|
||||||
var/weeds_plasma_rate = 5 // Plasma regen on weeds.
|
var/weeds_plasma_rate = 5 // Plasma regen on weeds.
|
||||||
|
|
||||||
|
/datum/species/xenos/can_understand(var/mob/other)
|
||||||
|
|
||||||
|
if(istype(other,/mob/living/carbon/alien/larva))
|
||||||
|
return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
/datum/species/xenos/hug(var/mob/living/carbon/human/H,var/mob/living/target)
|
/datum/species/xenos/hug(var/mob/living/carbon/human/H,var/mob/living/target)
|
||||||
H.visible_message("<span class='notice'>[H] caresses [target] with its scythe-like arm.</span>", \
|
H.visible_message("<span class='notice'>[H] caresses [target] with its scythe-like arm.</span>", \
|
||||||
"<span class='notice'>You caress [target] with your scythe-like arm.</span>")
|
"<span class='notice'>You caress [target] with your scythe-like arm.</span>")
|
||||||
@@ -109,7 +117,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
"lungs" = /datum/organ/internal/lungs,
|
||||||
"brain" = /datum/organ/internal/brain,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
||||||
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
@@ -148,7 +156,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
"lungs" = /datum/organ/internal/lungs,
|
||||||
"brain" = /datum/organ/internal/brain,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/hunter,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/hunter,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
"nutrient vessel" = /datum/organ/internal/diona/nutrients
|
"nutrient vessel" = /datum/organ/internal/diona/nutrients
|
||||||
@@ -176,7 +184,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
"lungs" = /datum/organ/internal/lungs,
|
||||||
"brain" = /datum/organ/internal/brain,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/sentinel,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/sentinel,
|
||||||
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
@@ -207,7 +215,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
"lungs" = /datum/organ/internal/lungs,
|
||||||
"brain" = /datum/organ/internal/brain,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"egg sac" = /datum/organ/internal/xenos/eggsac,
|
"egg sac" = /datum/organ/internal/xenos/eggsac,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
||||||
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
||||||
|
|||||||
@@ -1263,6 +1263,9 @@
|
|||||||
if(species.language)
|
if(species.language)
|
||||||
remove_language(species.language)
|
remove_language(species.language)
|
||||||
|
|
||||||
|
if(species.default_language)
|
||||||
|
remove_language(species.default_language)
|
||||||
|
|
||||||
species = all_species[new_species]
|
species = all_species[new_species]
|
||||||
|
|
||||||
species.create_organs(src)
|
species.create_organs(src)
|
||||||
@@ -1270,6 +1273,9 @@
|
|||||||
if(species.language)
|
if(species.language)
|
||||||
add_language(species.language)
|
add_language(species.language)
|
||||||
|
|
||||||
|
if(species.default_language)
|
||||||
|
add_language(species.default_language)
|
||||||
|
|
||||||
if(species.base_color && default_colour)
|
if(species.base_color && default_colour)
|
||||||
//Apply colour.
|
//Apply colour.
|
||||||
r_skin = hex2num(copytext(species.base_color,2,4))
|
r_skin = hex2num(copytext(species.base_color,2,4))
|
||||||
@@ -1426,4 +1432,4 @@
|
|||||||
var/datum/organ/internal/eyes = internal_organs_by_name["eyes"]
|
var/datum/organ/internal/eyes = internal_organs_by_name["eyes"]
|
||||||
if(eyes && istype(eyes) && !eyes.status & ORGAN_CUT_AWAY)
|
if(eyes && istype(eyes) && !eyes.status & ORGAN_CUT_AWAY)
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -435,6 +435,7 @@
|
|||||||
|
|
||||||
|
|
||||||
proc/handle_breath(datum/gas_mixture/breath)
|
proc/handle_breath(datum/gas_mixture/breath)
|
||||||
|
|
||||||
if(status_flags & GODMODE)
|
if(status_flags & GODMODE)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -456,7 +457,17 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/safe_pressure_min = 16 // Minimum safe partial pressure of breathable gas in kPa
|
var/safe_pressure_min = 16 // Minimum safe partial pressure of breathable gas in kPa
|
||||||
//var/safe_pressure_max = 140 // Maximum safe partial pressure of breathable gas in kPa (Not used for now)
|
|
||||||
|
// Lung damage increases the minimum safe pressure.
|
||||||
|
if(species.has_organ["lungs"])
|
||||||
|
var/datum/organ/internal/lungs/L = internal_organs_by_name["lungs"]
|
||||||
|
if(!L)
|
||||||
|
safe_pressure_min = INFINITY //No lungs, how are you breathing?
|
||||||
|
else if(L.is_broken())
|
||||||
|
safe_pressure_min *= 1.5
|
||||||
|
else if(L.is_bruised())
|
||||||
|
safe_pressure_min *= 1.25
|
||||||
|
|
||||||
var/safe_exhaled_max = 10
|
var/safe_exhaled_max = 10
|
||||||
var/safe_toxins_max = 0.005
|
var/safe_toxins_max = 0.005
|
||||||
var/SA_para_min = 1
|
var/SA_para_min = 1
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
/mob/living/carbon/human/say(var/message)
|
/mob/living/carbon/human/say(var/message)
|
||||||
|
|
||||||
//TODO: Add checks for species who do not speak common.
|
|
||||||
|
|
||||||
var/verb = "says"
|
var/verb = "says"
|
||||||
var/alt_name = ""
|
var/alt_name = ""
|
||||||
var/message_range = world.view
|
var/message_range = world.view
|
||||||
@@ -34,9 +32,13 @@
|
|||||||
|
|
||||||
//parse the language code and consume it
|
//parse the language code and consume it
|
||||||
var/datum/language/speaking = parse_language(message)
|
var/datum/language/speaking = parse_language(message)
|
||||||
|
if(speaking)
|
||||||
|
message = copytext(message,3)
|
||||||
|
else if(species.default_language)
|
||||||
|
speaking = all_languages[species.default_language]
|
||||||
|
|
||||||
if (speaking)
|
if (speaking)
|
||||||
verb = speaking.speech_verb
|
verb = speaking.speech_verb
|
||||||
message = copytext(message,3)
|
|
||||||
|
|
||||||
// This is broadcast to all mobs with the language,
|
// This is broadcast to all mobs with the language,
|
||||||
// irrespective of distance or anything else.
|
// irrespective of distance or anything else.
|
||||||
@@ -169,6 +171,9 @@
|
|||||||
if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak.
|
if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak.
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
if(species.can_understand(other))
|
||||||
|
return 1
|
||||||
|
|
||||||
//These only pertain to common. Languages are handled by mob/say_understands()
|
//These only pertain to common. Languages are handled by mob/say_understands()
|
||||||
if (!speaking)
|
if (!speaking)
|
||||||
if (istype(other, /mob/living/carbon/alien/diona))
|
if (istype(other, /mob/living/carbon/alien/diona))
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
var/primitive // Lesser form, if any (ie. monkey for humans)
|
var/primitive // Lesser form, if any (ie. monkey for humans)
|
||||||
var/tail // Name of tail image in species effects icon file.
|
var/tail // Name of tail image in species effects icon file.
|
||||||
var/language // Default racial language, if any.
|
|
||||||
var/datum/unarmed_attack/unarmed // For empty hand harm-intent attack
|
var/datum/unarmed_attack/unarmed // For empty hand harm-intent attack
|
||||||
var/datum/unarmed_attack/secondary_unarmed // For empty hand harm-intent attack if the first fails.
|
var/datum/unarmed_attack/secondary_unarmed // For empty hand harm-intent attack if the first fails.
|
||||||
var/datum/hud_data/hud
|
var/datum/hud_data/hud
|
||||||
@@ -24,6 +23,9 @@
|
|||||||
var/unarmed_type = /datum/unarmed_attack
|
var/unarmed_type = /datum/unarmed_attack
|
||||||
var/secondary_unarmed_type = /datum/unarmed_attack/bite
|
var/secondary_unarmed_type = /datum/unarmed_attack/bite
|
||||||
|
|
||||||
|
var/language // Default racial language, if any.
|
||||||
|
// Default language is used when 'say' is used without modifiers.
|
||||||
|
var/default_language = "Galactic Common"
|
||||||
var/secondary_langs = list() // The names of secondary languages that are available to this species.
|
var/secondary_langs = list() // The names of secondary languages that are available to this species.
|
||||||
var/mutantrace // Safeguard due to old code.
|
var/mutantrace // Safeguard due to old code.
|
||||||
var/list/speech_sounds // A list of sounds to potentially play when speaking.
|
var/list/speech_sounds // A list of sounds to potentially play when speaking.
|
||||||
@@ -194,6 +196,10 @@
|
|||||||
/datum/species/proc/get_inventory_dialogue(var/mob/living/carbon/human/H)
|
/datum/species/proc/get_inventory_dialogue(var/mob/living/carbon/human/H)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
//Used by xenos understanding larvae and dionaea understanding nymphs.
|
||||||
|
/datum/species/proc/can_understand(var/mob/other)
|
||||||
|
return
|
||||||
|
|
||||||
/datum/species/human
|
/datum/species/human
|
||||||
name = "Human"
|
name = "Human"
|
||||||
language = "Sol Common"
|
language = "Sol Common"
|
||||||
@@ -274,7 +280,8 @@
|
|||||||
name = "Vox"
|
name = "Vox"
|
||||||
icobase = 'icons/mob/human_races/r_vox.dmi'
|
icobase = 'icons/mob/human_races/r_vox.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
||||||
language = "Vox-pidgin"
|
default_language = "Vox-pidgin"
|
||||||
|
language = "Galactic Common"
|
||||||
unarmed_type = /datum/unarmed_attack/claws/strong
|
unarmed_type = /datum/unarmed_attack/claws/strong
|
||||||
secondary_unarmed_type = /datum/unarmed_attack/bite/strong
|
secondary_unarmed_type = /datum/unarmed_attack/bite/strong
|
||||||
rarity_value = 2
|
rarity_value = 2
|
||||||
@@ -319,7 +326,6 @@
|
|||||||
name = "Vox Armalis"
|
name = "Vox Armalis"
|
||||||
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
||||||
deform = 'icons/mob/human_races/r_armalis.dmi'
|
deform = 'icons/mob/human_races/r_armalis.dmi'
|
||||||
language = "Vox-pidgin"
|
|
||||||
rarity_value = 10
|
rarity_value = 10
|
||||||
|
|
||||||
warning_low_pressure = 50
|
warning_low_pressure = 50
|
||||||
@@ -395,6 +401,12 @@
|
|||||||
|
|
||||||
reagent_tag = IS_DIONA
|
reagent_tag = IS_DIONA
|
||||||
|
|
||||||
|
/datum/species/diona/can_understand(var/mob/other)
|
||||||
|
var/mob/living/carbon/alien/diona/D = other
|
||||||
|
if(istype(D))
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
|
/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||||
H.gender = NEUTER
|
H.gender = NEUTER
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -56,11 +56,13 @@
|
|||||||
|
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
//These are different to the standard diona organs as they have a purpose in other
|
// These are different to the standard diona organs as they have a purpose in other
|
||||||
// species (absorbing radiation and light respectively)
|
// species (absorbing radiation and light respectively)
|
||||||
/obj/item/organ/diona/nutrients
|
/obj/item/organ/diona/nutrients
|
||||||
name = "nutrient vessel"
|
name = "nutrient vessel"
|
||||||
organ_tag = "nutrient vessel"
|
organ_tag = "nutrient vessel"
|
||||||
|
icon = 'icons/mob/alien.dmi'
|
||||||
|
icon_state = "claw"
|
||||||
|
|
||||||
/obj/item/organ/diona/nutrients/removed()
|
/obj/item/organ/diona/nutrients/removed()
|
||||||
return
|
return
|
||||||
@@ -68,6 +70,8 @@
|
|||||||
/obj/item/organ/diona/node
|
/obj/item/organ/diona/node
|
||||||
name = "receptor node"
|
name = "receptor node"
|
||||||
organ_tag = "receptor node"
|
organ_tag = "receptor node"
|
||||||
|
icon = 'icons/mob/alien.dmi'
|
||||||
|
icon_state = "claw"
|
||||||
|
|
||||||
/obj/item/organ/diona/node/removed()
|
/obj/item/organ/diona/node/removed()
|
||||||
return
|
return
|
||||||
@@ -88,11 +92,18 @@
|
|||||||
|
|
||||||
// They're also super gross and ooze ichor.
|
// They're also super gross and ooze ichor.
|
||||||
if(prob(5))
|
if(prob(5))
|
||||||
var/obj/effect/decal/cleanable/blood/splatter/goo = new(get_turf(owner))
|
var/mob/living/carbon/human/H = owner
|
||||||
goo.name = "husk ichor"
|
if(!istype(H))
|
||||||
goo.desc = "It's thick and stinks of decay."
|
return
|
||||||
goo.basecolor = "#412464"
|
|
||||||
goo.update_icon()
|
var/datum/reagent/blood = H.vessel.reagent_list["blood"]
|
||||||
|
blood_splatter(H,blood,1)
|
||||||
|
var/obj/effect/decal/cleanable/blood/splatter/goo = locate() in get_turf(owner)
|
||||||
|
if(goo)
|
||||||
|
goo.name = "husk ichor"
|
||||||
|
goo.desc = "It's thick and stinks of decay."
|
||||||
|
goo.basecolor = "#412464"
|
||||||
|
goo.update_icon()
|
||||||
|
|
||||||
/obj/item/organ/borer
|
/obj/item/organ/borer
|
||||||
name = "cortical borer"
|
name = "cortical borer"
|
||||||
@@ -103,7 +114,6 @@
|
|||||||
|
|
||||||
/obj/item/organ/borer/removed(var/mob/living/target,var/mob/living/user)
|
/obj/item/organ/borer/removed(var/mob/living/target,var/mob/living/user)
|
||||||
|
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
var/mob/living/simple_animal/borer/B = target.has_brain_worms()
|
var/mob/living/simple_animal/borer/B = target.has_brain_worms()
|
||||||
|
|||||||
@@ -249,6 +249,9 @@
|
|||||||
removed_type = /obj/item/organ/brain
|
removed_type = /obj/item/organ/brain
|
||||||
vital = 1
|
vital = 1
|
||||||
|
|
||||||
|
/datum/organ/internal/brain/xeno
|
||||||
|
removed_type = /obj/item/organ/brain/xeno
|
||||||
|
|
||||||
/datum/organ/internal/eyes
|
/datum/organ/internal/eyes
|
||||||
name = "eyes"
|
name = "eyes"
|
||||||
parent_organ = "head"
|
parent_organ = "head"
|
||||||
|
|||||||
@@ -97,6 +97,7 @@
|
|||||||
/obj/item/organ/lungs
|
/obj/item/organ/lungs
|
||||||
name = "lungs"
|
name = "lungs"
|
||||||
icon_state = "lungs"
|
icon_state = "lungs"
|
||||||
|
gender = PLURAL
|
||||||
prosthetic_name = "gas exchange system"
|
prosthetic_name = "gas exchange system"
|
||||||
prosthetic_icon = "lungs-prosthetic"
|
prosthetic_icon = "lungs-prosthetic"
|
||||||
organ_tag = "lungs"
|
organ_tag = "lungs"
|
||||||
@@ -104,6 +105,7 @@
|
|||||||
/obj/item/organ/kidneys
|
/obj/item/organ/kidneys
|
||||||
name = "kidneys"
|
name = "kidneys"
|
||||||
icon_state = "kidneys"
|
icon_state = "kidneys"
|
||||||
|
gender = PLURAL
|
||||||
prosthetic_name = "prosthetic kidneys"
|
prosthetic_name = "prosthetic kidneys"
|
||||||
prosthetic_icon = "kidneys-prosthetic"
|
prosthetic_icon = "kidneys-prosthetic"
|
||||||
organ_tag = "kidneys"
|
organ_tag = "kidneys"
|
||||||
@@ -111,6 +113,7 @@
|
|||||||
/obj/item/organ/eyes
|
/obj/item/organ/eyes
|
||||||
name = "eyeballs"
|
name = "eyeballs"
|
||||||
icon_state = "eyes"
|
icon_state = "eyes"
|
||||||
|
gender = PLURAL
|
||||||
prosthetic_name = "visual prosthesis"
|
prosthetic_name = "visual prosthesis"
|
||||||
prosthetic_icon = "eyes-prosthetic"
|
prosthetic_icon = "eyes-prosthetic"
|
||||||
organ_tag = "eyes"
|
organ_tag = "eyes"
|
||||||
|
|||||||
@@ -365,25 +365,33 @@
|
|||||||
if(!istype(O))
|
if(!istype(O))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(target.species && target.species.has_organ[O.organ_tag])
|
if(!target.species)
|
||||||
|
user << "\red You have no idea what species this person is. Report this on the bug tracker."
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/o_is = (O.gender == PLURAL) ? "are" : "is"
|
||||||
|
var/o_a = (O.gender == PLURAL) ? "" : " a"
|
||||||
|
var/o_do = (O.gender == PLURAL) ? "don't" : "doesn't"
|
||||||
|
|
||||||
|
if(target.species.has_organ[O.organ_tag])
|
||||||
|
|
||||||
if(!O.health)
|
if(!O.health)
|
||||||
user << "\red \The [O.organ_tag] is dead."
|
user << "\red \The [O.organ_tag] [o_is] in no state to be transplanted."
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(!target.internal_organs_by_name[O.organ_tag])
|
if(!target.internal_organs_by_name[O.organ_tag])
|
||||||
organ_missing = 1
|
organ_missing = 1
|
||||||
else
|
else
|
||||||
user << "\red \The [target] already has a [O.organ_tag]." //TODO: grammar.
|
user << "\red \The [target] already has [o_a][O.organ_tag]."
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(O.organ_data && affected.name == O.organ_data.parent_organ)
|
if(O.organ_data && affected.name == O.organ_data.parent_organ)
|
||||||
organ_compatible = 1
|
organ_compatible = 1
|
||||||
else
|
else
|
||||||
user << "\red \The [O.organ_tag] doesn't normally go in \the [affected.display_name]."
|
user << "\red \The [O.organ_tag] [o_do] normally go in \the [affected.display_name]."
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
user << "\red \A [target.species.name] doesn't normally have a [O.organ_tag]." //TODO: grammar.
|
user << "\red \A [target.species.name] doesn't normally have [o_a][O.organ_tag]."
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return ..() && organ_missing && organ_compatible
|
return ..() && organ_missing && organ_compatible
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Reference in New Issue
Block a user