mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 20:11:04 +01:00
Vaurca filtration bit organ added. When destroyed or removed, oxygen becomes poisonous to the Vaurca. Vaurca lungs have been made organic. Vaurca take 3x toxin damage, as a result of their rather alien biology. Vaurca lose additional blood when an opportunity to lose blood presents itself, due to their open-circulatory system. Vaurca organs are no longer all robotic, except for the neural socket and filtration bit. Vaurca organ surgery is now possible.
This commit is contained in:
@@ -72,6 +72,7 @@
|
||||
speech_verb = "broadcasts"
|
||||
colour = "vaurca"
|
||||
key = "9"
|
||||
native = 1
|
||||
flags = WHITELISTED | HIVEMIND
|
||||
syllables = list("vaur","uyek","uyit","avek","sc'theth","k'ztak","teth","wre'ge","lii","dra'","zo'","ra'","k'lax'","zz","vh","ik","ak",
|
||||
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
|
||||
@@ -89,7 +90,10 @@
|
||||
|
||||
if(!speaker_mask)
|
||||
speaker_mask = speaker.name
|
||||
var/msg = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span> [format_message(message, get_spoken_verb(message))]</span></i>"
|
||||
|
||||
var/msg = "<i><span class='game say'>[name], <span class='name'>[speaker_mask]</span>[format_message(message, get_spoken_verb(message))]</span></i>"
|
||||
|
||||
speaker.custom_emote(1, "[pick("twitches their antennae", "twitches their antennae rythmically")].")
|
||||
|
||||
if (within_jamming_range(speaker))
|
||||
// The user thinks that the message got through.
|
||||
|
||||
@@ -210,6 +210,8 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/adjustToxLoss(var/amount)
|
||||
if(species && species.tox_mod)
|
||||
amount = amount*species.tox_mod
|
||||
if(species.flags & NO_POISON)
|
||||
toxloss = 0
|
||||
else
|
||||
@@ -352,7 +354,7 @@ This function restores all organs.
|
||||
//visible_message("Hit debug. [damage] | [damagetype] | [def_zone] | [blocked] | [sharp] | [used_weapon]")
|
||||
if (src.invisibility == INVISIBILITY_LEVEL_TWO && back && (istype(back, /obj/item/weapon/rig)))
|
||||
if (damage > 0)
|
||||
src << "<span class='danger'>You are now visible.</span>"
|
||||
src << "<span class='danger'>You are now visible.</span>"
|
||||
src.invisibility = 0
|
||||
|
||||
//Handle other types of damage
|
||||
|
||||
@@ -286,12 +286,12 @@
|
||||
|
||||
if(istype(G.affecting,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = G.affecting
|
||||
H.apply_damage(25,BRUTE)
|
||||
// if(H.stat == 2) //no gibbing humans but i'll let you gib like a mouse or something that's cool
|
||||
// H.gib()
|
||||
H.apply_damage(25,BRUTE, sharp=1, edge=1)
|
||||
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(H)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
else
|
||||
var/mob/living/M = G.affecting
|
||||
if(!istype(M)) return //wut
|
||||
M.apply_damage(25,BRUTE)
|
||||
// if(M.stat == 2)
|
||||
// M.gib()
|
||||
if(!istype(M))
|
||||
return
|
||||
M.apply_damage(25,BRUTE, sharp=1, edge=1)
|
||||
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(M)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
|
||||
@@ -440,24 +440,31 @@
|
||||
var/failed_inhale = 0
|
||||
var/failed_exhale = 0
|
||||
|
||||
if(species.has_organ["breathing apparatus"] && src.get_species() == "Vaurca")
|
||||
var/obj/item/organ/vaurca/breathingapparatus/L = internal_organs_by_name["breathing apparatus"]
|
||||
if(isnull(L))
|
||||
poison_type = null
|
||||
else if(L.is_broken())
|
||||
poison_type = "oxygen" //if Vaurca breathing apparatus breaks, oxygen becomes poisonous.
|
||||
if(species.has_organ["filtration bit"] && src.get_species() == "Vaurca")
|
||||
var/obj/item/organ/vaurca/filtrationbit/F = internal_organs_by_name["filtration bit"]
|
||||
if(isnull(F))
|
||||
poison_type = "oxygen" //if Vaurca does not have filter, oxygen becomes poisonous
|
||||
|
||||
else if(F.is_broken())
|
||||
poison_type = "oxygen" //if Vaurca filter breaks, oxygen becomes poisonous.
|
||||
|
||||
else
|
||||
poison_type = "null"
|
||||
|
||||
else
|
||||
if(species.poison_type)
|
||||
poison_type = species.poison_type
|
||||
else
|
||||
poison_type = "phoron"
|
||||
|
||||
poison = breath.gas[poison_type]
|
||||
|
||||
if(species.breath_type)
|
||||
breath_type = species.breath_type
|
||||
else
|
||||
breath_type = "oxygen"
|
||||
inhaling = breath.gas[breath_type]
|
||||
|
||||
if(species.poison_type)
|
||||
poison_type = species.poison_type
|
||||
else
|
||||
poison_type = "phoron"
|
||||
poison = breath.gas[poison_type]
|
||||
|
||||
if(species.exhale_type)
|
||||
exhale_type = species.exhale_type
|
||||
exhaling = breath.gas[exhale_type]
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
var/list/unarmed_attacks = null // For empty hand harm-intent attack
|
||||
var/brute_mod = 1 // Physical damage multiplier.
|
||||
var/burn_mod = 1 // Burn damage multiplier.
|
||||
var/tox_mod = 1 // Toxin damage multiplier.
|
||||
var/vision_flags = SEE_SELF // Same flags as glasses.
|
||||
|
||||
// Death vars.
|
||||
@@ -234,7 +235,7 @@
|
||||
continue
|
||||
E.status |= ORGAN_ADV_ROBOT
|
||||
for(var/obj/item/organ/I in H.internal_organs)
|
||||
I.robotize()
|
||||
I.status |= ORGAN_ADV_ROBOT
|
||||
|
||||
/datum/species/proc/hug(var/mob/living/carbon/human/H,var/mob/living/target)
|
||||
|
||||
|
||||
@@ -280,6 +280,7 @@
|
||||
eyes = "vaurca_eyes" //makes it so that eye colour is not changed when skin colour is.
|
||||
brute_mod = 0.5 //note to self: remove is_synthetic checks for brmod and burnmod
|
||||
burn_mod = 1.5 //2x was a bit too much. we'll see how this goes.
|
||||
tox_mod = 3 //they're not used to all our weird human bacteria.
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
siemens_coefficient = 0 //attempting to mimic the old insulation feature.
|
||||
@@ -311,13 +312,15 @@
|
||||
|
||||
has_organ = list(
|
||||
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
|
||||
"breathing apparatus" = /obj/item/organ/vaurca/breathingapparatus,
|
||||
"lungs" = /obj/item/organ/lungs,
|
||||
"filtration bit" = /obj/item/organ/vaurca/filtrationbit,
|
||||
"heart" = /obj/item/organ/heart,
|
||||
"second heart" = /obj/item/organ/heart,
|
||||
"liver" = /obj/item/organ/liver,
|
||||
"kidneys" = /obj/item/organ/kidneys,
|
||||
"brain" = /obj/item/organ/brain,
|
||||
"eyes" = /obj/item/organ/eyes,
|
||||
|
||||
)
|
||||
|
||||
/datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -873,7 +873,7 @@ mob/proc/yank_out_object()
|
||||
usr.next_move = world.time + 20
|
||||
|
||||
if(usr.stat == 1)
|
||||
usr << "You are unconcious and cannot do that!"
|
||||
usr << "You are unconscious and cannot do that!"
|
||||
return
|
||||
|
||||
if(usr.restrained())
|
||||
|
||||
@@ -126,10 +126,16 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
for(var/obj/item/organ/external/temp in organs)
|
||||
if(!(temp.status & ORGAN_BLEEDING) || temp.status & ORGAN_ROBOT)
|
||||
continue
|
||||
for(var/datum/wound/W in temp.wounds) if(W.bleeding())
|
||||
blood_max += W.damage / 40
|
||||
if (temp.open)
|
||||
blood_max += 2 //Yer stomach is cut open
|
||||
if(src.get_species() == "Vaurca")
|
||||
for(var/datum/wound/W in temp.wounds) if(W.bleeding())
|
||||
blood_max += W.damage / 20
|
||||
if (temp.open)
|
||||
blood_max += 4 //Yer stomach is cut open
|
||||
else
|
||||
for(var/datum/wound/W in temp.wounds) if(W.bleeding())
|
||||
blood_max += W.damage / 40
|
||||
if (temp.open)
|
||||
blood_max += 2 //Yer stomach is cut open
|
||||
drip(blood_max)
|
||||
|
||||
//Makes a blood drop, leaking amt units of blood from the mob
|
||||
|
||||
@@ -208,10 +208,18 @@ obj/item/organ/vaurca/neuralsocket/process()
|
||||
parent_organ = "chest"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "breathing_app"
|
||||
robotic = 2
|
||||
robotic = 0
|
||||
|
||||
obj/item/organ/vaurca/breathingapparatus/process()
|
||||
return
|
||||
|
||||
/obj/item/organ/vaurca/breathingapparatus/removed()
|
||||
return
|
||||
|
||||
/obj/item/organ/vaurca/filtrationbit
|
||||
name = "filtration bit"
|
||||
organ_tag = "filtration bit"
|
||||
parent_organ = "head"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "filter"
|
||||
robotic = 2
|
||||
@@ -55,6 +55,7 @@
|
||||
|
||||
if(istype(target) && !(target.species.flags & NO_BLOOD))
|
||||
affected.status |= ORGAN_BLEEDING
|
||||
playsound(target.loc, 'sound/weapons/bladeslice.ogg', 50, 1)
|
||||
|
||||
affected.createwound(CUT, 1)
|
||||
affected.clamp()
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
user.visible_message("[user] starts putting \the [tool] inside [target]'s [get_cavity(affected)] cavity.", \
|
||||
"You start putting \the [tool] inside [target]'s [get_cavity(affected)] cavity." )
|
||||
target.custom_pain("The pain in your chest is living hell!",1)
|
||||
playsound(target.loc, 'sound/effects/squelch1.ogg', 50, 1)
|
||||
..()
|
||||
|
||||
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -215,6 +216,7 @@
|
||||
var/obj/item/weapon/implant/imp = obj
|
||||
imp.imp_in = null
|
||||
imp.implanted = 0
|
||||
playsound(target.loc, 'sound/effects/squelch1.ogg', 50, 1)
|
||||
else
|
||||
user.visible_message("\blue [user] removes \the [tool] from [target]'s [affected.name].", \
|
||||
"\blue There's something inside [target]'s [affected.name], but you just missed it this time." )
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
var/list/attached_organs = list()
|
||||
for(var/organ in target.internal_organs_by_name)
|
||||
var/obj/item/organ/I = target.internal_organs_by_name[organ]
|
||||
if(I && !I.status && I.parent_organ == target_zone)
|
||||
if(I && !(I.status & ORGAN_CUT_AWAY) && I.parent_organ == target_zone)
|
||||
attached_organs |= organ
|
||||
|
||||
var/organ_to_remove = input(user, "Which organ do you want to prepare for removal?") as null|anything in attached_organs
|
||||
@@ -309,6 +309,7 @@
|
||||
if(O && istype(O))
|
||||
O.removed(user)
|
||||
target.op_stage.current_organ = null
|
||||
playsound(target.loc, 'sound/effects/squelch1.ogg', 50, 1)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -383,6 +384,7 @@
|
||||
if(istype(O))
|
||||
user.remove_from_mob(O)
|
||||
O.replaced(target,affected)
|
||||
playsound(target.loc, 'sound/effects/squelch1.ogg', 50, 1)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("\red [user]'s hand slips, damaging \the [tool]!", \
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
user.visible_message("\blue [user] has cut away necrotic tissue in [target]'s [affected.name] with \the [tool].", \
|
||||
"\blue You have cut away necrotic tissue in [target]'s [affected.name] with \the [tool].")
|
||||
affected.open = 3
|
||||
playsound(target.loc, 'sound/effects/squelch1.ogg', 50, 1)
|
||||
|
||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
Reference in New Issue
Block a user