Adds the Zaddat Race + Modifies pressure damage calculations (#5869)
* Redoes the suit-wearing bugs, renaming them to the Zaddat. (If this shows up on the main Polaris repo, I fucked it again, please yell at me until I unfuck it) * finishes the zaddat species pending someone yelling at me and or me getting more/better sprites adds three new accessories of dubious stylistic value for the gaudy-ass suit people * i lied engineers and other Zaddat who start with a hat will no longer burn in the harsh light of the station. scarves and other decor items can now be equipped to space suits. cape, half-cape, and sash items now have valid slot flags * gives zad a larynx * gives Zaddat assisted languages * zad sprites now have weird growths * activate starvation mode * mask is now red-faced so as not to give the zaddat skin cancer * adds shrouds and zaddat hypos to cargo. renames zaddat hypos to glucose hypos since like, technically anyone can use them * aand adds zad hypos to the fitness machines. thanks for letting us not starve, spacer guild * adds zad hypos to the fitness vendor * new purple zaddat icons (untested, probably fine) * appeases anewbe * something bad has happened * Updates Zaddat per forum discussion Flashes now deal significant burn to zaddat, enough to put them in crit with two flashes Zaddat (and diona and vox) can no longer wear rigs Shrouds no longer protect against shock damage, but do protect against radiation damage Prometheans can now wear shrouds Sprites are much prettier * adds changelog * Update zaddat.yml * appeases anewbe
@@ -25,6 +25,7 @@
|
||||
#define IS_XENOS 6
|
||||
#define IS_TESHARI 7
|
||||
#define IS_SLIME 8
|
||||
#define IS_ZADDAT 9
|
||||
|
||||
#define CE_STABLE "stable" // Inaprovaline
|
||||
#define CE_ANTIBIOTIC "antibiotic" // Antibiotics
|
||||
|
||||
@@ -264,6 +264,7 @@
|
||||
#define SPECIES_PROMETHEAN "Promethean"
|
||||
#define SPECIES_DIONA "Diona"
|
||||
#define SPECIES_VOX "Vox"
|
||||
#define SPECIES_ZADDAT "Zaddat"
|
||||
|
||||
// Monkey and alien monkeys.
|
||||
#define SPECIES_MONKEY "Monkey"
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#define LANGUAGE_EVENT1 "Occursus"
|
||||
#define LANGUAGE_AKHANI "Akhani"
|
||||
#define LANGUAGE_ALAI "Alai"
|
||||
#define LANGUAGE_ZADDAT "Vedahq"
|
||||
#define LANGUAGE_GIBBERISH "Babel"
|
||||
|
||||
// Language flags.
|
||||
|
||||
@@ -52,4 +52,9 @@
|
||||
name = "Merchant - Vox"
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots/toeless
|
||||
uniform = /obj/item/clothing/under/vox/vox_robes
|
||||
suit = /obj/item/clothing/suit/armor/vox_scrap
|
||||
suit = /obj/item/clothing/suit/armor/vox_scrap
|
||||
|
||||
/decl/hierarchy/outfit/zaddat
|
||||
name = "Zaddat Suit"
|
||||
suit = /obj/item/clothing/suit/space/void/zaddat/
|
||||
mask = /obj/item/clothing/mask/gas/zaddat
|
||||
@@ -135,3 +135,12 @@
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Holoplant crate"
|
||||
|
||||
/datum/supply_pack/misc/glucose_hypos
|
||||
name = "Glucose Hypoinjectors"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5
|
||||
)
|
||||
cost = 25
|
||||
containertype = "obj/structure/closet/crate"
|
||||
containername = "Glucose Hypo Crate"
|
||||
@@ -212,4 +212,15 @@
|
||||
cost = 50
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Frontier Mining voidsuit crate"
|
||||
access = access_mining
|
||||
access = access_mining
|
||||
|
||||
/datum/supply_pack/voidsuits/zaddat
|
||||
name = "Zaddat Shroud"
|
||||
contains = list(
|
||||
/obj/item/clothing/suit/space/void/zaddat = 1,
|
||||
/obj/item/clothing/mask/gas/zaddat = 1
|
||||
)
|
||||
cost = 30
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Zaddat Shroud crate"
|
||||
access = null
|
||||
@@ -803,6 +803,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 5,
|
||||
/obj/item/weapon/reagent_containers/pill/diet = 25,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5,
|
||||
/obj/item/weapon/towel/random = 40)
|
||||
|
||||
contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4)
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
H.eye_blurry = max(H.eye_blurry, flash_strength + 5)
|
||||
H.flash_eyes()
|
||||
H.adjustHalLoss(halloss_per_flash * (flash_strength / 5)) // Should take four flashes to stun.
|
||||
H.apply_damage(flash_strength * H.species.flash_burn/5, BURN, BP_HEAD, 0, 0, "Photon burns")
|
||||
|
||||
else
|
||||
flashfail = 1
|
||||
|
||||
@@ -217,5 +217,6 @@
|
||||
R.add_language(LANGUAGE_SCHECHI, 1)
|
||||
R.add_language(LANGUAGE_ROOTLOCAL, 1)
|
||||
R.add_language(LANGUAGE_TERMINUS, 1)
|
||||
R.add_language(LANGUAGE_ZADDAT, 1)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -49,7 +49,8 @@
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk = 6,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/soymilk = 4,
|
||||
/obj/item/weapon/storage/fancy/egg_box = 4)
|
||||
/obj/item/weapon/storage/fancy/egg_box = 4,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 2)
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/freezer/money
|
||||
|
||||
@@ -194,7 +194,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
/obj/item/device/camera,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/paicard
|
||||
/obj/item/device/paicard,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose
|
||||
)
|
||||
|
||||
uncommon_loot = list(
|
||||
|
||||
@@ -242,6 +242,22 @@
|
||||
display_name = "locket"
|
||||
path = /obj/item/clothing/accessory/locket
|
||||
|
||||
/datum/gear/accessory/halfcape
|
||||
display_name = "half cape"
|
||||
path = /obj/item/clothing/accessory/halfcape
|
||||
|
||||
/datum/gear/accessory/fullcape
|
||||
display_name = "full cape"
|
||||
path = /obj/item/clothing/accessory/fullcape
|
||||
|
||||
/datum/gear/accessory/sash
|
||||
display_name = "sash (colorable)"
|
||||
path = /obj/item/clothing/accessory/sash
|
||||
|
||||
/datum/gear/accessory/sash/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/accessory/asym
|
||||
display_name = "asymmetric jacket selection"
|
||||
path = /obj/item/clothing/accessory/asymmetric
|
||||
@@ -257,4 +273,4 @@
|
||||
|
||||
/datum/gear/accessory/cowledvest
|
||||
display_name = "cowled vest"
|
||||
path = /obj/item/clothing/accessory/cowledvest
|
||||
path = /obj/item/clothing/accessory/cowledvest
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// Alien clothing.
|
||||
|
||||
/datum/gear/suit/zhan_furs
|
||||
display_name = "Zhan-Khazan furs (Tajaran)"
|
||||
path = /obj/item/clothing/suit/tajaran/furs
|
||||
|
||||
@@ -84,6 +84,16 @@
|
||||
feeding_port(user)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/gas/zaddat
|
||||
name = "Zaddat Veil"
|
||||
desc = "A clear survival mask used by the Zaddat to filter out harmful nitrogen. Can be connected to an air supply and reconfigured to allow for safe eating."
|
||||
icon_state = "zaddat_mask"
|
||||
item_state = "zaddat_mask"
|
||||
//body_parts_covered = 0
|
||||
species_restricted = list(SPECIES_ZADDAT)
|
||||
flags_inv = HIDEEARS //semi-transparent
|
||||
filtered_gases = list("phoron", "nitrogen", "sleeping_agent")
|
||||
|
||||
/obj/item/clothing/mask/gas/syndicate
|
||||
name = "tactical mask"
|
||||
desc = "A close-fitting tactical mask that can be connected to an air supply."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
SPECIES_VOX = 'icons/mob/species/vox/head.dmi',
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi'
|
||||
)
|
||||
species_restricted = null
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig
|
||||
name = "gauntlets"
|
||||
@@ -25,7 +25,7 @@
|
||||
body_parts_covered = HANDS
|
||||
heat_protection = HANDS
|
||||
cold_protection = HANDS
|
||||
species_restricted = null
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
|
||||
gender = PLURAL
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig
|
||||
@@ -33,7 +33,7 @@
|
||||
body_parts_covered = FEET
|
||||
cold_protection = FEET
|
||||
heat_protection = FEET
|
||||
species_restricted = null
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
|
||||
gender = PLURAL
|
||||
icon_base = null
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi'
|
||||
)
|
||||
supporting_limbs = list()
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
|
||||
var/obj/item/weapon/material/knife/tacknife
|
||||
|
||||
/obj/item/clothing/suit/space/rig/attack_hand(var/mob/living/M)
|
||||
@@ -114,6 +115,7 @@
|
||||
heat_protection = HEAD|FACE|EYES
|
||||
cold_protection = HEAD|FACE|EYES
|
||||
flags = THICKMATERIAL|AIRTIGHT
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/suit/lightrig
|
||||
name = "suit"
|
||||
@@ -123,6 +125,7 @@
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags = THICKMATERIAL
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/shoes/lightrig
|
||||
name = "boots"
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
siemens_coefficient = 0.9
|
||||
species_restricted = list("exclude",SPECIES_DIONA)
|
||||
preserve_item = 1
|
||||
|
||||
valid_accessory_slots = (ACCESSORY_SLOT_OVER | ACCESSORY_SLOT_ARMBAND | ACCESSORY_SLOT_DECOR)
|
||||
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
|
||||
|
||||
/obj/item/clothing/suit/space/equipped(mob/M)
|
||||
|
||||
97
code/modules/clothing/spacesuits/void/zaddat.dm
Normal file
@@ -0,0 +1,97 @@
|
||||
/obj/item/clothing/head/helmet/space/void/zaddat
|
||||
name = "\improper Hegemony Shroud helmet"
|
||||
desc = "A Hegemony-designed utilitarian environment suit helmet, still common among the Spacer Zaddat."
|
||||
icon_state = "zaddat_hegemony"
|
||||
item_state_slots = list(slot_r_hand_str = "syndicate", slot_l_hand_str = "syndicate")
|
||||
heat_protection = HEAD
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 70) //realistically would have some armor but balance.
|
||||
siemens_coefficient = 1
|
||||
|
||||
species_restricted = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN) //on request from maintainer
|
||||
|
||||
/obj/item/clothing/suit/space/void/zaddat
|
||||
name = "\improper Hegemony Shroud"
|
||||
desc = "A Hegemony environment suit, still favored by the Spacer Zaddat because of its durability and ease of manufacture."
|
||||
slowdown = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 70)
|
||||
siemens_coefficient = 1
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank)
|
||||
icon_state = "zaddat_hegemony"
|
||||
helmet = new/obj/item/clothing/head/helmet/space/void/zaddat //shrouds come with helmets built-in
|
||||
var/has_been_customized = FALSE
|
||||
|
||||
species_restricted = list(SPECIES_ZADDAT, SPECIES_PROMETHEAN)
|
||||
|
||||
breach_threshold = 12
|
||||
|
||||
/obj/item/clothing/suit/space/void/zaddat/verb/custom_suit()
|
||||
set name = "Customize Shroud"
|
||||
set category = "Object"
|
||||
set desc = "Pick an appearence for your Shroud."
|
||||
|
||||
var/mob/M = usr
|
||||
var/suit_style = null
|
||||
|
||||
if(has_been_customized)
|
||||
to_chat(M, "This Shroud has already been customized!")
|
||||
return 0
|
||||
|
||||
suit_style = input(M, "Which suit style would you like?") in list("Engineer", "Spacer", "Knight", "Fashion", "Bishop", "Hegemony")
|
||||
switch(suit_style)
|
||||
if("Engineer")
|
||||
name = "\improper Engineer's Guild Shroud"
|
||||
desc = "This rugged Shroud was created by the Xozi Engineering Guild."
|
||||
icon_state = "zaddat_engie"
|
||||
item_state = "zaddat_engie"
|
||||
if(helmet)
|
||||
helmet.name = "\improper Engineer's Guild Shroud helmet"
|
||||
helmet.desc = "A Shroud helmet designed for good visibility in low-light environments."
|
||||
helmet.icon_state = "zaddat_engie"
|
||||
helmet.item_state = "zaddat_engie"
|
||||
if("Spacer")
|
||||
name = "\improper Spacer's Guild Shroud"
|
||||
desc = "The blue plastic Shroud worn by members of the Zaddat Spacer's Guild."
|
||||
icon_state = "zaddat_spacer"
|
||||
item_state = "zaddat_spacer"
|
||||
if(helmet)
|
||||
helmet.name = "\improper Spacer's Guild Shroud helmet"
|
||||
helmet.desc = "A cool plastic-and-glass helmet designed after popular adventure fiction."
|
||||
helmet.icon_state = "zaddat_spacer"
|
||||
helmet.item_state = "zaddat_spacer"
|
||||
if("Knight")
|
||||
name = "\improper Knight's Shroud"
|
||||
desc = "This distinctive steel-plated Shroud was popularized by the Noble Guild."
|
||||
icon_state = "zaddat_knight"
|
||||
item_state = "zaddat_knight"
|
||||
if(helmet)
|
||||
helmet.name = "\improper Knight's Shroud helm"
|
||||
helmet.desc = "This spaceworthy helmet was patterned after the knight's helmets used by Zaddat before their discovery by the Unathi."
|
||||
helmet.icon_state = "zaddat_knight"
|
||||
helmet.item_state = "zaddat_knight"
|
||||
if("Fashion")
|
||||
name = "\improper Avazi House Shroud"
|
||||
desc = "The designers of the Avazi Fashion House are among the most renowned in Zaddat society, and their Shroud designs second to none."
|
||||
icon_state = "zaddat_fashion"
|
||||
item_state = "zaddat_fashion"
|
||||
if(helmet)
|
||||
helmet.name = "\improper Avazi House Shroud helmet"
|
||||
helmet.desc = "The Avazi Fashion House recently designed this popular Shroud helmet, designed to pleasingly frame a Zaddat's face."
|
||||
helmet.icon_state = "zaddat_fashion"
|
||||
helmet.item_state = "zaddat_fashion"
|
||||
if("Bishop")
|
||||
name = "\improper Bishop-patterned Shroud"
|
||||
desc = "The bold designers of the Dzaz Fashion House chose to make this Bishop-themed Shroud design as a commentary on the symbiotic nature of Vanax and human culture. Allegedly."
|
||||
icon_state = "zaddat_bishop"
|
||||
item_state = "zaddat_bishop"
|
||||
if(helmet)
|
||||
helmet.name = "\improper Bishop-patterned Shroud helmet"
|
||||
helmet.desc = "The Shroud helmet that inspired a dozen lawsuits."
|
||||
helmet.icon_state = "zaddat_bishop"
|
||||
helmet.item_state = "zaddat_bishop"
|
||||
|
||||
to_chat(M, "You finish customizing your Shroud. Looking good!")
|
||||
has_been_customized = TRUE
|
||||
M.regenerate_icons()
|
||||
return 1
|
||||
@@ -395,3 +395,21 @@
|
||||
..(newloc, "glass")
|
||||
|
||||
..()
|
||||
|
||||
/obj/item/clothing/accessory/halfcape
|
||||
name = "half cape"
|
||||
desc = "A tasteful half-cape, suitible for European nobles and retro anime protagonists."
|
||||
icon_state = "halfcape"
|
||||
slot = ACCESSORY_SLOT_DECOR
|
||||
|
||||
/obj/item/clothing/accessory/fullcape
|
||||
name = "full cape"
|
||||
desc = "A gaudy full cape. You're thinking about wearing it, aren't you?"
|
||||
icon_state = "fullcape"
|
||||
slot = ACCESSORY_SLOT_DECOR
|
||||
|
||||
/obj/item/clothing/accessory/sash
|
||||
name = "sash"
|
||||
desc = "A plain, unadorned sash."
|
||||
icon_state = "sash"
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
@@ -9,7 +9,8 @@ var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/sna
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose)
|
||||
|
||||
var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -158,11 +158,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
|
||||
@@ -175,10 +175,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
|
||||
@@ -585,7 +585,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)
|
||||
|
||||
@@ -242,6 +242,11 @@
|
||||
desc = "A refined version of the standard autoinjector, allowing greater capacity. This one excels at treating damage to bones."
|
||||
filled_reagents = list("inaprovaline" = 5, "osteodaxon" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose
|
||||
name = "glucose hypo"
|
||||
desc = "A hypoinjector filled with glucose, used for critically malnourished patients and voidsuited workers."
|
||||
filled_reagents = list("glucose" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/stimm
|
||||
name = "stimm injector"
|
||||
desc = "A refined version of the standard autoinjector, allowing greater capacity. \
|
||||
@@ -346,4 +351,4 @@
|
||||
. = ..()
|
||||
if(.) // Will occur if successfully injected.
|
||||
infect_mob_random_lesser(H)
|
||||
add_attack_logs(user, H, "Infected \the [H] with \the [src], by \the [user].")
|
||||
add_attack_logs(user, H, "Infected \the [H] with \the [src], by \the [user].")
|
||||
|
||||
@@ -98,6 +98,7 @@ h1.alert, h2.alert {color: #000000;}
|
||||
.solcom {color: #22228B;}
|
||||
.changeling {color: #800080;}
|
||||
.vox {color: #AA00AA;}
|
||||
.zaddat {color: #941C1C;}
|
||||
.rough {font-family: "Trebuchet MS", cursive, sans-serif;}
|
||||
.say_quote {font-family: Georgia, Verdana, sans-serif;}
|
||||
.terminus {font-family: "Times New Roman", Times, serif, sans-serif}
|
||||
|
||||
41
html/changelogs/zaddat.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Elgeonmb
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Added the Zaddat species, voidsuit-clad fragile bug people. Whitelist applications will be available at a later date."
|
||||
- rscadd: "Added glucose hypos to the SWEATMAX vendors and a few other places thoughout the station."
|
||||
- rscadd: "Zaddat equipment is now available through cargo."
|
||||
- rscadd: "Some new, very very chuuni accessories to play with; the half cape, the full cape, and the sash"
|
||||
- tweak: "Most accessories can now fit on suits."
|
||||
- rscdel: "Dionaea and vox can no longer use station rigs."
|
||||
|
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 202 KiB |
BIN
icons/mob/human_races/r_def_zaddat.dmi
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
icons/mob/human_races/r_zaddat.dmi
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 43 KiB |
@@ -1483,6 +1483,7 @@
|
||||
#include "code\modules\clothing\spacesuits\void\station.dm"
|
||||
#include "code\modules\clothing\spacesuits\void\void.dm"
|
||||
#include "code\modules\clothing\spacesuits\void\wizard.dm"
|
||||
#include "code\modules\clothing\spacesuits\void\zaddat.dm"
|
||||
#include "code\modules\clothing\suits\armor.dm"
|
||||
#include "code\modules\clothing\suits\bio.dm"
|
||||
#include "code\modules\clothing\suits\hooded.dm"
|
||||
|
||||