mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
Merge pull request #1262 from CHOMPStationBot/upstream-merge-9659
[MIRROR] Improved Trait Exclusion Logic
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
#define NEUTRAL_MODE 2
|
||||
#define NEGATIVE_MODE 3
|
||||
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/preferences
|
||||
var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already.
|
||||
var/custom_base // What to base the custom species on
|
||||
@@ -15,6 +18,7 @@
|
||||
var/starting_trait_points = STARTING_SPECIES_POINTS
|
||||
var/max_traits = MAX_SPECIES_TRAITS
|
||||
var/dirty_synth = 0 //Are you a synth
|
||||
var/gross_meatbag = 0 //Where'd I leave my Voight-Kampff test kit?
|
||||
|
||||
// Definition of the stuff for Ears
|
||||
/datum/category_item/player_setup_item/vore/traits
|
||||
@@ -85,8 +89,10 @@
|
||||
|
||||
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
|
||||
pref.dirty_synth = 1
|
||||
else //CHOMPEdit
|
||||
pref.dirty_synth = 0 //CHOMPEdit
|
||||
pref.gross_meatbag = 0
|
||||
else
|
||||
pref.gross_meatbag = 1
|
||||
pref.dirty_synth = 0
|
||||
|
||||
var/datum/species/S = character.species
|
||||
var/SB
|
||||
@@ -276,11 +282,14 @@
|
||||
|
||||
var/conflict = FALSE
|
||||
|
||||
user.isSynthetic() //Recheck just to be sure
|
||||
if(pref.dirty_synth && instance.not_for_synths)//if you are a synth you can't take this trait.
|
||||
alert("You cannot take this trait as a SYNTH.\
|
||||
Please remove that trait, or pick another trait to add.","Error")
|
||||
//pref.dirty_synth = 0 //Just to be sure // Commented out because it allow for someone to take a synth-blacklisted trait CHOMP Edit
|
||||
if(pref.dirty_synth && !(instance.can_take & SYNTHETICS))
|
||||
alert("The trait you've selected can only be taken by organic characters!","Error")
|
||||
//pref.dirty_synth = 0 //Just to be sure //CHOMPEdit this shit broke, stop.
|
||||
return TOPIC_REFRESH
|
||||
|
||||
if(pref.gross_meatbag && !(instance.can_take & ORGANICS))
|
||||
alert("The trait you've selected can only be taken by synthetic characters!","Error")
|
||||
pref.gross_meatbag = 0 //Just to be sure
|
||||
return TOPIC_REFRESH
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/trait/speed_slow
|
||||
name = "Slowdown"
|
||||
desc = "Allows you to move slower on average than baseline."
|
||||
@@ -142,10 +145,10 @@
|
||||
*/
|
||||
/datum/trait/haemophilia
|
||||
name = "Haemophilia - Organics only"
|
||||
desc = "When you bleed, you bleed a LOT. This trait is only for organics, buggy with synths!"
|
||||
desc = "When you bleed, you bleed a LOT."
|
||||
cost = -2
|
||||
var_changes = list("bloodloss_rate" = 2)
|
||||
not_for_synths = 1
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/hollow
|
||||
name = "Hollow Bones/Aluminum Alloy"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
cost = -3
|
||||
var_changes = list("blood_volume" = 375)
|
||||
excludes = list(/datum/trait/less_blood_extreme,/datum/trait/more_blood,/datum/trait/more_blood_extreme)
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/less_blood_extreme
|
||||
name = "Extremely low blood volume"
|
||||
@@ -26,7 +26,7 @@
|
||||
cost = -5
|
||||
var_changes = list("blood_volume" = 224)
|
||||
excludes = list(/datum/trait/less_blood,/datum/trait/more_blood,/datum/trait/more_blood_extreme)
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/scrawny
|
||||
name = "Scrawny"
|
||||
@@ -85,7 +85,7 @@
|
||||
desc = "You have a condition which causes you to spontaneously have hallucinations! Luckily for you, in the modern space age, our doctors have solutions for you, just make sure you don't forget to take your pills."
|
||||
cost = -3
|
||||
special_env = TRUE
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
var/hallucination_max = 60
|
||||
var/hallucination_increase = 3
|
||||
var/episode_length_nomeds_avg = 4000
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/trait/metabolism_up
|
||||
name = "Fast Metabolism"
|
||||
desc = "You process ingested and injected reagents faster, but get hungry faster (Teshari speed)."
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/trait/speed_fast
|
||||
name = "Haste"
|
||||
desc = "Allows you to move faster on average than baseline."
|
||||
@@ -253,7 +256,7 @@
|
||||
cost = 2
|
||||
var_changes = list("cold_level_1" = 200, "cold_level_2" = 150, "cold_level_3" = 90, "breath_cold_level_1" = 180, "breath_cold_level_2" = 100, "breath_cold_level_3" = 60, "cold_discomfort_level" = 210, "heat_level_1" = 305, "heat_level_2" = 360, "heat_level_3" = 700, "breath_heat_level_1" = 345, "breath_heat_level_2" = 380, "breath_heat_level_3" = 780, "heat_discomfort_level" = 295)
|
||||
excludes = list(/datum/trait/hotadapt)
|
||||
not_for_synths = 1 // CHOMP edit
|
||||
can_take = ORGANICS // CHOMP edit
|
||||
|
||||
/datum/trait/hotadapt
|
||||
name = "Heat-Adapted"
|
||||
@@ -261,7 +264,7 @@
|
||||
cost = 2
|
||||
var_changes = list("heat_level_1" = 420, "heat_level_2" = 460, "heat_level_3" = 1100, "breath_heat_level_1" = 440, "breath_heat_level_2" = 510, "breath_heat_level_3" = 1500, "heat_discomfort_level" = 390, "cold_level_1" = 280, "cold_level_2" = 220, "cold_level_3" = 140, "breath_cold_level_1" = 260, "breath_cold_level_2" = 240, "breath_cold_level_3" = 120, "cold_discomfort_level" = 280)
|
||||
excludes = list(/datum/trait/coldadapt)
|
||||
not_for_synths = 1 // CHOMP edit
|
||||
can_take = ORGANICS // CHOMP edit
|
||||
// YW Addition end
|
||||
|
||||
/datum/trait/snowwalker
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
desc = "Your body is able to produce nutrition from being in light."
|
||||
cost = 3
|
||||
var_changes = list("photosynthesizing" = TRUE)
|
||||
not_for_synths = 0 //Synths actually use nutrition, just with a fancy covering.
|
||||
can_take = ORGANICS|SYNTHETICS //Synths actually use nutrition, just with a fancy covering.
|
||||
|
||||
/datum/trait/rad_resistance
|
||||
name = "Radiation Resistance"
|
||||
@@ -54,7 +54,7 @@
|
||||
cost = 3
|
||||
var_changes = list("blood_volume" = 840)
|
||||
excludes = list(/datum/trait/more_blood_extreme,/datum/trait/less_blood,/datum/trait/less_blood_extreme)
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/more_blood_extreme
|
||||
name = "Very high blood volume"
|
||||
@@ -62,7 +62,7 @@
|
||||
cost = 6
|
||||
var_changes = list("blood_volume" = 1400)
|
||||
excludes = list(/datum/trait/more_blood,/datum/trait/less_blood,/datum/trait/less_blood_extreme)
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/heavyweight
|
||||
name = "Heavyweight"
|
||||
@@ -164,7 +164,7 @@
|
||||
desc = "When you get critically damaged, you'll have an adrenaline rush before going down, giving you another chance to finish the fight, or get to safety."
|
||||
cost = 6
|
||||
special_env = TRUE
|
||||
not_for_synths = TRUE
|
||||
can_take = ORGANICS
|
||||
var/last_adrenaline_rush
|
||||
|
||||
/datum/trait/adrenaline_rush/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define ORGANICS 1
|
||||
#define SYNTHETICS 2
|
||||
|
||||
/datum/trait
|
||||
var/name
|
||||
var/desc = "Contact a developer if you see this trait."
|
||||
@@ -5,7 +8,7 @@
|
||||
var/cost = 0 // 0 is neutral, negative cost means negative, positive cost means positive.
|
||||
var/list/var_changes // A list to apply to the custom species vars.
|
||||
var/list/excludes // Store a list of paths of traits to exclude, but done automatically if they change the same vars.
|
||||
var/not_for_synths = FALSE // Can freaking synths use those.
|
||||
var/can_take = ORGANICS|SYNTHETICS // Can freaking synths use those.
|
||||
var/custom_only = TRUE // Trait only available for custom species
|
||||
|
||||
//Proc can be overridden lower to include special changes, make sure to call up though for the vars changes
|
||||
|
||||
Reference in New Issue
Block a user