mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into DreamFluff
This commit is contained in:
@@ -10,8 +10,8 @@
|
||||
var/vision_flags = 0
|
||||
var/dark_view = 0
|
||||
var/see_invisible = 0
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
var/list/old_eye_colour = list(0,0,0)
|
||||
var/eye_colour = "#000000"
|
||||
var/old_eye_colour = "#000000"
|
||||
var/flash_protect = 0
|
||||
var/aug_message = "Your vision is augmented!"
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/xray
|
||||
name = "X-ray implant"
|
||||
desc = "These cybernetic eye implants will give you X-ray vision. Blinking is futile."
|
||||
eye_colour = list(0, 0, 0)
|
||||
implant_color = "#000000"
|
||||
origin_tech = "materials=4;programming=4;biotech=6;magnets=4"
|
||||
vision_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS
|
||||
@@ -50,7 +49,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/thermals
|
||||
name = "Thermals implant"
|
||||
desc = "These cybernetic eye implants will give you Thermal vision. Vertical slit pupil included."
|
||||
eye_colour = list(255, 204, 0)
|
||||
eye_colour = "#FFCC00"
|
||||
implant_color = "#FFCC00"
|
||||
vision_flags = SEE_MOBS
|
||||
flash_protect = -1
|
||||
@@ -81,7 +80,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/hud/medical
|
||||
name = "Medical HUD implant"
|
||||
desc = "These cybernetic eye implants will display a medical HUD over everything you see."
|
||||
eye_colour = list(0,0,208)
|
||||
eye_colour = "#0000D0"
|
||||
implant_color = "#00FFFF"
|
||||
origin_tech = "materials=4;programming=4;biotech=4"
|
||||
aug_message = "You suddenly see health bars floating above people's heads..."
|
||||
@@ -90,7 +89,7 @@
|
||||
/obj/item/organ/internal/cyberimp/eyes/hud/security
|
||||
name = "Security HUD implant"
|
||||
desc = "These cybernetic eye implants will display a security HUD over everything you see."
|
||||
eye_colour = list(208,0,0)
|
||||
eye_colour = "#D00000"
|
||||
implant_color = "#CC0000"
|
||||
origin_tech = "materials=4;programming=4;biotech=3;combat=3"
|
||||
aug_message = "Job indicator icons pop up in your vision. That is not a certified surgeon..."
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
status = ORGAN_ROBOT
|
||||
var/implant_color = "#FFFFFF"
|
||||
var/implant_overlay
|
||||
tough = 1 //not easyly broken by combat damage
|
||||
sterile = 1 //not very germy
|
||||
tough = TRUE // Immune to damage
|
||||
sterile = TRUE // Doesn't accumulate germs
|
||||
robotic = 2 // these are cybernetic after all
|
||||
|
||||
/obj/item/organ/internal/cyberimp/New(var/mob/M = null)
|
||||
|
||||
@@ -29,8 +29,8 @@ var/list/organ_cache = list()
|
||||
var/freezer_update_period = 100
|
||||
var/is_in_freezer = 0
|
||||
|
||||
var/sterile = 0 //can the organ be infected by germs?
|
||||
var/tough = 0 //can organ be easily damaged?
|
||||
var/sterile = FALSE //can the organ be infected by germs?
|
||||
var/tough = FALSE //can organ be easily damaged?
|
||||
|
||||
|
||||
/obj/item/organ/Destroy()
|
||||
@@ -95,7 +95,7 @@ var/list/organ_cache = list()
|
||||
return
|
||||
|
||||
//Process infections
|
||||
if((status & ORGAN_ROBOT) || sterile ||(owner && (IS_PLANT in owner.species.species_traits)))
|
||||
if((status & ORGAN_ROBOT) || sterile || (owner && (IS_PLANT in owner.species.species_traits)))
|
||||
germ_level = 0
|
||||
return
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/cannot_amputate
|
||||
var/cannot_break
|
||||
var/s_tone = null
|
||||
var/list/s_col = null // If this is instantiated, it should be a list of length 3
|
||||
var/s_col = null // If this is instantiated, it should be a hex value.
|
||||
var/list/child_icons = list()
|
||||
var/perma_injury = 0
|
||||
var/dismember_at_max_damage = FALSE
|
||||
@@ -97,25 +97,24 @@
|
||||
switch(open)
|
||||
if(0)
|
||||
if(istype(W,/obj/item/weapon/scalpel))
|
||||
spread_germs_to_organ(src,user, W)
|
||||
spread_germs_to_organ(src, user, W)
|
||||
user.visible_message("<span class='danger'><b>[user]</b> cuts [src] open with [W]!</span>")
|
||||
open++
|
||||
return
|
||||
if(1)
|
||||
if(istype(W,/obj/item/weapon/retractor))
|
||||
spread_germs_to_organ(src,user, W)
|
||||
spread_germs_to_organ(src, user, W)
|
||||
user.visible_message("<span class='danger'><b>[user]</b> cracks [src] open like an egg with [W]!</span>")
|
||||
open++
|
||||
return
|
||||
if(2)
|
||||
if(istype(W,/obj/item/weapon/hemostat))
|
||||
spread_germs_to_organ(src,user, W)
|
||||
spread_germs_to_organ(src, user, W)
|
||||
if(contents.len)
|
||||
var/obj/item/removing = pick(contents)
|
||||
var/obj/item/organ/internal/O = removing
|
||||
if(istype(O))
|
||||
if(!O.sterile)
|
||||
spread_germs_to_organ(O,user, W) // This wouldn't be any cleaner than the actual surgery
|
||||
spread_germs_to_organ(O, user, W) // This wouldn't be any cleaner than the actual surgery
|
||||
user.put_in_hands(removing)
|
||||
user.visible_message("<span class='danger'><b>[user]</b> extracts [removing] from [src] with [W]!</span>")
|
||||
else
|
||||
@@ -192,9 +191,8 @@
|
||||
// Damage an internal organ
|
||||
if(internal_organs && internal_organs.len)
|
||||
var/obj/item/organ/internal/I = pick(internal_organs)
|
||||
if(!I.tough)//mostly for cybernetic organs
|
||||
I.take_damage(brute / 2)
|
||||
brute -= brute / 2
|
||||
I.take_damage(brute * 0.5)
|
||||
brute -= brute * 0.5
|
||||
|
||||
if(status & ORGAN_BROKEN && prob(40) && brute)
|
||||
owner.emote("scream") //getting hit on broken hand hurts
|
||||
@@ -591,7 +589,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
burn_mod = 0.66
|
||||
dismember_at_max_damage = TRUE
|
||||
else
|
||||
tough = 1
|
||||
tough = TRUE
|
||||
// Robot parts also lack bones
|
||||
// This is so surgery isn't kaput, let's see how this does
|
||||
encased = null
|
||||
|
||||
@@ -38,7 +38,7 @@ var/global/list/limb_icon_cache = list()
|
||||
s_tone = H.s_tone
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
s_tone = null
|
||||
s_col = list(H.r_skin, H.g_skin, H.b_skin)
|
||||
s_col = H.skin_colour
|
||||
if(H.species.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
var/obj/item/organ/external/chest/C = H.get_organ("chest")
|
||||
change_organ_icobase(C.icobase, C.deform)
|
||||
@@ -51,7 +51,7 @@ var/global/list/limb_icon_cache = list()
|
||||
s_tone = dna.GetUIValue(DNA_UI_SKIN_TONE)
|
||||
if(species.bodyflags & HAS_SKIN_COLOR)
|
||||
s_tone = null
|
||||
s_col = list(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B))
|
||||
s_col = rgb(dna.GetUIValue(DNA_UI_SKIN_R), dna.GetUIValue(DNA_UI_SKIN_G), dna.GetUIValue(DNA_UI_SKIN_B))
|
||||
|
||||
/obj/item/organ/external/head/sync_colour_to_human(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
@@ -69,8 +69,8 @@ var/global/list/limb_icon_cache = list()
|
||||
if(force_icon)
|
||||
mob_icon = new /icon(force_icon, "[icon_name]")
|
||||
if(species && species.name == "Machine") //snowflake for IPC's, sorry.
|
||||
if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
if(s_col)
|
||||
mob_icon.Blend(s_col, ICON_ADD)
|
||||
else
|
||||
var/new_icons = get_icon_state(skeletal)
|
||||
var/icon_file = new_icons[1]
|
||||
@@ -86,8 +86,8 @@ var/global/list/limb_icon_cache = list()
|
||||
mob_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||
else
|
||||
mob_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
else if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
else if(s_col)
|
||||
mob_icon.Blend(s_col, ICON_ADD)
|
||||
|
||||
dir = EAST
|
||||
icon = mob_icon
|
||||
@@ -107,11 +107,11 @@ var/global/list/limb_icon_cache = list()
|
||||
if(species.eyes)
|
||||
var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', species.eyes)
|
||||
if(eye_implant) // Eye implants override native DNA eye color
|
||||
eyes_icon.Blend(rgb(eye_implant.eye_colour[1],eye_implant.eye_colour[2],eye_implant.eye_colour[3]), ICON_ADD)
|
||||
eyes_icon.Blend(eye_implant.eye_colour, ICON_ADD)
|
||||
else if(eyes)
|
||||
eyes_icon.Blend(rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]), ICON_ADD)
|
||||
eyes_icon.Blend(eyes.eye_colour, ICON_ADD)
|
||||
else
|
||||
eyes_icon.Blend(rgb(128,0,0), ICON_ADD)
|
||||
eyes_icon.Blend("#800000", ICON_ADD)
|
||||
mob_icon.Blend(eyes_icon, ICON_OVERLAY)
|
||||
overlays |= eyes_icon
|
||||
|
||||
@@ -134,7 +134,7 @@ var/global/list/limb_icon_cache = list()
|
||||
if(head_accessory_style && head_accessory_style.species_allowed && (species.name in head_accessory_style.species_allowed))
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
head_accessory_s.Blend(headacc_colour, ICON_ADD)
|
||||
overlays |= head_accessory_s
|
||||
|
||||
if(f_style)
|
||||
@@ -142,9 +142,9 @@ var/global/list/limb_icon_cache = list()
|
||||
if(facial_hair_style && ((facial_hair_style.species_allowed && (species.name in facial_hair_style.species_allowed)) || (src.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(species.name == "Slime People") // I am el worstos
|
||||
facial_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND)
|
||||
facial_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(facial_hair_style.do_colouration)
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
|
||||
facial_s.Blend(facial_colour, ICON_ADD)
|
||||
overlays |= facial_s
|
||||
|
||||
if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
|
||||
@@ -152,9 +152,9 @@ var/global/list/limb_icon_cache = list()
|
||||
if(hair_style && ((species.name in hair_style.species_allowed) || (src.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(species.name == "Slime People") // I am el worstos
|
||||
hair_s.Blend(rgb(owner.r_skin, owner.g_skin, owner.b_skin, 160), ICON_AND)
|
||||
hair_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
hair_s.Blend(hair_colour, ICON_ADD)
|
||||
overlays |= hair_s
|
||||
|
||||
return mob_icon
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
// DO NOT add slots with matching names to different zones - it will break internal_organs_slot list!
|
||||
vital = 0
|
||||
var/non_primary = 0
|
||||
var/unremovable = FALSE //Whether it shows up as an option to remove during surgery.
|
||||
|
||||
/obj/item/organ/internal/New(var/mob/living/carbon/holder)
|
||||
..()
|
||||
@@ -283,7 +284,6 @@
|
||||
|
||||
|
||||
/obj/item/organ/internal/lungs/on_life()
|
||||
..()
|
||||
if(germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(5))
|
||||
owner.emote("cough") //respitory tract infection
|
||||
@@ -305,7 +305,6 @@
|
||||
slot = "kidneys"
|
||||
|
||||
/obj/item/organ/internal/kidneys/on_life()
|
||||
..()
|
||||
// Coffee is really bad for you with busted kidneys.
|
||||
// This should probably be expanded in some way, but fucked if I know
|
||||
// what else kidneys can process in our reagent list.
|
||||
@@ -324,7 +323,7 @@
|
||||
organ_tag = "eyes"
|
||||
parent_organ = "head"
|
||||
slot = "eyes"
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
var/eye_colour = "#000000"
|
||||
var/list/colourmatrix = null
|
||||
var/list/colourblind_matrix = MATRIX_GREYSCALE //Special colourblindness parameters. By default, it's black-and-white.
|
||||
var/colourblind_darkview = null
|
||||
@@ -418,7 +417,6 @@
|
||||
var/alcohol_intensity = 1
|
||||
|
||||
/obj/item/organ/internal/liver/on_life()
|
||||
..()
|
||||
if(germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(1))
|
||||
to_chat(owner, "<span class='warning'> Your skin itches.</span>")
|
||||
@@ -533,10 +531,6 @@
|
||||
var/organhonked = 0
|
||||
var/suffering_delay = 900
|
||||
|
||||
/obj/item/organ/internal/honktumor/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
/obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
M.mutations.Add(CLUMSY)
|
||||
@@ -556,23 +550,9 @@
|
||||
M.dna.SetSEState(COMICBLOCK,0)
|
||||
genemutcheck(M,CLUMSYBLOCK,null,MUTCHK_FORCED)
|
||||
genemutcheck(M,COMICBLOCK,null,MUTCHK_FORCED)
|
||||
|
||||
/obj/item/organ/internal/honktumor/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/organ/internal/honktumor/process()
|
||||
if(isturf(loc))
|
||||
visible_message("<span class='warning'>[src] honks in on itself!</span>")
|
||||
new /obj/item/weapon/grown/bananapeel(get_turf(loc))
|
||||
qdel(src)
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/organ/internal/honktumor/on_life()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(organhonked < world.time)
|
||||
organhonked = world.time + suffering_delay
|
||||
to_chat(owner, "<font color='red' size='7'>HONK</font>")
|
||||
@@ -587,7 +567,7 @@
|
||||
else
|
||||
owner.Jitter(500)
|
||||
|
||||
if(istype(owner, /mob/living/carbon/human))
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(isobj(H.shoes))
|
||||
var/thingy = H.shoes
|
||||
@@ -596,17 +576,15 @@
|
||||
spawn(20)
|
||||
if(thingy)
|
||||
walk(thingy,0)
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/honktumor/cursed
|
||||
unremovable = TRUE
|
||||
|
||||
/obj/item/organ/internal/honktumor/cursed/remove(mob/living/carbon/M, special = 0, clean_remove = 0)
|
||||
. = ..()
|
||||
if(!clean_remove)
|
||||
visible_message("<span class='warning'>[src] vanishes into dust, and a [M] emits a loud honk!</span>", "<span class='notice'>You hear a loud honk.</span>")
|
||||
insert(M) //You're not getting away that easily!
|
||||
else
|
||||
qdel(src)
|
||||
/obj/item/organ/internal/honktumor/cursed/on_life() //No matter what you do, no matter who you are, no matter where you go, you're always going to be a fat, stuttering dimwit.
|
||||
..()
|
||||
owner.setBrainLoss(80)
|
||||
owner.nutrition = 9000
|
||||
owner.overeatduration = 9000
|
||||
|
||||
/obj/item/organ/internal/beard
|
||||
name = "beard organ"
|
||||
@@ -630,13 +608,9 @@
|
||||
head_organ.h_style = "Mohawk"
|
||||
else
|
||||
head_organ.h_style = "Very Long Hair"
|
||||
head_organ.r_hair = 216
|
||||
head_organ.g_hair = 192
|
||||
head_organ.b_hair = 120
|
||||
head_organ.hair_colour = "#D8C078"
|
||||
H.update_hair()
|
||||
if(!(head_organ.f_style == "Very Long Beard"))
|
||||
head_organ.f_style = "Very Long Beard"
|
||||
head_organ.r_facial = 216
|
||||
head_organ.g_facial = 192
|
||||
head_organ.b_facial = 120
|
||||
head_organ.facial_colour = "#D8C078"
|
||||
H.update_fhair()
|
||||
|
||||
@@ -169,27 +169,17 @@
|
||||
var/alt_head = "None"
|
||||
|
||||
//Hair colour and style
|
||||
var/r_hair = 0
|
||||
var/g_hair = 0
|
||||
var/b_hair = 0
|
||||
var/r_hair_sec = 0
|
||||
var/g_hair_sec = 0
|
||||
var/b_hair_sec = 0
|
||||
var/hair_colour = "#000000"
|
||||
var/sec_hair_colour = "#000000"
|
||||
var/h_style = "Bald"
|
||||
|
||||
//Head accessory colour and style
|
||||
var/r_headacc = 0
|
||||
var/g_headacc = 0
|
||||
var/b_headacc = 0
|
||||
var/headacc_colour = "#000000"
|
||||
var/ha_style = "None"
|
||||
|
||||
//Facial hair colour and style
|
||||
var/r_facial = 0
|
||||
var/g_facial = 0
|
||||
var/b_facial = 0
|
||||
var/r_facial_sec = 0
|
||||
var/g_facial_sec = 0
|
||||
var/b_facial_sec = 0
|
||||
var/facial_colour = "#000000"
|
||||
var/sec_facial_colour = "#000000"
|
||||
var/f_style = "Shaved"
|
||||
|
||||
/obj/item/organ/external/head/remove()
|
||||
|
||||
@@ -2,28 +2,18 @@
|
||||
origin_tech = "biotech=5"
|
||||
icon_state = "xgibmid2"
|
||||
var/list/alien_powers = list()
|
||||
tough = 1
|
||||
sterile = 1
|
||||
|
||||
///obj/item/organ/internal/xenos/New()
|
||||
// for(var/A in alien_powers)
|
||||
// if(ispath(A))
|
||||
// alien_powers -= A
|
||||
// alien_powers += new A(src)
|
||||
// ..()
|
||||
tough = TRUE
|
||||
sterile = TRUE
|
||||
|
||||
///can be changed if xenos get an update..
|
||||
/obj/item/organ/internal/xenos/insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
for(var/P in alien_powers)
|
||||
M.verbs |= P
|
||||
//M.verbs |= alien_powers.Copy()
|
||||
|
||||
/obj/item/organ/internal/xenos/remove(mob/living/carbon/M, special = 0)
|
||||
for(var/P in alien_powers)
|
||||
M.verbs -= P
|
||||
//M.verbs -= alien_powers.Copy()
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/organ/internal/xenos/prepare_eat()
|
||||
|
||||
Reference in New Issue
Block a user