Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/~yogs_defines/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
#define is_shadow_or_thrall(M) (is_thrall(M) || is_shadow(M))

#define isspacepod(A) (istype(A, /obj/spacepod))

#define ispreternis(A) (is_species(A, /datum/species/preternis))
13 changes: 13 additions & 0 deletions code/__DEFINES/~yogs_defines/mobs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#define PRETERNIS_LEVEL_FULL 550
#define PRETERNIS_LEVEL_WELL_FED 450
#define PRETERNIS_LEVEL_FED 350
#define PRETERNIS_LEVEL_HUNGRY 250
#define PRETERNIS_LEVEL_STARVING 150
#define PRETERNIS_LEVEL_NONE 0

#define ELECTRICITY_TO_NUTRIMENT_FACTOR 0.44 //1 power unit to 44 preternis charge they can uncharge an apc to 50% at most

#define PRETERNIS_NV_OFF 2 //numbers of tile they can see
#define PRETERNIS_NV_ON 8

#define BODYPART_ANY -1 //use this when healing with something that needs a specefied bodypart type for all
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/damage_procs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
var/list/obj/item/bodypart/parts = list()
for(var/X in bodyparts)
var/obj/item/bodypart/BP = X
if(status && (BP.status != status))
if(!(status == BODYPART_ANY) && (status && (BP.status != status))) //yogs - allows robot limb healing override
continue
if((brute && BP.brute_dam) || (burn && BP.burn_dam) || (stamina && BP.stamina_dam))
parts += BP
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/dynamic_fhair_suffix = ""

//for augmented heads
if(HD.status == BODYPART_ROBOTIC)
if(HD.status == BODYPART_ROBOTIC && !yogs_draw_robot_hair) //yogs - allow for robot head hair
return

//we check if our hat or helmet hides our facial hair.
Expand Down
6 changes: 3 additions & 3 deletions code/modules/surgery/bodyparts/bodyparts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
if(owner && (owner.status_flags & GODMODE))
return FALSE //godmode

if(required_status && (status != required_status))
if(!(required_status == -1) && (required_status && (status != required_status))) //yogs -- adds in BODYPART_ANY
return FALSE

var/dmg_mlt = CONFIG_GET(number/damage_multiplier)
Expand Down Expand Up @@ -197,8 +197,8 @@
//Damage cannot go below zero.
//Cannot remove negative damage (i.e. apply damage)
/obj/item/bodypart/proc/heal_damage(brute, burn, stamina, required_status, updating_health = TRUE)

if(required_status && (status != required_status)) //So we can only heal certain kinds of limbs, ie robotic vs organic.
// yogs -- line below updated to allow for robotic body part healing override
if(!(required_status == BODYPART_ANY) && (required_status && (status != required_status)) ) //So we can only heal certain kinds of limbs, ie robotic vs organic.
return

brute_dam = round(max(brute_dam - brute, 0), DAMAGE_PRECISION)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/surgery/bodyparts/head.dm
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@
. = ..()
if(dropped) //certain overlays only appear when the limb is being detached from its owner.

if(status != BODYPART_ROBOTIC) //having a robotic head hides certain features.
if(status != BODYPART_ROBOTIC || yogs_draw_robot_hair) //having a robotic head hides certain features. //yogs -- preternis hair
//facial hair
if(facial_hair_style)
var/datum/sprite_accessory/S = GLOB.facial_hair_styles_list[facial_hair_style]
Expand Down
3 changes: 2 additions & 1 deletion code/modules/surgery/organs/tongue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
/datum/language/ratvar,
/datum/language/aphasia,
/datum/language/piratespeak,
/datum/language/japanese //yogs
/datum/language/japanese,
/datum/language/machine //yogs
))

/obj/item/organ/tongue/Initialize(mapload)
Expand Down
1 change: 1 addition & 0 deletions config/game_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@ ROUNDSTART_RACES lizard
#ROUNDSTART_RACES moth
ROUNDSTART_RACES plasmaman
#ROUNDSTART_RACES shadow
ROUNDSTART_RACES preternis

## Races that are better than humans in some ways, but worse in others
ROUNDSTART_RACES ethereal
Expand Down
8 changes: 8 additions & 0 deletions yogstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
#include "code\__DEFINES\~yogs_defines\keybindings.dm"
#include "code\__DEFINES\~yogs_defines\logging.dm"
#include "code\__DEFINES\~yogs_defines\mentor.dm"
#include "code\__DEFINES\~yogs_defines\mobs.dm"
#include "code\__DEFINES\~yogs_defines\preferences.dm"
#include "code\__DEFINES\~yogs_defines\shuttles.dm"
#include "code\__DEFINES\~yogs_defines\spacepods.dm"
Expand Down Expand Up @@ -2813,7 +2814,9 @@
#include "yogstation\code\datums\components\uplink.dm"
#include "yogstation\code\datums\components\walks.dm"
#include "yogstation\code\datums\components\storage\storage.dm"
#include "yogstation\code\datums\diseases\_MobProcs.dm"
#include "yogstation\code\datums\diseases\cluwnification.dm"
#include "yogstation\code\datums\diseases\advance\advance.dm"
#include "yogstation\code\datums\diseases\advance\symptoms\confusion.dm"
#include "yogstation\code\datums\diseases\advance\symptoms\heal.dm"
#include "yogstation\code\datums\mood_events\generic_positive_events.dm"
Expand Down Expand Up @@ -3071,6 +3074,10 @@
#include "yogstation\code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\lizard.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\plantpeople.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\preternis\organs.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\preternis\power_suck.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\preternis\preternis.dm"
#include "yogstation\code\modules\mob\living\carbon\human\species_types\preternis\screen_alerts.dm"
#include "yogstation\code\modules\mob\living\silicon\silicon.dm"
#include "yogstation\code\modules\mob\living\silicon\ai\ai.dm"
#include "yogstation\code\modules\mob\living\silicon\ai\vox_sounds.dm"
Expand Down Expand Up @@ -3159,6 +3166,7 @@
#include "yogstation\code\modules\stock_market\logs.dm"
#include "yogstation\code\modules\stock_market\stockmarket.dm"
#include "yogstation\code\modules\stock_market\stocks.dm"
#include "yogstation\code\modules\surgery\bodypart.dm"
#include "yogstation\code\modules\surgery\tools.dm"
#include "yogstation\code\modules\surgery\organs\shadowling_organs.dm"
#include "yogstation\code\modules\uplink\uplink_item.dm"
Expand Down
5 changes: 5 additions & 0 deletions yogstation/code/datums/diseases/_MobProcs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
var/infectchance = dna.species ? dna.species.yogs_virus_infect_chance : 100 //will this compile? who knows
if(prob(infectchance))
return ..()
return FALSE
9 changes: 9 additions & 0 deletions yogstation/code/datums/diseases/advance/advance.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/datum/disease/advance/Refresh(new_name)
..()
if(affected_mob?.dna)
var/datum/species/S = affected_mob.dna.species
properties["resistance"] += S.virus_resistance_boost
properties["stealth"] += S.virus_stealth_boost
properties["stage_rate"] += S.virus_stage_rate_boost
properties["transmittable"] += S.virus_transmittable_boost
AssignProperties() //this is a bit inefficent because its called twice but modularization amiright?
26 changes: 24 additions & 2 deletions yogstation/code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,30 @@
////////////////////
/obj/item/bodypart
var/should_draw_yogs = FALSE

/mob/living/carbon/proc/draw_yogs_parts(do_it)
for(var/O in bodyparts)
var/obj/item/bodypart/B = O
B.should_draw_yogs = do_it
B.should_draw_yogs = do_it

/datum/species
var/yogs_draw_robot_hair = FALSE //DAMN ROBOTS STEALING OUR HAIR AND AIR
var/yogs_virus_infect_chance = 100
var/virus_resistance_boost = 0
var/virus_stealth_boost = 0
var/virus_stage_rate_boost = 0
var/virus_transmittable_boost = 0

/datum/species/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
. = ..()
if(yogs_draw_robot_hair)
for(var/obj/item/bodypart/BP in C.bodyparts)
BP.yogs_draw_robot_hair = TRUE

/datum/species/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
. = ..()
for(var/obj/item/bodypart/BP in C.bodyparts)
BP.yogs_draw_robot_hair = initial(BP.yogs_draw_robot_hair)

/datum/species/proc/spec_AltClickOn(atom/A,mob/living/carbon/human/H)
return FALSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/obj/item/organ/eyes/preternis
name = "preternis eyes"
desc = "An experimental upgraded version of eyes that can see in the dark.They are designed to fit preternis"
see_in_dark = PRETERNIS_NV_ON
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
actions_types = list(/datum/action/item_action/organ_action/use)
var/night_vision = TRUE

/obj/item/organ/eyes/preternis/ui_action_click()
var/datum/species/preternis/S = owner.dna.species
if(S.charge < PRETERNIS_LEVEL_FED)
return
sight_flags = initial(sight_flags)
switch(lighting_alpha)
if (LIGHTING_PLANE_ALPHA_VISIBLE)
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
if (LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE)
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
if (LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE)
lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
else
lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE
sight_flags &= ~SEE_BLACKNESS
owner.update_sight()

/obj/item/organ/eyes/preternis/on_life()
. = ..()
if(!ispreternis(owner))
qdel(src) //these eyes depend on being inside a preternis
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't you like, just make them not work rather than making a specieschange mean they lose their eyes permanently?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i tought so too but it gives them new eyes of the other species when they switch so this just affects transplants and its not meant to be in a preternis and this is wasted process cycles otherwise,tell me if its mandatory i change this

return
var/datum/species/preternis/S = owner.dna.species
if(S.charge >= PRETERNIS_LEVEL_FED)
if(see_in_dark == PRETERNIS_NV_OFF)
see_in_dark = PRETERNIS_NV_ON
owner.update_sight()
else
if(see_in_dark == PRETERNIS_NV_ON)
see_in_dark = PRETERNIS_NV_OFF
owner.update_sight()
if(lighting_alpha < LIGHTING_PLANE_ALPHA_VISIBLE)
lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE
sight_flags &= ~SEE_BLACKNESS
owner.update_sight()

/obj/item/organ/lungs/preternis
name = "preternis lungs"
desc = "An experimental set of lungs.Due to the cybernetic nature of these lungs,they are less resistant to heat and cold but are more efficent at filtering oxygen."
icon_state = "lungs-c"
safe_oxygen_min = 12
safe_toxins_max = 10
gas_stimulation_min = 0.1 //fucking filters removing my stimulants

cold_level_1_threshold = 280
cold_level_1_damage = 1.5
cold_level_2_threshold = 260
cold_level_2_damage = 3
cold_level_3_threshold = 200
cold_level_3_damage = 4.5

heat_level_1_threshold = 320
heat_level_2_threshold = 400
heat_level_3_threshold = 600 //HALP MY LUNGS ARE ON FIRE
Loading