mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-21 03:56:47 +01:00
Adds the Zaddat Race + Modifies pressure damage calculations
This commit is contained in:
@@ -202,6 +202,19 @@
|
||||
/datum/language/seromi/get_random_name(gender)
|
||||
return ..(gender, 1, 4, 1.5)
|
||||
|
||||
|
||||
/datum/language/zaddat
|
||||
name = LANGUAGE_ZADDAT
|
||||
desc = "A harsh buzzing language created by the Zaddat following their exodus from their homeworld."
|
||||
speech_verb = "buzzes"
|
||||
ask_verb = "buzzes"
|
||||
exclaim_verb = "croaks"
|
||||
colour = "zaddat"
|
||||
key = "z"
|
||||
space_chance = 20
|
||||
syllables = list("z", "dz", "i", "iv", "ti", "az", "hix", "xo", "av", "xo", "x", "za", "at", "vi")
|
||||
|
||||
|
||||
//Syllable Lists
|
||||
/*
|
||||
This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed,
|
||||
|
||||
@@ -32,6 +32,28 @@
|
||||
return list(HUMAN_EATING_BLOCKED_MOUTH, blocked)
|
||||
return list(HUMAN_EATING_NO_ISSUE)
|
||||
|
||||
/mob/living/carbon/human/proc/get_coverage()
|
||||
var/list/coverage = list()
|
||||
for(var/obj/item/clothing/C in src)
|
||||
if(item_is_in_hands(C))
|
||||
continue
|
||||
if(C.body_parts_covered & HEAD)
|
||||
coverage += list(organs_by_name[BP_HEAD])
|
||||
if(C.body_parts_covered & UPPER_TORSO)
|
||||
coverage += list(organs_by_name[BP_TORSO])
|
||||
if(C.body_parts_covered & LOWER_TORSO)
|
||||
coverage += list(organs_by_name[BP_GROIN])
|
||||
if(C.body_parts_covered & LEGS)
|
||||
coverage += list(organs_by_name[BP_L_LEG], organs_by_name[BP_R_LEG])
|
||||
if(C.body_parts_covered & ARMS)
|
||||
coverage += list(organs_by_name[BP_R_ARM], organs_by_name[BP_L_ARM])
|
||||
if(C.body_parts_covered & FEET)
|
||||
coverage += list(organs_by_name[BP_L_FOOT], organs_by_name[BP_R_FOOT])
|
||||
if(C.body_parts_covered & HANDS)
|
||||
coverage += list(organs_by_name[BP_L_HAND], organs_by_name[BP_R_HAND])
|
||||
return coverage
|
||||
|
||||
|
||||
//This is called when we want different types of 'cloaks' to stop working, e.g. when attacking.
|
||||
/mob/living/carbon/human/break_cloak()
|
||||
if(mind && mind.changeling) //Changeling visible camo
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
/mob/living/carbon/human/promethean/Initialize(var/new_loc)
|
||||
return ..(new_loc, SPECIES_PROMETHEAN)
|
||||
|
||||
/mob/living/carbon/human/zaddat/New(var/new_loc)
|
||||
return ..(new_loc, SPECIES_ZADDAT)
|
||||
|
||||
/mob/living/carbon/human/monkey/Initialize(var/new_loc)
|
||||
return ..(new_loc, SPECIES_MONKEY)
|
||||
|
||||
|
||||
@@ -159,11 +159,11 @@
|
||||
var/pressure_difference
|
||||
|
||||
// First get the absolute pressure difference.
|
||||
if(pressure < ONE_ATMOSPHERE) // We are in an underpressure.
|
||||
pressure_difference = ONE_ATMOSPHERE - pressure
|
||||
if(pressure < species.safe_pressure) // We are in an underpressure.
|
||||
pressure_difference = species.safe_pressure - pressure
|
||||
|
||||
else //We are in an overpressure or standard atmosphere.
|
||||
pressure_difference = pressure - ONE_ATMOSPHERE
|
||||
pressure_difference = pressure - species.safe_pressure
|
||||
|
||||
if(pressure_difference < 5) // If the difference is small, don't bother calculating the fraction.
|
||||
pressure_difference = 0
|
||||
@@ -176,10 +176,10 @@
|
||||
// The difference is always positive to avoid extra calculations.
|
||||
// Apply the relative difference on a standard atmosphere to get the final result.
|
||||
// The return value will be the adjusted_pressure of the human that is the basis of pressure warnings and damage.
|
||||
if(pressure < ONE_ATMOSPHERE)
|
||||
return ONE_ATMOSPHERE - pressure_difference
|
||||
if(pressure < species.safe_pressure)
|
||||
return species.safe_pressure - pressure_difference
|
||||
else
|
||||
return ONE_ATMOSPHERE + pressure_difference
|
||||
return species.safe_pressure + pressure_difference
|
||||
|
||||
/mob/living/carbon/human/handle_disabilities()
|
||||
..()
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
var/toxins_mod = 1 // Toxloss modifier
|
||||
var/radiation_mod = 1 // Radiation modifier
|
||||
var/flash_mod = 1 // Stun from blindness modifier.
|
||||
var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive
|
||||
var/sound_mod = 1 // Stun from sounds, I.E. flashbangs.
|
||||
var/chemOD_mod = 1 // Damage modifier for overdose
|
||||
var/vision_flags = SEE_SELF // Same flags as glasses.
|
||||
@@ -145,6 +146,7 @@
|
||||
var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning.
|
||||
var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning.
|
||||
var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure.
|
||||
var/safe_pressure = ONE_ATMOSPHERE
|
||||
var/light_dam // If set, mob will be damaged in light over this value and heal in light below its negative.
|
||||
var/minimum_breath_pressure = 16 // Minimum required pressure for breath, in kPa
|
||||
|
||||
|
||||
@@ -308,6 +308,111 @@
|
||||
/datum/species/skrell/can_breathe_water()
|
||||
return TRUE
|
||||
|
||||
/datum/species/zaddat
|
||||
name = SPECIES_ZADDAT
|
||||
name_plural = "Zaddat"
|
||||
icobase = 'icons/mob/human_races/r_zaddat.dmi'
|
||||
deform = 'icons/mob/human_races/r_zaddat.dmi'
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch)
|
||||
brute_mod = 1.15
|
||||
burn_mod = 1.15
|
||||
toxins_mod = 1.5
|
||||
flash_mod = 2
|
||||
flash_burn = 15 //flashing a zaddat probably counts as police brutality
|
||||
metabolic_rate = 0.7 //did u know if your ancestors starved ur body will actually start in starvation mode?
|
||||
gluttonous = 1
|
||||
taste_sensitivity = TASTE_SENSITIVE
|
||||
num_alternate_languages = 3
|
||||
secondary_langs = list(LANGUAGE_ZADDAT, LANGUAGE_UNATHI)
|
||||
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_TERMINUS, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX, LANGUAGE_SOL_COMMON, LANGUAGE_AKHANI, LANGUAGE_SIIK, LANGUAGE_GUTTER) //limited vocal range; can talk Unathi and magical Galcom but not much else
|
||||
name_language = LANGUAGE_ZADDAT
|
||||
species_language = LANGUAGE_ZADDAT
|
||||
health_hud_intensity = 2.5
|
||||
|
||||
minimum_breath_pressure = 20 //have fun with underpressures. any higher than this and they'll be even less suitible for life on the station
|
||||
|
||||
economic_modifier = 3
|
||||
|
||||
min_age = 16
|
||||
max_age = 90
|
||||
|
||||
blurb = "The Zaddat are an Unathi client race only recently introduced to SolGov space. Having evolved on the high-pressure and post-apocalyptic world of Xohok, Zaddat require an environmental suit called a Shroud to survive in usual planetary and station atmospheres. Despite these restrictions, worsening conditions on Xohok and the blessing of the Moghes Hegemony have lead the Zaddat to enter human space in search of work and living space."
|
||||
|
||||
hazard_high_pressure = HAZARD_HIGH_PRESSURE + 500 // Dangerously high pressure.
|
||||
warning_high_pressure = WARNING_HIGH_PRESSURE + 500 // High pressure warning.
|
||||
warning_low_pressure = 300 // Low pressure warning.
|
||||
hazard_low_pressure = 220 // Dangerously low pressure.
|
||||
safe_pressure = 400
|
||||
poison_type = "nitrogen" // technically it's a partial pressure thing but IDK if we can emulate that
|
||||
|
||||
genders = list(FEMALE, PLURAL) //females are polyp-producing, infertile females and males are nigh-identical
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
|
||||
appearance_flags = null
|
||||
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#e2e4a6"
|
||||
blood_color = "#FFCC00" //a gross sort of orange color
|
||||
|
||||
reagent_tag = IS_ZADDAT
|
||||
|
||||
heat_discomfort_strings = list(
|
||||
"Your joints itch.",
|
||||
"You feel uncomfortably warm.",
|
||||
"Your carapace feels like a stove."
|
||||
)
|
||||
|
||||
cold_discomfort_strings = list(
|
||||
"You feel chilly.",
|
||||
"You shiver suddenly.",
|
||||
"Your antenna ache."
|
||||
)
|
||||
|
||||
has_organ = list( //No appendix.
|
||||
O_HEART = /obj/item/organ/internal/heart,
|
||||
O_LUNGS = /obj/item/organ/internal/lungs,
|
||||
O_VOICE = /obj/item/organ/internal/voicebox,
|
||||
O_LIVER = /obj/item/organ/internal/liver,
|
||||
O_KIDNEYS = /obj/item/organ/internal/kidneys,
|
||||
O_BRAIN = /obj/item/organ/internal/brain,
|
||||
O_EYES = /obj/item/organ/internal/eyes
|
||||
)
|
||||
|
||||
descriptors = list(
|
||||
/datum/mob_descriptor/height = 0,
|
||||
/datum/mob_descriptor/build = -1
|
||||
)
|
||||
/datum/species/zaddat/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H.wear_suit) //get rid of job labcoats so they don't stop us from equipping the Shroud
|
||||
qdel(H.wear_suit) //if you know how to gently set it in like, their backpack or whatever, be my guest
|
||||
if(H.wear_mask)
|
||||
qdel(H.wear_mask)
|
||||
if(H.head)
|
||||
qdel(H.head)
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/zaddat/(H), slot_wear_mask) // mask has to come first or Shroud helmet will get in the way
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/space/void/zaddat/(H), slot_wear_suit)
|
||||
|
||||
/datum/species/zaddat/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
|
||||
if(H.inStasisNow())
|
||||
return
|
||||
|
||||
var/damageable = H.get_damageable_organs()
|
||||
var/covered = H.get_coverage()
|
||||
|
||||
var/light_amount = 0 //how much light there is in the place, affects damage
|
||||
if(isturf(H.loc)) //else, there's considered to be no light
|
||||
var/turf/T = H.loc
|
||||
light_amount = T.get_lumcount() * 5
|
||||
|
||||
|
||||
for(var/K in damageable)
|
||||
if(!(K in covered))
|
||||
H.apply_damage(light_amount/4, BURN, K, 0, 0, "Abnormal growths")
|
||||
|
||||
|
||||
/datum/species/diona
|
||||
name = SPECIES_DIONA
|
||||
name_plural = "Dionaea"
|
||||
|
||||
@@ -161,6 +161,7 @@ var/list/ai_verbs_default = list(
|
||||
add_language(LANGUAGE_SIGN, 1)
|
||||
add_language(LANGUAGE_ROOTLOCAL, 1)
|
||||
add_language(LANGUAGE_TERMINUS, 1)
|
||||
add_language(LANGUAGE_ZADDAT, 1)
|
||||
|
||||
if(!safety)//Only used by AIize() to successfully spawn an AI.
|
||||
if (!B)//If there is no player/brain inside.
|
||||
|
||||
@@ -480,12 +480,14 @@
|
||||
user.add_language(LANGUAGE_SIIK)
|
||||
user.add_language(LANGUAGE_AKHANI)
|
||||
user.add_language(LANGUAGE_SKRELLIAN)
|
||||
user.add_language(LANGUAGE_ZADDAT)
|
||||
user.add_language(LANGUAGE_SCHECHI)
|
||||
else
|
||||
user.remove_language(LANGUAGE_UNATHI)
|
||||
user.remove_language(LANGUAGE_SIIK)
|
||||
user.remove_language(LANGUAGE_AKHANI)
|
||||
user.remove_language(LANGUAGE_SKRELLIAN)
|
||||
user.remove_language(LANGUAGE_ZADDAT)
|
||||
user.remove_language(LANGUAGE_SCHECHI)
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
|
||||
@@ -23,7 +23,7 @@ var/global/list/robot_modules = list(
|
||||
var/hide_on_manifest = 0
|
||||
var/channels = list()
|
||||
var/networks = list()
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1)
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1, LANGUAGE_ZADDAT = 0)
|
||||
var/sprites = list()
|
||||
var/can_be_pushed = 1
|
||||
var/no_slip = 0
|
||||
@@ -588,7 +588,8 @@ var/global/list/robot_modules = list(
|
||||
LANGUAGE_SCHECHI = 1,
|
||||
LANGUAGE_EAL = 1,
|
||||
LANGUAGE_TERMINUS = 1,
|
||||
LANGUAGE_SIGN = 0
|
||||
LANGUAGE_SIGN = 0,
|
||||
LANGUAGE_ZADDAT = 1,
|
||||
)
|
||||
|
||||
/obj/item/weapon/robot_module/robot/clerical/butler
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
LANGUAGE_SCHECHI = 0,
|
||||
LANGUAGE_EAL = 1,
|
||||
LANGUAGE_SIGN = 0,
|
||||
LANGUAGE_TERMINUS = 1
|
||||
LANGUAGE_TERMINUS = 1,
|
||||
LANGUAGE_ZADDAT = 0
|
||||
)
|
||||
sprites = list(
|
||||
"Cerberus" = "syndie_bloodhound",
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
add_language(LANGUAGE_SCHECHI, 1)
|
||||
add_language(LANGUAGE_SIGN, 1)
|
||||
add_language(LANGUAGE_TERMINUS, 1)
|
||||
add_language(LANGUAGE_ZADDAT = 0)
|
||||
|
||||
// Lorefolks say it may be so.
|
||||
if(O.client && O.client.prefs)
|
||||
|
||||
Reference in New Issue
Block a user