diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index b86052793c3..855196a9a4e 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -63,16 +63,18 @@
var/loyalty = 1
if(H.client)
switch(H.client.prefs.nanotrasen_relation)
- if(COMPANY_LOYAL) loyalty = 1.30
- if(COMPANY_SUPPORTATIVE)loyalty = 1.15
- if(COMPANY_NEUTRAL) loyalty = 1
- if(COMPANY_SKEPTICAL) loyalty = 0.85
- if(COMPANY_OPPOSED) loyalty = 0.70
+ if(COMPANY_LOYAL) loyalty = 1.30
+ if(COMPANY_SUPPORTATIVE) loyalty = 1.15
+ if(COMPANY_NEUTRAL) loyalty = 1
+ if(COMPANY_SKEPTICAL) loyalty = 0.85
+ if(COMPANY_OPPOSED) loyalty = 0.70
//give them an account in the station database
- var/species_modifier = (H.species ? economic_species_modifier[H.species.type] : 2)
- if(!species_modifier)
- species_modifier = economic_species_modifier[/datum/species/human]
+ var/species_modifier = (H.species ? H.species.economic_modifier : null)
+ if (!species_modifier)
+ var/datum/species/human_species = global.all_species["Human"]
+ species_modifier = human_species.economic_modifier
+ PROCLOG_WEIRD("species [H.species || "NULL"] did not have a set economic_modifier!")
var/money_amount = (rand(5,50) + rand(5, 50)) * loyalty * economic_modifier * species_modifier
var/datum/money_account/M = create_account(H.real_name, money_amount, null)
@@ -133,25 +135,14 @@
var/loyalty = 1
if(H.client)
switch(H.client.prefs.nanotrasen_relation)
- if(COMPANY_LOYAL) loyalty = 3
- if(COMPANY_SUPPORTATIVE)loyalty = 2
- if(COMPANY_NEUTRAL) loyalty = 1
- if(COMPANY_SKEPTICAL) loyalty = -2
- if(COMPANY_OPPOSED) loyalty = -3
+ if(COMPANY_LOYAL) loyalty = 3
+ if(COMPANY_SUPPORTATIVE) loyalty = 2
+ if(COMPANY_NEUTRAL) loyalty = 1
+ if(COMPANY_SKEPTICAL) loyalty = -2
+ if(COMPANY_OPPOSED) loyalty = -3
//give them an account in the station database
- var/species_modifier = 0
- if(economic_species_modifier[H.species.type])
- switch(economic_species_modifier[H.species.type])
- if(/datum/species/human) species_modifier = 0
- if(/datum/species/skrell) species_modifier = 0
- if(/datum/species/tajaran) species_modifier = -2
- if(/datum/species/unathi) species_modifier = -2
- if(/datum/species/diona) species_modifier = -4
- if(/datum/species/machine) species_modifier = -4
- if(/datum/species/bug) species_modifier = -6
- else species_modifier = -3
-
+ var/species_modifier = min((H.species ? H.species.economic_modifier : 0) - 9, 0)
var/wealth = (loyalty + economic_modifier + species_modifier)
diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm
index f9b7ca07740..db8bf5bb1d1 100644
--- a/code/modules/economy/economy_misc.dm
+++ b/code/modules/economy/economy_misc.dm
@@ -46,17 +46,6 @@
#define GEAR_EVA 15
-
-/var/list/economic_species_modifier = list(
- /datum/species/human = 12,
- /datum/species/skrell = 10,
- /datum/species/tajaran = 7,
- /datum/species/unathi = 7,
- /datum/species/diona = 3,
- /datum/species/machine = 3,
- /datum/species/bug = 1
- )
-
//---- The following corporations are friendly with NanoTrasen and loosely enable trade and travel:
//Corporation NanoTrasen - Generalised / high tech research and phoron exploitation.
//Corporation Vessel Contracting - Ship and station construction, materials research.
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 852c614ee31..9027b8a8077 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -13,6 +13,7 @@
var/bodytype
var/age_min = 17
var/age_max = 85
+ var/economic_modifier = 0
// Icon/appearance vars.
var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set.
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index b5f659f3ec0..e45345c526e 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -5,8 +5,15 @@
name_plural = "Humans"
bodytype = "Human"
age_max = 125
+ economic_modifier = 12
+
primitive_form = "Monkey"
- unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite)
+ unarmed_types = list(
+ /datum/unarmed_attack/stomp,
+ /datum/unarmed_attack/kick,
+ /datum/unarmed_attack/punch,
+ /datum/unarmed_attack/bite
+ )
blurb = "Humanity originated in the Sol system, and over the last four centuries has spread colonies across a wide swathe of space. \
They hold a wide range of forms and creeds.
\
The Sol Alliance is still massively influential, but independent human nations have managed to shake off its dominance and forge their \
@@ -21,7 +28,7 @@
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR | HAS_SOCKS
remains_type = /obj/effect/decal/remains/human
- stamina = 130 // Humans can sprint for longer than any other species
+ stamina = 130 // Humans can sprint for longer than any other species
stamina_recovery = 5
sprint_speed_factor = 0.9
sprint_cost_factor = 0.5
@@ -35,7 +42,12 @@
deform = 'icons/mob/human_races/r_def_lizard.dmi'
tail = "sogtail"
tail_animation = 'icons/mob/species/unathi/tail.dmi'
- unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
+ unarmed_types = list(
+ /datum/unarmed_attack/stomp,
+ /datum/unarmed_attack/kick,
+ /datum/unarmed_attack/claws,
+ /datum/unarmed_attack/bite/sharp
+ )
primitive_form = "Stok"
darksight = 3
gluttonous = 1
@@ -44,6 +56,7 @@
fall_mod = 1.2
ethanol_resistance = 0.4
taste_sensitivity = TASTE_SENSITIVE
+ economic_modifier = 7
num_alternate_languages = 2
secondary_langs = list(LANGUAGE_UNATHI, LANGUAGE_AZAZIBA)
@@ -74,8 +87,8 @@
heat_level_3 = 1100 //Default 1000
inherent_verbs = list(
- /mob/living/proc/devour,
- /mob/living/carbon/human/proc/regurgitate
+ /mob/living/proc/devour,
+ /mob/living/carbon/human/proc/regurgitate
)
@@ -110,13 +123,18 @@
/datum/species/tajaran
name = "Tajara"
short_name = "taj"
- name_plural = "Tajaran"
+ name_plural = "Tajara"
bodytype = "Tajara"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
tail = "tajtail"
tail_animation = 'icons/mob/species/tajaran/tail.dmi'
- unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
+ unarmed_types = list(
+ /datum/unarmed_attack/stomp,
+ /datum/unarmed_attack/kick,
+ /datum/unarmed_attack/claws,
+ /datum/unarmed_attack/bite/sharp
+ )
darksight = 8
slowdown = -1
brute_mod = 1.2
@@ -126,8 +144,9 @@
name_language = LANGUAGE_SIIK_MAAS
ethanol_resistance = 0.8//Gets drunk a little faster
rarity_value = 2
+ economic_modifier = 7
- stamina = 90 // Tajarans evolved to maintain a steady pace in the snow, sprinting wastes energy
+ stamina = 90 // Tajara evolved to maintain a steady pace in the snow, sprinting wastes energy
stamina_recovery = 4
sprint_speed_factor = 0.65
sprint_cost_factor = 0.75
@@ -160,7 +179,7 @@
"Your fur prickles in the heat.",
"You feel uncomfortably warm.",
"Your overheated skin itches."
- )
+ )
cold_discomfort_level = 275
/datum/species/tajaran/equip_survival_gear(var/mob/living/carbon/human/H)
@@ -175,6 +194,7 @@
name_plural = "Skrell"
bodytype = "Skrell"
age_max = 500
+ economic_modifier = 10
icobase = 'icons/mob/human_races/r_skrell.dmi'
deform = 'icons/mob/human_races/r_def_skrell.dmi'
eyes = "skrell_eyes_s"
@@ -205,21 +225,25 @@
ethanol_resistance = 0.5//gets drunk faster
taste_sensitivity = TASTE_SENSITIVE
- stamina = 90
+ stamina = 90
sprint_speed_factor = 1.25 //Evolved for rapid escapes from predators
-
/datum/species/diona
name = "Diona"
short_name = "dio"
name_plural = "Dionaea"
bodytype = "Diona"
age_max = 1000
+ economic_modifier = 3
icobase = 'icons/mob/human_races/r_diona.dmi'
deform = 'icons/mob/human_races/r_def_plant.dmi'
language = "Ceti Basic"
default_language = LANGUAGE_ROOTSONG
- unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona)
+ unarmed_types = list(
+ /datum/unarmed_attack/stomp,
+ /datum/unarmed_attack/kick,
+ /datum/unarmed_attack/diona
+ )
//primitive_form = "Nymph"
slowdown = 7
rarity_value = 4
@@ -229,9 +253,9 @@
show_ssd = "completely quiescent"
num_alternate_languages = 1
name_language = "Rootsong"
- ethanol_resistance = -1//Can't get drunk
+ ethanol_resistance = -1 //Can't get drunk
taste_sensitivity = TASTE_DULL
- mob_size = 12//Worker gestalts are 150kg
+ mob_size = 12 //Worker gestalts are 150kg
remains_type = /obj/effect/decal/cleanable/ash //no bones, so, they just turn into dust
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
@@ -242,13 +266,13 @@
water and other radiation."
has_organ = list(
- "nutrient channel" = /obj/item/organ/diona/nutrients,
- "neural strata" = /obj/item/organ/diona/strata,
- "response node" = /obj/item/organ/diona/node,
- "gas bladder" = /obj/item/organ/diona/bladder,
- "polyp segment" = /obj/item/organ/diona/polyp,
+ "nutrient channel" = /obj/item/organ/diona/nutrients,
+ "neural strata" = /obj/item/organ/diona/strata,
+ "response node" = /obj/item/organ/diona/node,
+ "gas bladder" = /obj/item/organ/diona/bladder,
+ "polyp segment" = /obj/item/organ/diona/polyp,
"anchoring ligament" = /obj/item/organ/diona/ligament
- )
+ )
has_limbs = list(
"chest" = list("path" = /obj/item/organ/external/chest/diona),
@@ -262,7 +286,7 @@
"r_hand" = list("path" = /obj/item/organ/external/hand/right/diona),
"l_foot" = list("path" = /obj/item/organ/external/foot/diona),
"r_foot" = list("path" = /obj/item/organ/external/foot/right/diona)
- )
+ )
//inherent_verbs = list()
@@ -288,8 +312,8 @@
reagent_tag = IS_DIONA
- stamina = -1 // Diona sprinting uses energy instead of stamina
- sprint_speed_factor = 0.5 //Speed gained is minor
+ stamina = -1 // Diona sprinting uses energy instead of stamina
+ sprint_speed_factor = 0.5 //Speed gained is minor
sprint_cost_factor = 0.8
/datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost)
@@ -321,8 +345,6 @@
H << span("danger", "We have expended our energy reserves, and cannot continue to move at such a pace. We must find light!")
return 0
-
-
/datum/species/diona/can_understand(var/mob/other)
var/mob/living/carbon/alien/diona/D = other
if(istype(D))
@@ -350,7 +372,6 @@
else//Most of the stuff in the parent function doesnt apply to nymphs
add_inherent_verbs(H)
-
/datum/species/diona/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0)
if (!gibbed)
// This proc sleeps. Async it.
@@ -364,6 +385,7 @@
bodytype = "Machine"
age_min = 1
age_max = 30
+ economic_modifier = 3
blurb = "IPCs are, quite simply, 'Integrated Positronic Chassis'. In this scenario, positronic does not mean anything significant - it is a nickname given \
to all advanced processing units, based on the works of vintage writer Isaac Asimov. The long of the short is that they represent all unbound synthetic \
@@ -421,11 +443,11 @@
reagent_tag = IS_MACHINE
has_organ = list(
- "brain" = /obj/item/organ/mmi_holder/posibrain,
- "cell" = /obj/item/organ/cell,
- "optics" = /obj/item/organ/eyes/optical_sensor,
+ "brain" = /obj/item/organ/mmi_holder/posibrain,
+ "cell" = /obj/item/organ/cell,
+ "optics" = /obj/item/organ/eyes/optical_sensor,
"ipc tag" = /obj/item/organ/ipc_tag
- )
+ )
vision_organ = "optics"
@@ -441,15 +463,15 @@
"r_hand" = list("path" = /obj/item/organ/external/hand/right/ipc),
"l_foot" = list("path" = /obj/item/organ/external/foot/ipc),
"r_foot" = list("path" = /obj/item/organ/external/foot/right/ipc)
- )
+ )
heat_discomfort_level = 373.15
heat_discomfort_strings = list(
"Your CPU temperature probes warn you that you are approaching critical heat levels!"
)
- stamina = -1 // Machines use power and generate heat, stamina is not a thing
- sprint_speed_factor = 1 // About as capable of speed as a human
+ stamina = -1 // Machines use power and generate heat, stamina is not a thing
+ sprint_speed_factor = 1 // About as capable of speed as a human
datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
@@ -473,8 +495,7 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
..()
H.h_style = ""
- spawn(100)
- if(H) H.update_hair()
+ addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/update_hair), 100)
/datum/species/machine/sanitize_name(var/new_name)
return sanitizeName(new_name, allow_numbers = 1)
@@ -586,6 +607,7 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
bodytype = "Vaurca"
age_min = 1
age_max = 20
+ economic_modifier = 1
language = LANGUAGE_VAURCA
primitive_form = "V'krexi"
greater_form = "Vaurca Warrior"