mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-27 23:29:10 +01:00
Fuck this shit
Merge branch 'release' of https://github.com/VOREStation/VOREStation # Conflicts: # code/controllers/autotransfer.dm # code/controllers/subsystems/inactivity.dm # code/game/area/Away Mission areas.dm # code/game/area/Space Station 13 areas.dm # code/game/jobs/job/captain.dm # code/game/jobs/job/civilian.dm # code/game/jobs/job/security.dm # code/game/jobs/jobs.dm # code/game/machinery/air_alarm.dm # code/game/machinery/suit_storage_unit.dm # code/game/machinery/suit_storage_unit_vr.dm # code/game/mecha/combat/gorilla.dm # code/game/turfs/simulated/dungeon/wall.dm # code/game/turfs/simulated/wall_types.dm # code/modules/client/preference_setup/loadout/loadout_utility_vr.dm # code/modules/clothing/glasses/glasses.dm # code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm # code/modules/clothing/spacesuits/void/void_vr.dm # code/modules/clothing/under/accessories/holster.dm # code/modules/mob/language/station_vr.dm # code/modules/mob/living/carbon/human/emote_vr.dm # code/modules/mob/living/carbon/human/species/station/station_vr.dm # code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm # code/modules/mob/new_player/sprite_accessories_vr.dm # code/modules/power/apc.dm # code/modules/power/lighting.dm # code/modules/resleeving/machines.dm # config/jobwhitelist.txt # icons/mob/species/seromi/head.dmi # icons/mob/species/seromi/suit.dmi # icons/mob/species/vulpkanin/helmet.dmi # icons/mob/species/vulpkanin/suit.dmi # maps/tether/submaps/_tether_submaps.dm # maps/tether/tether_areas2.dm # maps/tether/tether_defines.dm # maps/tether/tether_shuttles.dm # nano/templates/apc.tmpl # vorestation.dme
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
|
||||
organ_verbs = list(/mob/living/carbon/human/proc/augment_menu) // Verbs added by the organ when present in the body.
|
||||
target_parent_classes = list() // Is the parent supposed to be organic, robotic, assisted?
|
||||
forgiving_class = FALSE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic.
|
||||
forgiving_class = TRUE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic.
|
||||
|
||||
var/obj/item/integrated_object // Objects held by the organ, used for re-usable, deployable things.
|
||||
var/integrated_object_type // Object type the organ will spawn.
|
||||
|
||||
@@ -15,28 +15,29 @@
|
||||
|
||||
if(is_bruised())
|
||||
if(prob(4))
|
||||
spawn owner.emote("me", 1, "coughs up blood!")
|
||||
spawn owner?.emote("me", 1, "coughs up blood!")
|
||||
owner.drip(10)
|
||||
if(prob(8))
|
||||
spawn owner.emote("me", 1, "gasps for air!")
|
||||
spawn owner?.emote("me", 1, "gasps for air!")
|
||||
owner.AdjustLosebreath(15)
|
||||
|
||||
if(owner.internal_organs_by_name[O_BRAIN]) // As the brain starts having Trouble, the lungs start malfunctioning.
|
||||
var/obj/item/organ/internal/brain/Brain = owner.internal_organs_by_name[O_BRAIN]
|
||||
if(Brain.get_control_efficiency() <= 0.8)
|
||||
if(prob(4 / max(0.1,Brain.get_control_efficiency())))
|
||||
spawn owner.emote("me", 1, "gasps for air!")
|
||||
spawn owner?.emote("me", 1, "gasps for air!")
|
||||
owner.AdjustLosebreath(round(3 / max(0.1,Brain.get_control_efficiency())))
|
||||
|
||||
/obj/item/organ/internal/lungs/proc/rupture()
|
||||
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
|
||||
if(istype(parent))
|
||||
owner.custom_pain("You feel a stabbing pain in your [parent.name]!", 50)
|
||||
if(owner)
|
||||
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
|
||||
if(istype(parent))
|
||||
owner.custom_pain("You feel a stabbing pain in your [parent.name]!", 50)
|
||||
bruise()
|
||||
|
||||
/obj/item/organ/internal/lungs/handle_germ_effects()
|
||||
. = ..() //Up should return an infection level as an integer
|
||||
if(!.) return
|
||||
if(!. || !owner) return
|
||||
|
||||
//Bacterial pneumonia
|
||||
if (. >= 1)
|
||||
@@ -54,6 +55,6 @@
|
||||
..()
|
||||
var/mob/living/carbon/human/H = null
|
||||
spawn(15)
|
||||
if(ishuman(owner))
|
||||
if(owner && ishuman(owner))
|
||||
H = owner
|
||||
color = H.species.blood_color
|
||||
|
||||
@@ -4,6 +4,7 @@ var/list/organ_cache = list()
|
||||
name = "organ"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
germ_level = 0
|
||||
drop_sound = 'sound/items/drop/flesh.ogg'
|
||||
|
||||
// Strings.
|
||||
var/organ_tag = "organ" // Unique identifier.
|
||||
|
||||
@@ -18,7 +18,7 @@ var/global/list/limb_icon_cache = list()
|
||||
h_col = null
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
var/datum/robolimb/franchise = all_robolimbs[model]
|
||||
if(!(franchise && franchise.skin_tone))
|
||||
if(!(franchise && franchise.skin_tone) && !(franchise && franchise.skin_color))
|
||||
if(human.synth_color)
|
||||
s_col = list(human.r_synth, human.g_synth, human.b_synth)
|
||||
return
|
||||
@@ -36,7 +36,7 @@ var/global/list/limb_icon_cache = list()
|
||||
h_col = null
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
var/datum/robolimb/franchise = all_robolimbs[model]
|
||||
if(!(franchise && franchise.skin_tone))
|
||||
if(!(franchise && franchise.skin_tone) && !(franchise && franchise.skin_color))
|
||||
return
|
||||
if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && (species.appearance_flags & HAS_SKIN_TONE))
|
||||
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
|
||||
|
||||
@@ -33,6 +33,14 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
if(!R.unavailable_at_chargen)
|
||||
chargen_robolimbs[R.company] = R //List only main brands and solo parts.
|
||||
|
||||
for(var/company in all_robolimbs)
|
||||
var/datum/robolimb/R = all_robolimbs[company]
|
||||
if(R.species_alternates)
|
||||
for(var/species in R.species_alternates)
|
||||
var/species_company = R.species_alternates[species]
|
||||
if(species_company in all_robolimbs)
|
||||
R.species_alternates[species] = all_robolimbs[species_company]
|
||||
|
||||
/datum/robolimb
|
||||
var/company = "Unbranded" // Shown when selecting the limb.
|
||||
var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb.
|
||||
@@ -40,9 +48,11 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
var/unavailable_at_chargen // If set, not available at chargen.
|
||||
var/unavailable_to_build // If set, can't be constructed.
|
||||
var/lifelike // If set, appears organic.
|
||||
var/skin_tone // If set, applies skin tone rather than part color
|
||||
var/skin_tone // If set, applies skin tone rather than part color Overrides color.
|
||||
var/skin_color // If set, applies skin color rather than part color.
|
||||
var/blood_color = "#030303"
|
||||
var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_XENOCHIMERA) //VOREStation Edit
|
||||
var/list/species_alternates = list(SPECIES_TAJ = "Unbranded - Tajaran", SPECIES_UNATHI = "Unbranded - Unathi") //"Species Name" = "Robolimb Company" , List, when initialized, will become "Species Name" = RobolimbDatum, used for alternate species sprites.
|
||||
var/list/monitor_styles //If empty, the model of limbs offers a head compatible with monitors.
|
||||
var/parts = BP_ALL //Defines what parts said brand can replace on a body.
|
||||
var/health_hud_intensity = 1 // Intensity modifier for the health GUI indicator.
|
||||
@@ -72,10 +82,62 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_alt2.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/unbranded_tajaran
|
||||
company = "Unbranded - Tajaran"
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
suggested_species = SPECIES_TAJ
|
||||
desc = "A simple robotic limb with feline design. Seems rather stiff."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_tajaran.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/unbranded_unathi
|
||||
company = "Unbranded - Unathi"
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
suggested_species = SPECIES_UNATHI
|
||||
desc = "A simple robotic limb with reptilian design. Seems rather stiff."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_unathi.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/unbranded_teshari
|
||||
company = "Unbranded - Teshari"
|
||||
species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
suggested_species = SPECIES_TESHARI
|
||||
desc = "A simple robotic limb with a small, raptor-like design. Seems rather stiff."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_teshari.dmi'
|
||||
unavailable_to_build = 0
|
||||
|
||||
/datum/robolimb/nanotrasen
|
||||
company = "NanoTrasen"
|
||||
desc = "A simple but efficient robotic limb, created by NanoTrasen."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi'
|
||||
species_alternates = list(SPECIES_TAJ = "NanoTrasen - Tajaran", SPECIES_UNATHI = "NanoTrasen - Unathi")
|
||||
|
||||
/datum/robolimb/nanotrasen_tajaran
|
||||
company = "NanoTrasen - Tajaran"
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
|
||||
suggested_species = SPECIES_TAJ
|
||||
desc = "A simple but efficient robotic limb, created by NanoTrasen."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_tajaran.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/nanotrasen_unathi
|
||||
company = "NanoTrasen - Unathi"
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
|
||||
suggested_species = SPECIES_UNATHI
|
||||
desc = "A simple but efficient robotic limb, created by NanoTrasen."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_unathi.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/cenilimicybernetics_teshari
|
||||
company = "Cenilimi Cybernetics"
|
||||
species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
|
||||
suggested_species = SPECIES_TESHARI
|
||||
desc = "Made by a Teshari-owned company, for Teshari."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/cenilimicybernetics/cenilimicybernetics_teshari.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/bishop
|
||||
company = "Bishop"
|
||||
@@ -104,6 +166,19 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
parts = list(BP_HEAD)
|
||||
monitor_styles = standard_monitor_styles
|
||||
|
||||
/datum/robolimb/gestaltframe
|
||||
company = "Skrellian Exoskeleton"
|
||||
desc = "This limb looks to be more like a strange.. puppet, than a prosthetic."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/veymed/dionaea/skrellian.dmi'
|
||||
blood_color = "#63b521"
|
||||
speech_bubble_appearance = "machine"
|
||||
unavailable_to_build = 1
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJ, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
suggested_species = SPECIES_DIONA
|
||||
// Dionaea are naturally very tanky, so the robotic limbs are actually far weaker than their normal bodies.
|
||||
robo_brute_mod = 1.3
|
||||
robo_burn_mod = 1.3
|
||||
|
||||
/datum/robolimb/cybersolutions
|
||||
company = "Cyber Solutions"
|
||||
desc = "This limb is grey and rough, with little in the way of aesthetic."
|
||||
@@ -224,11 +299,25 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
unavailable_to_build = 1
|
||||
lifelike = 1
|
||||
skin_tone = 1
|
||||
species_alternates = list(SPECIES_SKRELL = "Vey-Med - Skrell")
|
||||
blood_color = "#CCCCCC"
|
||||
speech_bubble_appearance = "normal"
|
||||
//robo_brute_mod = 1.1 //VOREStation Edit
|
||||
//robo_burn_mod = 1.1 //VOREStation Edit
|
||||
|
||||
/datum/robolimb/veymed_skrell
|
||||
company = "Vey-Med - Skrell"
|
||||
desc = "This high quality limb is nearly indistinguishable from an organic one."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/veymed/veymed_skrell.dmi'
|
||||
unavailable_to_build = 1
|
||||
lifelike = 1
|
||||
skin_color = TRUE
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJ, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_ZADDAT)
|
||||
blood_color = "#4451cf"
|
||||
speech_bubble_appearance = "normal"
|
||||
robo_brute_mod = 1.05
|
||||
robo_burn_mod = 1.05
|
||||
|
||||
/datum/robolimb/wardtakahashi
|
||||
company = "Ward-Takahashi"
|
||||
desc = "This limb features sleek black and white polymers."
|
||||
@@ -343,6 +432,10 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
company = "Vey-Med"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
|
||||
|
||||
// Bus disk for Diona mech parts.
|
||||
/obj/item/weapon/disk/limb/veymed/diona
|
||||
company = "Skrellian Exoskeleton"
|
||||
|
||||
/obj/item/weapon/disk/limb/wardtakahashi
|
||||
company = "Ward-Takahashi"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/ward_takahashi)
|
||||
@@ -358,3 +451,37 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
/obj/item/weapon/disk/limb/nanotrasen
|
||||
company = "NanoTrasen"
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/organization/nanotrasen)
|
||||
|
||||
/obj/item/weapon/disk/species
|
||||
name = "Species Bioprints"
|
||||
desc = "A disk containing the blueprints for species-specific prosthetics."
|
||||
icon = 'icons/obj/cloning.dmi'
|
||||
icon_state = "datadisk2"
|
||||
var/species = SPECIES_HUMAN
|
||||
|
||||
/obj/item/weapon/disk/species/Initialize()
|
||||
..()
|
||||
if(species)
|
||||
name = "[species] [initial(name)]"
|
||||
|
||||
/obj/item/weapon/disk/species/skrell
|
||||
species = SPECIES_SKRELL
|
||||
|
||||
/obj/item/weapon/disk/species/unathi
|
||||
species = SPECIES_UNATHI
|
||||
|
||||
/obj/item/weapon/disk/species/tajaran
|
||||
species = SPECIES_TAJ
|
||||
|
||||
/obj/item/weapon/disk/species/teshari
|
||||
species = SPECIES_TESHARI
|
||||
|
||||
// In case of bus, presently.
|
||||
/obj/item/weapon/disk/species/diona
|
||||
species = SPECIES_DIONA
|
||||
|
||||
/obj/item/weapon/disk/species/zaddat
|
||||
species = SPECIES_ZADDAT
|
||||
|
||||
/obj/item/weapon/disk/limb/cenilimicybernetics
|
||||
company = "Cenilimi Cybernetics"
|
||||
@@ -205,6 +205,37 @@
|
||||
/obj/item/organ/internal/diona/node/removed()
|
||||
return
|
||||
|
||||
// A 'brain' for the tree, still becomes a mindless nymph when removed like any other. Satisfies the FBP code.
|
||||
/obj/item/organ/internal/brain/cephalon
|
||||
name = "cephalon mass"
|
||||
parent_organ = BP_TORSO
|
||||
vital = TRUE
|
||||
|
||||
/obj/item/organ/internal/brain/cephalon/Initialize()
|
||||
..()
|
||||
spawn(30 SECONDS) // FBP Dionaea need some way to be disassembled through surgery, if absolutely necessary.
|
||||
if(!owner.isSynthetic())
|
||||
vital = FALSE
|
||||
|
||||
/obj/item/organ/internal/brain/cephalon/robotize()
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/brain/cephalon/mechassist()
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/brain/cephalon/digitize()
|
||||
return
|
||||
|
||||
/obj/item/organ/internal/brain/cephalon/removed(var/mob/living/user, var/skip_nymph)
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
return ..()
|
||||
var/mob/living/carbon/human/H = owner
|
||||
..()
|
||||
if(!istype(H) || !H.organs || !H.organs.len)
|
||||
H.death()
|
||||
if(prob(50) && !skip_nymph && spawn_diona_nymph(get_turf(src)))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/external/head/no_eyes/diona
|
||||
max_damage = 50
|
||||
min_broken_damage = 25
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
..()
|
||||
// This is very ghetto way of rebooting an IPC. TODO better way.
|
||||
if(owner && owner.stat == DEAD)
|
||||
owner.stat = 0
|
||||
owner.set_stat(CONSCIOUS)
|
||||
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
|
||||
|
||||
/obj/item/organ/internal/cell/emp_act(severity)
|
||||
@@ -68,7 +68,7 @@
|
||||
stored_mmi.brainmob.languages = owner.languages
|
||||
|
||||
if(owner && owner.stat == DEAD)
|
||||
owner.stat = 0
|
||||
owner.set_stat(CONSCIOUS)
|
||||
dead_mob_list -= owner
|
||||
living_mob_list |= owner
|
||||
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
|
||||
|
||||
Reference in New Issue
Block a user