diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 3d13b800e2..f0fe1e7a08 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -632,7 +632,7 @@ /obj/machinery/suit_cycler/exploration name = "Explorer suit cycler" model_text = "Exploration" - departments = list("Exploration","Old Exploration","No Change") + departments = list("Exploration","Expedition Medic","Old Exploration","No Change") /obj/machinery/suit_cycler/exploration/Initialize() species -= SPECIES_TESHARI @@ -1113,6 +1113,9 @@ if("Exploration") parent_helmet = /obj/item/clothing/head/helmet/space/void/exploration parent_suit = /obj/item/clothing/suit/space/void/exploration + if("Expedition Medic") + parent_helmet = /obj/item/clothing/head/helmet/space/void/exploration_medical + parent_suit = /obj/item/clothing/suit/space/void/exploration_medical if("Old Exploration") parent_helmet = /obj/item/clothing/head/helmet/space/void/exploration/alt parent_suit = /obj/item/clothing/suit/space/void/exploration/alt diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 14ead552e2..0d344e9481 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -329,13 +329,33 @@ /obj/item/clothing/suit/space/void/exploration name = "exploration voidsuit" - desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." + desc = "A hazard and radiation resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." icon_state = "void_explorer" item_state_slots = list(slot_r_hand_str = "skrell_suit_black", slot_l_hand_str = "skrell_suit_black") armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon, \ /obj/item/weapon/shovel,/obj/item/ammo_magazine,/obj/item/weapon/gun) +//SAR +/obj/item/clothing/head/helmet/space/void/exploration_medical + name = "exploration medic\'s voidsuit helmet" + desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments. Has a reinforced high-vis bubble style visor." + icon_state = "helm_exp_medic" + item_state = "helm_exp_medic" + item_state_slots = list(slot_r_hand_str = "syndicate-helm-black", slot_l_hand_str = "syndicate-helm-black") + armor = list(melee = 25, bullet = 10, laser = 20,energy = 30, bomb = 25, bio = 100, rad = 70) + light_overlay = "helmet_light_dual" //explorer_light + +/obj/item/clothing/suit/space/void/exploration_medical + name = "exploration medic\'s voidsuit" + desc = "A hazard and radiation resistant voidsuit, featuring the Explorer emblem and a green cross on its chest plate. Seems to be a little lighter and more flexible than the regular explorer issue." + icon_state = "void_exp_medic" + slowdown = 0.75 + item_state_slots = list(slot_r_hand_str = "skrell_suit_black", slot_l_hand_str = "skrell_suit_black") + armor = list(melee = 25, bullet = 10, laser = 20,energy = 30, bomb = 25, bio = 100, rad = 70) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon, \ + /obj/item/weapon/shovel,/obj/item/ammo_magazine,/obj/item/weapon/gun,/obj/item/weapon/storage/firstaid,/obj/item/stack/medical) + /obj/item/clothing/head/helmet/space/void/exploration/alt desc = "A radiation-resistant helmet retrofitted for exploring unknown planetary environments." icon_state = "helm_explorer2" diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index 06c9d2bdf3..ffbc9bd6a3 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -23,6 +23,8 @@ var/silk_color = "#FFFFFF" var/list/traits = list() + //Vars that need to be copied when producing a copy of species. + var/list/copy_vars = list("base_species", "icobase", "deform", "tail", "tail_animation", "icobase_tail", "color_mult", "primitive_form", "appearance_flags", "flesh_color", "base_color", "blood_mask", "damage_mask", "damage_overlays", "move_trail", "has_floating_eyes") /datum/species/proc/give_numbing_bite() //Holy SHIT this is hacky, but it works. Updating a mob's attacks mid game is insane. unarmed_attacks = list() @@ -42,31 +44,19 @@ nif.nifsofts = nifsofts else ..() -/datum/species/proc/produceCopy(var/list/traits,var/mob/living/carbon/human/H, var/custom_base) - var/datum/species/S +/datum/species/proc/produceCopy(var/list/traits,var/mob/living/carbon/human/H) //If species allows custom base, and custom base is set, apply it, otherwise use default. - if(selects_bodytype && custom_base) - S = GLOB.all_species[custom_base] - else - S = GLOB.all_species[src.name] - ASSERT(S) + ASSERT(src) ASSERT(istype(H)) - var/datum/species/new_copy = new S.type() + var/datum/species/new_copy = new src.type() - for(var/i in S.vars) //Thorough copy of species. - if(new_copy.vars[i] != S.vars[i]) - //Skipping lists because they may contain more lists, copy those manually. - //Also ignoring type var since it's read-only and will runtime. - if(islist(vars[i])) - continue - new_copy.vars[i] = S.vars[i] + if(selects_bodytype) //If race selects a bodytype, copy needed variables. + copy_variables(new_copy, copy_vars) - for(var/organ in S.has_limbs) //Copy important organ data generated by species. - var/list/organ_data = S.has_limbs[organ] + for(var/organ in has_limbs) //Copy important organ data generated by species. + var/list/organ_data = has_limbs[organ] new_copy.has_limbs[organ] = organ_data.Copy() - new_copy.traits = traits - //If you had traits, apply them if(new_copy.traits) for(var/trait in new_copy.traits) @@ -85,6 +75,15 @@ return new_copy +/datum/species/proc/copy_variables(var/datum/species/S, var/list/whitelist) + //List of variables to ignore, trying to copy type will runtime. + var/list/blacklist = list("type", "loc", "client", "ckey") + //Makes thorough copy of species datum. + for(var/i in vars) + if(S.vars[i] != vars[i] && !islist(vars[i])) //If vars are same, no point in copying. + if(whitelist && !(i in whitelist) && i in blacklist) //If whitelist is provided, only vars in the list will be copied. + continue + S.vars[i] = vars[i] /datum/species/get_bodytype() return base_species \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index 69799b2771..513dc05173 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -48,25 +48,15 @@ /datum/species/custom/get_race_key() var/datum/species/real = GLOB.all_species[base_species] return real.race_key - -<<<<<<< HEAD -/datum/species/custom/produceCopy(var/list/traits,var/mob/living/carbon/human/H) - . = ..() -||||||| parent of eabb487497... Merge pull request #10136 from Nyksia/tiny-hotfix -/datum/species/custom/produceCopy(var/list/traits,var/mob/living/carbon/human/H,var/custom_base) - . = ..() - if(selects_bodytype && custom_base) - var/datum/species/S = GLOB.all_species[custom_base] - S.copy_variables(., copy_vars) -======= + /datum/species/custom/produceCopy(var/list/traits,var/mob/living/carbon/human/H,var/custom_base) . = ..(traits, H) if(selects_bodytype && custom_base) var/datum/species/S = GLOB.all_species[custom_base] S.copy_variables(., copy_vars) ->>>>>>> eabb487497... Merge pull request #10136 from Nyksia/tiny-hotfix H.maxHealth = H.species.total_health H.hunger_rate = H.species.hunger_factor + return . // Stub species overrides for shoving trait abilities into diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 0467e51cea..a610a38a93 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -148,7 +148,7 @@ /datum/trait/negative/lightweight name = "Lightweight" - desc = "Your light weight and poor balance make you very susceptible to unhelpful bumping. Think of it like a bowling ball versus a pin." + desc = "Your light weight and poor balance make you very susceptible to unhelpful bumping. Think of it like a bowling ball versus a pin. (STOP TAKING THIS AS SECURITY! We're MRP, so expect to lose your junk immediately, especially in events. - Love, Admins)" //CHOMP Edit btw cost = -2 var_changes = list("lightweight" = 1) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 56183def6f..7810b5904f 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -34,27 +34,27 @@ /datum/trait/positive/nonconductive name = "Non-Conductive" - desc = "Decreases your susceptibility to electric shocks by a 10% amount." - cost = 1 //This effects tasers! - var_changes = list("siemens_coefficient" = 0.9) + desc = "Decreases your susceptibility to electric shocks by a 25% amount." //CHOMP Edit + cost = 2 //This effects tasers! + var_changes = list("siemens_coefficient" = 0.75) //CHOMP Edit /datum/trait/positive/nonconductive_plus name = "Major Non-Conductive" - desc = "Decreases your susceptibility to electric shocks by a 25% amount." - cost = 2 //Let us not forget this effects tasers! - var_changes = list("siemens_coefficient" = 0.75) + desc = "Decreases your susceptibility to electric shocks by a 50% amount." //CHOMP Edit + cost = 3 //Let us not forget this effects tasers! + var_changes = list("siemens_coefficient" = 0.5) //CHOMP Edit /datum/trait/positive/darksight name = "Darksight" - desc = "Allows you to see a short distance in the dark." + desc = "Allows you to see a short distance in the dark and 10% more susceptible to flashes." //CHOMP Edit cost = 1 - var_changes = list("darksight" = 5, "flash_mod" = 1.1) + var_changes = list("darksight" = 3) //CHOMP Edit /datum/trait/positive/darksight_plus name = "Darksight (Major)" - desc = "Allows you to see in the dark for almost the whole screen." + desc = "Allows you to see in the dark for almost the whole screen and 20% more susceptible to flashes." //CHOMP Edit cost = 2 - var_changes = list("darksight" = 8, "flash_mod" = 1.2) + var_changes = list("darksight" = 6) //CHOMP Edit /datum/trait/positive/melee_attack name = "Sharp Melee" @@ -76,29 +76,29 @@ /datum/trait/positive/minor_brute_resist name = "Minor Brute Resist" - desc = "Adds 15% resistance to brute damage sources." - cost = 2 - var_changes = list("brute_mod" = 0.85) + desc = "Adds 10% resistance to brute damage sources." //CHOMP Edit + cost = 1 //CHOMP Edit + var_changes = list("brute_mod" = 0.9) //CHOMP Edit /datum/trait/positive/brute_resist name = "Brute Resist" - desc = "Adds 25% resistance to brute damage sources." - cost = 3 - var_changes = list("brute_mod" = 0.75) - excludes = list(/datum/trait/positive/minor_burn_resist,/datum/trait/positive/burn_resist) + desc = "Adds 20% resistance to brute damage sources." //CHOMP Edit + cost = 2 //CHOMP Edit + var_changes = list("brute_mod" = 0.8) //CHOMP Edit + //excludes = list(/datum/trait/positive/minor_burn_resist,/datum/trait/positive/burn_resist) //CHOMP disable, this is already handled in positive_ch.dm /datum/trait/positive/minor_burn_resist name = "Minor Burn Resist" - desc = "Adds 15% resistance to burn damage sources." - cost = 2 - var_changes = list("burn_mod" = 0.85) + desc = "Adds 10% resistance to burn damage sources." //CHOMP Edit + cost = 1 //CHOMP Edit + var_changes = list("burn_mod" = 0.9) //CHOMP Edit /datum/trait/positive/burn_resist name = "Burn Resist" - desc = "Adds 25% resistance to burn damage sources." - cost = 3 - var_changes = list("burn_mod" = 0.75) - excludes = list(/datum/trait/positive/minor_brute_resist,/datum/trait/positive/brute_resist) + desc = "Adds 20% resistance to burn damage sources." //CHOMP Edit + cost = 2 //CHOMP Edit + var_changes = list("burn_mod" = 0.8) //CHOMP Edit + //excludes = list(/datum/trait/positive/minor_brute_resist,/datum/trait/positive/brute_resist) //CHOMP disable, this is already handled in positive_ch.dm //YW ADDITIONS START /datum/trait/positive/improved_biocompat @@ -118,9 +118,9 @@ /datum/trait/positive/photoresistant name = "Photoresistant" - desc = "Decreases stun duration from flashes and other light-based stuns and disabilities by 20%" + desc = "Decreases stun duration from flashes and other light-based stuns and disabilities by 25%" //CHOMP Edit cost = 1 - var_changes = list("flash_mod" = 0.8) + var_changes = list("flash_mod" = 0.75) //CHOMP Edit //YW add /datum/trait/positive/photoresistant_plus @@ -143,7 +143,7 @@ /datum/trait/positive/hardfeet name = "Hard Feet" desc = "Makes your nice clawed, scaled, hooved, armored, or otherwise just awfully calloused feet immune to glass shards." - cost = 0 + cost = 1 //CHOMP Edit var_changes = list("flags" = NO_MINOR_CUT) //Checked the flag is only used by shard stepping. //CHOMPStation Removal Start diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 4a5e549c7d..d89dafc909 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi index 8cda990085..f518f8fb70 100644 Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ diff --git a/icons/mob/species/skrell/suit.dmi b/icons/mob/species/skrell/suit.dmi index 1185d99d7f..45b47bb1df 100644 Binary files a/icons/mob/species/skrell/suit.dmi and b/icons/mob/species/skrell/suit.dmi differ diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 4003c1b508..24901a33b3 100644 Binary files a/icons/mob/species/tajaran/helmet.dmi and b/icons/mob/species/tajaran/helmet.dmi differ diff --git a/icons/mob/species/tajaran/suit.dmi b/icons/mob/species/tajaran/suit.dmi index 2453efcbaf..22afb1bd85 100644 Binary files a/icons/mob/species/tajaran/suit.dmi and b/icons/mob/species/tajaran/suit.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index dc98094bb5..2a113796d7 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/suit.dmi b/icons/mob/species/unathi/suit.dmi index 08f1ed4938..1fd3aaba97 100644 Binary files a/icons/mob/species/unathi/suit.dmi and b/icons/mob/species/unathi/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index a7a415e54b..e1c5517021 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/spacesuit.dmi b/icons/obj/clothing/spacesuit.dmi new file mode 100644 index 0000000000..7d7c0c61cf Binary files /dev/null and b/icons/obj/clothing/spacesuit.dmi differ diff --git a/icons/obj/clothing/spacesuits.dmi b/icons/obj/clothing/spacesuits.dmi index 71bd5463f7..ae9cc5764f 100644 Binary files a/icons/obj/clothing/spacesuits.dmi and b/icons/obj/clothing/spacesuits.dmi differ diff --git a/icons/obj/clothing/species/skrell/hats.dmi b/icons/obj/clothing/species/skrell/hats.dmi index a69a4e51dd..def79846d3 100644 Binary files a/icons/obj/clothing/species/skrell/hats.dmi and b/icons/obj/clothing/species/skrell/hats.dmi differ diff --git a/icons/obj/clothing/species/skrell/suits.dmi b/icons/obj/clothing/species/skrell/suits.dmi index 01ccf8f8d0..d0ac340426 100644 Binary files a/icons/obj/clothing/species/skrell/suits.dmi and b/icons/obj/clothing/species/skrell/suits.dmi differ diff --git a/icons/obj/clothing/species/tajaran/hats.dmi b/icons/obj/clothing/species/tajaran/hats.dmi index 362fae9f46..b4fd4241e0 100644 Binary files a/icons/obj/clothing/species/tajaran/hats.dmi and b/icons/obj/clothing/species/tajaran/hats.dmi differ diff --git a/icons/obj/clothing/species/tajaran/suits.dmi b/icons/obj/clothing/species/tajaran/suits.dmi index d935a4096c..6b12d49204 100644 Binary files a/icons/obj/clothing/species/tajaran/suits.dmi and b/icons/obj/clothing/species/tajaran/suits.dmi differ diff --git a/icons/obj/clothing/species/unathi/hats.dmi b/icons/obj/clothing/species/unathi/hats.dmi index 28c8700a39..a3a6bf1fff 100644 Binary files a/icons/obj/clothing/species/unathi/hats.dmi and b/icons/obj/clothing/species/unathi/hats.dmi differ diff --git a/icons/obj/clothing/species/unathi/suits.dmi b/icons/obj/clothing/species/unathi/suits.dmi index 08abbe309a..e9870c4f97 100644 Binary files a/icons/obj/clothing/species/unathi/suits.dmi and b/icons/obj/clothing/species/unathi/suits.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 6d60c03b0b..67dcb0d5cb 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ