mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 05:27:01 +01:00
Merging SkyMarshal's stuff.
This commit is contained in:
+11
-10
@@ -23,7 +23,6 @@
|
||||
#define FILE_DIR "code/defines/mob/living/carbon"
|
||||
#define FILE_DIR "code/defines/mob/living/silicon"
|
||||
#define FILE_DIR "code/defines/obj"
|
||||
#define FILE_DIR "code/defines/obj/clothing"
|
||||
#define FILE_DIR "code/defines/procs"
|
||||
#define FILE_DIR "code/defines/sd_procs"
|
||||
#define FILE_DIR "code/FEA"
|
||||
@@ -90,6 +89,7 @@
|
||||
#define FILE_DIR "code/modules/chemical"
|
||||
#define FILE_DIR "code/modules/clothing"
|
||||
#define FILE_DIR "code/modules/clothing/glasses"
|
||||
#define FILE_DIR "code/modules/clothing/head"
|
||||
#define FILE_DIR "code/modules/clothing/spacesuits"
|
||||
#define FILE_DIR "code/modules/clothing/suits"
|
||||
#define FILE_DIR "code/modules/clothing/uniforms"
|
||||
@@ -328,14 +328,6 @@
|
||||
#include "code\defines\obj\vending.dm"
|
||||
#include "code\defines\obj\weapon.dm"
|
||||
#include "code\defines\obj\window.dm"
|
||||
#include "code\defines\obj\clothing\costume.dm"
|
||||
#include "code\defines\obj\clothing\ears.dm"
|
||||
#include "code\defines\obj\clothing\gimmick.dm"
|
||||
#include "code\defines\obj\clothing\gloves.dm"
|
||||
#include "code\defines\obj\clothing\head.dm"
|
||||
#include "code\defines\obj\clothing\jumpsuit.dm"
|
||||
#include "code\defines\obj\clothing\mask.dm"
|
||||
#include "code\defines\obj\clothing\shoes.dm"
|
||||
#include "code\defines\procs\AStar.dm"
|
||||
#include "code\defines\procs\captain_announce.dm"
|
||||
#include "code\defines\procs\church_name.dm"
|
||||
@@ -799,12 +791,21 @@
|
||||
#include "code\modules\chemical\Chemistry-Reagents.dm"
|
||||
#include "code\modules\chemical\Chemistry-Recipes.dm"
|
||||
#include "code\modules\chemical\Chemistry-Tools.dm"
|
||||
#include "code\modules\clothing\costume.dm"
|
||||
#include "code\modules\clothing\ears.dm"
|
||||
#include "code\modules\clothing\gimmick.dm"
|
||||
#include "code\modules\clothing\glasses.dm"
|
||||
#include "code\modules\clothing\hardhat.dm"
|
||||
#include "code\modules\clothing\gloves.dm"
|
||||
#include "code\modules\clothing\jumpsuit.dm"
|
||||
#include "code\modules\clothing\mask.dm"
|
||||
#include "code\modules\clothing\shoes.dm"
|
||||
#include "code\modules\clothing\spacesuit.dm"
|
||||
#include "code\modules\clothing\suit.dm"
|
||||
#include "code\modules\clothing\glasses\glasses.dm"
|
||||
#include "code\modules\clothing\glasses\hud.dm"
|
||||
#include "code\modules\clothing\head\hardhat.dm"
|
||||
#include "code\modules\clothing\head\hats.dm"
|
||||
#include "code\modules\clothing\head\helmets.dm"
|
||||
#include "code\modules\clothing\spacesuits\captain.dm"
|
||||
#include "code\modules\clothing\spacesuits\miscellaneous.dm"
|
||||
#include "code\modules\clothing\spacesuits\ninja.dm"
|
||||
|
||||
@@ -1,198 +1,485 @@
|
||||
/mob/living/carbon/human/tajaran/examine()
|
||||
set src in view()
|
||||
set src in oview()
|
||||
|
||||
usr << "\blue *---------*"
|
||||
if(!usr || !src) return
|
||||
if(((usr.disabilities & 128) || usr.blinded || usr.stat) && !(istype(usr,/mob/dead/observer/)))
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
usr << "\blue This is \icon[src.icon] <B>[src.name]</B>! One of the cat-like Tajarans."
|
||||
var/skipgloves = 0
|
||||
var/skipsuitstorage = 0
|
||||
var/skipjumpsuit = 0
|
||||
var/skipshoes = 0
|
||||
var/skipmask = 0
|
||||
var/skipears = 0
|
||||
var/skipeyes = 0
|
||||
|
||||
// crappy hack because you can't do \his[src] etc
|
||||
//exosuits and helmets obscure our view and stuff.
|
||||
if (src.wear_suit)
|
||||
skipgloves = src.wear_suit.flags_inv & HIDEGLOVES
|
||||
skipsuitstorage = src.wear_suit.flags_inv & HIDESUITSTORAGE
|
||||
skipjumpsuit = src.wear_suit.flags_inv & HIDEJUMPSUIT
|
||||
skipshoes = src.wear_suit.flags_inv & HIDESHOES
|
||||
|
||||
if (src.head)
|
||||
skipmask = src.head.flags_inv & HIDEMASK
|
||||
skipeyes = src.head.flags_inv & HIDEEYES
|
||||
skipears = src.head.flags_inv & HIDEEARS
|
||||
|
||||
// crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :<
|
||||
var/t_He = "It" //capitalised for use at the start of each line.
|
||||
var/t_his = "its"
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
t_his = "his"
|
||||
t_him = "him"
|
||||
else if (src.gender == FEMALE)
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
var/t_has = "has"
|
||||
var/t_is = "is"
|
||||
|
||||
if (src.w_uniform)
|
||||
var/msg = "<span class='info'>*---------*\nThis is "
|
||||
|
||||
if( skipjumpsuit && (wear_mask || skipmask) ) //big suits/masks make it hard to tell their gender
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_him = "them"
|
||||
t_has = "have"
|
||||
t_is = "are"
|
||||
else
|
||||
if(src.icon)
|
||||
msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
||||
switch(src.gender)
|
||||
if(MALE)
|
||||
t_He = "He"
|
||||
t_his = "his"
|
||||
t_him = "him"
|
||||
if(FEMALE)
|
||||
t_He = "She"
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
|
||||
msg += "<EM>\a [src], one of the cat-like Tajarans.</EM>!\n"
|
||||
|
||||
//uniform
|
||||
if (src.w_uniform && !skipjumpsuit)
|
||||
if (src.w_uniform.blood_DNA)
|
||||
usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.w_uniform] [src.w_uniform.gender==PLURAL?"some":"a"] blood-stained [src.w_uniform.name]!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] is wearing a \icon[src.w_uniform] [src.w_uniform.name]."
|
||||
msg += "[t_He] [t_is] wearing \icon[src.w_uniform] \a [src.w_uniform].\n"
|
||||
|
||||
if (src.handcuffed)
|
||||
usr << "\blue [src.name] is \icon[src.handcuffed] handcuffed!"
|
||||
//head
|
||||
if (src.head)
|
||||
if (src.head.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.head] [src.head.gender==PLURAL?"some":"a"] blood-stained [src.head.name] on [t_his] head!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head.\n"
|
||||
|
||||
//suit/armour
|
||||
if (src.wear_suit)
|
||||
if (src.wear_suit.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.wear_suit] [src.wear_suit.gender==PLURAL?"some":"a"] blood-stained [src.wear_suit.name]!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on."
|
||||
msg += "[t_He] [t_is] wearing \icon[src.wear_suit] \a [src.wear_suit].\n"
|
||||
|
||||
if (src.l_ear)
|
||||
usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear."
|
||||
//suit/armour storage
|
||||
if(src.s_store && !skipsuitstorage)
|
||||
if(src.s_store.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] carrying \icon[src.s_store] [src.s_store.gender==PLURAL?"some":"a"] blood-stained [src.s_store.name] on [t_his] [src.wear_suit.name]!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] carrying \icon[src.s_store] \a [src.s_store] on [t_his] [src.wear_suit.name].\n"
|
||||
|
||||
if (src.r_ear)
|
||||
usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear."
|
||||
|
||||
if (src.wear_mask)
|
||||
if (src.wear_mask.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.wear_mask.blood_DNA ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!"
|
||||
//back
|
||||
if (src.back)
|
||||
if (src.back.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.back] [src.back.gender==PLURAL?"some":"a"] blood-stained [src.back] on [t_his] back.</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face."
|
||||
msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n"
|
||||
|
||||
//left hand
|
||||
if (src.l_hand)
|
||||
if (src.l_hand.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.l_hand.blood_DNA ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] holding \icon[src.l_hand] [src.l_hand.gender==PLURAL?"some":"a"] blood-stained [src.l_hand.name] in [t_his] left hand!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand."
|
||||
msg += "[t_He] [t_is] holding \icon[src.l_hand] \a [src.l_hand] in [t_his] left hand.\n"
|
||||
|
||||
//right hand
|
||||
if (src.r_hand)
|
||||
if (src.r_hand.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.r_hand.blood_DNA ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] holding \icon[src.r_hand] [src.r_hand.gender==PLURAL?"some":"a"] blood-stained [src.r_hand.name] in [t_his] right hand!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand."
|
||||
msg += "[t_He] [t_is] holding \icon[src.r_hand] \a [src.r_hand] in [t_his] right hand.\n"
|
||||
|
||||
//gloves
|
||||
if (src.gloves && !skipgloves)
|
||||
if (src.gloves.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.gloves] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.gloves.name] on [t_his] hands!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_has] \icon[src.gloves] \a [src.gloves] on [t_his] hands.\n"
|
||||
else if (src.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] blood-stained hands!</span>\n"
|
||||
|
||||
//handcuffed?
|
||||
if (src.handcuffed)
|
||||
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
|
||||
|
||||
//belt
|
||||
if (src.belt)
|
||||
if (src.belt.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.belt.blood_DNA ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!"
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.belt] [src.belt.gender==PLURAL?"some":"a"] blood-stained [src.belt.name] about [t_his] waist!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.belt] [src.belt.name] on [t_his] belt."
|
||||
if(src.s_store)
|
||||
if(src.s_store.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.s_store.blood_DNA ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!"
|
||||
msg += "[t_He] [t_has] \icon[src.belt] \a [src.belt] about [t_his] waist.\n"
|
||||
|
||||
//shoes
|
||||
if (src.shoes && !skipshoes)
|
||||
if(src.shoes.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.shoes] [src.shoes.gender==PLURAL?"some":"a"] blood-stained [src.shoes.name] on [t_his] feet!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]."
|
||||
if (src.shoes)
|
||||
usr << "[src.shoes.blood_DNA ? "\red" : "\blue"][src.name] has a[src.shoes.blood_DNA ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet."
|
||||
msg += "[t_He] [t_is] wearing \icon[src.shoes] \a [src.shoes] on [t_his] feet.\n"
|
||||
|
||||
|
||||
if (src.gloves)
|
||||
if (src.gloves.blood_DNA)
|
||||
usr << "\red [src.name] has bloody \icon[src.gloves] [src.gloves.name] on [t_his] hands!"
|
||||
//mask
|
||||
if (src.wear_mask && !skipmask)
|
||||
if (src.wear_mask.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.wear_mask] [src.wear_mask.gender==PLURAL?"some":"a"] blood-stained [src.wear_mask.name] on [t_his] face!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has \icon[src.gloves] [src.gloves.name] on [t_his] hands."
|
||||
else if (src.blood_DNA)
|
||||
usr << "\red [src.name] has bloody hands!"
|
||||
msg += "[t_He] [t_has] \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n"
|
||||
|
||||
if (src.back)
|
||||
usr << "\blue [src.name] has a \icon[src.back] [src.back.name] on [t_his] back."
|
||||
//eyes
|
||||
if (src.glasses && !skipeyes)
|
||||
if (src.glasses.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.glasses] [src.glasses.gender==PLURAL?"some":"a"] blood-stained [src.glasses] covering [t_his] eyes!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_has] \icon[src.glasses] \a [src.glasses] covering [t_his] eyes.\n"
|
||||
|
||||
if (src.l_ear && !skipears)
|
||||
msg += "[t_He] [t_has] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear.\n"
|
||||
|
||||
if (src.r_ear && !skipears)
|
||||
msg += "[t_He] [t_has] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear.\n"
|
||||
|
||||
//ID
|
||||
if (src.wear_id)
|
||||
var/id
|
||||
var/photo = 0
|
||||
if(istype(src:wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = src:wear_id
|
||||
if(istype(src.wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = src.wear_id
|
||||
id = pda.owner
|
||||
else if(istype(src.wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[
|
||||
var/obj/item/weapon/card/id/idcard = src.wear_id
|
||||
id = idcard.registered_name
|
||||
if (id && (id != src.real_name) && (get_dist(src, usr) <= 1) && prob(10))
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id] yet something doesn't seem right...</span>\n"
|
||||
else
|
||||
id = src.wear_id.registered_name
|
||||
if (src.wear_id.PHOTO)
|
||||
photo = 1
|
||||
if (id != src.real_name && in_range(src, usr) && prob(10))
|
||||
if (photo)
|
||||
usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
|
||||
else
|
||||
usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
|
||||
else
|
||||
if (photo)
|
||||
usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
|
||||
else
|
||||
usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
|
||||
|
||||
msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id].\n"
|
||||
|
||||
//Jitters
|
||||
if (src.is_jittery)
|
||||
switch(src.jitteriness)
|
||||
if(300 to INFINITY)
|
||||
usr << "\red [src] is violently convulsing."
|
||||
if(200 to 300)
|
||||
usr << "\red [src] looks extremely jittery."
|
||||
if(100 to 200)
|
||||
usr << "\red [src] is twitching ever so slightly."
|
||||
if(src.jitteriness >= 300)
|
||||
msg += "<span class='warning'><B>[t_He] [t_is] convulsing violently!</B></span>\n"
|
||||
else if(src.jitteriness >= 200)
|
||||
msg += "<span class='warning'>[t_He] [t_is] extremely jittery.</span>\n"
|
||||
else if(src.jitteriness >= 100)
|
||||
msg += "<span class='warning'>[t_He] [t_is] twitching ever so slightly.</span>\n"
|
||||
|
||||
if (src.suiciding)
|
||||
switch(src.suiciding)
|
||||
if(1)
|
||||
usr << "\red [src.name] appears to have bitten [t_his] tongue off!"
|
||||
msg += "<span class='warning'>[t_He] [t_has] bitten off [t_his] own tongue and [t_has] suffered major bloodloss!</span>\n"
|
||||
|
||||
var/distance = get_dist(usr,src)
|
||||
if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything
|
||||
distance = 1
|
||||
|
||||
if (src.stat == 1 || stat == 2)
|
||||
usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep."
|
||||
if(health < 0 && distance <= 3)
|
||||
usr << "\red [name] does not appear to be breathing."
|
||||
if(ishuman(src) && usr.stat == 0 && src.stat == 1 && distance <= 1)
|
||||
msg += "<span class='warning'>[name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep.</span>\n"
|
||||
if((!isbreathing || holdbreath) && distance <= 3)
|
||||
msg += "<span class='warning'>[name] does not appear to be breathing.</span>\n"
|
||||
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1)
|
||||
for(var/mob/O in viewers(usr.loc, null))
|
||||
O.show_message("[usr] checks [src]'s pulse.", 1)
|
||||
sleep(15)
|
||||
usr << "\blue [name] has a pulse!"
|
||||
spawn(15)
|
||||
usr << "\blue [name] has a pulse!"
|
||||
|
||||
if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1))
|
||||
if(distance <= 1)
|
||||
if(ishuman(usr) && usr.stat == 0)
|
||||
for(var/mob/O in viewers(usr.loc, null) )
|
||||
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0)
|
||||
for(var/mob/O in viewers(usr.loc, null))
|
||||
O.show_message("[usr] checks [src]'s pulse.", 1)
|
||||
sleep(15)
|
||||
usr << "\red [name] has no pulse!"
|
||||
else
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly injured!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"
|
||||
spawn(15)
|
||||
usr << "\red [name] has no pulse!"
|
||||
|
||||
if (src.cloneloss)
|
||||
if (src.cloneloss < 30)
|
||||
usr << "\red [src.name] looks slightly... unfinished?"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks very... unfinished?</B>"
|
||||
/* if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly injured!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"*/
|
||||
|
||||
if (src.getFireLoss())
|
||||
if (src.getFireLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly burned!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely burned!</B>"
|
||||
if (src.cloneloss)
|
||||
if (src.cloneloss < 30)
|
||||
msg += "<span class='warning'>[src.name] looks slightly... unfinished?</span>\n"
|
||||
else
|
||||
msg += "<span class='warning'>[src.name] looks very... unfinished?</B></span>\n"
|
||||
|
||||
if (src.nutrition < 100)
|
||||
usr << "\red [src.name] looks like flesh and bones."
|
||||
else if (src.nutrition >= 500)
|
||||
if (usr.nutrition < 100)
|
||||
usr << "\red [src.name] looks very round and delicious. Like a little piggy. A tasty piggy."
|
||||
else
|
||||
usr << "\blue [src.name] looks quite chubby."
|
||||
/* if (src.getFireLoss())
|
||||
if (src.getFireLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly burned!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely burned!</B>"*/
|
||||
msg += "<span class='warning'>"
|
||||
if (src.nutrition < 100)
|
||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||
else if (src.nutrition >= 500)
|
||||
if (usr.nutrition < 100)
|
||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] quite chubby.\n"
|
||||
|
||||
else if (src.brainloss >= 60)
|
||||
usr << "\red [src.name] has a stupid expression on [t_his] face."
|
||||
if (!src.client)
|
||||
usr << "\red [src.name] doesn't seem as though they want to talk."
|
||||
msg += "</span>"
|
||||
|
||||
|
||||
if (src.getBrainLoss() >= 60 && !stat)
|
||||
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
|
||||
|
||||
if (!src.client)
|
||||
msg += "[t_He] [t_has] a vacant, braindead stare...\n"
|
||||
|
||||
var/list/wound_descriptions = list()
|
||||
var/list/wound_flavor_text = list()
|
||||
for(var/named in organs)
|
||||
var/datum/organ/external/temp = organs[named]
|
||||
if(temp.destroyed)
|
||||
usr << "\red [src.name] is missing [t_his] [temp.display_name]."
|
||||
if(temp.wounds)
|
||||
for(var/datum/organ/external/wound/w in temp.wounds)
|
||||
var/size = w.wound_size
|
||||
var/sizetext
|
||||
switch(size)
|
||||
if(temp)
|
||||
if(temp.destroyed)
|
||||
wound_flavor_text["[temp.display_name]"] = "<span class='warning'><b>[src.name] is missing [t_his] [temp.display_name].</b></span>\n"
|
||||
continue
|
||||
if(temp.wounds)
|
||||
var/list/wounds = list(list(),list(),list(),list(),list(),list())
|
||||
for(var/datum/organ/wound/w in temp.wounds)
|
||||
switch(w.healing_state)
|
||||
if(0)
|
||||
var/list/cut = wounds[1]
|
||||
cut += w
|
||||
wounds[1] = cut
|
||||
if(1)
|
||||
var/list/cut = wounds[2]
|
||||
cut += w
|
||||
wounds[2] = cut
|
||||
if(2)
|
||||
var/list/cut = wounds[3]
|
||||
cut += w
|
||||
wounds[3] = cut
|
||||
if(3)
|
||||
var/list/cut = wounds[4]
|
||||
cut += w
|
||||
wounds[4] = cut
|
||||
if(4)
|
||||
var/list/cut = wounds[5]
|
||||
cut += w
|
||||
wounds[5] = cut
|
||||
if(5)
|
||||
var/list/cut = wounds[6]
|
||||
cut += w
|
||||
wounds[6] = cut
|
||||
wound_descriptions["[temp.display_name]"] = wounds
|
||||
else
|
||||
wound_flavor_text["[temp.display_name]"] = ""
|
||||
//Now that we have a big list of all the wounds, on all the limbs.
|
||||
var/list/is_bleeding = list()
|
||||
for(var/named in wound_descriptions)
|
||||
var/list/wound_states = wound_descriptions[named]
|
||||
var/list/flavor_text = list()
|
||||
for(var/i = 1, i <= 6, i++)
|
||||
var/list/wound_state = wound_states[i] //All wounds at this level of healing.
|
||||
var/list/tally = list("cut" = 0, "deep cut" = 0, "flesh wound" = 0, "gaping wound" = 0, "big gaping wound" = 0, "massive wound" = 0,\
|
||||
"tiny bruise" = 0, "small bruise" = 0, "moderate bruise" = 0, "large bruise" = 0, "huge bruise" = 0, "monumental bruise" = 0,\
|
||||
"small burn" = 0, "moderate burn" = 0, "large burn" = 0, "severe burn" = 0, "deep burn" = 0, "carbonised area" = 0) //How many wounds of what size.
|
||||
for(var/datum/organ/wound/w in wound_state)
|
||||
if(w.bleeding && !is_bleeding[named]) is_bleeding[named] = 1
|
||||
switch(w.wound_size)
|
||||
if(1)
|
||||
sizetext = "cut"
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["cut"] += 1
|
||||
if(1)
|
||||
tally["tiny bruise"] += 1
|
||||
if(2)
|
||||
tally["small burn"] += 1
|
||||
if(2)
|
||||
sizetext = "deep cut"
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["deep cut"] += 1
|
||||
if(1)
|
||||
tally["small bruise"] += 1
|
||||
if(2)
|
||||
tally["moderate burn"] += 1
|
||||
if(3)
|
||||
sizetext = "flesh wound"
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["flesh wound"] += 1
|
||||
if(1)
|
||||
tally["moderate bruise"] += 1
|
||||
if(2)
|
||||
tally["large burn"] += 1
|
||||
if(4)
|
||||
sizetext = "gaping wound"
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["gaping wound"] += 1
|
||||
if(1)
|
||||
tally["large bruise"] += 1
|
||||
if(2)
|
||||
tally["severe burn"] += 1
|
||||
if(5)
|
||||
sizetext = "big gaping wound"
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["big gaping wound"] += 1
|
||||
if(1)
|
||||
tally["huge bruise"] += 1
|
||||
if(2)
|
||||
tally["deep burn"] += 1
|
||||
if(6)
|
||||
sizetext = "massive wound"
|
||||
if(w.bleeding)
|
||||
usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]."
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["massive wound"] += 1
|
||||
if(1)
|
||||
tally["monumental bruise"] += 1
|
||||
if(2)
|
||||
tally["carbonised area"] += 1
|
||||
for(var/tallied in tally)
|
||||
if(!tally[tallied])
|
||||
continue
|
||||
//if(flavor_text_string && tally[tallied])
|
||||
// for(
|
||||
// flavor_text_string += pick(list(", as well as", ", in addition to")) //add more later.
|
||||
var/tallied_rename = list("cut" = "cut","deep cut" = "deep cut", "flesh wound" = "flesh wound",\
|
||||
"gaping wound" = "gaping wound", "big gaping wound" = "big gaping wound", "massive wound" = "massive wound",\
|
||||
"tiny bruise" = "tiny bruise", "small bruise" = "small bruise", "moderate bruise" = "moderate bruise",\
|
||||
"large bruise" = "large bruise", "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\
|
||||
"small burn" = "small burn", "moderate burn" = "moderate burn", "large burn" = "large burn",\
|
||||
"severe burn" = "severe burn", "deep burn" = "deep burn", "carbonised area" = "carbonised area")
|
||||
switch(i)
|
||||
if(2) //Healing wounds.
|
||||
if(tallied in list("cut","tiny bruise","small burn"))
|
||||
continue
|
||||
tallied_rename = list("deep cut" = "clotted cut", "flesh wound" = "small bandaged wound",\
|
||||
"gaping wound" = "bandaged wound", "big gaping wound" = "gauze wrapped wound",\
|
||||
"massive wound" = "massive blood soaked bandage", "small bruise" = "small bruise",\
|
||||
"moderate bruise" = "moderate bruise", "large bruise" = "large bruise",\
|
||||
"huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\
|
||||
"moderate burn" = "moderate salved burn", "large burn" = "large salved burn",\
|
||||
"severe burn" = "severe salved burn", "deep burn" = "deep salved burn",\
|
||||
"carbonised area" = "treated carbonised area")
|
||||
if(3)
|
||||
if(tallied in list("cut","tiny bruise","small burn"))
|
||||
continue
|
||||
tallied_rename = list("deep cut" = "fading cut", "flesh wound" = "small healing wound",\
|
||||
"gaping wound" = "healing wound", "big gaping wound" = "big healing wound",\
|
||||
"massive wound" = "massive healing wound", "small bruise" = "tiny bruise",\
|
||||
"moderate bruise" = "small bruise", "large bruise" = "moderate bruise",\
|
||||
"huge bruise" = "large bruise", "monumental bruise" = "huge bruise",\
|
||||
"moderate burn" = "healing moderate burn", "large burn" = "healing large burn",\
|
||||
"severe burn" = "healing severe burn", "deep burn" = "healing deep burn",\
|
||||
"carbonised area" = "slowly healing carbonised area")
|
||||
if(4)
|
||||
if(tallied in list("cut","deep cut","tiny bruise", "small bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("flesh wound" = "small red scar", "gaping wound" = "angry straight scar",\
|
||||
"big gaping wound" = "jagged angry scar", "massive wound" = "gigantic angry scar",\
|
||||
"moderate bruise" = "tiny bruise", "large bruise" = "small bruise",\
|
||||
"huge bruise" = "moderate bruise", "monumental bruise" = "large bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "healing carbonised area")
|
||||
if(5)
|
||||
if(tallied in list("cut","deep cut","tiny bruise", "small bruise", "moderate bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("flesh wound" = "small scar", "gaping wound" = "straight scar",\
|
||||
"big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\
|
||||
"large bruise" = "tiny bruise",\
|
||||
"huge bruise" = "small bruise", "monumental bruise" = "moderate bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "large scarred area")
|
||||
if(6)
|
||||
if(tallied in list("cut","deep cut","flesh wound","tiny bruise", "small bruise", "moderate bruise", "large bruise", "huge bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("gaping wound" = "straight scar",\
|
||||
"big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\
|
||||
"monumental bruise" = "tiny bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "large scarred area")
|
||||
var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\
|
||||
"huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area")
|
||||
switch(tally[tallied])
|
||||
if(1)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]"
|
||||
else
|
||||
flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]"
|
||||
if(2)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s"
|
||||
if(3 to 5)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has several [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += " several [tallied_rename[tallied]]s"
|
||||
if(6 to INFINITY)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has a bunch of [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += " a ton of [tallied_rename[tallied]]s"
|
||||
if(flavor_text.len)
|
||||
var/flavor_text_string = ""
|
||||
for(var/text = 1, text <= flavor_text.len, text++)
|
||||
if(text == flavor_text.len && flavor_text.len > 1)
|
||||
flavor_text_string += ", and"
|
||||
else if(flavor_text.len > 1)
|
||||
flavor_text_string += ","
|
||||
flavor_text_string += flavor_text[text]
|
||||
flavor_text_string += " on [t_his] [named].</span><br>"
|
||||
wound_flavor_text["[named]"] = flavor_text_string
|
||||
if(wound_flavor_text["head"] && !skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas)))
|
||||
msg += wound_flavor_text["head"]
|
||||
else if(is_bleeding["head"])
|
||||
msg += "<span class='warning'>[src] has blood running down [t_his] face!</span>\n"
|
||||
if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["chest"]
|
||||
else if(is_bleeding["chest"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["left arm"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["left arm"]
|
||||
else if(is_bleeding["left arm"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["left hand"] && !gloves && !skipgloves)
|
||||
msg += wound_flavor_text["left hand"]
|
||||
else if(is_bleeding["left hand"])
|
||||
msg += "<span class='warning'>[src] has blood running from under [t_his] gloves!</span>\n"
|
||||
if(wound_flavor_text["right arm"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["right arm"]
|
||||
else if(is_bleeding["right arm"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["right hand"] && !gloves && !skipgloves)
|
||||
msg += wound_flavor_text["right hand"]
|
||||
else if(is_bleeding["right hand"])
|
||||
msg += "<span class='warning'>[src] has blood running from under [t_his] gloves!</span>\n"
|
||||
if(wound_flavor_text["groin"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["groin"]
|
||||
else if(is_bleeding["groin"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["left leg"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["left leg"]
|
||||
else if(is_bleeding["left leg"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["left foot"]&& !shoes && !skipshoes)
|
||||
msg += wound_flavor_text["left foot"]
|
||||
else if(is_bleeding["left foot"])
|
||||
msg += "<span class='warning'>[src] has blood running from [t_his] shoes!</span>\n"
|
||||
if(wound_flavor_text["right leg"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["right leg"]
|
||||
else if(is_bleeding["right leg"])
|
||||
msg += "<span class='warning'>[src] has blood soaking through from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["right foot"]&& !shoes && !skipshoes)
|
||||
msg += wound_flavor_text["right foot"]
|
||||
else if(is_bleeding["right foot"])
|
||||
msg += "<span class='warning'>[src] has blood running from [t_his] shoes!</span>\n"
|
||||
|
||||
print_flavor_text()
|
||||
|
||||
usr << "\blue *---------*"
|
||||
// if(w.bleeding)
|
||||
// usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]."
|
||||
// continue
|
||||
|
||||
msg += print_flavor_text()
|
||||
|
||||
msg += "\blue *---------*"
|
||||
usr << msg
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
layer = 2
|
||||
var/level = 2
|
||||
var/flags = FPRINT
|
||||
var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc.
|
||||
var/list/fingerprints
|
||||
var/list/fingerprintshidden
|
||||
var/fingerprintslast = null
|
||||
|
||||
@@ -62,6 +62,16 @@
|
||||
D.cure(0)
|
||||
..()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/drip
|
||||
name = "drips of blood"
|
||||
desc = "It's red."
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 2
|
||||
icon = 'drip.dmi'
|
||||
icon_state = "1"
|
||||
track_amt = 0
|
||||
|
||||
/obj/effect/decal/cleanable/mucus
|
||||
name = "Mucus"
|
||||
desc = "Disgusting mucus."
|
||||
|
||||
+12
-12
@@ -397,8 +397,8 @@
|
||||
name = "medical pack"
|
||||
singular_name = "medical pack"
|
||||
icon = 'items.dmi'
|
||||
amount = 5
|
||||
max_amount = 5
|
||||
amount = 10 //To compensate for wounds
|
||||
max_amount = 10
|
||||
w_class = 1
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
@@ -406,11 +406,11 @@
|
||||
var/heal_burn = 0
|
||||
|
||||
/obj/item/stack/medical/bruise_pack
|
||||
name = "bruise pack"
|
||||
singular_name = "bruise pack"
|
||||
desc = "A pack designed to treat blunt-force trauma."
|
||||
name = "\improper Roll of Gauze"
|
||||
singular_name = "\improper Roll of Gauze"
|
||||
desc = "A roll of gauze for sealing up wounds."
|
||||
icon_state = "brutepack"
|
||||
heal_brute = 40
|
||||
heal_brute = 1
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/tajaran
|
||||
@@ -419,7 +419,7 @@
|
||||
desc = "A soft leaf that is rubbed on bruises."
|
||||
icon = 'harvest.dmi'
|
||||
icon_state = "cabbage"
|
||||
heal_brute = 30
|
||||
heal_brute = 1
|
||||
|
||||
/obj/item/stack/medical/ointment
|
||||
name = "ointment"
|
||||
@@ -427,7 +427,7 @@
|
||||
gender = PLURAL
|
||||
singular_name = "ointment"
|
||||
icon_state = "ointment"
|
||||
heal_burn = 40
|
||||
heal_burn = 1
|
||||
origin_tech = "biotech=1"
|
||||
|
||||
/obj/item/stack/medical/ointment/tajaran
|
||||
@@ -436,14 +436,14 @@
|
||||
desc = "A cold leaf that is rubbed on burns."
|
||||
icon = 'harvest.dmi'
|
||||
icon_state = "ambrosiavulgaris"
|
||||
heal_burn = 30
|
||||
heal_burn = 1
|
||||
|
||||
/obj/item/stack/medical/advanced/bruise_pack
|
||||
name = "advanced trauma kit"
|
||||
singular_name = "advanced trauma kit"
|
||||
desc = "An advanced trauma kit for severe injuries."
|
||||
icon_state = "traumakit"
|
||||
heal_brute = 40
|
||||
heal_brute = 1
|
||||
origin_tech = "biotech=1"
|
||||
amount = 10
|
||||
max_amount = 10
|
||||
@@ -453,7 +453,7 @@
|
||||
singular_name = "advanced burn kit"
|
||||
desc = "An advanced treatment kit for severe burns."
|
||||
icon_state = "burnkit"
|
||||
heal_burn = 40
|
||||
heal_burn = 1
|
||||
origin_tech = "biotech=1"
|
||||
amount = 10
|
||||
max_amount = 10
|
||||
@@ -1882,4 +1882,4 @@
|
||||
desc = "spooky"
|
||||
gender = PLURAL
|
||||
icon = 'wizard.dmi'
|
||||
icon_state = "ectoplasm"
|
||||
icon_state = "ectoplasm"
|
||||
@@ -27,6 +27,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/head/magus
|
||||
name = "magus helm"
|
||||
@@ -45,4 +46,5 @@
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade)
|
||||
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0)
|
||||
armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
@@ -120,15 +120,16 @@ var/list/nonhuman_positions = list(
|
||||
|
||||
/proc/GetRank(var/job)
|
||||
switch(job)
|
||||
if("Bartender","Chef","Lawyer","Librarian","Janitor","Assistant","Unassigned", "Counselor")
|
||||
if("Bartender","Chef","Lawyer","Librarian","Janitor","Assistant","Unassigned")
|
||||
return 0
|
||||
if("Chaplain","Botanist","Hydroponicist","Medical Doctor","Atmospheric Technician","Geneticist", "Virologist", "Surgeon", "Emergency Medical Technician")
|
||||
if("Chaplain","Botanist","Hydroponicist","Medical Doctor","Atmospheric Technician","Geneticist", "Virologist", "Surgeon", "Emergency Medical Technician", "Counselor")
|
||||
return 1
|
||||
if("Quartermaster","Cargo Technician","Chemist", "Station Engineer","Roboticist", "Security Officer", "Forensic Technician","Detective", "Scientist","Shaft Miner", "Xenobiologist", "Plasma Researcher")
|
||||
if("Quartermaster","Cargo Technician","Chemist", "Station Engineer","Roboticist", "Security Officer", "Forensic Technician","Detective", "Scientist","Shaft Miner", "Xenobiologist", "Plasma Researcher","Chief Medical Officer")
|
||||
return 2
|
||||
if("Research Director","Chief Medical Officer","Head of Security","Chief Engineer","Warden")
|
||||
if("Research Director","Head of Security","Chief Engineer","Warden")
|
||||
return 3
|
||||
if("Captain","Head of Personnel","Wizard","MODE")
|
||||
return 4
|
||||
else
|
||||
world << "\"[job]\" NOT GIVEN RANK, REPORT JOBS.DM ERROR TO A CODER"
|
||||
message_admins("\"[job]\" NOT GIVEN RANK, REPORT JOBS.DM ERROR TO A CODER")
|
||||
return 2
|
||||
@@ -338,7 +338,7 @@
|
||||
//Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs.
|
||||
if ((!selected) || (!src.pod1) || (src.pod1.occupant) || (src.pod1.mess) || !config.revival_cloning)
|
||||
src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD
|
||||
else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"]))
|
||||
else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["interface"],C.fields["changeling"],C.fields["original"]))
|
||||
src.temp = "Cloning cycle activated."
|
||||
geneticsrecords.Remove(C)
|
||||
del(C)
|
||||
@@ -385,6 +385,7 @@
|
||||
R.fields["UI"] = subject.dna.uni_identity
|
||||
R.fields["SE"] = subject.dna.struc_enzymes
|
||||
R.fields["changeling"] = subject.changeling
|
||||
R.fields["original"] = subject.original_name
|
||||
|
||||
// Preferences stuff
|
||||
R.fields["interface"] = subject.UI
|
||||
@@ -500,7 +501,7 @@
|
||||
//Clonepod
|
||||
|
||||
//Start growing a human clone in the pod!
|
||||
/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref, var/mrace, var/UI, var/datum/changeling/changelingClone)
|
||||
/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref, var/mrace, var/UI, var/datum/changeling/changelingClone, var/original_name)
|
||||
if(((!ghost) || (!ghost.client)) || src.mess || src.attempting)
|
||||
return 0
|
||||
|
||||
@@ -534,6 +535,7 @@
|
||||
src.occupant.real_name = clonename
|
||||
else
|
||||
src.occupant.real_name = "clone" //No null names!!
|
||||
src.occupant.original_name = original_name
|
||||
|
||||
|
||||
var/datum/mind/clonemind = (locate(mindref) in ticker.minds)
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
A.yo = U.y - T.y
|
||||
A.xo = U.x - T.x
|
||||
spawn( 0 )
|
||||
A.process()
|
||||
A.fired()
|
||||
return
|
||||
|
||||
|
||||
@@ -591,6 +591,6 @@
|
||||
A.current = curloc
|
||||
A.yo = targloc.y - curloc.y
|
||||
A.xo = targloc.x - curloc.x
|
||||
A.process()
|
||||
A.fired()
|
||||
sleep(2)
|
||||
return
|
||||
|
||||
@@ -308,13 +308,24 @@ proc/analyze_health_less_info(mob/living/carbon/M as mob, mob/user as mob)
|
||||
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
|
||||
if (M.virus2 || M.reagents.reagent_list.len > 0)
|
||||
user.show_message(text("\red Unknown substance detected in blood."), 1)
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name in H.organs)
|
||||
var/datum/organ/external/e = H.organs[name]
|
||||
if(e.broken)
|
||||
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
|
||||
break
|
||||
if(ishuman(M))
|
||||
if(M:vessel)
|
||||
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
|
||||
var/blood_percent = blood_volume / 560
|
||||
blood_percent *= 100
|
||||
if(blood_volume <= 448)
|
||||
user.show_message("\red <b>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl")
|
||||
else if(blood_volume <= 336)
|
||||
user.show_message("\red <b>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl")
|
||||
else
|
||||
user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl")
|
||||
return
|
||||
|
||||
/obj/item/device/healthanalyzer/attack(mob/M as mob, mob/user as mob)
|
||||
|
||||
@@ -474,7 +474,8 @@
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/knife) || \
|
||||
istype(W, /obj/item/weapon/shard) || \
|
||||
istype(W, /obj/item/weapon/reagent_containers/syringe) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/fork) && W.icon_state != "forkloaded" || \
|
||||
istype(W,/obj/item/projectile)\
|
||||
)
|
||||
|
||||
/proc/is_cut(obj/item/W as obj)
|
||||
@@ -488,7 +489,8 @@
|
||||
istype(W, /obj/item/weapon/butch) || \
|
||||
istype(W, /obj/item/weapon/scalpel) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/knife) || \
|
||||
istype(W, /obj/item/weapon/shard) \
|
||||
istype(W, /obj/item/weapon/shard) || \
|
||||
istype(W,/obj/item/projectile) \
|
||||
)
|
||||
|
||||
/proc/is_burn(obj/item/W as obj)
|
||||
@@ -496,7 +498,8 @@
|
||||
istype(W, /obj/item/weapon/weldingtool) && W:welding || \
|
||||
istype(W, /obj/item/weapon/zippo) && W:lit || \
|
||||
istype(W, /obj/item/weapon/match) && W:lit || \
|
||||
istype(W, /obj/item/clothing/mask/cigarette) && W:lit \
|
||||
istype(W, /obj/item/clothing/mask/cigarette) && W:lit || \
|
||||
istype(W,/obj/item/projectile/beam)\
|
||||
)
|
||||
|
||||
/obj/item/weapon/paper/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
|
||||
@@ -258,12 +258,14 @@ THERMAL GLASSES
|
||||
src.up = !src.up
|
||||
src.see_face = !src.see_face
|
||||
src.flags |= HEADCOVERSEYES
|
||||
flags_inv |= HIDEMASK|HIDEEARS|HIDEEYES
|
||||
icon_state = "welding"
|
||||
usr << "You flip the mask down to protect your eyes."
|
||||
else
|
||||
src.up = !src.up
|
||||
src.see_face = !src.see_face
|
||||
src.flags &= ~HEADCOVERSEYES
|
||||
flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES)
|
||||
icon_state = "weldingup"
|
||||
usr << "You push the mask up out of your face."
|
||||
usr.update_clothing()
|
||||
@@ -416,4 +418,4 @@ THERMAL GLASSES
|
||||
src.flags &= ~HEADCOVERSEYES
|
||||
icon_state = "engspace_helmet_clear"
|
||||
usr << "You toggle the reflective tint off."
|
||||
usr.update_clothing()
|
||||
usr.update_clothing()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/proc/parse_zone(zone)
|
||||
/*/proc/parse_zone(zone)
|
||||
if(zone == "r_hand") return "right hand"
|
||||
else if (zone == "l_hand") return "left hand"
|
||||
else if (zone == "l_arm") return "left arm"
|
||||
@@ -7,7 +7,7 @@
|
||||
else if (zone == "r_leg") return "right leg"
|
||||
else if (zone == "l_foot") return "left foot"
|
||||
else if (zone == "r_foot") return "right foot"
|
||||
else return zone
|
||||
else return zone*/
|
||||
|
||||
/proc/text2dir(direction)
|
||||
switch(uppertext(direction))
|
||||
|
||||
@@ -246,6 +246,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
return
|
||||
|
||||
hear(var/msg)
|
||||
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
|
||||
msg = sanitize_simple(msg, replacechars)
|
||||
if(findtext(msg,phrase))
|
||||
if(istype(loc, /mob/))
|
||||
var/mob/T = loc
|
||||
@@ -258,6 +260,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
|
||||
implanted(mob/source as mob)
|
||||
phrase = input("Choose activation phrase:") as text
|
||||
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
|
||||
phrase = sanitize_simple(phrase, replacechars)
|
||||
usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.", 0, 0)
|
||||
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate."
|
||||
|
||||
|
||||
@@ -15,15 +15,6 @@ MEDICAL
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is dead, you cannot help [t_him]!"
|
||||
return
|
||||
if (M.health < 50)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
|
||||
if (!istype(M))
|
||||
user << "\red \The [src] cannot be applied to [M]!"
|
||||
@@ -35,25 +26,8 @@ MEDICAL
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return 1
|
||||
|
||||
if (user)
|
||||
if (M != user)
|
||||
user.visible_message( \
|
||||
"\blue [M] has been applied with [src] by [user].", \
|
||||
"\blue You apply \the [src] to [M]." \
|
||||
)
|
||||
else
|
||||
var/t_himself = "itself"
|
||||
if (user.gender == MALE)
|
||||
t_himself = "himself"
|
||||
else if (user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
|
||||
user.visible_message( \
|
||||
"\blue [M] applied [src] on [t_himself].", \
|
||||
"\blue You apply \the [src] on yourself." \
|
||||
)
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/stoppedblood = 0
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/affecting = H.get_organ("chest")
|
||||
|
||||
@@ -63,39 +37,85 @@ MEDICAL
|
||||
else
|
||||
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||
affecting = H.get_organ("head")
|
||||
if(affecting.destroyed && !affecting.gauzed)
|
||||
H.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does their best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
||||
affecting.gauzed = 1
|
||||
use(1)
|
||||
return
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
if(H.bloodloss > 0 && heal_brute > 0) // fix wounds too if bruise pack
|
||||
var/stoped = 0
|
||||
for(var/datum/organ/external/wound/W in affecting.wounds)
|
||||
if(W.bleeding)
|
||||
W.stopbleeding()
|
||||
stoped = 0
|
||||
for(var/datum/organ/wound/W in affecting.wounds)
|
||||
if(W.bleeding || !W.healing_state)
|
||||
if(heal_brute && W.wound_type == 2)
|
||||
continue
|
||||
if(heal_burn && W.wound_type < 2)
|
||||
continue
|
||||
if(stoppedblood)
|
||||
stoppedblood++
|
||||
break
|
||||
if(!stoped)
|
||||
// user << "There is no bleeding wound at [t]" //code no longer in a dedicated obj, thus this doesn't really matter
|
||||
return
|
||||
if (user)
|
||||
if (M != user)
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] has been bandaged with [src] by [user]", 1)
|
||||
if(W.wound_size > 3)
|
||||
W.bleeding = 0
|
||||
else
|
||||
var/t_himself = "itself"
|
||||
if (user.gender == MALE)
|
||||
t_himself = "himself"
|
||||
else if (user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] bandaged [t_himself] with [src]", 1)
|
||||
W.stopbleeding()
|
||||
stoppedblood = 1
|
||||
|
||||
M.updatehealth()
|
||||
if (user && stoppedblood)
|
||||
if (M != user)
|
||||
H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src]", "\red You hear something like gauze being ripped.")
|
||||
else
|
||||
H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] your cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] their own cuts with [src]", "\red You hear something like gauze being ripped.")
|
||||
else if(user)
|
||||
user << "\red Nothing to patch up!"
|
||||
return
|
||||
else
|
||||
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
|
||||
|
||||
use(1)
|
||||
|
||||
// if (M.health < 50 && !stoppedblood)
|
||||
// var/t_him = "it"
|
||||
// if (M.gender == MALE)
|
||||
// t_him = "him"
|
||||
// else if (M.gender == FEMALE)
|
||||
// t_him = "her"
|
||||
// user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
// return
|
||||
|
||||
// if (user)
|
||||
// if (M != user)
|
||||
// user.visible_message( \
|
||||
// "\blue [M] has been applied with [src] by [user].", \
|
||||
// "\blue You apply \the [src] to [M]." \
|
||||
// )
|
||||
// else
|
||||
// var/t_himself = "itself"
|
||||
// if (user.gender == MALE)
|
||||
// t_himself = "himself"
|
||||
// else if (user.gender == FEMALE)
|
||||
// t_himself = "herself"
|
||||
|
||||
// user.visible_message( \
|
||||
// "\blue [M] applied [src] on [t_himself].", \
|
||||
// "\blue You apply \the [src] on yourself." \
|
||||
// )
|
||||
|
||||
// if (istype(M, /mob/living/carbon/human))
|
||||
// var/mob/living/carbon/human/H = M
|
||||
// var/datum/organ/external/affecting = H.get_organ("chest")
|
||||
|
||||
// if(istype(user, /mob/living/carbon/human))
|
||||
// var/mob/living/carbon/human/user2 = user
|
||||
// affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
|
||||
// else
|
||||
// if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||
// affecting = H.get_organ("head")
|
||||
//
|
||||
// if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
// H.UpdateDamageIcon()
|
||||
// M.updatehealth()
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/stack/medical/advanced/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if (M.stat == 2)
|
||||
var/t_him = "it"
|
||||
@@ -105,15 +125,6 @@ MEDICAL
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is dead, you cannot help [t_him]!"
|
||||
return
|
||||
if (M.health < 0)
|
||||
var/t_him = "it"
|
||||
if (M.gender == MALE)
|
||||
t_him = "him"
|
||||
else if (M.gender == FEMALE)
|
||||
t_him = "her"
|
||||
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
|
||||
return
|
||||
|
||||
|
||||
if (!istype(M))
|
||||
user << "\red \The [src] cannot be applied to [M]!"
|
||||
@@ -125,25 +136,8 @@ MEDICAL
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return 1
|
||||
|
||||
if (user)
|
||||
if (M != user)
|
||||
user.visible_message( \
|
||||
"\blue [M] has been applied with [src] by [user].", \
|
||||
"\blue You apply \the [src] to [M]." \
|
||||
)
|
||||
else
|
||||
var/t_himself = "itself"
|
||||
if (user.gender == MALE)
|
||||
t_himself = "himself"
|
||||
else if (user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
|
||||
user.visible_message( \
|
||||
"\blue [M] applied [src] on [t_himself].", \
|
||||
"\blue You apply \the [src] on yourself." \
|
||||
)
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/stoppedblood = 0
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/affecting = H.get_organ("chest")
|
||||
|
||||
@@ -153,34 +147,32 @@ MEDICAL
|
||||
else
|
||||
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
|
||||
affecting = H.get_organ("head")
|
||||
if(affecting.destroyed && !affecting.gauzed)
|
||||
H.visible_message("\red You do your best to stop the bleeding from [H]'s stump.", "\red [user] does their best to stem [H]'s bleeding from [H.gender == MALE? "his" : "her"] stump.", "\red You hear something like gauze being ripped.")
|
||||
affecting.gauzed = 1
|
||||
use(1)
|
||||
return
|
||||
|
||||
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
if(H.bloodloss > 0 && heal_brute > 0) // fix wounds too if bruise pack
|
||||
var/stoped = 0
|
||||
for(var/datum/organ/external/wound/W in affecting.wounds)
|
||||
if(W.bleeding)
|
||||
W.stopbleeding()
|
||||
stoped = 0
|
||||
for(var/datum/organ/wound/W in affecting.wounds)
|
||||
if(W.bleeding || !W.healing_state)
|
||||
if(heal_brute && W.wound_type == 2)
|
||||
continue
|
||||
if(heal_burn && W.wound_type < 2)
|
||||
continue
|
||||
if(stoppedblood)
|
||||
stoppedblood++
|
||||
break
|
||||
if(!stoped)
|
||||
// user << "There is no bleeding wound at [t]" //code no longer in a dedicated obj, thus this doesn't really matter
|
||||
return
|
||||
if (user)
|
||||
if (M != user)
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] has been bandaged with [src] by [user]", 1)
|
||||
else
|
||||
var/t_himself = "itself"
|
||||
if (user.gender == MALE)
|
||||
t_himself = "himself"
|
||||
else if (user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
for (var/mob/O in viewers(H, null))
|
||||
O.show_message("\red [H] bandaged [t_himself] with [src]", 1)
|
||||
W.stopbleeding()
|
||||
stoppedblood = 1
|
||||
|
||||
M.updatehealth()
|
||||
if (user && stoppedblood)
|
||||
if (M != user)
|
||||
H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] [H]'s cuts with [src]", "\red You hear something like gauze being ripped.")
|
||||
else
|
||||
H.visible_message("\red You bandage up [stoppedblood - 1 ? "some of" : "the last of"] your cuts", "\red [user] bandages [stoppedblood - 1 ? "some of" : "the last of"] their own cuts with [src]", "\red You hear something like gauze being ripped.")
|
||||
else if(user)
|
||||
user << "\red Nothing to patch up!"
|
||||
return
|
||||
else
|
||||
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
|
||||
|
||||
|
||||
@@ -1565,7 +1565,6 @@ CIRCULAR SAW
|
||||
e.brute_dam = 0.0
|
||||
e.burn_dam = 0.0
|
||||
e.bandaged = 0.0
|
||||
e.wound_size = 0.0
|
||||
e.max_damage = initial(e.max_damage)
|
||||
e.bleeding = 0
|
||||
e.open = 0
|
||||
|
||||
@@ -171,9 +171,11 @@
|
||||
|
||||
if(keyslot1)
|
||||
user.put_in_hands(keyslot1)
|
||||
keyslot1 = null
|
||||
|
||||
if(keyslot2)
|
||||
user.put_in_hands(keyslot2)
|
||||
keyslot2 = null
|
||||
|
||||
recalculateChannels()
|
||||
user << "You pop out the encryption keys in the headset!"
|
||||
|
||||
@@ -503,7 +503,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
e.brute_dam = 0.0
|
||||
e.burn_dam = 0.0
|
||||
e.bandaged = 0.0
|
||||
e.wound_size = 0.0
|
||||
e.max_damage = initial(e.max_damage)
|
||||
e.bleeding = 0
|
||||
e.open = 0
|
||||
@@ -511,6 +510,15 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
e.destroyed = 0
|
||||
e.perma_injury = 0
|
||||
e.update_icon()
|
||||
for(var/datum/organ/wound/W in e.wounds)
|
||||
if(W.bleeding)
|
||||
W.stopbleeding()
|
||||
H.vessel = new/datum/reagents(560)
|
||||
H.vessel.my_atom = H
|
||||
H.vessel.add_reagent("blood",560)
|
||||
spawn(1)
|
||||
H.fixblood()
|
||||
H.pale = 0
|
||||
H.update_body()
|
||||
H.update_face()
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
@@ -96,7 +96,7 @@ datum
|
||||
|
||||
|
||||
blood
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0)
|
||||
data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0)
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
@@ -105,7 +105,7 @@ datum
|
||||
if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
|
||||
M.adjustToxLoss(rand(1.5,3))
|
||||
M.adjustOxyLoss(rand(1.5,3))
|
||||
..()
|
||||
..()
|
||||
return
|
||||
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
|
||||
@@ -962,55 +962,60 @@
|
||||
if(istype(target, /mob/living/carbon))//maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea.
|
||||
var/amount = src.reagents.maximum_volume - src.reagents.total_volume
|
||||
var/mob/living/carbon/T = target
|
||||
var/datum/reagent/B = new /datum/reagent/blood
|
||||
if(!T.dna)
|
||||
usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)"
|
||||
return
|
||||
if(T.mutations2 & NOCLONE) //target done been et, no more blood in him
|
||||
user << "\red You are unable to locate any blood."
|
||||
return
|
||||
B.holder = src
|
||||
B.volume = amount
|
||||
//set reagent data
|
||||
B.data["donor"] = T
|
||||
/*
|
||||
if(T.virus && T.virus.spread_type != SPECIAL)
|
||||
B.data["virus"] = new T.virus.type(0)
|
||||
*/
|
||||
if(ishuman(T))
|
||||
if(T:vessel.get_reagent_amount("blood") < amount)
|
||||
return
|
||||
T:vessel.trans_to(src, amount)
|
||||
else
|
||||
var/datum/reagent/B = new /datum/reagent/blood
|
||||
B.holder = src
|
||||
B.volume = amount
|
||||
//set reagent data
|
||||
B.data["donor"] = T
|
||||
/*
|
||||
if(T.virus && T.virus.spread_type != SPECIAL)
|
||||
B.data["virus"] = new T.virus.type(0)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
for(var/datum/disease/D in T.viruses)
|
||||
if(!B.data["viruses"])
|
||||
B.data["viruses"] = list()
|
||||
for(var/datum/disease/D in T.viruses)
|
||||
if(!B.data["viruses"])
|
||||
B.data["viruses"] = list()
|
||||
|
||||
|
||||
B.data["viruses"] += new D.type
|
||||
B.data["viruses"] += new D.type
|
||||
|
||||
// not sure why it was checking if(B.data["virus2"]), but it seemed wrong
|
||||
if(T.virus2)
|
||||
B.data["virus2"] = T.virus2.getcopy()
|
||||
// not sure why it was checking if(B.data["virus2"]), but it seemed wrong
|
||||
if(T.virus2)
|
||||
B.data["virus2"] = T.virus2.getcopy()
|
||||
|
||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||
if(T.resistances&&T.resistances.len)
|
||||
B.data["resistances"] = T.resistances.Copy()
|
||||
if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
|
||||
B.data["blood_type"] = copytext(T.dna.b_type,1,0)
|
||||
var/list/temp_chem = list()
|
||||
for(var/datum/reagent/R in target.reagents.reagent_list)
|
||||
temp_chem += R.name
|
||||
temp_chem[R.name] = R.volume
|
||||
B.data["trace_chem"] = list2params(temp_chem)
|
||||
B.data["antibodies"] = T.antibodies
|
||||
//debug
|
||||
//for(var/D in B.data)
|
||||
// world << "Data [D] = [B.data[D]]"
|
||||
//debug
|
||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||
if(T.resistances&&T.resistances.len)
|
||||
B.data["resistances"] = T.resistances.Copy()
|
||||
if(istype(target, /mob/living/carbon/human))//I wish there was some hasproperty operation...
|
||||
B.data["blood_type"] = copytext(T.dna.b_type,1,0)
|
||||
var/list/temp_chem = list()
|
||||
for(var/datum/reagent/R in target.reagents.reagent_list)
|
||||
temp_chem += R.name
|
||||
temp_chem[R.name] = R.volume
|
||||
B.data["trace_chem"] = list2params(temp_chem)
|
||||
B.data["antibodies"] = T.antibodies
|
||||
//debug
|
||||
//for(var/D in B.data)
|
||||
// world << "Data [D] = [B.data[D]]"
|
||||
//debug
|
||||
|
||||
src.reagents.reagent_list += B
|
||||
src.reagents.update_total()
|
||||
src.on_reagent_change()
|
||||
src.reagents.handle_reactions()
|
||||
src.reagents.reagent_list += B
|
||||
src.reagents.update_total()
|
||||
src.on_reagent_change()
|
||||
src.reagents.handle_reactions()
|
||||
user << "\blue You take a blood sample from [target]"
|
||||
for(var/mob/O in viewers(4, user))
|
||||
O.show_message("\red [user] takes a blood sample from [target].", 1)
|
||||
@@ -1065,7 +1070,17 @@
|
||||
if(ismob(target) && target == user)
|
||||
src.reagents.reaction(target, INGEST)
|
||||
spawn(5)
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
var/datum/reagent/blood/B
|
||||
for(var/datum/reagent/blood/d in src.reagents.reagent_list)
|
||||
B = d
|
||||
break
|
||||
var/trans
|
||||
if(B && ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.vessel.add_reagent("blood",5,B)
|
||||
src.reagents.remove_reagent("blood",5)
|
||||
else
|
||||
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units."
|
||||
if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT)
|
||||
mode = SYRINGE_DRAW
|
||||
|
||||
@@ -1,168 +1,168 @@
|
||||
//Costume spawner
|
||||
|
||||
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
||||
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
del(src)
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/justice/New()
|
||||
new /obj/item/clothing/suit/justice(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/justice , /obj/item/clothing/head/justice/blue , /obj/item/clothing/head/justice/yellow , /obj/item/clothing/head/justice/green , /obj/item/clothing/head/justice/pink )
|
||||
new CHOICE(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/storage/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/glasses/gglasses(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/cigarette/cigar/havanian(src.loc)
|
||||
new /obj/item/clothing/shoes/jackboots(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/blackskirt(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/blindfold(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/suit/storage/wcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/scratch/New()
|
||||
new /obj/item/clothing/gloves/white(src.loc)
|
||||
new /obj/item/clothing/shoes/white(src.loc)
|
||||
new /obj/item/clothing/under/scratch(src.loc)
|
||||
// if (prob(30))
|
||||
// new /obj/item/clothing/head/helmet/cueball(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/suit/storage/wcoat(src.loc)
|
||||
new /obj/item/clothing/glasses/monocle(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/bowlerhat, /obj/item/clothing/head/that)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/shoes/black(src.loc)
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/gas/fakemoustache(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/owl_mask(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/storage/apron(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
new /obj/item/clothing/suit/pirate(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
del(src)
|
||||
/*
|
||||
/obj/effect/landmark/costume/nurse/New()
|
||||
new /obj/item/clothing/under/rank/nursesuit(src.loc)
|
||||
new /obj/item/clothing/head/nursehat(src.loc)
|
||||
new /obj/item/clothing/glasses/regular(src.loc)
|
||||
new /obj/item/clothing/gloves/latex(src.loc)
|
||||
new /obj/item/clothing/mask/surgical(src.loc)
|
||||
del(src)*/
|
||||
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
del(src)
|
||||
|
||||
/*
|
||||
/obj/effect/landmark/costume/spiderman/New()
|
||||
new /obj/item/clothing/under/spiderman(src.loc)
|
||||
new /obj/item/clothing/mask/spiderman(src.loc)
|
||||
del(src)*/
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/New()
|
||||
new /obj/item/clothing/head/wizard/marisa(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/sexyclown(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
del(src)
|
||||
|
||||
|
||||
/*
|
||||
/obj/effect/landmark/costume/cyborg/New()
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
new /obj/item/clothing/shoes/cyborg(src.loc)
|
||||
new /obj/item/clothing/suit/cyborg_suit(src.loc)
|
||||
new /obj/item/clothing/gloves/cyborg(src.loc)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id(src.loc)
|
||||
var/name = "Cyborg"
|
||||
name += " [pick(rand(1, 999))]"
|
||||
W.name = "Fake Cyborg Card"
|
||||
W.access = list(access_theatre)
|
||||
W.assignment = "Kill all humans! Beep. Boop."
|
||||
W.registered = name
|
||||
del(src)
|
||||
//Costume spawner
|
||||
|
||||
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
||||
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
del(src)
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/justice/New()
|
||||
new /obj/item/clothing/suit/justice(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/justice , /obj/item/clothing/head/justice/blue , /obj/item/clothing/head/justice/yellow , /obj/item/clothing/head/justice/green , /obj/item/clothing/head/justice/pink )
|
||||
new CHOICE(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/storage/labcoat/mad(src.loc)
|
||||
new /obj/item/clothing/glasses/gglasses(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/cigarette/cigar/havanian(src.loc)
|
||||
new /obj/item/clothing/shoes/jackboots(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/blackskirt(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/blindfold(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/suit/storage/wcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/scratch/New()
|
||||
new /obj/item/clothing/gloves/white(src.loc)
|
||||
new /obj/item/clothing/shoes/white(src.loc)
|
||||
new /obj/item/clothing/under/scratch(src.loc)
|
||||
// if (prob(30))
|
||||
// new /obj/item/clothing/head/helmet/cueball(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/suit/storage/wcoat(src.loc)
|
||||
new /obj/item/clothing/glasses/monocle(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/bowlerhat, /obj/item/clothing/head/that)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/shoes/black(src.loc)
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/gas/fakemoustache(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/owl_mask(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/storage/apron(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
new /obj/item/clothing/suit/pirate(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
del(src)
|
||||
/*
|
||||
/obj/effect/landmark/costume/nurse/New()
|
||||
new /obj/item/clothing/under/rank/nursesuit(src.loc)
|
||||
new /obj/item/clothing/head/nursehat(src.loc)
|
||||
new /obj/item/clothing/glasses/regular(src.loc)
|
||||
new /obj/item/clothing/gloves/latex(src.loc)
|
||||
new /obj/item/clothing/mask/surgical(src.loc)
|
||||
del(src)*/
|
||||
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
del(src)
|
||||
|
||||
/*
|
||||
/obj/effect/landmark/costume/spiderman/New()
|
||||
new /obj/item/clothing/under/spiderman(src.loc)
|
||||
new /obj/item/clothing/mask/spiderman(src.loc)
|
||||
del(src)*/
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/New()
|
||||
new /obj/item/clothing/head/wizard/marisa(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/sexyclown(src.loc)
|
||||
del(src)
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
del(src)
|
||||
|
||||
|
||||
/*
|
||||
/obj/effect/landmark/costume/cyborg/New()
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
new /obj/item/clothing/shoes/cyborg(src.loc)
|
||||
new /obj/item/clothing/suit/cyborg_suit(src.loc)
|
||||
new /obj/item/clothing/gloves/cyborg(src.loc)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id(src.loc)
|
||||
var/name = "Cyborg"
|
||||
name += " [pick(rand(1, 999))]"
|
||||
W.name = "Fake Cyborg Card"
|
||||
W.access = list(access_theatre)
|
||||
W.assignment = "Kill all humans! Beep. Boop."
|
||||
W.registered = name
|
||||
del(src)
|
||||
*/
|
||||
@@ -1,62 +1,62 @@
|
||||
// EARS
|
||||
|
||||
/obj/item/clothing/ears
|
||||
name = "ears"
|
||||
w_class = 1.0
|
||||
throwforce = 2
|
||||
var/twoeared = 0
|
||||
|
||||
/obj/item/clothing/ears/attack_hand(mob/user as mob)
|
||||
if (!user) return
|
||||
|
||||
if (src.loc != user || !istype(user,/mob/living/carbon/human))
|
||||
..()
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.l_ear != src && H.r_ear != src)
|
||||
..()
|
||||
return
|
||||
|
||||
if(!canremove)
|
||||
return
|
||||
|
||||
var/obj/item/clothing/ears/O
|
||||
if(twoeared)
|
||||
O = (H.l_ear == src ? H.r_ear : H.l_ear)
|
||||
user.u_equip(O)
|
||||
if(!istype(src,/obj/item/clothing/ears/offear))
|
||||
del(O)
|
||||
O = src
|
||||
else
|
||||
O = src
|
||||
|
||||
user.u_equip(src)
|
||||
|
||||
if (O)
|
||||
user.put_in_hand(O)
|
||||
O.add_fingerprint(user)
|
||||
|
||||
if(istype(src,/obj/item/clothing/ears/offear))
|
||||
del(src)
|
||||
|
||||
/obj/item/clothing/ears/offear
|
||||
name = "Other ear"
|
||||
w_class = 5.0
|
||||
icon = 'screen1_old.dmi'
|
||||
icon_state = "block"
|
||||
twoeared = 1
|
||||
|
||||
New(var/obj/O)
|
||||
name = O.name
|
||||
desc = O.desc
|
||||
icon = O.icon
|
||||
icon_state = O.icon_state
|
||||
dir = O.dir
|
||||
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
||||
icon_state = "earmuffs"
|
||||
protective_temperature = 500
|
||||
item_state = "earmuffs"
|
||||
// EARS
|
||||
|
||||
/obj/item/clothing/ears
|
||||
name = "ears"
|
||||
w_class = 1.0
|
||||
throwforce = 2
|
||||
var/twoeared = 0
|
||||
|
||||
/obj/item/clothing/ears/attack_hand(mob/user as mob)
|
||||
if (!user) return
|
||||
|
||||
if (src.loc != user || !istype(user,/mob/living/carbon/human))
|
||||
..()
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.l_ear != src && H.r_ear != src)
|
||||
..()
|
||||
return
|
||||
|
||||
if(!canremove)
|
||||
return
|
||||
|
||||
var/obj/item/clothing/ears/O
|
||||
if(twoeared)
|
||||
O = (H.l_ear == src ? H.r_ear : H.l_ear)
|
||||
user.u_equip(O)
|
||||
if(!istype(src,/obj/item/clothing/ears/offear))
|
||||
del(O)
|
||||
O = src
|
||||
else
|
||||
O = src
|
||||
|
||||
user.u_equip(src)
|
||||
|
||||
if (O)
|
||||
user.put_in_hand(O)
|
||||
O.add_fingerprint(user)
|
||||
|
||||
if(istype(src,/obj/item/clothing/ears/offear))
|
||||
del(src)
|
||||
|
||||
/obj/item/clothing/ears/offear
|
||||
name = "Other ear"
|
||||
w_class = 5.0
|
||||
icon = 'screen1_old.dmi'
|
||||
icon_state = "block"
|
||||
twoeared = 1
|
||||
|
||||
New(var/obj/O)
|
||||
name = O.name
|
||||
desc = O.desc
|
||||
icon = O.icon
|
||||
icon_state = O.icon_state
|
||||
dir = O.dir
|
||||
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
||||
icon_state = "earmuffs"
|
||||
protective_temperature = 500
|
||||
item_state = "earmuffs"
|
||||
twoeared = 1
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,226 +1,226 @@
|
||||
// NO GLOVES NO LOVES
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
name = "gloves"
|
||||
w_class = 2.0
|
||||
icon = 'gloves.dmi'
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.25
|
||||
siemens_coefficient = 0.50
|
||||
var/siemens_coefficient_archived = 0
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
body_parts_covered = HANDS
|
||||
|
||||
/obj/item/clothing/gloves/white
|
||||
name = "White Gloves"
|
||||
desc = "These look pretty fancy."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
color="mime"
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/black
|
||||
desc = "These gloves are fire-resistant."
|
||||
name = "Black Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
protective_temperature = 1500
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
hos
|
||||
color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/detective
|
||||
desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!"
|
||||
name = "The Detective's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/hos
|
||||
desc = "These gloves belong to the man in charge of the guns."
|
||||
name = "Head of Security's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/cyborg
|
||||
desc = "Beep. Boop. Beep."
|
||||
name = "cyborg gloves"
|
||||
icon_state = "black"
|
||||
item_state = "r_hands"
|
||||
siemens_coefficient = 1.0
|
||||
|
||||
/obj/item/clothing/gloves/latex
|
||||
name = "Latex Gloves"
|
||||
desc = "Sterile latex gloves."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.30
|
||||
permeability_coefficient = 0.01
|
||||
protective_temperature = 310
|
||||
heat_transfer_coefficient = 0.90
|
||||
color="white"
|
||||
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from latex gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "SWAT Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/space_ninja
|
||||
desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
|
||||
name = "ninja gloves"
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
siemens_coefficient = 0
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.05
|
||||
var/draining = 0
|
||||
var/candrain = 0
|
||||
var/mindrain = 200
|
||||
var/maxdrain = 400
|
||||
|
||||
//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul)
|
||||
/*
|
||||
/obj/item/clothing/gloves/stungloves/
|
||||
name = "Stungloves"
|
||||
desc = "These gloves are electrically charged."
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0.30
|
||||
elecgen = 1
|
||||
uses = 10
|
||||
*/
|
||||
|
||||
/obj/item/clothing/gloves/yellow
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
name = "insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1000
|
||||
heat_transfer_coefficient = 0.01
|
||||
color="yellow"
|
||||
|
||||
/obj/item/clothing/gloves/captain
|
||||
desc = "Regal blue gloves, with a nice gold trim. Swanky."
|
||||
name = "Captain Gloves"
|
||||
icon_state = "captain"
|
||||
item_state = "egloves"
|
||||
color = "captain"
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather
|
||||
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
|
||||
name = "botanic leather gloves"
|
||||
icon_state = "leather"
|
||||
item_state = "ggloves"
|
||||
siemens_coefficient = 0.50
|
||||
permeability_coefficient = 0.9
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.70
|
||||
|
||||
/obj/item/clothing/gloves/orange
|
||||
name = "Orange Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "orange"
|
||||
item_state = "orangegloves"
|
||||
color="orange"
|
||||
|
||||
/obj/item/clothing/gloves/red
|
||||
desc = "Heavily padded heavy-duty red gloves."
|
||||
name = "red gloves"
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/rainbow
|
||||
name = "Rainbow Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbowgloves"
|
||||
color = "rainbow"
|
||||
|
||||
clown
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/gloves/blue
|
||||
name = "Blue Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "blue"
|
||||
item_state = "bluegloves"
|
||||
color="blue"
|
||||
|
||||
/obj/item/clothing/gloves/purple
|
||||
name = "Purple Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "purple"
|
||||
item_state = "purplegloves"
|
||||
color="purple"
|
||||
|
||||
/obj/item/clothing/gloves/green
|
||||
name = "Green Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "green"
|
||||
item_state = "greengloves"
|
||||
color="green"
|
||||
|
||||
/obj/item/clothing/gloves/grey
|
||||
name = "Grey Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "gray"
|
||||
item_state = "graygloves"
|
||||
color="grey"
|
||||
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/light_brown
|
||||
name = "Light Brown Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "lightbrown"
|
||||
item_state = "lightbrowngloves"
|
||||
color="light brown"
|
||||
|
||||
/obj/item/clothing/gloves/brown
|
||||
name = "Brown Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "brown"
|
||||
item_state = "browngloves"
|
||||
color="brown"
|
||||
|
||||
cargo
|
||||
// NO GLOVES NO LOVES
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
name = "gloves"
|
||||
w_class = 2.0
|
||||
icon = 'gloves.dmi'
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.25
|
||||
siemens_coefficient = 0.50
|
||||
var/siemens_coefficient_archived = 0
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
body_parts_covered = HANDS
|
||||
|
||||
/obj/item/clothing/gloves/white
|
||||
name = "White Gloves"
|
||||
desc = "These look pretty fancy."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
color="mime"
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/black
|
||||
desc = "These gloves are fire-resistant."
|
||||
name = "Black Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
protective_temperature = 1500
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
hos
|
||||
color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from black gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/detective
|
||||
desc = "Made of well worn leather. These gloves are comfortable, useful, and stylish!"
|
||||
name = "The Detective's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/hos
|
||||
desc = "These gloves belong to the man in charge of the guns."
|
||||
name = "Head of Security's Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "bgloves"
|
||||
color="brown"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/cyborg
|
||||
desc = "Beep. Boop. Beep."
|
||||
name = "cyborg gloves"
|
||||
icon_state = "black"
|
||||
item_state = "r_hands"
|
||||
siemens_coefficient = 1.0
|
||||
|
||||
/obj/item/clothing/gloves/latex
|
||||
name = "Latex Gloves"
|
||||
desc = "Sterile latex gloves."
|
||||
icon_state = "latex"
|
||||
item_state = "lgloves"
|
||||
siemens_coefficient = 0.30
|
||||
permeability_coefficient = 0.01
|
||||
protective_temperature = 310
|
||||
heat_transfer_coefficient = 0.90
|
||||
color="white"
|
||||
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from latex gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
name = "SWAT Gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
name = "combat gloves"
|
||||
icon_state = "black"
|
||||
item_state = "swat_gl"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/gloves/space_ninja
|
||||
desc = "These nano-enhanced gloves insulate from electricity and provide fire resistance."
|
||||
name = "ninja gloves"
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
siemens_coefficient = 0
|
||||
protective_temperature = 1100
|
||||
heat_transfer_coefficient = 0.05
|
||||
var/draining = 0
|
||||
var/candrain = 0
|
||||
var/mindrain = 200
|
||||
var/maxdrain = 400
|
||||
|
||||
//BEEP BEEP IT'S THE COMMENT BRIGADE -Pete (gloves overhaul)
|
||||
/*
|
||||
/obj/item/clothing/gloves/stungloves/
|
||||
name = "Stungloves"
|
||||
desc = "These gloves are electrically charged."
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0.30
|
||||
elecgen = 1
|
||||
uses = 10
|
||||
*/
|
||||
|
||||
/obj/item/clothing/gloves/yellow
|
||||
desc = "These gloves will protect the wearer from electric shock."
|
||||
name = "insulated gloves"
|
||||
icon_state = "yellow"
|
||||
item_state = "ygloves"
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
protective_temperature = 1000
|
||||
heat_transfer_coefficient = 0.01
|
||||
color="yellow"
|
||||
|
||||
/obj/item/clothing/gloves/captain
|
||||
desc = "Regal blue gloves, with a nice gold trim. Swanky."
|
||||
name = "Captain Gloves"
|
||||
icon_state = "captain"
|
||||
item_state = "egloves"
|
||||
color = "captain"
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather
|
||||
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
|
||||
name = "botanic leather gloves"
|
||||
icon_state = "leather"
|
||||
item_state = "ggloves"
|
||||
siemens_coefficient = 0.50
|
||||
permeability_coefficient = 0.9
|
||||
protective_temperature = 400
|
||||
heat_transfer_coefficient = 0.70
|
||||
|
||||
/obj/item/clothing/gloves/orange
|
||||
name = "Orange Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "orange"
|
||||
item_state = "orangegloves"
|
||||
color="orange"
|
||||
|
||||
/obj/item/clothing/gloves/red
|
||||
desc = "Heavily padded heavy-duty red gloves."
|
||||
name = "red gloves"
|
||||
icon_state = "red"
|
||||
item_state = "redgloves"
|
||||
siemens_coefficient = 0.30
|
||||
protective_temperature = 1100
|
||||
|
||||
/obj/item/clothing/gloves/rainbow
|
||||
name = "Rainbow Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "rainbow"
|
||||
item_state = "rainbowgloves"
|
||||
color = "rainbow"
|
||||
|
||||
clown
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/gloves/blue
|
||||
name = "Blue Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "blue"
|
||||
item_state = "bluegloves"
|
||||
color="blue"
|
||||
|
||||
/obj/item/clothing/gloves/purple
|
||||
name = "Purple Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "purple"
|
||||
item_state = "purplegloves"
|
||||
color="purple"
|
||||
|
||||
/obj/item/clothing/gloves/green
|
||||
name = "Green Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "green"
|
||||
item_state = "greengloves"
|
||||
color="green"
|
||||
|
||||
/obj/item/clothing/gloves/grey
|
||||
name = "Grey Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "gray"
|
||||
item_state = "graygloves"
|
||||
color="grey"
|
||||
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from gray gloves in any way.
|
||||
|
||||
/obj/item/clothing/gloves/light_brown
|
||||
name = "Light Brown Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "lightbrown"
|
||||
item_state = "lightbrowngloves"
|
||||
color="light brown"
|
||||
|
||||
/obj/item/clothing/gloves/brown
|
||||
name = "Brown Gloves"
|
||||
desc = "A pair of gloves. They don't look special in any way."
|
||||
icon_state = "brown"
|
||||
item_state = "browngloves"
|
||||
color="brown"
|
||||
|
||||
cargo
|
||||
color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way.
|
||||
@@ -1,30 +1,31 @@
|
||||
/obj/item/clothing/head/helmet/hardhat
|
||||
name = "hard hat"
|
||||
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
|
||||
icon_state = "hardhat0_yellow"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
|
||||
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
color = "orange"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/red
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
color = "red"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
color = "white"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
/obj/item/clothing/head/helmet/hardhat
|
||||
name = "hard hat"
|
||||
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
|
||||
icon_state = "hardhat0_yellow"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE
|
||||
item_state = "hardhat0_yellow"
|
||||
var/brightness_on = 4 //luminosity when on
|
||||
var/on = 0
|
||||
color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
|
||||
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
color = "orange"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/red
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
color = "red"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
item_state = "hardhat0_white"
|
||||
color = "white"
|
||||
|
||||
/obj/item/clothing/head/helmet/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
color = "dblue"
|
||||
@@ -1,190 +1,126 @@
|
||||
// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR.
|
||||
/obj/item/clothing/head
|
||||
name = "head"
|
||||
icon = 'hats.dmi'
|
||||
body_parts_covered = HEAD
|
||||
var/list/allowed = list()
|
||||
|
||||
/obj/item/clothing/head/cakehat
|
||||
name = "cakehat"
|
||||
desc = "It is a cakehat!"
|
||||
icon_state = "cake0"
|
||||
var/onfire = 0.0
|
||||
var/status = 0
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES
|
||||
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
|
||||
|
||||
/obj/item/clothing/head/caphat
|
||||
name = "Captain's hat"
|
||||
icon_state = "captain"
|
||||
desc = "It's good being the king."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "caphat"
|
||||
|
||||
/obj/item/clothing/head/centhat
|
||||
name = "Cent. Comm. hat"
|
||||
icon_state = "centcom"
|
||||
desc = "It's even better to be the emperor."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "centhat"
|
||||
|
||||
/obj/item/clothing/head/deathsquad/beret
|
||||
name = "officer's beret"
|
||||
desc = "An armored beret commonly used by special operations officers."
|
||||
icon_state = "beret_badge"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
|
||||
/obj/item/clothing/head/powdered_wig
|
||||
name = "powdered wig"
|
||||
desc = "A powdered wig."
|
||||
icon_state = "pwig"
|
||||
item_state = "pwig"
|
||||
|
||||
/obj/item/clothing/head/that
|
||||
name = "Top hat"
|
||||
desc = "An amish looking hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/head/chefhat
|
||||
name = "Chef's Hat"
|
||||
icon_state = "chef"
|
||||
item_state = "chef"
|
||||
desc = "The commander in chef's head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/redcoat
|
||||
name = "Redcoat hat"
|
||||
icon_state = "redcoat"
|
||||
desc = "I guess it's a redhead."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/mailman
|
||||
name = "Mailman Hat"
|
||||
icon_state = "mailman"
|
||||
desc = "Right-on-time mail service head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/plaguedoctorhat
|
||||
name = "Plague doctor's hat"
|
||||
desc = "Once used by Plague doctors. Now useless."
|
||||
icon_state = "plaguedoctor"
|
||||
flags = FPRINT | TABLEPASS
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/head/beret
|
||||
name = "beret"
|
||||
desc = "A beret. A mime's favorite headwear."
|
||||
icon_state = "beret"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN.
|
||||
|
||||
/obj/item/clothing/head/helmet/cueball
|
||||
name = "cueball helmet"
|
||||
desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?"
|
||||
icon_state = "cueball"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
item_state="cueball"
|
||||
|
||||
/obj/item/clothing/head/secsoft
|
||||
name = "Soft Cap"
|
||||
desc = "A baseball hat in tasteful red."
|
||||
icon_state = "secsoft"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
|
||||
item_state = "helmet"
|
||||
|
||||
/obj/item/clothing/head/syndicatefake
|
||||
name = "red space helmet replica"
|
||||
icon_state = "syndicate"
|
||||
item_state = "syndicate"
|
||||
desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
see_face = 0.0
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/helmet/swat
|
||||
name = "swat helmet"
|
||||
desc = "Used by highly trained Swat Members."
|
||||
icon_state = "swat"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/thunderdome
|
||||
name = "Thunderdome helmet"
|
||||
desc = "Let the battle commence!"
|
||||
icon_state = "thunderdome"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "thunderdome"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/welding
|
||||
name = "welding helmet"
|
||||
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
|
||||
icon_state = "welding"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
see_face = 0.0
|
||||
item_state = "welding"
|
||||
protective_temperature = 1300
|
||||
m_amt = 3000
|
||||
g_amt = 1000
|
||||
var/up = 0
|
||||
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10)
|
||||
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/that
|
||||
name = "Sturdy Top hat"
|
||||
desc = "An amish looking, armored top hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/greenbandana
|
||||
name = "Green Bandana"
|
||||
desc = "A green bandana with some fine nanotech lining."
|
||||
icon_state = "greenbandana"
|
||||
item_state = "greenbandana"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15)
|
||||
|
||||
/obj/item/clothing/head/helmet/riot
|
||||
name = "Riot Helmet"
|
||||
desc = "A helmet specifically designed to protect against close range attacks."
|
||||
icon_state = "riot"
|
||||
item_state = "helmet"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES
|
||||
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/cap
|
||||
name = "Captain's cap"
|
||||
desc = "For irresponsible Captains."
|
||||
icon_state = "capcap"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/chaplain_hood
|
||||
name = "Chaplain's hood"
|
||||
desc = "A hood that covers the head. Keeps you warm during the space winters."
|
||||
icon_state = "chaplain_hood"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/hasturhood
|
||||
name = "Hastur's Hood"
|
||||
desc = "This hood is unspeakably stylish"
|
||||
icon_state = "hasturhood"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/nursehat
|
||||
name = "Nurse Hat"
|
||||
desc = "For quick identification of trained medical personnel."
|
||||
icon_state = "nursehat"
|
||||
flags = FPRINT|TABLEPASS
|
||||
// HATS. OH MY WHAT A FINE CHAPEAU, GOOD SIR.
|
||||
/obj/item/clothing/head
|
||||
name = "head"
|
||||
icon = 'hats.dmi'
|
||||
body_parts_covered = HEAD
|
||||
var/list/allowed = list()
|
||||
|
||||
/obj/item/clothing/head/cakehat
|
||||
name = "cakehat"
|
||||
desc = "It is a cakehat!"
|
||||
icon_state = "cake0"
|
||||
var/onfire = 0.0
|
||||
var/status = 0
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES
|
||||
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
|
||||
|
||||
/obj/item/clothing/head/caphat
|
||||
name = "Captain's hat"
|
||||
icon_state = "captain"
|
||||
desc = "It's good being the king."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "caphat"
|
||||
|
||||
/obj/item/clothing/head/centhat
|
||||
name = "Cent. Comm. hat"
|
||||
icon_state = "centcom"
|
||||
desc = "It's even better to be the emperor."
|
||||
flags = FPRINT|TABLEPASS
|
||||
item_state = "centhat"
|
||||
|
||||
/obj/item/clothing/head/deathsquad/beret
|
||||
name = "officer's beret"
|
||||
desc = "An armored beret commonly used by special operations officers."
|
||||
icon_state = "beret_badge"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
|
||||
/obj/item/clothing/head/powdered_wig
|
||||
name = "powdered wig"
|
||||
desc = "A powdered wig."
|
||||
icon_state = "pwig"
|
||||
item_state = "pwig"
|
||||
|
||||
/obj/item/clothing/head/that
|
||||
name = "Top hat"
|
||||
desc = "An amish looking hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/head/chefhat
|
||||
name = "Chef's Hat"
|
||||
icon_state = "chef"
|
||||
item_state = "chef"
|
||||
desc = "The commander in chef's head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/redcoat
|
||||
name = "Redcoat hat"
|
||||
icon_state = "redcoat"
|
||||
desc = "I guess it's a redhead."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/mailman
|
||||
name = "Mailman Hat"
|
||||
icon_state = "mailman"
|
||||
desc = "Right-on-time mail service head wear."
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/head/plaguedoctorhat
|
||||
name = "Plague doctor's hat"
|
||||
desc = "Once used by Plague doctors. Now useless."
|
||||
icon_state = "plaguedoctor"
|
||||
flags = FPRINT | TABLEPASS
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/head/beret
|
||||
name = "beret"
|
||||
desc = "A beret. A mime's favorite headwear."
|
||||
icon_state = "beret"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
// CHUMP HELMETS: COOKING THEM DESTROYS THE CHUMP HELMET SPAWN.
|
||||
|
||||
/obj/item/clothing/head/helmet/cueball
|
||||
name = "cueball helmet"
|
||||
desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?"
|
||||
icon_state = "cueball"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
item_state="cueball"
|
||||
|
||||
/obj/item/clothing/head/secsoft
|
||||
name = "Soft Cap"
|
||||
desc = "A baseball hat in tasteful red."
|
||||
icon_state = "secsoft"
|
||||
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
|
||||
item_state = "helmet"
|
||||
|
||||
/obj/item/clothing/head/syndicatefake
|
||||
name = "red space helmet replica"
|
||||
icon_state = "syndicate"
|
||||
item_state = "syndicate"
|
||||
desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!"
|
||||
see_face = 0.0
|
||||
flags = FPRINT | TABLEPASS | BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/chaplain_hood
|
||||
name = "Chaplain's hood"
|
||||
desc = "A hood that covers the head. Keeps you warm during the space winters."
|
||||
icon_state = "chaplain_hood"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/hasturhood
|
||||
name = "Hastur's Hood"
|
||||
desc = "This hood is unspeakably stylish"
|
||||
icon_state = "hasturhood"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/head/nursehat
|
||||
name = "Nurse Hat"
|
||||
desc = "For quick identification of trained medical personnel."
|
||||
icon_state = "nursehat"
|
||||
flags = FPRINT|TABLEPASS
|
||||
@@ -0,0 +1,81 @@
|
||||
/obj/item/clothing/head/helmet
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.10
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
|
||||
/obj/item/clothing/head/helmet/warden
|
||||
name = "Warden Hat"
|
||||
desc = "A special helmet issued to the Warden of a securiy force. Protects the head from impacts."
|
||||
icon_state = "policehelm"
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/swat
|
||||
name = "swat helmet"
|
||||
desc = "Used by highly trained Swat Members."
|
||||
icon_state = "swat"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/thunderdome
|
||||
name = "Thunderdome helmet"
|
||||
desc = "Let the battle commence!"
|
||||
icon_state = "thunderdome"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
|
||||
item_state = "thunderdome"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/welding
|
||||
name = "welding helmet"
|
||||
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
|
||||
icon_state = "welding"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
see_face = 0.0
|
||||
item_state = "welding"
|
||||
protective_temperature = 1300
|
||||
m_amt = 3000
|
||||
g_amt = 1000
|
||||
var/up = 0
|
||||
armor = list(melee = 10, bullet = 5, laser = 10,energy = 5, bomb = 10, bio = 5, rad = 10)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
|
||||
/obj/item/clothing/head/helmet/that
|
||||
name = "Sturdy Top hat"
|
||||
desc = "An amish looking, armored top hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/greenbandana
|
||||
name = "Green Bandana"
|
||||
desc = "A green bandana with some fine nanotech lining."
|
||||
icon_state = "greenbandana"
|
||||
item_state = "greenbandana"
|
||||
flags = FPRINT|TABLEPASS
|
||||
armor = list(melee = 5, bullet = 5, laser = 5,energy = 5, bomb = 15, bio = 15, rad = 15)
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/riot
|
||||
name = "Riot Helmet"
|
||||
desc = "A helmet specifically designed to protect against close range attacks."
|
||||
icon_state = "riot"
|
||||
item_state = "helmet"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES
|
||||
armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/helmet/cap
|
||||
name = "Captain's cap"
|
||||
desc = "For irresponsible Captains."
|
||||
icon_state = "capcap"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = 0
|
||||
@@ -1,149 +1,149 @@
|
||||
// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK.
|
||||
|
||||
/obj/item/clothing/mask
|
||||
name = "mask"
|
||||
icon = 'masks.dmi'
|
||||
body_parts_covered = HEAD
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
|
||||
/obj/item/clothing/mask/breath
|
||||
desc = "A close-fitting mask that can be connected to an air supply."
|
||||
name = "Breath Mask"
|
||||
icon_state = "breath"
|
||||
item_state = "breath"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH | HALFMASK
|
||||
w_class = 2
|
||||
protective_temperature = 420
|
||||
heat_transfer_coefficient = 0.90
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
|
||||
/obj/item/clothing/mask/medical
|
||||
desc = "A close-fitting sterile mask that can be connected to an air supply."
|
||||
name = "Medical Mask"
|
||||
icon_state = "medical"
|
||||
item_state = "medical"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH
|
||||
w_class = 3
|
||||
protective_temperature = 420
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.10
|
||||
|
||||
/obj/item/clothing/mask/spiderman
|
||||
desc = "A mask of Deadpool!"
|
||||
name = "Deadpool mask"
|
||||
icon_state = "spiderman"
|
||||
item_state = "spiderman"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR
|
||||
w_class = 3
|
||||
protective_temperature = 420
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/mask/muzzle
|
||||
name = "muzzle"
|
||||
desc = "To stop that awful noise."
|
||||
icon_state = "muzzle"
|
||||
item_state = "muzzle"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
|
||||
/obj/item/clothing/mask/surgical
|
||||
name = "Sterile Mask"
|
||||
desc = "A sterile mask designed to help prevent the spread of diseases."
|
||||
icon_state = "sterile"
|
||||
item_state = "sterile"
|
||||
w_class = 1
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.05
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
|
||||
|
||||
/obj/item/clothing/mask/gas
|
||||
name = "gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply."
|
||||
icon_state = "gas_mask"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES
|
||||
w_class = 3.0
|
||||
see_face = 0.0
|
||||
item_state = "gas_mask"
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.01
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/mask/gas/plaguedoctor
|
||||
name = "Plague doctor mask"
|
||||
desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply."
|
||||
icon_state = "plaguedoctor"
|
||||
item_state = "gas_mask"
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
|
||||
|
||||
/obj/item/clothing/mask/gas/emergency
|
||||
name = "emergency gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. For use in emergencies."
|
||||
icon_state = "gas_alt"
|
||||
item_state = "gas_alt"
|
||||
|
||||
/obj/item/clothing/mask/gas/swat
|
||||
name = "SWAT Mask"
|
||||
desc = "A close-fitting tactical mask that can be connected to an air supply."
|
||||
icon_state = "swat"
|
||||
|
||||
/obj/item/clothing/mask/gas/syndicate
|
||||
name = "syndicate mask"
|
||||
desc = "A close-fitting tactical mask that can be connected to an air supply."
|
||||
icon_state = "swat"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice
|
||||
name = "gas mask"
|
||||
//desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
|
||||
icon_state = "gas_mask"
|
||||
var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson
|
||||
var/voice = "Unknown"
|
||||
var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N
|
||||
origin_tech = "syndicate=4"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/space_ninja
|
||||
name = "ninja mask"
|
||||
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja_mask"
|
||||
vchange = 1
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
|
||||
/obj/item/clothing/mask/gas/sexyclown
|
||||
name = "sexy clown mask"
|
||||
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
desc = "The traditional mime's mask. It has an eerie facial posture."
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
|
||||
/obj/item/clothing/mask/gas/monkeymask
|
||||
name = "monkey mask"
|
||||
desc = "A mask used when acting as a monkey."
|
||||
icon_state = "monkeymask"
|
||||
item_state = "monkeymask"
|
||||
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
desc = "A traditional female mime's mask."
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
|
||||
/obj/item/clothing/mask/gas/fakemoustache
|
||||
name = "fake moustache"
|
||||
desc = "Warning: moustache is fake."
|
||||
// MASK WAS THAT MOVIE WITH THAT GUY WITH THE MESSED UP FACE. WHAT'S HIS NAME . . . JIM CARREY, I THINK.
|
||||
|
||||
/obj/item/clothing/mask
|
||||
name = "mask"
|
||||
icon = 'masks.dmi'
|
||||
body_parts_covered = HEAD
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
|
||||
/obj/item/clothing/mask/breath
|
||||
desc = "A close-fitting mask that can be connected to an air supply."
|
||||
name = "Breath Mask"
|
||||
icon_state = "breath"
|
||||
item_state = "breath"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADSPACE | MASKCOVERSMOUTH | HALFMASK
|
||||
w_class = 2
|
||||
protective_temperature = 420
|
||||
heat_transfer_coefficient = 0.90
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
|
||||
/obj/item/clothing/mask/medical
|
||||
desc = "A close-fitting sterile mask that can be connected to an air supply."
|
||||
name = "Medical Mask"
|
||||
icon_state = "medical"
|
||||
item_state = "medical"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH
|
||||
w_class = 3
|
||||
protective_temperature = 420
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.10
|
||||
|
||||
/obj/item/clothing/mask/spiderman
|
||||
desc = "A mask of Deadpool!"
|
||||
name = "Deadpool mask"
|
||||
icon_state = "spiderman"
|
||||
item_state = "spiderman"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|HEADSPACE|MASKCOVERSMOUTH|BLOCKHAIR
|
||||
w_class = 3
|
||||
protective_temperature = 420
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/mask/muzzle
|
||||
name = "muzzle"
|
||||
desc = "To stop that awful noise."
|
||||
icon_state = "muzzle"
|
||||
item_state = "muzzle"
|
||||
flags = FPRINT|TABLEPASS|MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
|
||||
/obj/item/clothing/mask/surgical
|
||||
name = "Sterile Mask"
|
||||
desc = "A sterile mask designed to help prevent the spread of diseases."
|
||||
icon_state = "sterile"
|
||||
item_state = "sterile"
|
||||
w_class = 1
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|MASKCOVERSMOUTH
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.05
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
|
||||
|
||||
/obj/item/clothing/mask/gas
|
||||
name = "gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply."
|
||||
icon_state = "gas_mask"
|
||||
flags = FPRINT|TABLEPASS|SUITSPACE|MASKCOVERSMOUTH|MASKCOVERSEYES
|
||||
w_class = 3.0
|
||||
see_face = 0.0
|
||||
item_state = "gas_mask"
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.01
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
|
||||
/obj/item/clothing/mask/gas/plaguedoctor
|
||||
name = "Plague doctor mask"
|
||||
desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply."
|
||||
icon_state = "plaguedoctor"
|
||||
item_state = "gas_mask"
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0)
|
||||
|
||||
/obj/item/clothing/mask/gas/emergency
|
||||
name = "emergency gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. For use in emergencies."
|
||||
icon_state = "gas_alt"
|
||||
item_state = "gas_alt"
|
||||
|
||||
/obj/item/clothing/mask/gas/swat
|
||||
name = "SWAT Mask"
|
||||
desc = "A close-fitting tactical mask that can be connected to an air supply."
|
||||
icon_state = "swat"
|
||||
|
||||
/obj/item/clothing/mask/gas/syndicate
|
||||
name = "syndicate mask"
|
||||
desc = "A close-fitting tactical mask that can be connected to an air supply."
|
||||
icon_state = "swat"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice
|
||||
name = "gas mask"
|
||||
//desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
|
||||
icon_state = "gas_mask"
|
||||
var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson
|
||||
var/voice = "Unknown"
|
||||
var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N
|
||||
origin_tech = "syndicate=4"
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/space_ninja
|
||||
name = "ninja mask"
|
||||
desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement."
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja_mask"
|
||||
vchange = 1
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
|
||||
/obj/item/clothing/mask/gas/sexyclown
|
||||
name = "sexy clown mask"
|
||||
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
desc = "The traditional mime's mask. It has an eerie facial posture."
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
|
||||
/obj/item/clothing/mask/gas/monkeymask
|
||||
name = "monkey mask"
|
||||
desc = "A mask used when acting as a monkey."
|
||||
icon_state = "monkeymask"
|
||||
item_state = "monkeymask"
|
||||
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
desc = "A traditional female mime's mask."
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
|
||||
/obj/item/clothing/mask/gas/fakemoustache
|
||||
name = "fake moustache"
|
||||
desc = "Warning: moustache is fake."
|
||||
icon_state = "fake-moustache"
|
||||
@@ -1,162 +1,162 @@
|
||||
// OMG SHOES
|
||||
|
||||
/obj/item/clothing/shoes
|
||||
name = "shoes"
|
||||
icon = 'shoes.dmi'
|
||||
desc = "Comfortable-looking shoes."
|
||||
|
||||
body_parts_covered = FEET
|
||||
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/syndigaloshes
|
||||
desc = "A pair of brown shoes. They seem to have extra grip."
|
||||
name = "Brown Shoes"
|
||||
icon_state = "brown"
|
||||
item_state = "brown"
|
||||
permeability_coefficient = 0.05
|
||||
flags = NOSLIP
|
||||
origin_tech = "syndicate=3"
|
||||
var/list/clothing_choices = list()
|
||||
|
||||
/obj/item/clothing/shoes/syndigaloshes/all
|
||||
|
||||
/obj/item/clothing/shoes/black
|
||||
name = "Black Shoes"
|
||||
icon_state = "black"
|
||||
color = "black"
|
||||
desc = "A pair of black shoes."
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "Brown Shoes"
|
||||
desc = "A pair of brown shoes."
|
||||
icon_state = "brown"
|
||||
color = "brown"
|
||||
|
||||
captain
|
||||
color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/blue
|
||||
name = "Blue Shoes"
|
||||
icon_state = "blue"
|
||||
color = "blue"
|
||||
|
||||
/obj/item/clothing/shoes/green
|
||||
name = "Green Shoes"
|
||||
icon_state = "green"
|
||||
color = "green"
|
||||
|
||||
/obj/item/clothing/shoes/yellow
|
||||
name = "Yellow Shoes"
|
||||
icon_state = "yellow"
|
||||
color = "yellow"
|
||||
|
||||
/obj/item/clothing/shoes/mime
|
||||
name = "Mime Shoes"
|
||||
icon_state = "mime"
|
||||
color = "mime"
|
||||
|
||||
/obj/item/clothing/shoes/purple
|
||||
name = "Purple Shoes"
|
||||
icon_state = "purple"
|
||||
color = "purple"
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "Brown Shoes"
|
||||
icon_state = "brown"
|
||||
color = "brown"
|
||||
|
||||
/obj/item/clothing/shoes/orange
|
||||
name = "Orange Shoes"
|
||||
icon_state = "orange"
|
||||
var/chained = 0
|
||||
color = "orange"
|
||||
|
||||
/obj/item/clothing/shoes/swat
|
||||
name = "SWAT shoes"
|
||||
desc = "When you want to turn up the heat."
|
||||
icon_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
flags = NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes.
|
||||
name = "combat boots"
|
||||
desc = "When you REALLY want to turn up the heat"
|
||||
icon_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
flags = NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/space_ninja
|
||||
name = "ninja shoes"
|
||||
desc = "A pair of running shoes. Excellent for running and even better for smashing skulls."
|
||||
icon_state = "s-ninja"
|
||||
protective_temperature = 700
|
||||
permeability_coefficient = 0.01
|
||||
flags = NOSLIP
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
/obj/item/clothing/shoes/white
|
||||
name = "White Shoes"
|
||||
icon_state = "white"
|
||||
permeability_coefficient = 0.25
|
||||
color = "white"
|
||||
|
||||
/obj/item/clothing/shoes/sandal
|
||||
desc = "A pair of rather plain, wooden sandals."
|
||||
name = "sandals"
|
||||
icon_state = "wizard"
|
||||
|
||||
/obj/item/clothing/shoes/sandal/marisa
|
||||
desc = "A pair of magic, black shoes."
|
||||
name = "Magic Shoes"
|
||||
icon_state = "black"
|
||||
|
||||
/obj/item/clothing/shoes/galoshes
|
||||
desc = "Rubber boots"
|
||||
name = "galoshes"
|
||||
icon_state = "galoshes"
|
||||
permeability_coefficient = 0.05
|
||||
flags = NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
|
||||
/obj/item/clothing/shoes/magboots
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
name = "magboots"
|
||||
icon_state = "magboots0"
|
||||
protective_temperature = 800
|
||||
heat_transfer_coefficient = 0.01
|
||||
var/magpulse = 0
|
||||
// flags = NOSLIP //disabled by default
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes
|
||||
desc = "The prankster's standard-issue clowning shoes. Damn they're huge!"
|
||||
name = "clown shoes"
|
||||
icon_state = "clown"
|
||||
item_state = "clown_shoes"
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/shoes/jackboots
|
||||
name = "Jackboots"
|
||||
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
|
||||
icon_state = "jackboots"
|
||||
item_state = "jackboots"
|
||||
// OMG SHOES
|
||||
|
||||
/obj/item/clothing/shoes
|
||||
name = "shoes"
|
||||
icon = 'shoes.dmi'
|
||||
desc = "Comfortable-looking shoes."
|
||||
|
||||
body_parts_covered = FEET
|
||||
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/syndigaloshes
|
||||
desc = "A pair of brown shoes. They seem to have extra grip."
|
||||
name = "Brown Shoes"
|
||||
icon_state = "brown"
|
||||
item_state = "brown"
|
||||
permeability_coefficient = 0.05
|
||||
flags = NOSLIP
|
||||
origin_tech = "syndicate=3"
|
||||
var/list/clothing_choices = list()
|
||||
|
||||
/obj/item/clothing/shoes/syndigaloshes/all
|
||||
|
||||
/obj/item/clothing/shoes/black
|
||||
name = "Black Shoes"
|
||||
icon_state = "black"
|
||||
color = "black"
|
||||
desc = "A pair of black shoes."
|
||||
|
||||
redcoat
|
||||
color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "Brown Shoes"
|
||||
desc = "A pair of brown shoes."
|
||||
icon_state = "brown"
|
||||
color = "brown"
|
||||
|
||||
captain
|
||||
color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
hop
|
||||
color = "hop" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
ce
|
||||
color = "chief" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
rd
|
||||
color = "director" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
color = "medical" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
cmo
|
||||
color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
|
||||
/obj/item/clothing/shoes/blue
|
||||
name = "Blue Shoes"
|
||||
icon_state = "blue"
|
||||
color = "blue"
|
||||
|
||||
/obj/item/clothing/shoes/green
|
||||
name = "Green Shoes"
|
||||
icon_state = "green"
|
||||
color = "green"
|
||||
|
||||
/obj/item/clothing/shoes/yellow
|
||||
name = "Yellow Shoes"
|
||||
icon_state = "yellow"
|
||||
color = "yellow"
|
||||
|
||||
/obj/item/clothing/shoes/mime
|
||||
name = "Mime Shoes"
|
||||
icon_state = "mime"
|
||||
color = "mime"
|
||||
|
||||
/obj/item/clothing/shoes/purple
|
||||
name = "Purple Shoes"
|
||||
icon_state = "purple"
|
||||
color = "purple"
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "Brown Shoes"
|
||||
icon_state = "brown"
|
||||
color = "brown"
|
||||
|
||||
/obj/item/clothing/shoes/orange
|
||||
name = "Orange Shoes"
|
||||
icon_state = "orange"
|
||||
var/chained = 0
|
||||
color = "orange"
|
||||
|
||||
/obj/item/clothing/shoes/swat
|
||||
name = "SWAT shoes"
|
||||
desc = "When you want to turn up the heat."
|
||||
icon_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
flags = NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes.
|
||||
name = "combat boots"
|
||||
desc = "When you REALLY want to turn up the heat"
|
||||
icon_state = "swat"
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0)
|
||||
flags = NOSLIP
|
||||
|
||||
/obj/item/clothing/shoes/space_ninja
|
||||
name = "ninja shoes"
|
||||
desc = "A pair of running shoes. Excellent for running and even better for smashing skulls."
|
||||
icon_state = "s-ninja"
|
||||
protective_temperature = 700
|
||||
permeability_coefficient = 0.01
|
||||
flags = NOSLIP
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
|
||||
/obj/item/clothing/shoes/white
|
||||
name = "White Shoes"
|
||||
icon_state = "white"
|
||||
permeability_coefficient = 0.25
|
||||
color = "white"
|
||||
|
||||
/obj/item/clothing/shoes/sandal
|
||||
desc = "A pair of rather plain, wooden sandals."
|
||||
name = "sandals"
|
||||
icon_state = "wizard"
|
||||
|
||||
/obj/item/clothing/shoes/sandal/marisa
|
||||
desc = "A pair of magic, black shoes."
|
||||
name = "Magic Shoes"
|
||||
icon_state = "black"
|
||||
|
||||
/obj/item/clothing/shoes/galoshes
|
||||
desc = "Rubber boots"
|
||||
name = "galoshes"
|
||||
icon_state = "galoshes"
|
||||
permeability_coefficient = 0.05
|
||||
flags = NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
|
||||
/obj/item/clothing/shoes/magboots
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
name = "magboots"
|
||||
icon_state = "magboots0"
|
||||
protective_temperature = 800
|
||||
heat_transfer_coefficient = 0.01
|
||||
var/magpulse = 0
|
||||
// flags = NOSLIP //disabled by default
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes
|
||||
desc = "The prankster's standard-issue clowning shoes. Damn they're huge!"
|
||||
name = "clown shoes"
|
||||
icon_state = "clown"
|
||||
item_state = "clown_shoes"
|
||||
slowdown = SHOES_SLOWDOWN+1
|
||||
color = "clown"
|
||||
|
||||
/obj/item/clothing/shoes/jackboots
|
||||
name = "Jackboots"
|
||||
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
|
||||
icon_state = "jackboots"
|
||||
item_state = "jackboots"
|
||||
color = "hosred"
|
||||
@@ -13,6 +13,7 @@ Space suit parts
|
||||
item_state = "space"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
@@ -30,4 +31,5 @@ Space suit parts
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 3
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
@@ -24,3 +24,4 @@
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
@@ -2,23 +2,7 @@
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50,energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
protective_temperature = 500
|
||||
heat_transfer_coefficient = 0.10
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/warden
|
||||
name = "Warden Hat"
|
||||
desc = "A special helmet issued to the Warden of a securiy force. Protects the head from impacts."
|
||||
icon_state = "policehelm"
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/vest
|
||||
@@ -38,6 +22,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1
|
||||
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/bulletproof
|
||||
@@ -63,6 +48,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll)
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive
|
||||
name = "Reactive Teleport Armor"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
permeability_coefficient = 0.01
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 10)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
|
||||
/obj/item/clothing/suit/bio_suit
|
||||
name = "bio suit"
|
||||
@@ -20,6 +21,7 @@
|
||||
slowdown = 1.0
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/head/bio_hood/general
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "bombsuit"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
|
||||
/obj/item/clothing/suit/bomb_suit
|
||||
name = "bomb suit"
|
||||
@@ -18,6 +19,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 2
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/head/bomb_hood/security
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher)
|
||||
slowdown = 1.0
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/fire/firefighter
|
||||
@@ -50,3 +51,4 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = 4//bulky item
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/suit/armor/heavy
|
||||
name = "heavy armor"
|
||||
@@ -17,9 +18,11 @@
|
||||
gas_transfer_coefficient = 0.90
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 3
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/suit/armor/tdome
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/suit/armor/tdome/red
|
||||
name = "Thunderdome suit (red)"
|
||||
@@ -47,6 +50,7 @@
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 1
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/suit/storage/officer
|
||||
name = "officer jacket"
|
||||
@@ -62,6 +66,7 @@
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
|
||||
slowdown = 1
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 0, rad = 0)
|
||||
flags_inv = 0
|
||||
|
||||
/obj/item/clothing/suit/storage/armoredundersuit
|
||||
name = "armoured undersuit"
|
||||
@@ -72,5 +77,6 @@
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/policetaperoll)
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
flags_inv = 0
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/HoS
|
||||
name = "Head of Security Hat"
|
||||
desc = "The hat of the Head of Security. For showing the officers who's in charge."
|
||||
icon_state = "hoscap"
|
||||
flags = FPRINT | TABLEPASS | SUITSPACE | HEADCOVERSEYES
|
||||
armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0)
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/obj/item/clothing/head/helmet/HoS/dermal
|
||||
name = "Dermal Armour Patch"
|
||||
@@ -19,6 +19,7 @@
|
||||
item_state = "hos"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/hos/jensen
|
||||
@@ -26,3 +27,4 @@
|
||||
desc = "A trenchoat augmented with a special alloy for some protection and style"
|
||||
icon_state = "jensencoat"
|
||||
item_state = "jensencoat"
|
||||
flags_inv = 0
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon_state = "straight_jacket"
|
||||
item_state = "straight_jacket"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/wcoat
|
||||
@@ -66,6 +67,7 @@
|
||||
w_class = 3
|
||||
flags = FPRINT | TABLEPASS
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/storage/captunic
|
||||
@@ -74,6 +76,7 @@
|
||||
icon_state = "captunic"
|
||||
item_state = "bio_suit"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/nun
|
||||
@@ -82,6 +85,7 @@
|
||||
icon_state = "nun"
|
||||
item_state = "nun"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
/obj/item/clothing/suit/monk
|
||||
name = "monk's robe"
|
||||
@@ -104,6 +108,7 @@
|
||||
icon_state = "hastur"
|
||||
item_state = "hastur"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/imperium_monk
|
||||
@@ -112,6 +117,7 @@
|
||||
icon_state = "imperium_monk"
|
||||
item_state = "imperium_monk"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/chickensuit
|
||||
@@ -120,6 +126,7 @@
|
||||
icon_state = "chickensuit"
|
||||
item_state = "chickensuit"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HEAD
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/monkeysuit
|
||||
@@ -128,6 +135,7 @@
|
||||
icon_state = "monkeysuit"
|
||||
item_state = "monkeysuit"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/holidaypriest
|
||||
@@ -136,5 +144,6 @@
|
||||
icon_state = "holidaypriest"
|
||||
item_state = "holidaypriest"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
body_parts_covered = FULL_BODY //It's magic, I ain't gotta explain shit. --NEO
|
||||
armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20)
|
||||
allowed = list(/obj/item/weapon/teleportation_scroll)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/red
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
desc = "Slick threads."
|
||||
name = "Lawyer suit"
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
|
||||
/obj/item/clothing/under/lawyer/black
|
||||
|
||||
@@ -1,210 +1,475 @@
|
||||
/mob/living/carbon/human/examine()
|
||||
set src in view()
|
||||
set src in oview()
|
||||
|
||||
usr << "\blue *---------*"
|
||||
if(!usr || !src) return
|
||||
if(((usr.disabilities & 128) || usr.blinded || usr.stat) && !(istype(usr,/mob/dead/observer/)))
|
||||
usr << "<span class='notice'>Something is there but you can't see it.</span>"
|
||||
return
|
||||
|
||||
usr << "\blue This is \icon[src.icon] <B>[src.name]</B>!"
|
||||
|
||||
// crappy hack because you can't do \his[src] etc
|
||||
var/t_his = "its"
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
t_his = "his"
|
||||
t_him = "him"
|
||||
else if (src.gender == FEMALE)
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
|
||||
if (src.w_uniform)
|
||||
if (src.w_uniform.blood_DNA)
|
||||
usr << "\red [src.name] is wearing a[src.w_uniform.blood_DNA ? " bloody " : " "] \icon[src.w_uniform] [src.w_uniform.name]!"
|
||||
else
|
||||
usr << "\blue [src.name] is wearing a \icon[src.w_uniform] [src.w_uniform.name]."
|
||||
|
||||
if (src.handcuffed)
|
||||
usr << "\blue [src.name] is \icon[src.handcuffed] handcuffed!"
|
||||
var/skipgloves = 0
|
||||
var/skipsuitstorage = 0
|
||||
var/skipjumpsuit = 0
|
||||
var/skipshoes = 0
|
||||
var/skipmask = 0
|
||||
var/skipears = 0
|
||||
var/skipeyes = 0
|
||||
|
||||
//exosuits and helmets obscure our view and stuff.
|
||||
if (src.wear_suit)
|
||||
if (src.wear_suit.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name] on!"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on."
|
||||
|
||||
if (src.l_ear)
|
||||
usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear."
|
||||
|
||||
if (src.r_ear)
|
||||
usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear."
|
||||
|
||||
if (src.wear_mask)
|
||||
if (src.wear_mask.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.wear_mask.blood_DNA ? " bloody " : " "] \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face!"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.wear_mask] [src.wear_mask.name] on [t_his] face."
|
||||
skipgloves = src.wear_suit.flags_inv & HIDEGLOVES
|
||||
skipsuitstorage = src.wear_suit.flags_inv & HIDESUITSTORAGE
|
||||
skipjumpsuit = src.wear_suit.flags_inv & HIDEJUMPSUIT
|
||||
skipshoes = src.wear_suit.flags_inv & HIDESHOES
|
||||
|
||||
if (src.head)
|
||||
usr << "\blue [src.name] is wearing a[src.head.blood_DNA ? " bloody " : " "] \icon[src.head] [src.head.name] on [t_his] head!"
|
||||
skipmask = src.head.flags_inv & HIDEMASK
|
||||
skipeyes = src.head.flags_inv & HIDEEYES
|
||||
skipears = src.head.flags_inv & HIDEEARS
|
||||
|
||||
if (src.glasses)
|
||||
usr << "\blue [src.name] is wearing a pair of [src.glasses.blood_DNA ? " bloody " : " "] \icon[src.glasses] [src.glasses.name]!"
|
||||
// crappy hacks because you can't do \his[src] etc. I'm sorry this proc is so unreadable, blame the text macros :<
|
||||
var/t_He = "It" //capitalised for use at the start of each line.
|
||||
var/t_his = "its"
|
||||
var/t_him = "it"
|
||||
var/t_has = "has"
|
||||
var/t_is = "is"
|
||||
|
||||
var/msg = "<span class='info'>*---------*\nThis is "
|
||||
|
||||
if( skipjumpsuit && (wear_mask || skipmask) ) //big suits/masks make it hard to tell their gender
|
||||
t_He = "They"
|
||||
t_his = "their"
|
||||
t_him = "them"
|
||||
t_has = "have"
|
||||
t_is = "are"
|
||||
else
|
||||
if(src.icon)
|
||||
msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
||||
switch(src.gender)
|
||||
if(MALE)
|
||||
t_He = "He"
|
||||
t_his = "his"
|
||||
t_him = "him"
|
||||
if(FEMALE)
|
||||
t_He = "She"
|
||||
t_his = "her"
|
||||
t_him = "her"
|
||||
|
||||
msg += "<EM>\a [src]</EM>!\n"
|
||||
|
||||
//uniform
|
||||
if (src.w_uniform && !skipjumpsuit)
|
||||
if (src.w_uniform.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.w_uniform] [src.w_uniform.gender==PLURAL?"some":"a"] blood-stained [src.w_uniform.name]!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] wearing \icon[src.w_uniform] \a [src.w_uniform].\n"
|
||||
|
||||
//head
|
||||
if (src.head)
|
||||
if (src.head.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.head] [src.head.gender==PLURAL?"some":"a"] blood-stained [src.head.name] on [t_his] head!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head.\n"
|
||||
|
||||
//suit/armour
|
||||
if (src.wear_suit)
|
||||
if (src.wear_suit.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.wear_suit] [src.wear_suit.gender==PLURAL?"some":"a"] blood-stained [src.wear_suit.name]!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] wearing \icon[src.wear_suit] \a [src.wear_suit].\n"
|
||||
|
||||
//suit/armour storage
|
||||
if(src.s_store && !skipsuitstorage)
|
||||
if(src.s_store.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] carrying \icon[src.s_store] [src.s_store.gender==PLURAL?"some":"a"] blood-stained [src.s_store.name] on [t_his] [src.wear_suit.name]!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] carrying \icon[src.s_store] \a [src.s_store] on [t_his] [src.wear_suit.name].\n"
|
||||
|
||||
//back
|
||||
if (src.back)
|
||||
if (src.back.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.back] [src.back.gender==PLURAL?"some":"a"] blood-stained [src.back] on [t_his] back.</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_has] \icon[src.back] \a [src.back] on [t_his] back.\n"
|
||||
|
||||
//left hand
|
||||
if (src.l_hand)
|
||||
if (src.l_hand.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.l_hand.blood_DNA ? " bloody " : " "] \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] holding \icon[src.l_hand] [src.l_hand.gender==PLURAL?"some":"a"] blood-stained [src.l_hand.name] in [t_his] left hand!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.l_hand] [src.l_hand.name] in [t_his] left hand."
|
||||
msg += "[t_He] [t_is] holding \icon[src.l_hand] \a [src.l_hand] in [t_his] left hand.\n"
|
||||
|
||||
//right hand
|
||||
if (src.r_hand)
|
||||
if (src.r_hand.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.r_hand.blood_DNA ? " bloody " : " "] \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand!"
|
||||
msg += "<span class='warning'>[t_He] [t_is] holding \icon[src.r_hand] [src.r_hand.gender==PLURAL?"some":"a"] blood-stained [src.r_hand.name] in [t_his] right hand!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.r_hand] [src.r_hand.name] in [t_his] right hand."
|
||||
msg += "[t_He] [t_is] holding \icon[src.r_hand] \a [src.r_hand] in [t_his] right hand.\n"
|
||||
|
||||
//gloves
|
||||
if (src.gloves && !skipgloves)
|
||||
if (src.gloves.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.gloves] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.gloves.name] on [t_his] hands!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_has] \icon[src.gloves] \a [src.gloves] on [t_his] hands.\n"
|
||||
else if (src.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] blood-stained hands!</span>\n"
|
||||
|
||||
//handcuffed?
|
||||
if (src.handcuffed)
|
||||
msg += "[t_He] [t_is] \icon[src.handcuffed] handcuffed!\n"
|
||||
|
||||
//belt
|
||||
if (src.belt)
|
||||
if (src.belt.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.belt.blood_DNA ? " bloody " : " "] \icon[src.belt] [src.belt.name] on [t_his] belt!"
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.belt] [src.belt.gender==PLURAL?"some":"a"] blood-stained [src.belt.name] about [t_his] waist!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.belt] [src.belt.name] on [t_his] belt."
|
||||
if(src.s_store)
|
||||
if(src.s_store.blood_DNA)
|
||||
usr << "\red [src.name] has a[src.s_store.blood_DNA ? " bloody " : " "] \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]!"
|
||||
msg += "[t_He] [t_has] \icon[src.belt] \a [src.belt] about [t_his] waist.\n"
|
||||
|
||||
//shoes
|
||||
if (src.shoes && !skipshoes)
|
||||
if(src.shoes.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.shoes] [src.shoes.gender==PLURAL?"some":"a"] blood-stained [src.shoes.name] on [t_his] feet!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has a \icon[src.s_store] [src.s_store.name] on [t_his][src.wear_suit.blood_DNA ? " bloody " : " "] \icon[src.wear_suit] [src.wear_suit.name]."
|
||||
if (src.shoes)
|
||||
usr << "[src.shoes.blood_DNA ? "\red" : "\blue"] [src.name] has a[src.shoes.blood_DNA ? " bloody " : " "] \icon[src.shoes] [src.shoes.name] on [t_his] feet."
|
||||
msg += "[t_He] [t_is] wearing \icon[src.shoes] \a [src.shoes] on [t_his] feet.\n"
|
||||
|
||||
|
||||
if (src.gloves)
|
||||
if (src.gloves.blood_DNA)
|
||||
usr << "\red [src.name] has bloody \icon[src.gloves] [src.gloves.name] on [t_his] hands!"
|
||||
//mask
|
||||
if (src.wear_mask && !skipmask)
|
||||
if (src.wear_mask.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.wear_mask] [src.wear_mask.gender==PLURAL?"some":"a"] blood-stained [src.wear_mask.name] on [t_his] face!</span>\n"
|
||||
else
|
||||
usr << "\blue [src.name] has \icon[src.gloves] [src.gloves.name] on [t_his] hands."
|
||||
else if (src.blood_DNA)
|
||||
usr << "\red [src.name] has bloody hands!"
|
||||
msg += "[t_He] [t_has] \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n"
|
||||
|
||||
if (src.back)
|
||||
usr << "\blue [src.name] has a \icon[src.back] [src.back.name] on [t_his] back."
|
||||
//eyes
|
||||
if (src.glasses && !skipeyes)
|
||||
if (src.glasses.blood_DNA)
|
||||
msg += "<span class='warning'>[t_He] [t_has] \icon[src.glasses] [src.glasses.gender==PLURAL?"some":"a"] blood-stained [src.glasses] covering [t_his] eyes!</span>\n"
|
||||
else
|
||||
msg += "[t_He] [t_has] \icon[src.glasses] \a [src.glasses] covering [t_his] eyes.\n"
|
||||
|
||||
if (src.l_ear && !skipears)
|
||||
msg += "[t_He] [t_has] has a \icon[src.l_ear] [src.l_ear.name] on [t_his] left ear.\n"
|
||||
|
||||
if (src.r_ear && !skipears)
|
||||
msg += "[t_He] [t_has] has a \icon[src.r_ear] [src.r_ear.name] on [t_his] right ear.\n"
|
||||
|
||||
//ID
|
||||
if (src.wear_id)
|
||||
var/id
|
||||
var/photo = 0
|
||||
if(istype(src:wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = src:wear_id
|
||||
if(istype(src.wear_id, /obj/item/device/pda))
|
||||
var/obj/item/device/pda/pda = src.wear_id
|
||||
id = pda.owner
|
||||
else if(istype(src.wear_id, /obj/item/weapon/card/id)) //just in case something other than a PDA/ID card somehow gets in the ID slot :[
|
||||
var/obj/item/weapon/card/id/idcard = src.wear_id
|
||||
id = idcard.registered_name
|
||||
if (id && (id != src.real_name) && (get_dist(src, usr) <= 1) && prob(10))
|
||||
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id] yet something doesn't seem right...</span>\n"
|
||||
else
|
||||
id = src.wear_id.registered_name
|
||||
if (src.wear_id.PHOTO)
|
||||
photo = 1
|
||||
if (id != src.real_name && in_range(src, usr))
|
||||
if (photo)
|
||||
usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
|
||||
else
|
||||
usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
|
||||
else
|
||||
if (photo)
|
||||
usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
|
||||
else
|
||||
usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
|
||||
|
||||
msg += "[t_He] [t_is] wearing \icon[src.wear_id] \a [src.wear_id].\n"
|
||||
|
||||
//Jitters
|
||||
if (src.is_jittery)
|
||||
switch(src.jitteriness)
|
||||
if(300 to INFINITY)
|
||||
usr << "\red [src] is violently convulsing."
|
||||
if(200 to 300)
|
||||
usr << "\red [src] looks extremely jittery."
|
||||
if(100 to 200)
|
||||
usr << "\red [src] is twitching ever so slightly."
|
||||
if(src.jitteriness >= 300)
|
||||
msg += "<span class='warning'><B>[t_He] [t_is] convulsing violently!</B></span>\n"
|
||||
else if(src.jitteriness >= 200)
|
||||
msg += "<span class='warning'>[t_He] [t_is] extremely jittery.</span>\n"
|
||||
else if(src.jitteriness >= 100)
|
||||
msg += "<span class='warning'>[t_He] [t_is] twitching ever so slightly.</span>\n"
|
||||
|
||||
if (src.suiciding)
|
||||
switch(src.suiciding)
|
||||
if(1)
|
||||
usr << "\red [src.name] appears to have bitten [t_his] tongue off!"
|
||||
msg += "<span class='warning'>[t_He] [t_has] bitten off [t_his] own tongue and [t_has] suffered major bloodloss!</span>\n"
|
||||
|
||||
var/distance = get_dist(usr,src)
|
||||
if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything
|
||||
distance = 1
|
||||
|
||||
if (src.stat == 1 || stat == 2)
|
||||
usr << "\red [name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep."
|
||||
msg += "<span class='warning'>[name] doesn't seem to be responding to anything around [t_him], [t_his] eyes closed as though asleep.</span>\n"
|
||||
if((!isbreathing || holdbreath) && distance <= 3)
|
||||
usr << "\red [name] does not appear to be breathing."
|
||||
msg += "<span class='warning'>[name] does not appear to be breathing.</span>\n"
|
||||
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0 && src.stat == 1 && distance <= 1)
|
||||
for(var/mob/O in viewers(usr.loc, null))
|
||||
O.show_message("[usr] checks [src]'s pulse.", 1)
|
||||
sleep(15)
|
||||
usr << "\blue [name] has a pulse!"
|
||||
spawn(15)
|
||||
usr << "\blue [name] has a pulse!"
|
||||
|
||||
if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1))
|
||||
if(distance <= 1)
|
||||
if(istype(usr, /mob/living/carbon/human) && usr.stat == 0)
|
||||
for(var/mob/O in viewers(usr.loc, null))
|
||||
O.show_message("[usr] checks [src]'s pulse.", 1)
|
||||
sleep(15)
|
||||
usr << "\red [name] has no pulse!"
|
||||
spawn(15)
|
||||
usr << "\red [name] has no pulse!"
|
||||
|
||||
if (src.getBruteLoss())
|
||||
/* if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly injured!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"*/
|
||||
|
||||
if (src.getCloneLoss())
|
||||
if (src.getCloneLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly... unfinished?"
|
||||
if (src.cloneloss)
|
||||
if (src.cloneloss < 30)
|
||||
msg += "<span class='warning'>[src.name] looks slightly... unfinished?</span>\n"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks very... unfinished?</B>"
|
||||
msg += "<span class='warning'>[src.name] looks very... unfinished?</B></span>\n"
|
||||
|
||||
if (src.getFireLoss())
|
||||
/* if (src.getFireLoss())
|
||||
if (src.getFireLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly burned!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely burned!</B>"
|
||||
|
||||
usr << "\red <B>[src.name] looks severely burned!</B>"*/
|
||||
msg += "<span class='warning'>"
|
||||
if (src.nutrition < 100)
|
||||
usr << "\red [src.name] looks like flesh and bones."
|
||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||
else if (src.nutrition >= 500)
|
||||
if (usr.nutrition < 100)
|
||||
usr << "\red [src.name] looks very round and delicious. Like a little piggy. A tasty piggy."
|
||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||
else
|
||||
usr << "\blue [src.name] looks quite chubby."
|
||||
msg += "[t_He] [t_is] quite chubby.\n"
|
||||
|
||||
if(!stat)
|
||||
if (src.getBrainLoss() >= 60)
|
||||
usr << "\red [src.name] has a stupid expression on [t_his] face."
|
||||
msg += "</span>"
|
||||
|
||||
|
||||
if (src.getBrainLoss() >= 60 && !stat)
|
||||
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
|
||||
|
||||
if (!src.client)
|
||||
usr << "\red [src.name] doesn't seem as though they want to talk."
|
||||
msg += "[t_He] [t_has] a vacant, braindead stare...\n"
|
||||
|
||||
spawn(10) // I think we might be overloading the clients.
|
||||
for(var/named in organs)
|
||||
var/datum/organ/external/temp = organs[named]
|
||||
if(temp)
|
||||
if(temp.destroyed)
|
||||
usr << "\red [src.name] is missing [t_his] [temp.display_name]."
|
||||
if(temp.wounds)
|
||||
for(var/datum/organ/external/wound/w in temp.wounds)
|
||||
var/size = w.wound_size
|
||||
var/sizetext
|
||||
switch(size)
|
||||
var/list/wound_descriptions = list()
|
||||
var/list/wound_flavor_text = list()
|
||||
for(var/named in organs)
|
||||
var/datum/organ/external/temp = organs[named]
|
||||
if(temp)
|
||||
if(temp.destroyed)
|
||||
wound_flavor_text["[temp.display_name]"] = "<span class='warning'><b>[src.name] is missing [t_his] [temp.display_name].</b></span>\n"
|
||||
continue
|
||||
if(temp.wounds)
|
||||
var/list/wounds = list(list(),list(),list(),list(),list(),list())
|
||||
for(var/datum/organ/wound/w in temp.wounds)
|
||||
switch(w.healing_state)
|
||||
if(0)
|
||||
var/list/cut = wounds[1]
|
||||
cut += w
|
||||
wounds[1] = cut
|
||||
if(1)
|
||||
var/list/cut = wounds[2]
|
||||
cut += w
|
||||
wounds[2] = cut
|
||||
if(2)
|
||||
var/list/cut = wounds[3]
|
||||
cut += w
|
||||
wounds[3] = cut
|
||||
if(3)
|
||||
var/list/cut = wounds[4]
|
||||
cut += w
|
||||
wounds[4] = cut
|
||||
if(4)
|
||||
var/list/cut = wounds[5]
|
||||
cut += w
|
||||
wounds[5] = cut
|
||||
if(5)
|
||||
var/list/cut = wounds[6]
|
||||
cut += w
|
||||
wounds[6] = cut
|
||||
wound_descriptions["[temp.display_name]"] = wounds
|
||||
else
|
||||
wound_flavor_text["[temp.display_name]"] = ""
|
||||
//Now that we have a big list of all the wounds, on all the limbs.
|
||||
var/list/is_bleeding = list()
|
||||
for(var/named in wound_descriptions)
|
||||
var/list/wound_states = wound_descriptions[named]
|
||||
var/list/flavor_text = list()
|
||||
for(var/i = 1, i <= 6, i++)
|
||||
var/list/wound_state = wound_states[i] //All wounds at this level of healing.
|
||||
var/list/tally = list("cut" = 0, "deep cut" = 0, "flesh wound" = 0, "gaping wound" = 0, "big gaping wound" = 0, "massive wound" = 0,\
|
||||
"tiny bruise" = 0, "small bruise" = 0, "moderate bruise" = 0, "large bruise" = 0, "huge bruise" = 0, "monumental bruise" = 0,\
|
||||
"small burn" = 0, "moderate burn" = 0, "large burn" = 0, "severe burn" = 0, "deep burn" = 0, "carbonised area" = 0) //How many wounds of what size.
|
||||
for(var/datum/organ/wound/w in wound_state)
|
||||
if(w.bleeding && !is_bleeding[named]) is_bleeding[named] = 1
|
||||
switch(w.wound_size)
|
||||
if(1)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["cut"] += 1
|
||||
if(1)
|
||||
sizetext = "cut"
|
||||
tally["tiny bruise"] += 1
|
||||
if(2)
|
||||
sizetext = "deep cut"
|
||||
if(3)
|
||||
sizetext = "flesh wound"
|
||||
if(4)
|
||||
sizetext = "gaping wound"
|
||||
if(5)
|
||||
sizetext = "big gaping wound"
|
||||
if(6)
|
||||
sizetext = "massive wound"
|
||||
if(w.bleeding)
|
||||
usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]."
|
||||
tally["small burn"] += 1
|
||||
if(2)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["deep cut"] += 1
|
||||
if(1)
|
||||
tally["small bruise"] += 1
|
||||
if(2)
|
||||
tally["moderate burn"] += 1
|
||||
if(3)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["flesh wound"] += 1
|
||||
if(1)
|
||||
tally["moderate bruise"] += 1
|
||||
if(2)
|
||||
tally["large burn"] += 1
|
||||
if(4)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["gaping wound"] += 1
|
||||
if(1)
|
||||
tally["large bruise"] += 1
|
||||
if(2)
|
||||
tally["severe burn"] += 1
|
||||
if(5)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["big gaping wound"] += 1
|
||||
if(1)
|
||||
tally["huge bruise"] += 1
|
||||
if(2)
|
||||
tally["deep burn"] += 1
|
||||
if(6)
|
||||
switch(w.wound_type)
|
||||
if(0)
|
||||
tally["massive wound"] += 1
|
||||
if(1)
|
||||
tally["monumental bruise"] += 1
|
||||
if(2)
|
||||
tally["carbonised area"] += 1
|
||||
for(var/tallied in tally)
|
||||
if(!tally[tallied])
|
||||
continue
|
||||
//if(flavor_text_string && tally[tallied])
|
||||
// for(
|
||||
// flavor_text_string += pick(list(", as well as", ", in addition to")) //add more later.
|
||||
var/tallied_rename = list("cut" = "cut","deep cut" = "deep cut", "flesh wound" = "flesh wound",\
|
||||
"gaping wound" = "gaping wound", "big gaping wound" = "big gaping wound", "massive wound" = "massive wound",\
|
||||
"tiny bruise" = "tiny bruise", "small bruise" = "small bruise", "moderate bruise" = "moderate bruise",\
|
||||
"large bruise" = "large bruise", "huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\
|
||||
"small burn" = "small burn", "moderate burn" = "moderate burn", "large burn" = "large burn",\
|
||||
"severe burn" = "severe burn", "deep burn" = "deep burn", "carbonised area" = "carbonised area")
|
||||
switch(i)
|
||||
if(2) //Healing wounds.
|
||||
if(tallied in list("cut","tiny bruise","small burn"))
|
||||
continue
|
||||
tallied_rename = list("deep cut" = "clotted cut", "flesh wound" = "small bandaged wound",\
|
||||
"gaping wound" = "bandaged wound", "big gaping wound" = "gauze wrapped wound",\
|
||||
"massive wound" = "massive blood soaked bandage", "small bruise" = "small bruise",\
|
||||
"moderate bruise" = "moderate bruise", "large bruise" = "large bruise",\
|
||||
"huge bruise" = "huge bruise", "monumental bruise" = "monumental bruise",\
|
||||
"moderate burn" = "moderate salved burn", "large burn" = "large salved burn",\
|
||||
"severe burn" = "severe salved burn", "deep burn" = "deep salved burn",\
|
||||
"carbonised area" = "treated carbonised area")
|
||||
if(3)
|
||||
if(tallied in list("cut","tiny bruise","small burn"))
|
||||
continue
|
||||
tallied_rename = list("deep cut" = "fading cut", "flesh wound" = "small healing wound",\
|
||||
"gaping wound" = "healing wound", "big gaping wound" = "big healing wound",\
|
||||
"massive wound" = "massive healing wound", "small bruise" = "tiny bruise",\
|
||||
"moderate bruise" = "small bruise", "large bruise" = "moderate bruise",\
|
||||
"huge bruise" = "large bruise", "monumental bruise" = "huge bruise",\
|
||||
"moderate burn" = "healing moderate burn", "large burn" = "healing large burn",\
|
||||
"severe burn" = "healing severe burn", "deep burn" = "healing deep burn",\
|
||||
"carbonised area" = "slowly healing carbonised area")
|
||||
if(4)
|
||||
if(tallied in list("cut","deep cut","tiny bruise", "small bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("flesh wound" = "small red scar", "gaping wound" = "angry straight scar",\
|
||||
"big gaping wound" = "jagged angry scar", "massive wound" = "gigantic angry scar",\
|
||||
"moderate bruise" = "tiny bruise", "large bruise" = "small bruise",\
|
||||
"huge bruise" = "moderate bruise", "monumental bruise" = "large bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "healing carbonised area")
|
||||
if(5)
|
||||
if(tallied in list("cut","deep cut","tiny bruise", "small bruise", "moderate bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("flesh wound" = "small scar", "gaping wound" = "straight scar",\
|
||||
"big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\
|
||||
"large bruise" = "tiny bruise",\
|
||||
"huge bruise" = "small bruise", "monumental bruise" = "moderate bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "large scarred area")
|
||||
if(6)
|
||||
if(tallied in list("cut","deep cut","flesh wound","tiny bruise", "small bruise", "moderate bruise", "large bruise", "huge bruise","small burn", "moderate burn"))
|
||||
continue
|
||||
tallied_rename = list("gaping wound" = "straight scar",\
|
||||
"big gaping wound" = "jagged scar", "massive wound" = "gigantic scar",\
|
||||
"monumental bruise" = "tiny bruise",\
|
||||
"large burn" = "large burn scar", "severe burn" = "severe burn scar",\
|
||||
"deep burn" = "deep burn scar", "carbonised area" = "large scarred area")
|
||||
var/list/no_exclude = list("gaping wound", "big gaping wound", "massive wound", "large bruise",\
|
||||
"huge bruise", "massive bruise", "severe burn", "large burn", "deep burn", "carbonised area")
|
||||
switch(tally[tallied])
|
||||
if(1)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]"
|
||||
else
|
||||
flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a [tallied_rename[tallied]]"
|
||||
if(2)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += "[prob(4) && !(tallied in no_exclude) ? " what might be" : ""] a pair of [tallied_rename[tallied]]s"
|
||||
if(3 to 5)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has several [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += " several [tallied_rename[tallied]]s"
|
||||
if(6 to INFINITY)
|
||||
if(!flavor_text.len)
|
||||
flavor_text += "<span class='warning'>[src] has a bunch of [tallied_rename[tallied]]s"
|
||||
else
|
||||
flavor_text += " a ton of [tallied_rename[tallied]]s"
|
||||
if(flavor_text.len)
|
||||
var/flavor_text_string = ""
|
||||
for(var/text = 1, text <= flavor_text.len, text++)
|
||||
if(text == flavor_text.len && flavor_text.len > 1)
|
||||
flavor_text_string += ", and"
|
||||
else if(flavor_text.len > 1)
|
||||
flavor_text_string += ","
|
||||
flavor_text_string += flavor_text[text]
|
||||
flavor_text_string += " on [t_his] [named].</span><br>"
|
||||
wound_flavor_text["[named]"] = flavor_text_string
|
||||
if(wound_flavor_text["head"] && !skipmask && !(wear_mask && istype(wear_mask, /obj/item/clothing/mask/gas)))
|
||||
msg += wound_flavor_text["head"]
|
||||
else if(is_bleeding["head"])
|
||||
msg += "<span class='warning'>[src] has blood running down [t_his] face!</span>\n"
|
||||
if(wound_flavor_text["chest"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["chest"]
|
||||
else if(is_bleeding["chest"])
|
||||
msg += "<span class='warning'>[src] has blood from under [t_his] clothing!</span>\n"
|
||||
if(wound_flavor_text["left arm"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["left arm"]
|
||||
if(wound_flavor_text["left hand"] && !gloves && !skipgloves)
|
||||
msg += wound_flavor_text["left hand"]
|
||||
else if(is_bleeding["left hand"])
|
||||
msg += "<span class='warning'>[src] has blood running from under [t_his] gloves!</span>\n"
|
||||
if(wound_flavor_text["right arm"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["right arm"]
|
||||
if(wound_flavor_text["right hand"] && !gloves && !skipgloves)
|
||||
msg += wound_flavor_text["right hand"]
|
||||
else if(is_bleeding["right hand"])
|
||||
msg += "<span class='warning'>[src] has blood running from under [t_his] gloves!</span>\n"
|
||||
if(wound_flavor_text["groin"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["groin"]
|
||||
if(wound_flavor_text["left leg"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["left leg"]
|
||||
if(wound_flavor_text["left foot"]&& !shoes && !skipshoes)
|
||||
msg += wound_flavor_text["left foot"]
|
||||
else if(is_bleeding["left foot"])
|
||||
msg += "<span class='warning'>[src] has blood running from [t_his] shoes!</span>\n"
|
||||
if(wound_flavor_text["right leg"] && !w_uniform && !skipjumpsuit)
|
||||
msg += wound_flavor_text["right leg"]
|
||||
if(wound_flavor_text["right foot"]&& !shoes && !skipshoes)
|
||||
msg += wound_flavor_text["right foot"]
|
||||
else if(is_bleeding["right foot"])
|
||||
msg += "<span class='warning'>[src] has blood running from [t_his] shoes!</span>\n"
|
||||
|
||||
print_flavor_text()
|
||||
|
||||
usr << "\blue *---------*"
|
||||
// if(w.bleeding)
|
||||
// usr << "\red [src.name] is bleeding from a [sizetext] on [t_his] [temp.display_name]."
|
||||
// continue
|
||||
|
||||
msg += print_flavor_text()
|
||||
|
||||
msg += "\blue *---------*"
|
||||
usr << msg
|
||||
|
||||
@@ -54,12 +54,13 @@
|
||||
|
||||
var/list/body_standing = list()
|
||||
var/list/body_lying = list()
|
||||
var/organs2 = list()
|
||||
|
||||
var/mutantrace = null
|
||||
|
||||
var/bloodloss = 0
|
||||
var/debug_leftarm
|
||||
var/debug_lefthand
|
||||
var/datum/reagents/vessel
|
||||
var/pale = 0
|
||||
|
||||
/mob/living/carbon/human/dummy
|
||||
real_name = "Test Dummy"
|
||||
@@ -75,25 +76,26 @@
|
||||
|
||||
if(!dna) dna = new /datum/dna(null)
|
||||
|
||||
new /datum/organ/external/chest(src)
|
||||
new /datum/organ/external/groin(src)
|
||||
new /datum/organ/external/head(src)
|
||||
new /datum/organ/external/l_arm(src)
|
||||
new /datum/organ/external/r_arm(src)
|
||||
new /datum/organ/external/r_leg(src)
|
||||
new /datum/organ/external/l_leg(src)
|
||||
organs2 += new /datum/organ/external/chest(src)
|
||||
organs2 += new /datum/organ/external/groin(src)
|
||||
organs2 += new /datum/organ/external/head(src)
|
||||
organs2 += new /datum/organ/external/l_arm(src)
|
||||
organs2 += new /datum/organ/external/r_arm(src)
|
||||
organs2 += new /datum/organ/external/r_leg(src)
|
||||
organs2 += new /datum/organ/external/l_leg(src)
|
||||
|
||||
var/datum/organ/external/part = new /datum/organ/external/l_hand(src)
|
||||
part.parent = organs["l_arm"]
|
||||
organs2 += part
|
||||
part = new /datum/organ/external/l_foot(src)
|
||||
part.parent = organs["l_leg"]
|
||||
organs2 += part
|
||||
part = new /datum/organ/external/r_hand(src)
|
||||
part.parent = organs["r_arm"]
|
||||
organs2 += part
|
||||
part = new /datum/organ/external/r_foot(src)
|
||||
part.parent = organs["r_leg"]
|
||||
|
||||
debug_leftarm = organs["l_arm"]
|
||||
debug_lefthand = organs["l_hand"]
|
||||
organs2 += part
|
||||
|
||||
var/g = "m"
|
||||
if (gender == MALE)
|
||||
@@ -113,12 +115,47 @@
|
||||
update_clothing()
|
||||
src << "\blue Your icons have been generated!"
|
||||
|
||||
vessel = new/datum/reagents(560)
|
||||
vessel.my_atom = src
|
||||
vessel.add_reagent("blood",560)
|
||||
spawn(1) fixblood()
|
||||
|
||||
..()
|
||||
/*var/known_languages = list()
|
||||
known_languages.Add("english")*/
|
||||
|
||||
// organStructure = new /obj/effect/organstructure/human(src)
|
||||
|
||||
/mob/living/carbon/human/proc/fixblood()
|
||||
for(var/datum/reagent/blood/B in vessel.reagent_list)
|
||||
if(B.id == "blood")
|
||||
B.data = list("donor"=src,"viruses"=null,"blood_DNA"=dna.unique_enzymes,"blood_type"=dna.b_type,"resistances"=null,"trace_chem"=null,"virus2"=(virus2 ? virus2.getcopy() : null),"antibodies"=0)
|
||||
|
||||
/mob/living/carbon/human/proc/drip(var/amt as num)
|
||||
if(!amt)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
var/list/obj/effect/decal/cleanable/blood/drip/nums = list()
|
||||
var/amm = 0.1 * amt
|
||||
vessel.remove_reagent("blood",amm)
|
||||
var/list/hax = list("1","2","3","4","5")
|
||||
for(var/obj/effect/decal/cleanable/blood/drip/G in T)
|
||||
nums += G
|
||||
hax.Remove(G.icon_state)
|
||||
if(nums.len >= 3)
|
||||
var/obj/effect/decal/cleanable/blood/drip/D = pick(nums)
|
||||
D.blood_DNA.len++
|
||||
D.blood_DNA[D.blood_DNA.len] = list(dna.unique_enzymes,dna.b_type)
|
||||
if(virus2)
|
||||
D.virus2 += virus2.getcopy()
|
||||
return
|
||||
var/obj/effect/decal/cleanable/blood/drip/this = new(T)
|
||||
this.icon_state = pick(hax)
|
||||
this.blood_DNA = list(list(dna.unique_enzymes,dna.b_type))
|
||||
this.blood_owner = src
|
||||
if(virus2)
|
||||
this.virus2 = virus2.getcopy()
|
||||
|
||||
/mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes)
|
||||
if ((!( yes ) || now_pushing))
|
||||
return
|
||||
@@ -1392,6 +1429,9 @@
|
||||
else
|
||||
stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
lying_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
if(pale)
|
||||
stand_icon.Blend(rgb(100,100,100))
|
||||
lying_icon.Blend(rgb(100,100,100))
|
||||
|
||||
if (underwear > 0)
|
||||
//if(!obese)
|
||||
|
||||
@@ -90,9 +90,13 @@ emp_act
|
||||
if(!I || !user) return 0
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
|
||||
var/hit_area = parse_zone(affecting.name)
|
||||
var/hit_area = affecting.display_name
|
||||
|
||||
visible_message("\red <B>[src] has been attacked in the [hit_area] with [I.name] by [user]!</B>")
|
||||
if(!affecting.destroyed)
|
||||
visible_message("\red <B>[src] has been attacked in the [hit_area] with [I.name] by [user]!</B>")
|
||||
else
|
||||
user << "What [affecting]?"
|
||||
return
|
||||
|
||||
if((user != src) && check_shields(I.force, "the [I.name]"))
|
||||
return 0
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
// a.hallucinate(src)
|
||||
if(!handling_hal && hallucination > 20)
|
||||
spawn handle_hallucinations() //The not boring kind!
|
||||
hallucination -= 2
|
||||
hallucination = max(hallucination - 2, 0)
|
||||
//if(health < 0)
|
||||
// for(var/obj/a in hallucinations)
|
||||
// del a
|
||||
@@ -766,6 +766,7 @@
|
||||
|
||||
handle_chemicals_in_body()
|
||||
if(reagents && stat != 2) reagents.metabolize(src)
|
||||
if(vessel && stat != 2) vessel.metabolize(src)
|
||||
|
||||
if(mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
|
||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||
@@ -861,6 +862,39 @@
|
||||
emote("collapse")
|
||||
paralysis = 10
|
||||
|
||||
if(stat < 2)
|
||||
var/blood_volume = round(vessel.get_reagent_amount("blood"))
|
||||
if(bloodloss)
|
||||
drip(bloodloss)
|
||||
if(!blood_volume)
|
||||
bloodloss = 0
|
||||
else if(blood_volume > 448)
|
||||
if(pale)
|
||||
pale = 0
|
||||
update_body()
|
||||
else if(blood_volume <= 448 && blood_volume > 336)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel [word]"
|
||||
if(prob(1))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel [word]"
|
||||
else if(blood_volume <= 336 && blood_volume > 244)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
eye_blurry += 6
|
||||
if(prob(15))
|
||||
paralysis += rand(1,3)
|
||||
else if(blood_volume <= 244 && blood_volume > 122)
|
||||
if(toxloss <= 100)
|
||||
toxloss = 100
|
||||
else if(blood_volume <= 122)
|
||||
death()
|
||||
//src.unlock_medal("We're all sold out on blood", 0, "You bled to death..", "easy")
|
||||
|
||||
updatehealth()
|
||||
|
||||
// health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
|
||||
@@ -937,20 +971,21 @@
|
||||
src << "\red Your face has become disfigured."
|
||||
face_op_stage = 0.0
|
||||
warn_flavor_changed()
|
||||
var/blood_max = 0
|
||||
for(var/name in organs)
|
||||
var/datum/organ/external/temp = organs[name]
|
||||
if(!temp.bleeding)
|
||||
continue
|
||||
else
|
||||
if(prob(35))
|
||||
bloodloss += rand(1,10)
|
||||
// else
|
||||
// if(prob(35))
|
||||
// bloodloss += rand(1,10)
|
||||
if(temp.wounds)
|
||||
for(var/datum/organ/external/wound/W in temp.wounds)
|
||||
if(!temp.bleeding)
|
||||
continue
|
||||
else
|
||||
if(prob(25))
|
||||
bloodloss++
|
||||
for(var/datum/organ/wound/W in temp.wounds)
|
||||
if(W.wound_size && W.bleeding)
|
||||
blood_max += W.wound_size
|
||||
if(temp.destroyed && !temp.gauzed)
|
||||
blood_max += 10 //Yer missing a fucking limb.
|
||||
bloodloss = min(bloodloss+1,sqrt(blood_max))
|
||||
if (eye_blind)
|
||||
eye_blind--
|
||||
blinded = 1
|
||||
@@ -1435,4 +1470,4 @@ snippets
|
||||
plcheck = t_plasma
|
||||
oxcheck = t_oxygen
|
||||
G.turf_add(T, G.total_moles())
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -175,8 +175,9 @@
|
||||
affecting.heal_damage(1000, 1000) //fixes getting hit after ingestion, killing you when game updates organ health
|
||||
affecting.broken = 0
|
||||
affecting.destroyed = 0
|
||||
for(var/datum/organ/external/wound/W in affecting.wounds)
|
||||
for(var/datum/organ/wound/W in affecting.wounds)
|
||||
W.stopbleeding()
|
||||
del(W)
|
||||
H.UpdateDamageIcon()
|
||||
H.update_body()
|
||||
//src.fireloss = 0
|
||||
|
||||
@@ -56,6 +56,6 @@
|
||||
P.on_hit(src,2)
|
||||
return 2
|
||||
if(!P.nodamage)
|
||||
apply_damage((P.damage/(absorb+1)), P.damage_type, used_weapon = P.name)
|
||||
apply_damage((P.damage/(absorb+1)), P.damage_type, def_zone, sharp = 1, used_weapon = P.name)
|
||||
P.on_hit(src, absorb)
|
||||
return absorb
|
||||
@@ -389,6 +389,9 @@
|
||||
memory()
|
||||
|
||||
/mob/proc/update_flavor_text()
|
||||
set src in usr
|
||||
if(usr != src)
|
||||
usr << "No."
|
||||
var/msg = input(usr,"Set the flavor text in your 'examine' verb. Don't metagame!","Flavor Text",html_decode(flavor_text)) as message|null
|
||||
|
||||
if(msg != null)
|
||||
|
||||
@@ -121,8 +121,8 @@ proc/isorgan(A)
|
||||
zone = "head"
|
||||
if("mouth")
|
||||
zone = "head"
|
||||
if("groin")
|
||||
zone = "chest"
|
||||
// if("groin")
|
||||
// zone = "chest"
|
||||
return zone
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ proc/isorgan(A)
|
||||
if(4 to 6) return "l_arm"
|
||||
if(7 to 9) return "r_arm"
|
||||
|
||||
if(prob(probability * 0.75)) return zone
|
||||
if(prob(probability)) return zone
|
||||
return "chest"
|
||||
|
||||
|
||||
|
||||
+206
-53
@@ -45,7 +45,6 @@
|
||||
burn_dam = 0
|
||||
bandaged = 0
|
||||
max_damage = 0
|
||||
wound_size = 0
|
||||
max_size = 0
|
||||
obj/item/weapon/implant/implant = null
|
||||
|
||||
@@ -56,7 +55,8 @@
|
||||
perma_dmg = 0
|
||||
broken = 0
|
||||
destroyed = 0
|
||||
destspawn
|
||||
destspawn = 0 //Has it spawned the broken limb?
|
||||
gauzed = 0 //Has the missing limb been patched?
|
||||
min_broken_damage = 30
|
||||
datum/organ/external/parent
|
||||
damage_msg = "\red You feel a intense pain"
|
||||
@@ -81,22 +81,28 @@
|
||||
|
||||
if(owner) owner.pain(display_name, (brute+burn)*3, 1)
|
||||
if(sharp)
|
||||
var/chance = rand(1,5)
|
||||
var/nux = brute * chance
|
||||
var/nux = brute * rand(10,15)
|
||||
if(brute_dam >= max_damage)
|
||||
if(prob(5 * brute))
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [display_name] flies off.")
|
||||
// for(var/mob/M in viewers(owner))
|
||||
// M.show_message("\red [owner.name]'s [display_name] flies off.")
|
||||
destroyed = 1
|
||||
droplimb()
|
||||
return
|
||||
else if(prob(nux))
|
||||
createwound(rand(1,5))
|
||||
createwound(max(1,min(6,round(brute/10) + rand(-1,1))),0,brute)
|
||||
owner << "You feel something wet on your [display_name]"
|
||||
|
||||
if((src.brute_dam + src.burn_dam + brute + burn) < src.max_damage)
|
||||
src.brute_dam += brute
|
||||
src.burn_dam += burn
|
||||
if((brute_dam + burn_dam + brute + burn) < max_damage)
|
||||
if(brute)
|
||||
brute_dam += brute
|
||||
if(prob(brute) && brute > 20 && !sharp)
|
||||
createwound(rand(4,6),0,brute)
|
||||
else if(!sharp)
|
||||
createwound(max(1,min(6,round(brute/10) + rand(-1,1))),1,brute)
|
||||
if(burn)
|
||||
burn_dam += burn
|
||||
createwound(max(1,min(6,round(burn/10) + rand(-1,1))),2,burn)
|
||||
else
|
||||
var/can_inflict = src.max_damage - (src.brute_dam + src.burn_dam)
|
||||
if(can_inflict)
|
||||
@@ -110,9 +116,11 @@
|
||||
if (brute > 0)
|
||||
brute = can_inflict
|
||||
src.brute_dam += brute
|
||||
if(!sharp) createwound(max(1,min(6,round(brute/10) + rand(-1,1))),1,brute)
|
||||
else
|
||||
burn = can_inflict
|
||||
src.burn_dam += burn
|
||||
createwound(max(1,min(6,round(burn/10) + rand(-1,1))),2,burn)
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -126,8 +134,51 @@
|
||||
|
||||
|
||||
proc/heal_damage(brute, burn, internal = 0)
|
||||
brute_dam = max(0, brute_dam - brute)
|
||||
burn_dam = max(0, burn_dam - burn)
|
||||
var/brute_to_heal = 0
|
||||
var/brute_wounds = list()
|
||||
var/burn_to_heal = 0
|
||||
var/burn_wounds = list()
|
||||
for(var/datum/organ/wound/W in wounds)
|
||||
if(W.wound_type > 1 && W.damage)
|
||||
burn_to_heal += W.damage
|
||||
burn_wounds += W
|
||||
else if(W.damage)
|
||||
brute_to_heal += W.damage
|
||||
brute_wounds += W
|
||||
if(brute && brute >= brute_to_heal)
|
||||
for(var/datum/organ/wound/W in brute_wounds)
|
||||
if(brute >= W.damage)
|
||||
brute_dam -= W.damage
|
||||
brute -= W.damage
|
||||
W.damage = 0
|
||||
W.initial_dmg = 0
|
||||
W.stopbleeding()
|
||||
else
|
||||
W.damage -= brute
|
||||
W.initial_dmg -= brute
|
||||
else if(brute)
|
||||
for(var/datum/organ/wound/W in brute_wounds)
|
||||
W.damage = 0
|
||||
W.initial_dmg = 0
|
||||
W.stopbleeding()
|
||||
brute_dam = 0
|
||||
if(burn && burn >= burn_to_heal)
|
||||
for(var/datum/organ/wound/W in burn_wounds)
|
||||
if(burn >= W.damage)
|
||||
burn_dam -= W.damage
|
||||
burn -= W.damage
|
||||
W.damage = 0
|
||||
W.initial_dmg = 0
|
||||
W.stopbleeding()
|
||||
else
|
||||
W.damage -= burn
|
||||
W.initial_dmg -= burn
|
||||
else if(burn)
|
||||
for(var/datum/organ/wound/W in burn_wounds)
|
||||
W.damage = 0
|
||||
W.initial_dmg = 0
|
||||
W.stopbleeding()
|
||||
burn_dam = 0
|
||||
if(internal)
|
||||
broken = 0
|
||||
perma_injury = 0
|
||||
@@ -163,7 +214,7 @@
|
||||
|
||||
process()
|
||||
if(destroyed)
|
||||
if(destspawn)
|
||||
if(!destspawn)
|
||||
droplimb()
|
||||
return
|
||||
if(broken == 0)
|
||||
@@ -178,9 +229,7 @@
|
||||
var/dmgmsg = "[damage_msg] in your [display_name]"
|
||||
owner << dmgmsg
|
||||
//owner.unlock_medal("Broke Yarrr Bones!", 0, "Break a bone.", "easy")
|
||||
for(var/mob/M in viewers(owner))
|
||||
if(M != owner)
|
||||
M.show_message("\red You hear a loud cracking sound coming from [owner.name].")
|
||||
owner.visible_message("\red You hear a loud cracking sound coming from [owner.name].","\red <b>Something feels like it shattered in your [display_name]!</b>","You hear a sickening crack.")
|
||||
owner.emote("scream")
|
||||
broken = 1
|
||||
wound = "broken" //Randomise in future
|
||||
@@ -250,11 +299,7 @@
|
||||
if(owner:organs["r_hand"])
|
||||
var/datum/organ/external/S = owner:organs["r_hand"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/r_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
S.droplimb()
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
@@ -263,11 +308,7 @@
|
||||
if(owner:organs["l_hand"])
|
||||
var/datum/organ/external/S = owner:organs["l_hand"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/l_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
S.droplimb()
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
@@ -276,11 +317,7 @@
|
||||
if(owner:organs["r_foot"])
|
||||
var/datum/organ/external/S = owner:organs["r_foot"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/r_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off flies off in arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
S.droplimb()
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
@@ -289,39 +326,155 @@
|
||||
if(owner:organs["l_foot"])
|
||||
var/datum/organ/external/S = owner:organs["l_foot"]
|
||||
if(!S.destroyed)
|
||||
var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
S.droplimb()
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destroyed = 1
|
||||
if(HAND_RIGHT)
|
||||
var/obj/item/weapon/organ/r_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in an arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
destroyed = 1
|
||||
if(HAND_LEFT)
|
||||
var/obj/item/weapon/organ/l_hand/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in an arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
destroyed = 1
|
||||
if(FOOT_RIGHT)
|
||||
var/obj/item/weapon/organ/r_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in an arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
destroyed = 1
|
||||
if(FOOT_LEFT)
|
||||
var/obj/item/weapon/organ/l_foot/X = new(owner.loc, owner)
|
||||
for(var/mob/M in viewers(owner))
|
||||
M.show_message("\red [owner.name]'s [X.name] flies off in an arc.")
|
||||
var/lol2 = pick(cardinal)
|
||||
step(X,lol2)
|
||||
destroyed = 1
|
||||
destspawn = 1
|
||||
for(var/datum/organ/wound/W in wounds)
|
||||
W.update_health()
|
||||
del(W)
|
||||
del(wounds)
|
||||
src.owner.update_clothing()
|
||||
|
||||
proc/createwound(var/size = 1)
|
||||
if(ishuman(src.owner))
|
||||
var/datum/organ/external/wound/W = new(src)
|
||||
W.bleeding = 1
|
||||
src.owner:bloodloss += 10 * size
|
||||
proc/createwound(var/size = 1, var/type = 0, var/damage)
|
||||
if(ishuman(owner))
|
||||
var/datum/organ/wound/W = new(src)
|
||||
bleeding = !type //Sharp objects cause bleeding.
|
||||
W.bleeding = !type
|
||||
// owner:bloodloss += 10 * size
|
||||
W.damage = damage
|
||||
W.initial_dmg = damage
|
||||
W.wound_type = type
|
||||
W.wound_size = size
|
||||
W.owner = src.owner
|
||||
src.wounds += W
|
||||
W.owner = owner
|
||||
W.parent = src
|
||||
spawn W.start_close() //Let small cuts close themselves.
|
||||
wounds += W
|
||||
|
||||
/datum/organ/external/wound
|
||||
/datum/organ/wound
|
||||
name = "wound"
|
||||
wound_size = 1
|
||||
icon_name = "wound"
|
||||
display_name = "wound"
|
||||
parent = null
|
||||
var/wound_type = 0 //0 = cut, 1 = bruise, 2 = burn
|
||||
var/damage = 0 //How much damage it caused.
|
||||
var/initial_dmg = 0
|
||||
var/wound_size = 1
|
||||
var/datum/organ/external/parent
|
||||
var/bleeding = 0 //You got wounded, of course it's bleeding. -- Scratch that. Rewrote it.
|
||||
var/healing_state = 0
|
||||
|
||||
proc/start_close()
|
||||
sleep(rand(1800,3000)) //3-5 minutes
|
||||
if(prob(50) && wound_size == 1)
|
||||
parent.wounds.Remove(src)
|
||||
update_health(1)
|
||||
del(src)
|
||||
else if(prob(33) && wound_size < 3)
|
||||
stopbleeding()
|
||||
return
|
||||
sleep(rand(1800,3000))
|
||||
if(wound_size == 1) //Small cuts heal in 3-10 minutes.
|
||||
parent.wounds.Remove(src)
|
||||
update_health(1)
|
||||
del(src)
|
||||
else if(prob(50) && wound_size < 5 && bleeding)
|
||||
stopbleeding()
|
||||
return
|
||||
if(wound_size < 5 && bleeding) //Give it a chance to stop bleeding on it's own.
|
||||
spawn(1)
|
||||
sleep(1200)
|
||||
if(prob(50))
|
||||
stopbleeding()
|
||||
return
|
||||
return
|
||||
|
||||
proc/stopbleeding()
|
||||
if(!src.bleeding)
|
||||
if(healing_state)
|
||||
return 0
|
||||
// owner:bloodloss -= 10 * src.wound_size
|
||||
parent.bleeding = 0
|
||||
for(var/datum/organ/wound/W in parent)
|
||||
if(W.bleeding && W != src)
|
||||
parent.bleeding = 1
|
||||
bleeding = 0
|
||||
spawn become_scar() //spawn off the process of becoming a scar.
|
||||
return 1
|
||||
|
||||
proc/become_scar()
|
||||
healing_state = 1 //Patched
|
||||
update_health(0.5) //Heals some.
|
||||
|
||||
sleep(rand(1800,3000)) //3-5 minutes
|
||||
|
||||
if(parent.owner.stat == 2)
|
||||
return
|
||||
var/t = 10 * src.wound_size
|
||||
src.owner:bloodloss -= t
|
||||
src.bleeding = 0
|
||||
del(src)
|
||||
if(prob(80) && wound_size < 2) //Small cuts heal.
|
||||
update_health(1)
|
||||
parent.wounds.Remove(src)
|
||||
del(src)
|
||||
|
||||
healing_state = 2 //Noticibly healing.
|
||||
update_health(1) //Heals the rest of the way.
|
||||
|
||||
sleep(rand(1800,3000)) //3-5 minutes
|
||||
if(parent.owner.stat == 2)
|
||||
return
|
||||
if(prob(60) && wound_size < 3) //Cuts heal up
|
||||
parent.wounds.Remove(src)
|
||||
del(src)
|
||||
healing_state = 3 //Angry red scar
|
||||
sleep(rand(6000,9000)) //10-15 minutes
|
||||
if(parent.owner.stat == 2)
|
||||
return
|
||||
if(prob(80) && wound_size < 4) //Minor wounds heal up fully.
|
||||
parent.wounds.Remove(src)
|
||||
del(src)
|
||||
healing_state = 4 //Scar
|
||||
sleep(rand(6000,9000)) //10-15 minutes
|
||||
if(parent.owner.stat == 2)
|
||||
return
|
||||
if(prob(30) || wound_size < 4 || wound_type == 1) //Small chance for the scar to disappear, any small remaining wounds deleted.
|
||||
parent.wounds.Remove(src)
|
||||
del(src)
|
||||
healing_state = 5 //Faded scar
|
||||
return
|
||||
|
||||
proc/update_health(var/percent = 1)
|
||||
damage -= damage/percent //Remove that amount of the damage
|
||||
if(wound_type > 1)
|
||||
parent.burn_dam -= initial_dmg - damage
|
||||
else
|
||||
parent.brute_dam -= initial_dmg - damage
|
||||
initial_dmg = damage //reset it for further updates.
|
||||
parent.owner.updatehealth()
|
||||
|
||||
|
||||
/****************************************************
|
||||
INTERNAL ORGANS
|
||||
|
||||
@@ -464,7 +464,7 @@ mob/proc
|
||||
target_locked
|
||||
icon = 'icons/effects/Targeted.dmi'
|
||||
icon_state = "locked"
|
||||
layer = 99
|
||||
layer = 17.9
|
||||
// captured
|
||||
// icon = 'Captured.dmi'
|
||||
// layer = 99
|
||||
|
||||
+10
-1
@@ -142,6 +142,15 @@ var/MAX_EXPLOSION_RANGE = 14
|
||||
//turf-only flags
|
||||
#define NOJAUNT 1
|
||||
|
||||
//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
|
||||
#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!!
|
||||
#define HIDEMASK 1 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEARS 2 //APPLIES ONLY TO HELMETS!!
|
||||
#define HIDEEYES 4 //APPLIES ONLY TO HELMETS!!
|
||||
|
||||
//Cant seem to find a mob bitflags area other than the powers one
|
||||
#define NOGRAV 1
|
||||
|
||||
@@ -279,4 +288,4 @@ var/static/list/scarySounds = list('thudswoosh.ogg','Taser.ogg','armbomb.ogg','h
|
||||
#define SEC_LEVEL_GREEN 0
|
||||
#define SEC_LEVEL_BLUE 1
|
||||
#define SEC_LEVEL_RED 2
|
||||
#define SEC_LEVEL_DELTA 3
|
||||
#define SEC_LEVEL_DELTA 3
|
||||
|
||||
@@ -122,4 +122,21 @@ h1.alert, h2.alert
|
||||
font-weight: bold;
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.emote { font-style: italic;}
|
||||
|
||||
.attack {color: #ff0000;}
|
||||
.moderate {color: #CC0000;}
|
||||
.disarm {color: #990000;}
|
||||
.passive {color: #660000;}
|
||||
|
||||
.danger {color: #ff0000; font-weight: bold;}
|
||||
.warning {color: #ff0000; font-style: italic;}
|
||||
.rose {color: #ff5050;}
|
||||
.info {color: #0000CC;}
|
||||
.notice {color: #000099;}
|
||||
|
||||
.alien {color: #543354;}
|
||||
|
||||
.newscaster {color: #800000;}
|
||||
</style>"}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
Reference in New Issue
Block a user