Vaurca Patch 3.00; Fixes #496 (#493)

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:
LordFowl
2016-07-10 01:09:56 +03:00
committed by skull132
parent 5675dec18a
commit fbaeb13039
16 changed files with 108 additions and 30 deletions
+5 -1
View File
@@ -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)
+19 -12
View File
@@ -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)
+1 -1
View File
@@ -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())
+10 -4
View File
@@ -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
+9 -1
View File
@@ -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
+1
View File
@@ -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()
+2
View File
@@ -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." )
+3 -1
View File
@@ -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]!", \
+1
View File
@@ -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)