mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge branch 'master' of https://github.com/Abi79/tgstation13-git
Conflicts: html/changelog.html
This commit is contained in:
@@ -1,36 +1,18 @@
|
||||
//TODO: Move cyber organs active/inactive stats to vars.
|
||||
|
||||
//flags for organType
|
||||
#define CYBER 1
|
||||
#define SPELL 2
|
||||
|
||||
/obj/effect/organstructure //used obj for the "contents" var
|
||||
/obj/organstructure //used obj for the "contents" var
|
||||
name = "organs"
|
||||
|
||||
var/obj/item/weapon/cell/mainPowerCell = null //for ease of refernce for installed c. implants
|
||||
var/species = "mob" //for speaking in unknown languages purposes
|
||||
|
||||
var/obj/effect/organ/limb/arms/arms = null
|
||||
var/obj/effect/organ/limb/legs/legs = null
|
||||
var/obj/effect/organ/chest/chest = null
|
||||
var/obj/organ/limb/arms/arms = null
|
||||
var/obj/organ/limb/legs/legs = null
|
||||
var/obj/organ/torso/torso = null
|
||||
var/obj/organ/head/head = null
|
||||
|
||||
proc/FindMainPowercell()
|
||||
if(chest) //priority goes to chest implant, if there is one
|
||||
if((chest.organType & CYBER) && chest.canExportPower && chest.cell)
|
||||
mainPowerCell = chest.cell
|
||||
return
|
||||
var/list/organs = GetAllContents()
|
||||
for(var/obj/effect/organ/otherOrgan in organs) //otherwise, maybe some other organ fits the criteria?
|
||||
if((otherOrgan.organType & CYBER) && otherOrgan.canExportPower && otherOrgan.cell)
|
||||
mainPowerCell = otherOrgan:cell
|
||||
return
|
||||
mainPowerCell = null //otherwise, seems there's no main cell
|
||||
return
|
||||
|
||||
proc/GetSpeciesName()
|
||||
var/list/speciesPresent = list()
|
||||
|
||||
for(var/obj/effect/organ/organ in src) //only external organs count, since it's judging by the appearance
|
||||
for(var/obj/organ/organ in src) //only external organs count, since it's judging by the appearance
|
||||
if(speciesPresent[organ.species])
|
||||
speciesPresent[organ.species]++
|
||||
else
|
||||
@@ -52,17 +34,17 @@
|
||||
else
|
||||
species = pick(dominantSpecies)
|
||||
|
||||
return
|
||||
return species
|
||||
|
||||
proc/RecalculateStructure()
|
||||
var/list/organs = GetAllContents()
|
||||
|
||||
arms = locate(/obj/effect/organ/limb/arms) in organs
|
||||
legs = locate(/obj/effect/organ/limb/legs) in organs
|
||||
chest = locate(/obj/effect/organ/chest) in organs
|
||||
arms = locate(/obj/organ/limb/arms) in organs
|
||||
legs = locate(/obj/organ/limb/legs) in organs
|
||||
torso = locate(/obj/organ/torso) in organs
|
||||
head = locate(/obj/organ/head) in organs
|
||||
|
||||
GetSpeciesName()
|
||||
FindMainPowercell()
|
||||
|
||||
return
|
||||
|
||||
@@ -70,7 +52,7 @@
|
||||
set background = 1
|
||||
|
||||
var/list/organs = GetAllContents()
|
||||
for(var/obj/effect/organ/organ in organs)
|
||||
for(var/obj/organ/organ in organs)
|
||||
organ.ProcessOrgan()
|
||||
|
||||
return
|
||||
@@ -79,31 +61,27 @@
|
||||
..()
|
||||
RecalculateStructure()
|
||||
|
||||
/obj/effect/organstructure/human
|
||||
/obj/organstructure/human
|
||||
name = "human organs"
|
||||
|
||||
New()
|
||||
//new /obj/effect/organ/limb/arms/human(src)
|
||||
//new /obj/effect/organ/limb/legs/human(src)
|
||||
new /obj/effect/organ/chest/human(src)
|
||||
new /obj/organ/torso/human(src)
|
||||
..()
|
||||
|
||||
/obj/effect/organstructure/cyber
|
||||
name = "cyborg organs"
|
||||
/obj/organstructure/alien
|
||||
name = "alien organs"
|
||||
|
||||
New()
|
||||
//new /obj/effect/organ/limb/arms/cyber(src)
|
||||
//new /obj/effect/organ/limb/legs/cyber(src)
|
||||
new /obj/effect/organ/chest/cyber(src)
|
||||
new /obj/organ/torso/alien(src)
|
||||
..()
|
||||
|
||||
/obj/effect/organ
|
||||
/obj/organ
|
||||
name = "organ"
|
||||
|
||||
//All types
|
||||
var/organType = 0 //CYBER and SPELL go here
|
||||
var/species = "mob"
|
||||
var/obj/effect/organstructure/rootOrganStructure = null
|
||||
var/obj/organstructure/rootOrganStructure = null
|
||||
|
||||
New(location)
|
||||
..()
|
||||
@@ -111,155 +89,376 @@
|
||||
rootOrganStructure = FindRootStructure()
|
||||
|
||||
proc/FindRootStructure()
|
||||
if(istype(loc,/obj/effect/organ))
|
||||
var/obj/effect/organ/parent = loc
|
||||
if(istype(loc,/obj/organ))
|
||||
var/obj/organ/parent = loc
|
||||
return parent.FindRootStructure()
|
||||
else if(istype(loc,/obj/effect/organstructure))
|
||||
else if(istype(loc,/obj/organstructure))
|
||||
return loc
|
||||
return null
|
||||
|
||||
proc/ProcessOrgan()
|
||||
set background = 1
|
||||
|
||||
if(organType & CYBER)
|
||||
var/hasPower = DrainPower()
|
||||
if(!hasPower && active)
|
||||
Deactivate()
|
||||
else if(hasPower && !active)
|
||||
Activate()
|
||||
|
||||
//CYBORG type
|
||||
var/obj/item/weapon/cell/cell = null
|
||||
var/canExportPower = 0 //only comes in play if it has a cell
|
||||
var/active = 0
|
||||
var/powerDrainPerTick = 0
|
||||
|
||||
proc/DrainPower()
|
||||
set background = 1
|
||||
|
||||
if(!powerDrainPerTick)
|
||||
return 1
|
||||
if(cell)
|
||||
if(cell.charge >= powerDrainPerTick)
|
||||
cell.charge -= powerDrainPerTick
|
||||
return 1
|
||||
if(rootOrganStructure.mainPowerCell)
|
||||
if(rootOrganStructure.mainPowerCell.charge >= powerDrainPerTick)
|
||||
rootOrganStructure.mainPowerCell.charge -= powerDrainPerTick
|
||||
return 1
|
||||
return 0
|
||||
|
||||
proc/Activate() //depends on the organ, involves setting active to 1 and changing the organ's vars to reflect its "activated" state
|
||||
rootOrganStructure.loc << "\blue Your [name] powers up!"
|
||||
active = 1
|
||||
return
|
||||
|
||||
proc/Deactivate() //depends on the organ, involves setting active to 0 and changing the organ's vars to reflect its "deactivated" state
|
||||
rootOrganStructure.loc << "\red Your [name] powers down."
|
||||
active = 0
|
||||
return
|
||||
/obj/organ/torso
|
||||
name = "torso"
|
||||
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
|
||||
var/ear_damage = null//Carbon
|
||||
var/cloneloss = 0//Carbon
|
||||
var/nodamage = 0
|
||||
// flags = NOREACT //uncomment this out later
|
||||
var/viruses = list() // replaces var/datum/disease/virus
|
||||
var/list/resistances = list()
|
||||
var/datum/disease/virus = null
|
||||
var/emote_allowed = 1
|
||||
var/sdisabilities = 0//Carbon
|
||||
var/disabilities = 0//Carbon
|
||||
var/monkeyizing = null//Carbon
|
||||
var/lying = 0.0
|
||||
var/resting = 0.0//Carbon
|
||||
var/sleeping = 0.0//Carbon
|
||||
var/oxyloss = 0.0//Living
|
||||
var/toxloss = 0.0//Living
|
||||
var/fireloss = 0.0//Living
|
||||
var/bruteloss = 0.0//Living
|
||||
var/timeofdeath = 0.0//Living
|
||||
var/rejuv = null
|
||||
var/antitoxs = null
|
||||
var/plasma = null
|
||||
var/cpr_time = 1.0//Carbon
|
||||
var/health = 100//Living
|
||||
var/bodytemperature = 310.055 //98.7 F
|
||||
var/bhunger = 0//Carbon
|
||||
var/nutrition = 400.0//Carbon
|
||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
||||
var/paralysis = 0.0
|
||||
var/stunned = 0.0
|
||||
var/weakened = 0.0
|
||||
var/losebreath = 0.0//Carbon
|
||||
|
||||
/obj/effect/organ/limb
|
||||
var/obj/item/weapon/storage/s_active = null//Carbon
|
||||
var/inertia_dir = 0
|
||||
var/datum/dna/dna = null//Carbon
|
||||
var/radiation = 0.0//Carbon
|
||||
var/mutations = 0//Carbon
|
||||
//telekinesis = 1
|
||||
//firemut = 2
|
||||
//xray = 4
|
||||
//hulk = 8
|
||||
//clumsy = 16
|
||||
//obese = 32
|
||||
//husk = 64
|
||||
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
||||
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
||||
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
||||
//0 is off, 1 is normal, 2 is for ninjas.
|
||||
var/incorporeal_move = 0
|
||||
//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
|
||||
var/mob/living/carbon/LAssailant = null
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/organ/torso/human
|
||||
name = "human torso"
|
||||
species = "human"
|
||||
maxHealth = 100
|
||||
var/underwear = 1//Human
|
||||
var/obj/item/weapon/back = null//Human/Monkey
|
||||
var/obj/item/weapon/tank/internal = null//Human/Monkey
|
||||
var/alien_egg_flag = 0//Have you been infected?
|
||||
var/last_special = 0
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/organ/limb/arms/human(src)
|
||||
new /obj/organ/limb/legs/human(src)
|
||||
new /obj/organ/head/human(src)
|
||||
/obj/organ/torso/alien
|
||||
name = "alien torso"
|
||||
species = "alien"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/organ/limb/arms/alien(src)
|
||||
new /obj/organ/limb/legs/alien(src)
|
||||
new /obj/organ/head/alien(src)
|
||||
|
||||
|
||||
/obj/organ/limb
|
||||
name = "limb"
|
||||
|
||||
/obj/effect/organ/limb/arms
|
||||
/obj/organ/limb/arms
|
||||
name = "arms"
|
||||
|
||||
var/minDamage = 5 //punching damage
|
||||
var/maxDamage = 5
|
||||
|
||||
var/atom/movable/pulling = null
|
||||
var/hand = null
|
||||
var/obj/item/weapon/handcuffs/handcuffed = null//Living
|
||||
var/obj/item/l_hand = null//Living
|
||||
var/obj/item/r_hand = null//Living
|
||||
var/in_throw_mode = 0
|
||||
// var/strangleDelay = 1 //The code is a bit too complicated for that right now
|
||||
|
||||
/obj/effect/organ/limb/arms/human
|
||||
/obj/organ/limb/arms/alien
|
||||
name = "alien arms"
|
||||
species = "alien"
|
||||
minDamage = 5
|
||||
maxDamage = 15
|
||||
|
||||
|
||||
/obj/organ/limb/arms/human
|
||||
name = "human arms"
|
||||
species = "human"
|
||||
minDamage = 1
|
||||
maxDamage = 9
|
||||
|
||||
/obj/effect/organ/limb/arms/cyber
|
||||
name = "cyborg arms"
|
||||
species = "cyborg"
|
||||
organType = CYBER
|
||||
powerDrainPerTick = 5
|
||||
|
||||
Activate()
|
||||
..()
|
||||
minDamage = 3
|
||||
maxDamage = 14
|
||||
|
||||
Deactivate()
|
||||
..()
|
||||
minDamage = 0
|
||||
maxDamage = 3
|
||||
|
||||
|
||||
/obj/effect/organ/limb/legs
|
||||
/obj/organ/limb/legs
|
||||
name = "legs"
|
||||
|
||||
var/moveRunDelay = 1 //not sure about how that works
|
||||
var/moveWalkDelay = 7
|
||||
//var/knockdownResist = 0
|
||||
var/next_move = null
|
||||
var/prev_move = null
|
||||
var/canmove = 1.0
|
||||
var/obj/structure/stool/buckled = null//Living
|
||||
var/footstep = 1
|
||||
|
||||
/obj/effect/organ/limb/legs/human
|
||||
/obj/organ/limb/legs/human
|
||||
name = "human legs"
|
||||
species = "human"
|
||||
|
||||
/obj/effect/organ/limb/legs/cyber
|
||||
name = "cyborg legs"
|
||||
species = "cyborg"
|
||||
organType = CYBER
|
||||
powerDrainPerTick = 5
|
||||
|
||||
Activate()
|
||||
..()
|
||||
moveRunDelay = 0
|
||||
moveWalkDelay = 3
|
||||
|
||||
Deactivate()
|
||||
..()
|
||||
moveRunDelay = 2
|
||||
moveWalkDelay = 10
|
||||
/obj/organ/limb/legs/alien
|
||||
name = "alien legs"
|
||||
species = "alien"
|
||||
|
||||
|
||||
/obj/effect/organ/chest
|
||||
name = "chest"
|
||||
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
|
||||
/obj/organ/head
|
||||
name = "head"
|
||||
|
||||
/obj/effect/organ/chest/human
|
||||
name = "human chest"
|
||||
var/stuttering = null//Carbon
|
||||
var/druggy = 0//Carbon
|
||||
var/confused = 0//Carbon
|
||||
var/drowsyness = 0.0//Carbon
|
||||
var/dizziness = 0//Carbon
|
||||
var/is_dizzy = 0
|
||||
var/is_jittery = 0
|
||||
var/jitteriness = 0//Carbon
|
||||
var/r_epil = 0
|
||||
var/r_ch_cou = 0
|
||||
var/r_Tourette = 0//Carbon
|
||||
var/miming = null //checks if the guy is a mime//Human
|
||||
var/silent = null //Can't talk. Value goes down every life proc.//Human
|
||||
var/voice_name = "unidentifiable voice"
|
||||
var/voice_message = null // When you are not understood by others (replaced with just screeches, hisses, chimpers etc.)
|
||||
var/say_message = null // When you are understood by others. Currently only used by aliens and monkeys in their say_quote procs
|
||||
var/coughedtime = null
|
||||
var/job = null//Living
|
||||
var/const/blindness = 1//Carbon
|
||||
var/const/deafness = 2//Carbon
|
||||
var/const/muteness = 4//Carbon
|
||||
var/brainloss = 0//Carbon
|
||||
var/robot_talk_understand = 0
|
||||
var/alien_talk_understand = 0
|
||||
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
|
||||
var/ear_deaf = null//Carbon
|
||||
var/eye_blind = null//Carbon
|
||||
var/eye_blurry = null//Carbon
|
||||
var/eye_stat = null//Living, potentially Carbon
|
||||
var/blinded = null
|
||||
var/shakecamera = 0
|
||||
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
|
||||
var/obj/proc_holder/spell/list/spell_list = list()
|
||||
|
||||
|
||||
|
||||
/obj/organ/head/human
|
||||
name = "human head"
|
||||
species = "human"
|
||||
var/obj/item/clothing/mask/wear_mask = null//Carbon
|
||||
|
||||
/obj/organ/head/alien
|
||||
name = "alien head"
|
||||
species = "alien"
|
||||
|
||||
/obj/organ/limb/arms/alien
|
||||
name = "alien arms"
|
||||
species = "alien"
|
||||
minDamage = 5
|
||||
maxDamage = 15
|
||||
|
||||
/obj/organ/limb/legs/alien
|
||||
name = "alien legs"
|
||||
species = "alien"
|
||||
|
||||
/obj/organ/head/alien
|
||||
name = "alien head"
|
||||
species = "alien"
|
||||
|
||||
// ++++STUB ORGAN STRUCTURE. THIS IS THE DEFAULT STRUCTURE. USED TO PREVENT EXCEPTIONS++++
|
||||
/obj/organstructure/stub
|
||||
name = "stub organs"
|
||||
|
||||
New()
|
||||
new /obj/organ/torso/stub(src)
|
||||
..()
|
||||
|
||||
/obj/organ/torso/stub
|
||||
name = "stub torso"
|
||||
species = "stub"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/effect/organ/limb/arms/human(src)
|
||||
new /obj/effect/organ/limb/legs/human(src)
|
||||
new /obj/organ/limb/arms/stub(src)
|
||||
new /obj/organ/limb/legs/stub(src)
|
||||
new /obj/organ/head/stub(src)
|
||||
|
||||
/obj/effect/organ/chest/cyber
|
||||
name = "cyborg chest"
|
||||
species = "cyborg"
|
||||
organType = CYBER
|
||||
canExportPower = 1
|
||||
maxHealth = 150
|
||||
/obj/organ/limb/arms/stub
|
||||
name = "stub arms"
|
||||
species = "stub"
|
||||
|
||||
/obj/organ/limb/legs/stub
|
||||
name = "stub legs"
|
||||
species = "stub"
|
||||
|
||||
/obj/organ/head/stub
|
||||
name = "stub head"
|
||||
species = "stub"
|
||||
|
||||
// ++++STUB ORGAN STRUCTURE. END++++
|
||||
|
||||
|
||||
// ++++MONKEY++++
|
||||
|
||||
/obj/organstructure/monkey
|
||||
name = "monkey organs"
|
||||
|
||||
New()
|
||||
new /obj/organ/torso/monkey(src)
|
||||
..()
|
||||
|
||||
/obj/organ/torso/monkey
|
||||
name = "monkey torso"
|
||||
species = "monkey"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
cell = new /obj/item/weapon/cell/high(src)
|
||||
cell.charge = cell.maxcharge
|
||||
new /obj/effect/organ/limb/arms/cyber(src)
|
||||
new /obj/effect/organ/limb/legs/cyber(src)
|
||||
new /obj/organ/limb/arms/monkey(src)
|
||||
new /obj/organ/limb/legs/monkey(src)
|
||||
new /obj/organ/head/monkey(src)
|
||||
|
||||
Activate()
|
||||
..()
|
||||
canExportPower = 1
|
||||
maxHealth = 150
|
||||
if(rootOrganStructure.loc && istype(rootOrganStructure.loc,/mob/living))
|
||||
var/mob/living/holder = rootOrganStructure.loc
|
||||
holder.updatehealth()
|
||||
/obj/organ/limb/arms/monkey
|
||||
name = "monkey arms"
|
||||
species = "monkey"
|
||||
|
||||
Deactivate()
|
||||
/obj/organ/limb/legs/monkey
|
||||
name = "monkey legs"
|
||||
species = "monkey"
|
||||
|
||||
/obj/organ/head/monkey
|
||||
name = "monkey head"
|
||||
species = "monkey"
|
||||
|
||||
|
||||
// +++++CYBORG+++++
|
||||
/obj/organstructure/cyborg
|
||||
name = "cyborg organs"
|
||||
|
||||
New()
|
||||
new /obj/organ/torso/cyborg(src)
|
||||
..()
|
||||
canExportPower = 0
|
||||
maxHealth = 120
|
||||
if(rootOrganStructure.loc && istype(rootOrganStructure.loc,/mob/living))
|
||||
var/mob/living/holder = rootOrganStructure.loc
|
||||
holder.updatehealth()
|
||||
|
||||
/obj/organ/torso/cyborg
|
||||
name = "cyborg torso"
|
||||
species = "cyborg"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/organ/limb/arms/cyborg(src)
|
||||
new /obj/organ/limb/legs/cyborg(src)
|
||||
new /obj/organ/head/cyborg(src)
|
||||
|
||||
/obj/organ/limb/arms/cyborg
|
||||
name = "cyborg arms"
|
||||
species = "cyborg"
|
||||
|
||||
/obj/organ/limb/legs/cyborg
|
||||
name = "cyborg legs"
|
||||
species = "cyborg"
|
||||
|
||||
/obj/organ/head/cyborg
|
||||
name = "cyborg head"
|
||||
species = "cyborg"
|
||||
|
||||
// +++++AI++++++
|
||||
/obj/organstructure/AI
|
||||
name = "AI organs"
|
||||
|
||||
New()
|
||||
new /obj/organ/torso/AI(src)
|
||||
..()
|
||||
|
||||
/obj/organ/torso/AI
|
||||
name = "AI torso"
|
||||
species = "AI"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/organ/limb/arms/AI(src)
|
||||
new /obj/organ/limb/legs/AI(src)
|
||||
new /obj/organ/head/AI(src)
|
||||
|
||||
/obj/organ/limb/arms/AI
|
||||
name = "AI arms"
|
||||
species = "AI"
|
||||
|
||||
/obj/organ/limb/legs/AI
|
||||
name = "AI legs"
|
||||
species = "AI"
|
||||
|
||||
/obj/organ/head/AI
|
||||
name = "AI head"
|
||||
species = "AI"
|
||||
|
||||
/* New organ structure template
|
||||
|
||||
|
||||
/obj/organstructure/template
|
||||
name = "template organs"
|
||||
|
||||
New()
|
||||
new /obj/organ/torso/template(src)
|
||||
..()
|
||||
|
||||
/obj/organ/torso/template
|
||||
name = "template torso"
|
||||
species = "template"
|
||||
maxHealth = 100
|
||||
|
||||
New()
|
||||
..()
|
||||
new /obj/organ/limb/arms/template(src)
|
||||
new /obj/organ/limb/legs/template(src)
|
||||
new /obj/organ/head/template(src)
|
||||
|
||||
/obj/organ/limb/arms/template
|
||||
name = "template arms"
|
||||
species = "template"
|
||||
|
||||
/obj/organ/limb/legs/template
|
||||
name = "template legs"
|
||||
species = "template"
|
||||
|
||||
/obj/organ/head/template
|
||||
name = "template head"
|
||||
species = "template"
|
||||
|
||||
*/
|
||||
@@ -127,6 +127,10 @@
|
||||
else
|
||||
src.visible_message("\blue [M] had been cut free from the conveyor by [user].")
|
||||
return
|
||||
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
// otherwise drop and place on conveyor
|
||||
user.drop_item()
|
||||
if(I && I.loc) I.loc = src.loc
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3)
|
||||
del(G)
|
||||
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
else
|
||||
user.drop_item()
|
||||
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
mob.suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(mob) << "\red <b>[mob.name] is attempting to bite off \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
mob.oxyloss = max(175 - mob.toxloss - mob.fireloss - mob.bruteloss, mob.oxyloss)
|
||||
mob.oxyloss = max(175 - mob.getToxLoss() - mob.fireloss - mob.getBruteLoss(), mob.getOxyLoss())
|
||||
mob.updatehealth()
|
||||
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
|
||||
mob.suiciding = 0
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_vomit_floor(affected_mob)
|
||||
affected_mob.nutrition -= 95
|
||||
affected_mob:toxloss = max(affected_mob:toxloss-1,0)
|
||||
affected_mob:toxloss = max(affected_mob:getToxLoss()-1,0)
|
||||
else
|
||||
affected_mob << "\red You gag as you want to throw up, but there's nothing in your stomach!"
|
||||
affected_mob.weakened += 10
|
||||
|
||||
@@ -95,7 +95,7 @@ var
|
||||
list/prisonwarp = list() //prisoners go to these
|
||||
list/holdingfacility = list() //captured people go here
|
||||
list/xeno_spawn = list()//Aliens spawn at these.
|
||||
list/mazewarp = list()
|
||||
// list/mazewarp = list()
|
||||
list/tdome1 = list()
|
||||
list/tdome2 = list()
|
||||
list/tdomeobserve = list()
|
||||
|
||||
+102
-5
@@ -5,7 +5,22 @@
|
||||
flags = NOREACT
|
||||
var/datum/mind/mind
|
||||
|
||||
var/uses_hud = 0
|
||||
|
||||
|
||||
|
||||
//MOB overhaul
|
||||
|
||||
//Not in use yet
|
||||
// var/obj/organstructure/organStructure = null
|
||||
|
||||
//Vars that have been relocated.
|
||||
|
||||
// var/uses_hud = 0
|
||||
var/bruteloss = 0.0//Living
|
||||
var/oxyloss = 0.0//Living
|
||||
var/toxloss = 0.0//Living
|
||||
|
||||
|
||||
var/obj/screen/flash = null
|
||||
var/obj/screen/blind = null
|
||||
var/obj/screen/hands = null
|
||||
@@ -76,10 +91,9 @@
|
||||
var/lying = 0.0
|
||||
var/canmove = 1.0
|
||||
var/eye_stat = null//Living, potentially Carbon
|
||||
var/oxyloss = 0.0//Living
|
||||
var/toxloss = 0.0//Living
|
||||
|
||||
var/fireloss = 0.0//Living
|
||||
var/bruteloss = 0.0//Living
|
||||
|
||||
var/timeofdeath = 0.0//Living
|
||||
var/cpr_time = 1.0//Carbon
|
||||
var/health = 100//Living
|
||||
@@ -411,4 +425,87 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
if(prob(5))
|
||||
v.carrier = 1
|
||||
return
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS
|
||||
|
||||
|
||||
|
||||
/mob/proc/getBruteLoss()
|
||||
return bruteloss
|
||||
|
||||
/mob/proc/getOxyLoss()
|
||||
return oxyloss
|
||||
|
||||
/mob/proc/getToxLoss()
|
||||
return toxloss
|
||||
|
||||
/mob/proc/getFireLoss()
|
||||
return fireloss
|
||||
|
||||
/mob/proc/getCloneLoss()
|
||||
return cloneloss
|
||||
|
||||
|
||||
// Standard for setting hasn't been agreed upon yet.
|
||||
|
||||
/*
|
||||
|
||||
/mob/proc/setBruteLoss(var/T)
|
||||
bruteloss = T
|
||||
|
||||
/mob/proc/setOxyLoss(var/T)
|
||||
oxyloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setToxLoss(var/T)
|
||||
toxloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setFireLoss(var/T)
|
||||
fireloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setCloneLoss(var/T)
|
||||
cloneloss = T
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -306,25 +306,25 @@
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
|
||||
/obj/item/clothing/head/piratecaptain
|
||||
/obj/item/clothing/head/hgpiratecap
|
||||
name = "pirate hat"
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
icon_state = "hgpiratecap"
|
||||
item_state = "hgpiratecap"
|
||||
|
||||
/obj/item/clothing/suit/pirate
|
||||
name = "pirate coat"
|
||||
desc = "Yarr."
|
||||
icon_state = "hoscap"
|
||||
item_state = "pirate_cap"
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
|
||||
/obj/item/clothing/suit/piratecaptain
|
||||
/obj/item/clothing/suit/hgpirate
|
||||
name = "pirate captain coat"
|
||||
desc = "Yarr."
|
||||
icon_state = "jensencoat"
|
||||
item_state = "piratecap"
|
||||
icon_state = "hgpirate"
|
||||
item_state = "hgpirate"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
/obj/item/clothing/glasses/eyepatch
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
desc = "A jumpsuit used by atmospheric technicians."
|
||||
name = "Atmospherics Jumpsuit"
|
||||
icon_state = "atmos"
|
||||
item_state = "y_suit"
|
||||
item_state = "atmos_suit"
|
||||
color = "atmos"
|
||||
|
||||
/obj/item/clothing/under/rank/captain
|
||||
@@ -127,7 +127,7 @@
|
||||
desc = "An orange high visibility jumpsuit. Used by Nanotrasen Engineers, has minor radiation shielding."
|
||||
name = "Engineering Jumpsuit"
|
||||
icon_state = "engine"
|
||||
item_state = "y_suit"
|
||||
item_state = "engi_suit"
|
||||
color = "engine"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
|
||||
|
||||
@@ -473,7 +473,7 @@
|
||||
|
||||
/datum/supply_packs/loyalty
|
||||
name = "Loyalty implant crate"
|
||||
contains = list ("obj/item/storage/lockbox/loyalty")
|
||||
contains = list ("/obj/item/weapon/storage/lockbox/loyalty")
|
||||
cost = 60
|
||||
containertype = "/obj/structure/crate/secure"
|
||||
containername = "Loyalty implant crate"
|
||||
|
||||
@@ -139,13 +139,13 @@ proc/sql_report_death(var/mob/living/carbon/human/H)
|
||||
lakey = dd_replacetext(H.lastattacker:key, "'", "''")
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.oxyloss])"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, getBruteLoss(), fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.getOxyLoss()])"
|
||||
var/DBConnection/dbcon = new()
|
||||
dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.oxyloss], '[coord]')")
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.fireloss], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
|
||||
@@ -176,13 +176,13 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H)
|
||||
lakey = dd_replacetext(H.lastattacker:key, "'", "''")
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.oxyloss])"
|
||||
//world << "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.getOxyLoss()])"
|
||||
var/DBConnection/dbcon = new()
|
||||
dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
|
||||
if(!dbcon.IsConnected())
|
||||
log_game("SQL ERROR during death reporting. Failed to connect.")
|
||||
else
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.fireloss], [H.brainloss], [H.oxyloss], '[coord]')")
|
||||
var/DBQuery/query = dbcon.NewQuery("INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss, coord) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.getBruteLoss()], [H.fireloss], [H.brainloss], [H.getOxyLoss()], '[coord]')")
|
||||
if(!query.Execute())
|
||||
var/err = query.ErrorMsg()
|
||||
log_game("SQL ERROR during death reporting. Error : \[[err]\]\n")
|
||||
|
||||
+32
-27
@@ -391,9 +391,9 @@
|
||||
C.occupant = O
|
||||
connected = null
|
||||
O.name = text("monkey ([])",copytext(md5(M.real_name), 2, 6))
|
||||
O.take_overall_damage(M.bruteloss + 40, M.fireloss)
|
||||
O.toxloss += (M.toxloss + 20)
|
||||
O.oxyloss += M.oxyloss
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.fireloss)
|
||||
O.toxloss += (M.getToxLoss() + 20)
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.stat = M.stat
|
||||
O.a_intent = "hurt"
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
@@ -466,9 +466,9 @@
|
||||
O.real_name = randomname
|
||||
i++
|
||||
updateappearance(O,O.dna.uni_identity)
|
||||
O.take_overall_damage(M.bruteloss, M.fireloss)
|
||||
O.toxloss += M.toxloss
|
||||
O.oxyloss += M.oxyloss
|
||||
O.take_overall_damage(M.getBruteLoss(), M.fireloss)
|
||||
O.toxloss += M.getToxLoss()
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.stat = M.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
@@ -691,27 +691,32 @@
|
||||
var/mob/occupant = src.connected.occupant
|
||||
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
|
||||
if (occupant) //is there REALLY someone in there?
|
||||
if (!istype(occupant,/mob/living/carbon/human))
|
||||
sleep(1)
|
||||
var/t1
|
||||
switch(occupant.stat) // obvious, see what their status is
|
||||
if(0)
|
||||
t1 = "Conscious"
|
||||
if(1)
|
||||
t1 = "Unconscious"
|
||||
else
|
||||
t1 = "*dead*"
|
||||
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
||||
dat += text("<font color='green'>Radiation Level: []%</FONT><BR><BR>", occupant.radiation)
|
||||
dat += text("Unique Enzymes : <font color='blue'>[]</FONT><BR>", uppertext(occupant.dna.unique_enzymes))
|
||||
dat += text("Unique Identifier: <font color='blue'>[]</FONT><BR>", occupant.dna.uni_identity)
|
||||
dat += text("Structural Enzymes: <font color='blue'>[]</FONT><BR><BR>", occupant.dna.struc_enzymes)
|
||||
dat += text("<A href='?src=\ref[];unimenu=1'>Modify Unique Identifier</A><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];strucmenu=1'>Modify Structural Enzymes</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];genpulse=1'>Pulse Radiation</A><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];rejuv=1'>Inject Rejuvenators</A><BR><BR>", src)
|
||||
if(occupant.mutations & HUSK)
|
||||
dat += "The occupant's DNA structure is of an unknown configuration, please insert a subject with a standard DNA structure.<BR><BR>" //NOPE. -Pete
|
||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
||||
else
|
||||
if (!istype(occupant,/mob/living/carbon/human))
|
||||
sleep(1)
|
||||
var/t1
|
||||
switch(occupant.stat) // obvious, see what their status is
|
||||
if(0)
|
||||
t1 = "Conscious"
|
||||
if(1)
|
||||
t1 = "Unconscious"
|
||||
else
|
||||
t1 = "*dead*"
|
||||
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
||||
dat += text("<font color='green'>Radiation Level: []%</FONT><BR><BR>", occupant.radiation)
|
||||
dat += text("Unique Enzymes : <font color='blue'>[]</FONT><BR>", uppertext(occupant.dna.unique_enzymes))
|
||||
dat += text("Unique Identifier: <font color='blue'>[]</FONT><BR>", occupant.dna.uni_identity)
|
||||
dat += text("Structural Enzymes: <font color='blue'>[]</FONT><BR><BR>", occupant.dna.struc_enzymes)
|
||||
dat += text("<A href='?src=\ref[];unimenu=1'>Modify Unique Identifier</A><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];strucmenu=1'>Modify Structural Enzymes</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];genpulse=1'>Pulse Radiation</A><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
||||
dat += text("<A href='?src=\ref[];rejuv=1'>Inject Rejuvenators</A><BR><BR>", src)
|
||||
else
|
||||
dat += "The scanner is empty.<BR><BR>"
|
||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||
|
||||
@@ -232,9 +232,9 @@
|
||||
O.loc = usr.loc
|
||||
|
||||
O.name = text("monkey ([])",copytext(md5(usr.real_name), 2, 6))
|
||||
O.toxloss = usr.toxloss
|
||||
O.bruteloss = usr.bruteloss
|
||||
O.oxyloss = usr.oxyloss
|
||||
O.toxloss = usr.getToxLoss()
|
||||
O.bruteloss = usr.getBruteLoss()
|
||||
O.oxyloss = usr.getOxyLoss()
|
||||
O.fireloss = usr.fireloss
|
||||
O.stat = usr.stat
|
||||
O.a_intent = "hurt"
|
||||
@@ -327,9 +327,9 @@
|
||||
|
||||
updateappearance(O,O.dna.uni_identity)
|
||||
domutcheck(O, null)
|
||||
O.toxloss = usr.toxloss
|
||||
O.bruteloss = usr.bruteloss
|
||||
O.oxyloss = usr.oxyloss
|
||||
O.toxloss = usr.getToxLoss()
|
||||
O.bruteloss = usr.getBruteLoss()
|
||||
O.oxyloss = usr.getOxyLoss()
|
||||
O.fireloss = usr.fireloss
|
||||
O.stat = usr.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind)
|
||||
if(cult_mind in cult)
|
||||
cult -= cult_mind
|
||||
cult_mind.current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a cultist!</B></FONT>"
|
||||
cult_mind.current << "\red <FONT size = 3><B>An unfamiliar white light flashes through your mind, cleansing the taint of the dark-one and the memories of your time as his servant with it.</B></FONT>"
|
||||
cult_mind.memory = ""
|
||||
update_cult_icons_removed(cult_mind)
|
||||
for(var/mob/M in viewers(cult_mind.current))
|
||||
|
||||
@@ -287,10 +287,10 @@ ________________________________________________________________________________
|
||||
dat += "<b>Unique identity</b>: <i>[U.dna.unique_enzymes]</i><br>"
|
||||
dat += "<h4>Overall Status: [U.stat > 1 ? "dead" : "[U.health]% healthy"]</h4>"
|
||||
dat += "<h4>Nutrition Status: [U.nutrition]</h4>"
|
||||
dat += "Oxygen loss: [U.oxyloss]"
|
||||
dat += " | Toxin levels: [U.toxloss]<br>"
|
||||
dat += "Oxygen loss: [U.getOxyLoss()]"
|
||||
dat += " | Toxin levels: [U.getToxLoss()]<br>"
|
||||
dat += "Burn severity: [U.fireloss]"
|
||||
dat += " | Brute trauma: [U.bruteloss]<br>"
|
||||
dat += " | Brute trauma: [U.getBruteLoss()]<br>"
|
||||
dat += "Radiation Level: [U.radiation] rad<br>"
|
||||
dat += "Body Temperature: [U.bodytemperature-T0C]°C ([U.bodytemperature*1.8-459.67]°F)<br>"
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
if (name == "prisonwarp")
|
||||
prisonwarp += loc
|
||||
del(src)
|
||||
if (name == "mazewarp")
|
||||
mazewarp += loc
|
||||
// if (name == "mazewarp")
|
||||
// mazewarp += loc
|
||||
if (name == "Holding Facility")
|
||||
holdingfacility += loc
|
||||
if (name == "tdome1")
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
t1 = "<font color='red'>*dead*</font>"
|
||||
else
|
||||
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
||||
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.bruteloss < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.bruteloss)
|
||||
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.oxyloss < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.oxyloss)
|
||||
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.toxloss < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.toxloss)
|
||||
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
|
||||
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
|
||||
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())
|
||||
dat += text("[]\t-Burn Severity %: []</FONT><BR>", (occupant.fireloss < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.fireloss)
|
||||
dat += text("<HR>Paralysis Summary %: [] ([] seconds left!)<BR>", occupant.paralysis, round(occupant.paralysis / 4))
|
||||
dat += text("Inaprovaline units: [] units<BR>", occupant.reagents.get_reagent_amount("inaprovaline"))
|
||||
@@ -232,7 +232,7 @@
|
||||
|
||||
alter_health(mob/living/M as mob)
|
||||
if (M.health > 0)
|
||||
if (M.oxyloss >= 10)
|
||||
if (M.getOxyLoss() >= 10)
|
||||
var/amount = max(0.15, 1)
|
||||
M.oxyloss -= amount
|
||||
else
|
||||
@@ -331,9 +331,9 @@
|
||||
else
|
||||
user << text("[]\t Health %: [] ([])", (src.occupant.health > 50 ? "\blue " : "\red "), src.occupant.health, t1)
|
||||
user << text("[]\t -Core Temperature: []°C ([]°F)</FONT><BR>", (src.occupant.bodytemperature > 50 ? "<font color='blue'>" : "<font color='red'>"), src.occupant.bodytemperature-T0C, src.occupant.bodytemperature*1.8-459.67)
|
||||
user << text("[]\t -Brute Damage %: []", (src.occupant.bruteloss < 60 ? "\blue " : "\red "), src.occupant.bruteloss)
|
||||
user << text("[]\t -Respiratory Damage %: []", (src.occupant.oxyloss < 60 ? "\blue " : "\red "), src.occupant.oxyloss)
|
||||
user << text("[]\t -Toxin Content %: []", (src.occupant.toxloss < 60 ? "\blue " : "\red "), src.occupant.toxloss)
|
||||
user << text("[]\t -Brute Damage %: []", (src.occupant.getBruteLoss() < 60 ? "\blue " : "\red "), src.occupant.getBruteLoss())
|
||||
user << text("[]\t -Respiratory Damage %: []", (src.occupant.getOxyLoss() < 60 ? "\blue " : "\red "), src.occupant.getOxyLoss())
|
||||
user << text("[]\t -Toxin Content %: []", (src.occupant.getToxLoss() < 60 ? "\blue " : "\red "), src.occupant.getToxLoss())
|
||||
user << text("[]\t -Burn Severity %: []", (src.occupant.fireloss < 60 ? "\blue " : "\red "), src.occupant.fireloss)
|
||||
user << "\blue Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)"
|
||||
user << text("\blue \t [] second\s (if around 1 or 2 the sleeper is keeping them asleep.)", src.occupant.paralysis / 5)
|
||||
|
||||
@@ -349,10 +349,7 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
|
||||
..()
|
||||
if(istype(W, /obj/item/robot_parts/l_arm) || istype(W, /obj/item/robot_parts/r_arm))
|
||||
var/obj/machinery/bot/cleanbot/A = new /obj/machinery/bot/cleanbot
|
||||
if(user.r_hand == src || user.l_hand == src)
|
||||
A.loc = user.loc
|
||||
else
|
||||
A.loc = src.loc
|
||||
A.loc = get_turf(src.loc)
|
||||
A.name = src.created_name
|
||||
user << "You add the robot arm to the bucket and sensor assembly! Beep boop!"
|
||||
del(W)
|
||||
|
||||
@@ -326,23 +326,23 @@
|
||||
return 1
|
||||
|
||||
//If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS.
|
||||
if((src.reagent_glass) && (src.use_beaker) && ((C.bruteloss >= heal_threshold) || (C.toxloss >= heal_threshold) || (C.toxloss >= heal_threshold) || (C.oxyloss >= (heal_threshold + 15))))
|
||||
if((src.reagent_glass) && (src.use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15))))
|
||||
for(var/datum/reagent/R in src.reagent_glass.reagents.reagent_list)
|
||||
if(!C.reagents.has_reagent(R))
|
||||
return 1
|
||||
continue
|
||||
|
||||
//They're injured enough for it!
|
||||
if((C.bruteloss >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_brute)))
|
||||
if((C.getBruteLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_brute)))
|
||||
return 1 //If they're already medicated don't bother!
|
||||
|
||||
if((C.oxyloss >= (15 + heal_threshold)) && (!C.reagents.has_reagent(src.treatment_oxy)))
|
||||
if((C.getOxyLoss() >= (15 + heal_threshold)) && (!C.reagents.has_reagent(src.treatment_oxy)))
|
||||
return 1
|
||||
|
||||
if((C.fireloss >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_fire)))
|
||||
return 1
|
||||
|
||||
if((C.toxloss >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_tox)))
|
||||
if((C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(src.treatment_tox)))
|
||||
return 1
|
||||
|
||||
|
||||
@@ -391,11 +391,11 @@
|
||||
if(!C.reagents.has_reagent(src.treatment_virus))
|
||||
reagent_id = src.treatment_virus
|
||||
|
||||
if (!reagent_id && (C.bruteloss >= heal_threshold))
|
||||
if (!reagent_id && (C.getBruteLoss() >= heal_threshold))
|
||||
if(!C.reagents.has_reagent(src.treatment_brute))
|
||||
reagent_id = src.treatment_brute
|
||||
|
||||
if (!reagent_id && (C.oxyloss >= (15 + heal_threshold)))
|
||||
if (!reagent_id && (C.getOxyLoss() >= (15 + heal_threshold)))
|
||||
if(!C.reagents.has_reagent(src.treatment_oxy))
|
||||
reagent_id = src.treatment_oxy
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
if(!C.reagents.has_reagent(src.treatment_fire))
|
||||
reagent_id = src.treatment_fire
|
||||
|
||||
if (!reagent_id && (C.toxloss >= heal_threshold))
|
||||
if (!reagent_id && (C.getToxLoss() >= heal_threshold))
|
||||
if(!C.reagents.has_reagent(src.treatment_tox))
|
||||
reagent_id = src.treatment_tox
|
||||
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
if (!src.implanted)
|
||||
return "ERROR"
|
||||
else
|
||||
src.healthstring = "[round(src.implanted:oxyloss)] - [round(src.implanted:fireloss)] - [round(src.implanted:toxloss)] - [round(src.implanted:bruteloss)]"
|
||||
src.healthstring = "[round(src.implanted:getOxyLoss())] - [round(src.implanted:fireloss)] - [round(src.implanted:getToxLoss())] - [round(src.implanted:getBruteLoss())]"
|
||||
if (!src.healthstring)
|
||||
src.healthstring = "ERROR"
|
||||
return src.healthstring
|
||||
@@ -457,7 +457,7 @@
|
||||
src.occupant.paralysis += 4
|
||||
|
||||
//Here let's calculate their health so the pod doesn't immediately eject them!!!
|
||||
src.occupant.health = (src.occupant.bruteloss + src.occupant.toxloss + src.occupant.oxyloss + src.occupant.cloneloss)
|
||||
src.occupant.health = (src.occupant.getBruteLoss() + src.occupant.getToxLoss() + src.occupant.getOxyLoss() + src.occupant.cloneloss)
|
||||
|
||||
src.occupant << "\blue <b>Clone generation process initiated.</b>"
|
||||
src.occupant << "\blue This will take a moment, please hold."
|
||||
@@ -554,7 +554,7 @@
|
||||
src.occupant.reagents.add_reagent("inaprovaline", 60)
|
||||
|
||||
//Also heal some oxyloss ourselves because inaprovaline is so bad at preventing it!!
|
||||
src.occupant.oxyloss = max(src.occupant.oxyloss-4, 0)
|
||||
src.occupant.oxyloss = max(src.occupant.getOxyLoss()-4, 0)
|
||||
|
||||
use_power(7500) //This might need tweaking.
|
||||
return
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
<B>Blood Type:</B> [src.victim.b_type]<BR>
|
||||
<BR>
|
||||
<B>Health:</B> [src.victim.health]<BR>
|
||||
<B>Brute Damage:</B> [src.victim.bruteloss]<BR>
|
||||
<B>Toxins Damage:</B> [src.victim.toxloss]<BR>
|
||||
<B>Brute Damage:</B> [src.victim.getBruteLoss()]<BR>
|
||||
<B>Toxins Damage:</B> [src.victim.getToxLoss()]<BR>
|
||||
<B>Fire Damage:</B> [src.victim.fireloss]<BR>
|
||||
<B>Suffocation Damage:</B> [src.victim.oxyloss]<BR>
|
||||
<B>Suffocation Damage:</B> [src.victim.getOxyLoss()]<BR>
|
||||
<B>Patient Status:</B> [src.victim.stat ? "Non-responsive" : "Stable"]<BR>
|
||||
"}
|
||||
else
|
||||
|
||||
@@ -122,10 +122,10 @@
|
||||
src.active = 1
|
||||
src.overlays += image('computer.dmi', "ai-fixer-on")
|
||||
while (src.occupant.health < 100)
|
||||
src.occupant.oxyloss = max (src.occupant.oxyloss-1, 0)
|
||||
src.occupant.oxyloss = max (src.occupant.getOxyLoss()-1, 0)
|
||||
src.occupant.fireloss = max (src.occupant.fireloss-1, 0)
|
||||
src.occupant.toxloss = max (src.occupant.toxloss-1, 0)
|
||||
src.occupant.bruteloss = max (src.occupant.bruteloss-1, 0)
|
||||
src.occupant.toxloss = max (src.occupant.getToxLoss()-1, 0)
|
||||
src.occupant.bruteloss = max (src.occupant.getBruteLoss()-1, 0)
|
||||
src.occupant.updatehealth()
|
||||
if (src.occupant.health >= 0 && src.occupant.stat == 2)
|
||||
src.occupant.stat = 0
|
||||
|
||||
@@ -61,10 +61,10 @@
|
||||
if((C) && (C.has_sensor) && (C.loc) && (C.loc.z == 1))
|
||||
if(istype(C.loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = C.loc
|
||||
var/dam1 = round(H.oxyloss,1)
|
||||
var/dam2 = round(H.toxloss,1)
|
||||
var/dam1 = round(H.getOxyLoss(),1)
|
||||
var/dam2 = round(H.getToxLoss(),1)
|
||||
var/dam3 = round(H.fireloss,1)
|
||||
var/dam4 = round(H.bruteloss,1)
|
||||
var/dam4 = round(H.getBruteLoss(),1)
|
||||
switch(C.sensor_mode)
|
||||
if(1)
|
||||
if(H.wear_id)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
<B>Current cell temperature:</B> [temp_text]K<BR>
|
||||
<B>Cryo status:</B> [ src.on ? "<A href='?src=\ref[src];start=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];start=1'>On</A>"]<BR>
|
||||
[beaker_text]<BR><BR>
|
||||
<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>Oxygen deprivation: [round(src.occupant.oxyloss,0.1)]<BR>Brute damage: [round(src.occupant.bruteloss,0.1)]<BR>Fire damage: [round(src.occupant.fireloss,0.1)]<BR>Toxin damage: [round(src.occupant.toxloss,0.1)]<BR>Body temperature: [src.occupant.bodytemperature]" : "<FONT color=red>None</FONT>"]<BR>
|
||||
<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>Oxygen deprivation: [round(src.occupant.getOxyLoss(),0.1)]<BR>Brute damage: [round(src.occupant.getBruteLoss(),0.1)]<BR>Fire damage: [round(src.occupant.fireloss,0.1)]<BR>Toxin damage: [round(src.occupant.getToxLoss(),0.1)]<BR>Body temperature: [src.occupant.bodytemperature]" : "<FONT color=red>None</FONT>"]<BR>
|
||||
|
||||
"}
|
||||
user.machine = src
|
||||
@@ -168,14 +168,14 @@
|
||||
occupant.sleeping = max(5, (1/occupant.bodytemperature)*2000)
|
||||
occupant.paralysis = max(5, (1/occupant.bodytemperature)*3000)
|
||||
if(air_contents.oxygen > 2)
|
||||
if(occupant.oxyloss) occupant.oxyloss = max(0, occupant.oxyloss - 1)
|
||||
if(occupant.getOxyLoss()) occupant.oxyloss = max(0, occupant.getOxyLoss() - 1)
|
||||
else
|
||||
occupant.oxyloss -= 1
|
||||
//severe damage should heal waaay slower without proper chemicals
|
||||
if(occupant.bodytemperature < 225)
|
||||
if (occupant.toxloss)
|
||||
occupant.toxloss = max(0, occupant.toxloss - min(1, 20/occupant.toxloss))
|
||||
var/heal_brute = occupant.bruteloss ? min(1, 20/occupant.bruteloss) : 0
|
||||
if (occupant.getToxLoss())
|
||||
occupant.toxloss = max(0, occupant.getToxLoss() - min(1, 20/occupant.getToxLoss()))
|
||||
var/heal_brute = occupant.getBruteLoss() ? min(1, 20/occupant.getBruteLoss()) : 0
|
||||
var/heal_fire = occupant.fireloss ? min(1, 20/occupant.fireloss) : 0
|
||||
occupant.heal_organ_damage(heal_brute,heal_fire)
|
||||
if(beaker && (next_trans == 0))
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/obj/machinery/dispenser/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/dispenser/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -14,9 +18,11 @@
|
||||
while(src.o2tanks > 0)
|
||||
new /obj/item/weapon/tank/oxygen( src.loc )
|
||||
src.o2tanks--
|
||||
update_icon()
|
||||
while(src.pltanks > 0)
|
||||
new /obj/item/weapon/tank/plasma( src.loc )
|
||||
src.pltanks--
|
||||
update_icon()
|
||||
else
|
||||
return
|
||||
|
||||
@@ -25,18 +31,22 @@
|
||||
while(src.o2tanks > 0)
|
||||
new /obj/item/weapon/tank/oxygen( src.loc )
|
||||
src.o2tanks--
|
||||
update_icon()
|
||||
while(src.pltanks > 0)
|
||||
new /obj/item/weapon/tank/plasma( src.loc )
|
||||
src.pltanks--
|
||||
update_icon()
|
||||
del(src)
|
||||
|
||||
/obj/machinery/dispenser/meteorhit()
|
||||
while(src.o2tanks > 0)
|
||||
new /obj/item/weapon/tank/oxygen( src.loc )
|
||||
src.o2tanks--
|
||||
update_icon()
|
||||
while(src.pltanks > 0)
|
||||
new /obj/item/weapon/tank/plasma( src.loc )
|
||||
src.pltanks--
|
||||
update_icon()
|
||||
del(src)
|
||||
return
|
||||
|
||||
@@ -78,6 +88,7 @@
|
||||
use_power(5)
|
||||
new /obj/item/weapon/tank/oxygen( src.loc )
|
||||
src.o2tanks--
|
||||
update_icon()
|
||||
if (istype(src.loc, /mob))
|
||||
attack_hand(src.loc)
|
||||
else
|
||||
@@ -87,6 +98,7 @@
|
||||
use_power(5)
|
||||
new /obj/item/weapon/tank/plasma( src.loc )
|
||||
src.pltanks--
|
||||
update_icon()
|
||||
if (istype(src.loc, /mob))
|
||||
attack_hand(src.loc)
|
||||
src.add_fingerprint(usr)
|
||||
@@ -98,3 +110,11 @@
|
||||
return
|
||||
return
|
||||
|
||||
/obj/machinery/dispenser/update_icon()
|
||||
overlays = null
|
||||
switch(o2tanks)
|
||||
if(1 to 3) overlays += "oxygen-[o2tanks]"
|
||||
if(4 to INFINITY) overlays += "oxygen-4"
|
||||
switch(pltanks)
|
||||
if(1 to 4) overlays += "plasma-[pltanks]"
|
||||
if(5 to INFINITY) overlays += "plasma-5"
|
||||
@@ -106,7 +106,8 @@
|
||||
"\blue [user] has added one of [O] to \the [src].", \
|
||||
"\blue You add one of [O] to \the [src].")
|
||||
else
|
||||
user.before_take_item(O)
|
||||
// user.before_take_item(O) //This just causes problems so far as I can tell. -Pete
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
user.visible_message( \
|
||||
"\blue [user] has added \the [O] to \the [src].", \
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
icon_state = "frame"
|
||||
name = "status display"
|
||||
anchored = 1
|
||||
density = 1
|
||||
density = 0
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
var/mode = 1 // 0 = Blank
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
WIRE_SCANID = 2
|
||||
WIRE_SHOCK = 3
|
||||
WIRE_SHOOTINV = 4
|
||||
var/page
|
||||
|
||||
/datum/data/vending_product
|
||||
var/product_name = "generic"
|
||||
@@ -13,6 +14,7 @@
|
||||
|
||||
/obj/machinery/vending/New()
|
||||
..()
|
||||
page = 1
|
||||
spawn(4)
|
||||
src.slogan_list = dd_text2List(src.product_slogans, ";")
|
||||
var/list/temp_paths = dd_text2List(src.product_paths, ";")
|
||||
@@ -93,6 +95,80 @@
|
||||
continue
|
||||
|
||||
return
|
||||
/obj/machinery/vending/proc/updateWindow(mob/user as mob)
|
||||
var/i
|
||||
for (i = 1, i <= 6, i++)
|
||||
winclone(user, "vendingslot", "vendingslot[i]")
|
||||
winset(user, "vendingwindow.slot[i]", "left=vendingslot[i]")
|
||||
winset(user, "vendingslot[i].buy", "command=\"skincmd vending;buy[i-1]\"")
|
||||
winset(user, "vendingwindow.title", "text=\"[src.name]\"")
|
||||
var/list/products = src.product_records
|
||||
var/pages = -round(-products.len / 6)
|
||||
if (page > pages)
|
||||
page = pages
|
||||
winset(user, "vendingwindow.page", "text=[page]/[pages]")
|
||||
|
||||
var/base = (page-1)*6+1
|
||||
for (i = 0, i < 6, i++)
|
||||
if (products.len >= base + i)
|
||||
var/datum/data/vending_product/product = products[base + i]
|
||||
winset(user, "vendingslot[i+1].name", "text=\"[product.product_name]\"")
|
||||
if (product.amount > 0)
|
||||
winset(user, "vendingslot[i+1].stock", "text=\"Left in stock: [product.amount]\"")
|
||||
winset(user, "vendingslot[i+1].stock", "text-color=\"#000000\"")
|
||||
winshow(user, "vendingslot[i+1].buy", 1)
|
||||
else
|
||||
winset(user, "vendingslot[i+1].stock", "text=\"OUT OF STOCK\"")
|
||||
winset(user, "vendingslot[i+1].stock", "text-color=\"#FF0000\"")
|
||||
winshow(user, "vendingslot[i+1].buy", 0)
|
||||
winshow(user, "vendingwindow.slot[i+1]", 1)
|
||||
else
|
||||
winshow(user, "vendingwindow.slot[i+1]", 0)
|
||||
|
||||
/obj/machinery/vending/SkinCmd(mob/user as mob, var/data as text)
|
||||
if (get_dist(user, src) > 1)
|
||||
return
|
||||
var/list/products = src.product_records
|
||||
var/pages = -round(-products.len / 6)
|
||||
switch(data)
|
||||
if ("pagen")
|
||||
page++
|
||||
if (page > pages)
|
||||
page = pages
|
||||
if ("pagep")
|
||||
page--
|
||||
if (page < 1)
|
||||
page = 1
|
||||
if (copytext(data, 1, 4) == "buy")
|
||||
var/base = (page-1)*6+1
|
||||
var/num = text2num(copytext(data, 4))
|
||||
if (products.len < base + num)
|
||||
return
|
||||
var/datum/data/vending_product/R = products[base + num]
|
||||
var/product_path = text2path(R.product_path)
|
||||
|
||||
if (R.amount <= 0)
|
||||
return
|
||||
if (!src.vend_ready)
|
||||
return
|
||||
|
||||
R.amount--
|
||||
src.vend_ready = 0
|
||||
|
||||
if(((src.last_reply + (src.vend_delay + 200)) <= world.time) && src.vend_reply)
|
||||
spawn(0)
|
||||
src.speak(src.vend_reply)
|
||||
src.last_reply = world.time
|
||||
|
||||
use_power(5)
|
||||
if (src.icon_vend) //Show the vending animation if needed
|
||||
flick(src.icon_vend,src)
|
||||
spawn(src.vend_delay)
|
||||
new product_path(get_turf(src))
|
||||
src.vend_ready = 1
|
||||
|
||||
updateWindow(user)
|
||||
|
||||
|
||||
/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if (istype(W, /obj/item/weapon/card/emag))
|
||||
@@ -135,32 +211,9 @@
|
||||
if(src.shock(user, 100))
|
||||
return
|
||||
|
||||
var/dat = "<TT><b>Select an item:</b><br>"
|
||||
|
||||
if (product_coin != "")
|
||||
dat += "<b>Coin slot:</b> [coin ? coin : "No coin inserted"] (<a href='byond://?src=\ref[src];remove_coin=1'>Remove</A>)<br><br>"
|
||||
|
||||
if (src.product_records.len == 0)
|
||||
dat += "<font color = 'red'>No product loaded!</font>"
|
||||
else
|
||||
var/list/display_records = src.product_records
|
||||
if(src.extended_inventory)
|
||||
display_records = src.product_records + src.hidden_records
|
||||
if(src.coin)
|
||||
display_records = src.product_records + src.coin_records
|
||||
if(src.coin && src.extended_inventory)
|
||||
display_records = src.product_records + src.hidden_records + src.coin_records
|
||||
|
||||
for (var/datum/data/vending_product/R in display_records)
|
||||
dat += "<FONT color = '[R.display_color]'><B>[R.product_name]</B>:"
|
||||
dat += " [R.amount] </font>"
|
||||
if (R.amount > 0)
|
||||
dat += "<a href='byond://?src=\ref[src];vend=\ref[R]'>Vend</A>"
|
||||
else
|
||||
dat += "<font color = 'red'>SOLD OUT</font>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "</TT>"
|
||||
updateWindow(user)
|
||||
winshow(user, "vendingwindow", 1)
|
||||
user.skincmds["vending"] = src
|
||||
|
||||
if(panel_open)
|
||||
var/list/vendwires = list(
|
||||
@@ -169,7 +222,7 @@
|
||||
"Goldenrod" = 3,
|
||||
"Green" = 4,
|
||||
)
|
||||
dat += "<br><hr><br><B>Access Panel</B><br>"
|
||||
var/dat = "<br><hr><br><B>Access Panel</B><br>"
|
||||
for(var/wiredesc in vendwires)
|
||||
var/is_uncut = src.wires & APCWireColorToFlag[vendwires[wiredesc]]
|
||||
dat += "[wiredesc] wire: "
|
||||
@@ -188,9 +241,9 @@
|
||||
|
||||
if (product_slogans != "")
|
||||
dat += "The speaker switch is [src.shut_up ? "off" : "on"]. <a href='?src=\ref[src];togglevoice=[1]'>Toggle</a>"
|
||||
user << browse(dat, "")
|
||||
onclose(user, "")
|
||||
|
||||
user << browse(dat, "")
|
||||
onclose(user, "")
|
||||
return
|
||||
|
||||
/obj/machinery/vending/Topic(href, href_list)
|
||||
|
||||
@@ -1294,9 +1294,9 @@
|
||||
O.control_disabled = 1 // Can't control things remotely if you're stuck in a card!
|
||||
O.laws = AI.laws
|
||||
O.stat = AI.stat
|
||||
O.oxyloss = AI.oxyloss
|
||||
O.oxyloss = AI.getOxyLoss()
|
||||
O.fireloss = AI.fireloss
|
||||
O.bruteloss = AI.bruteloss
|
||||
O.bruteloss = AI.getBruteLoss()
|
||||
O.toxloss = AI.toxloss
|
||||
O.updatehealth()
|
||||
src.occupant = O
|
||||
@@ -1312,9 +1312,9 @@
|
||||
O.mind.transfer_to(AI)
|
||||
AI.control_disabled = 0
|
||||
AI.laws = O.laws
|
||||
AI.oxyloss = O.oxyloss
|
||||
AI.oxyloss = O.getOxyLoss()
|
||||
AI.fireloss = O.fireloss
|
||||
AI.bruteloss = O.bruteloss
|
||||
AI.bruteloss = O.getBruteLoss()
|
||||
AI.toxloss = O.toxloss
|
||||
AI.updatehealth()
|
||||
del(O)
|
||||
|
||||
@@ -721,7 +721,7 @@
|
||||
|
||||
user.show_message("\blue Analyzing Results for [C]:")
|
||||
user.show_message("\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]", 1)
|
||||
user.show_message("\blue \t Damage Specifics: [C.oxyloss > 50 ? "\red" : "\blue"][C.oxyloss]-[C.toxloss > 50 ? "\red" : "\blue"][C.toxloss]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.bruteloss > 50 ? "\red" : "\blue"][C.bruteloss]", 1)
|
||||
user.show_message("\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]", 1)
|
||||
user.show_message("\blue \t Key: Suffocation/Toxin/Burns/Brute", 1)
|
||||
user.show_message("\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)", 1)
|
||||
for(var/datum/disease/D in C.viruses)
|
||||
|
||||
@@ -195,19 +195,19 @@ MASS SPECTROMETER
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\red [] has analyzed []'s vitals!", user, M), 1)
|
||||
//Foreach goto(67)
|
||||
var/fake_oxy = max(rand(1,40), M.oxyloss, (300 - (M.toxloss + M.fireloss + M.bruteloss)))
|
||||
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.fireloss + M.getBruteLoss())))
|
||||
if((M.reagents && M.reagents.has_reagent("zombiepowder")) || (M.changeling && M.changeling.changeling_fakedeath))
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, "dead"), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.toxloss > 50 ? "\red [M.toxloss]" : M.toxloss, M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.bruteloss > 50 ? "\red[M.bruteloss]" : M.bruteloss), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", fake_oxy < 50 ? "\red [fake_oxy]" : fake_oxy , M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
else
|
||||
user.show_message(text("\blue Analyzing Results for []:\n\t Overall Status: []", M, (M.stat > 1 ? "dead" : text("[]% healthy", M.health))), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.oxyloss > 50 ? "\red [M.oxyloss]" : M.oxyloss, M.toxloss > 50 ? "\red [M.toxloss]" : M.toxloss, M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.bruteloss > 50 ? "\red[M.bruteloss]" : M.bruteloss), 1)
|
||||
user.show_message(text("\blue \t Damage Specifics: []-[]-[]-[]", M.getOxyLoss() > 50 ? "\red [M.getOxyLoss()]" : M.getOxyLoss(), M.getToxLoss() > 50 ? "\red [M.getToxLoss()]" : M.getToxLoss(), M.fireloss > 50 ? "\red[M.fireloss]" : M.fireloss, M.getBruteLoss() > 50 ? "\red[M.getBruteLoss()]" : M.getBruteLoss()), 1)
|
||||
user.show_message("\blue Key: Suffocation/Toxin/Burns/Brute", 1)
|
||||
user.show_message("\blue Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1)
|
||||
if((M.changeling && M.changeling.changeling_fakedeath) || (M.reagents && M.reagents.has_reagent("zombiepowder")))
|
||||
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.toxloss > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.bruteloss > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
else
|
||||
user.show_message(text("\blue [] | [] | [] | []", M.oxyloss > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.toxloss > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.bruteloss > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
user.show_message(text("\blue [] | [] | [] | []", M.getOxyLoss() > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.getToxLoss() > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.getBruteLoss() > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
|
||||
if (M.cloneloss)
|
||||
user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
|
||||
@@ -245,6 +245,9 @@ THERMAL GLASSES
|
||||
usr << "Its vital tracker and tracking beacon appear to be enabled."
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/welding/attack_self()
|
||||
toggle()
|
||||
|
||||
/obj/item/clothing/head/helmet/welding/verb/toggle()
|
||||
set category = "Object"
|
||||
set name = "Adjust welding mask"
|
||||
|
||||
@@ -84,7 +84,7 @@ SHARDS
|
||||
user << "\b There is not enough wire in this coil. You need 5 lengths."
|
||||
CC.amount -= 5
|
||||
amount -= 1
|
||||
user << "\blue You attack wire to the [name]."
|
||||
user << "\blue You attach wire to the [name]."
|
||||
new/obj/item/stack/light_w(user.loc)
|
||||
if(CC.amount <= 0)
|
||||
user.u_equip(CC)
|
||||
@@ -139,14 +139,14 @@ SHARDS
|
||||
src.icon_state = pick("large", "medium", "small")
|
||||
switch(src.icon_state)
|
||||
if("small")
|
||||
src.pixel_x = rand(1, 18)
|
||||
src.pixel_y = rand(1, 18)
|
||||
src.pixel_x = rand(-12, 12)
|
||||
src.pixel_y = rand(-12, 12)
|
||||
if("medium")
|
||||
src.pixel_x = rand(1, 16)
|
||||
src.pixel_y = rand(1, 16)
|
||||
src.pixel_x = rand(-8, 8)
|
||||
src.pixel_y = rand(-8, 8)
|
||||
if("large")
|
||||
src.pixel_x = rand(1, 10)
|
||||
src.pixel_y = rand(1, 5)
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
@@ -176,11 +176,10 @@
|
||||
src.anchored = !( src.anchored )
|
||||
playsound(src.loc, 'Screwdriver.ogg', 75, 1)
|
||||
user << (src.anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && reinf)
|
||||
if(state <=1)
|
||||
state = 1-state;
|
||||
playsound(src.loc, 'Crowbar.ogg', 75, 1)
|
||||
user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.")
|
||||
else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <=1)
|
||||
state = 1-state;
|
||||
playsound(src.loc, 'Crowbar.ogg', 75, 1)
|
||||
user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.")
|
||||
else
|
||||
var/aforce = W.force
|
||||
if(reinf) aforce /= 2.0
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/mob/var/skincmds = list()
|
||||
/obj/proc/SkinCmd(mob/user as mob, var/data as text)
|
||||
|
||||
/proc/SkinCmdRegister(var/mob/user, var/name as text, var/O as obj)
|
||||
user.skincmds[name] = O
|
||||
|
||||
/mob/verb/skincmd(data as text)
|
||||
set hidden = 1
|
||||
|
||||
var/ref = copytext(data, 1, findtext(data, ";"))
|
||||
if (src.skincmds[ref] != null)
|
||||
var/obj/a = src.skincmds[ref]
|
||||
a.SkinCmd(src, copytext(data, findtext(data, ";") + 1))
|
||||
@@ -25,7 +25,7 @@
|
||||
suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
oxyloss = max(175 - toxloss - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/carbon/brain/verb/suicide()
|
||||
@@ -48,7 +48,7 @@
|
||||
if(confirm == "Yes")
|
||||
suiciding = 1
|
||||
viewers(loc) << "\red <b>[src]'s brain is growing dull and lifeless. It looks like it's trying to commit suicide. Somehow.</b>"
|
||||
oxyloss = max(175 - toxloss - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
spawn(200)
|
||||
suiciding = 0
|
||||
@@ -74,7 +74,7 @@
|
||||
suiciding = 1
|
||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||
oxyloss = max(175 - toxloss - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/ai/verb/suicide()
|
||||
@@ -94,7 +94,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(175 - toxloss - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(175 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/robot/verb/suicide()
|
||||
@@ -114,7 +114,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(475 - toxloss - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(475 - getToxLoss() - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
/mob/living/silicon/pai/verb/suicide()
|
||||
@@ -149,7 +149,7 @@
|
||||
suiciding = 1
|
||||
viewers(src) << "\red <b>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</b>"
|
||||
//put em at -175
|
||||
oxyloss = max(100 - fireloss - bruteloss, oxyloss)
|
||||
oxyloss = max(100 - fireloss - getBruteLoss(), getOxyLoss())
|
||||
updatehealth()
|
||||
|
||||
|
||||
|
||||
@@ -519,6 +519,7 @@
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
||||
return
|
||||
|
||||
/*
|
||||
if (href_list["sendtomaze"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/mob/M = locate(href_list["sendtomaze"])
|
||||
@@ -550,6 +551,7 @@
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
||||
return
|
||||
*/
|
||||
|
||||
if (href_list["tdome1"])
|
||||
if ((src.rank in list( "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
@@ -1714,7 +1716,7 @@
|
||||
foo += text("<A HREF='?src=\ref[src];tdomeadmin=\ref[M]'>Thunderdome Admin</A> | ")
|
||||
foo += text("<A HREF='?src=\ref[src];tdomeobserve=\ref[M]'>Thunderdome Observer</A> | ")
|
||||
foo += text("<A HREF='?src=\ref[src];sendtoprison=\ref[M]'>Prison</A> | ")
|
||||
foo += text("<A HREF='?src=\ref[src];sendtomaze=\ref[M]'>Maze</A> | ")
|
||||
// foo += text("<A HREF='?src=\ref[src];sendtomaze=\ref[M]'>Maze</A> | ")
|
||||
foo += text("<A HREF='?src=\ref[src];revive=\ref[M]'>Heal/Revive</A> | ")
|
||||
else
|
||||
foo += text("<B>Hasn't Entered Game</B> | ")
|
||||
|
||||
@@ -374,7 +374,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
"tournament janitor",
|
||||
"pirate",
|
||||
"space pirate",
|
||||
//"soviet soldier",
|
||||
"soviet admiral",
|
||||
"tunnel clown",
|
||||
"masked killer",
|
||||
"assassin",
|
||||
@@ -683,6 +683,24 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
M.equip_if_possible(new /obj/item/weapon/staff(M), M.slot_l_hand)
|
||||
M.equip_if_possible(new /obj/item/weapon/storage/backpack(M), M.slot_back)
|
||||
M.equip_if_possible(new /obj/item/weapon/storage/box(M), M.slot_in_backpack)
|
||||
if("soviet admiral")
|
||||
M.equip_if_possible(new /obj/item/clothing/head/hgpiratecap(M), M.slot_head)
|
||||
M.equip_if_possible(new /obj/item/clothing/shoes/combat(M), M.slot_shoes)
|
||||
M.equip_if_possible(new /obj/item/clothing/gloves/combat(M), M.slot_gloves)
|
||||
M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), M.slot_ears)
|
||||
M.equip_if_possible(new /obj/item/clothing/glasses/thermal/eyepatch(M), M.slot_glasses)
|
||||
M.equip_if_possible(new /obj/item/clothing/suit/hgpirate(M), M.slot_wear_suit)
|
||||
M.equip_if_possible(new /obj/item/weapon/storage/backpack/bandolier(M), M.slot_back)
|
||||
M.equip_if_possible(new /obj/item/weapon/gun/projectile/mateba(M), M.slot_belt)
|
||||
M.equip_if_possible(new /obj/item/clothing/under/soviet(M), M.slot_w_uniform)
|
||||
var/obj/item/weapon/card/id/W = new(M)
|
||||
W.name = "[M.real_name]'s ID Card"
|
||||
W.icon_state = "centcom"
|
||||
W.access = get_all_accesses()
|
||||
W.access += get_all_centcom_access()
|
||||
W.assignment = "Admiral"
|
||||
W.registered = M.real_name
|
||||
M.equip_if_possible(W, M.slot_wear_id)
|
||||
|
||||
M.update_clothing()
|
||||
return
|
||||
|
||||
@@ -519,20 +519,24 @@
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 100
|
||||
var/obj/item/weapon/reagent_containers/beaker = null
|
||||
var/global/list/allowed_items = list (
|
||||
/obj/item/stack/sheet/plasma = "plasma",
|
||||
/obj/item/stack/sheet/uranium = "uranium",
|
||||
/obj/item/stack/sheet/clown = "banana",
|
||||
/obj/item/stack/sheet/silver = "silver",
|
||||
/obj/item/stack/sheet/gold = "gold",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = "banana",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = "imidazoline",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = "cornoil",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap = "psilocybin",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili = "capsaicin",
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper = "frostoil",
|
||||
/obj/item/weapon/grown/nettle = "acid",
|
||||
/obj/item/weapon/grown/deathnettle = "pacid",
|
||||
var/global/list/allowed_items = list ( // reagent = amount, amount of 0 indicate to determine the amount from the reagents list, only implemented on plants for now
|
||||
/obj/item/stack/sheet/plasma = list("plasma" = 20),
|
||||
/obj/item/stack/sheet/uranium = list("uranium" = 20),
|
||||
/obj/item/stack/sheet/clown = list("banana" = 20),
|
||||
/obj/item/stack/sheet/silver = list("silver" = 20),
|
||||
/obj/item/stack/sheet/gold = list("gold" = 20),
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana = list("banana" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = list("imidazoline" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap = list("psilocybin" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita = list("amatoxin" = 0, "psilocybin" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel = list("amatoxin" = 0, "psilocybin" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili = list("capsaicin" = 0),
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper = list("frostoil" = 0),
|
||||
*/
|
||||
/obj/item/weapon/grown/nettle = list("acid" = 0),
|
||||
/obj/item/weapon/grown/deathnettle = list("pacid" = 0),
|
||||
)
|
||||
|
||||
/obj/machinery/reagentgrinder/New()
|
||||
@@ -551,9 +555,9 @@
|
||||
if (beaker)
|
||||
return 1
|
||||
else
|
||||
user.before_take_item(O)
|
||||
src.beaker = O
|
||||
user.drop_item()
|
||||
O.loc = src
|
||||
beaker = O
|
||||
src.verbs += /obj/machinery/reagentgrinder/verb/detach
|
||||
update_icon()
|
||||
src.updateUsrDialog()
|
||||
@@ -642,20 +646,7 @@
|
||||
beaker = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
for (var/i in allowed_items)
|
||||
if (istype(O, i))
|
||||
return allowed_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
if (!istype(O))
|
||||
return 5
|
||||
else if (O.potency == -1)
|
||||
return 5
|
||||
else
|
||||
return round(O.potency / 5)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_id(var/obj/item/weapon/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
|
||||
for (var/i in allowed_items)
|
||||
if (istype(O, i))
|
||||
return allowed_items[i]
|
||||
@@ -684,20 +675,48 @@
|
||||
return
|
||||
playsound(src.loc, 'juicer.ogg', 20, 1)
|
||||
for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents)
|
||||
var/r_id = get_juice_id(O)
|
||||
beaker.reagents.add_reagent(r_id,get_juice_amount(O))
|
||||
del(O)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
if (amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent(r_id))
|
||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
|
||||
else
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
del(O)
|
||||
for (var/obj/item/stack/sheet/O in src.contents)
|
||||
var/g_id = get_grind_id(O)
|
||||
beaker.reagents.add_reagent(g_id,get_grind_amount(O))
|
||||
del(O)
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
for(var/i = 1; i <= round(O.amount, 1); i++)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
if (space < amount)
|
||||
break
|
||||
if (i == round(O.amount, 1))
|
||||
del(O)
|
||||
break
|
||||
for (var/obj/item/weapon/grown/O in src.contents)
|
||||
var/g_id = get_grownweapon_id(O)
|
||||
beaker.reagents.add_reagent(g_id,get_grownweapon_amount(O))
|
||||
del(O)
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
break
|
||||
var/allowed = get_allowed_by_id(O)
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
if (amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent(r_id))
|
||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
|
||||
else
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
del(O)
|
||||
@@ -324,7 +324,7 @@ datum
|
||||
holder.remove_reagent("carpotoxin", 1)
|
||||
if(holder.has_reagent("zombiepowder"))
|
||||
holder.remove_reagent("zombiepowder", 0.5)
|
||||
M:toxloss = max(M:toxloss-2,0)
|
||||
M:toxloss = max(M:getToxLoss()-2,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1165,7 +1165,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M:oxyloss = max(M:oxyloss-2, 0)
|
||||
M:oxyloss = max(M:getOxyLoss()-2, 0)
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
..()
|
||||
@@ -1199,10 +1199,10 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:oxyloss && prob(40)) M:oxyloss--
|
||||
if(M:bruteloss && prob(40)) M:heal_organ_damage(1,0)
|
||||
if(M:getOxyLoss() && prob(40)) M:oxyloss--
|
||||
if(M:getBruteLoss() && prob(40)) M:heal_organ_damage(1,0)
|
||||
if(M:fireloss && prob(40)) M:heal_organ_damage(0,1)
|
||||
if(M:toxloss && prob(40)) M:toxloss--
|
||||
if(M:getToxLoss() && prob(40)) M:toxloss--
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1219,7 +1219,7 @@ datum
|
||||
M:oxyloss = 0
|
||||
M:radiation = 0
|
||||
M:heal_organ_damage(5,5)
|
||||
if(M:toxloss) M:toxloss = max(0, M:toxloss-5)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-5)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 5)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
@@ -1326,7 +1326,7 @@ datum
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M:radiation = max(M:radiation-7,0)
|
||||
if(M:toxloss) M:toxloss--
|
||||
if(M:getToxLoss()) M:toxloss--
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
..()
|
||||
@@ -1401,9 +1401,9 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-1)
|
||||
if(M:oxyloss) M:oxyloss = max(0, M:oxyloss-3)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:toxloss) M:toxloss = max(0, M:toxloss-3)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1418,9 +1418,9 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature < 170)
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-3)
|
||||
if(M:oxyloss) M:oxyloss = max(0, M:oxyloss-3)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:toxloss) M:toxloss = max(0, M:toxloss-3)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1640,7 +1640,7 @@ datum
|
||||
M.jitteriness += rand(0, 5)
|
||||
M.dizziness = max (0, (M.dizziness - rand(0, 15)))
|
||||
M.druggy = max (0, (M.druggy - rand(0, 15)))
|
||||
M.toxloss = max (0, (M.toxloss - rand(5, 15)))
|
||||
M.toxloss = max (0, (M.getToxLoss() - rand(5, 15)))
|
||||
M.updatehealth()
|
||||
*/
|
||||
..()
|
||||
@@ -1928,7 +1928,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:oxyloss && prob(30)) M:oxyloss--
|
||||
if(M:getOxyLoss() && prob(30)) M:oxyloss--
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -1960,7 +1960,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:toxloss && prob(20)) M:toxloss--
|
||||
if(M:getToxLoss() && prob(20)) M:toxloss--
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -2103,7 +2103,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -2117,7 +2117,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -2132,7 +2132,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M:nutrition += nutriment_factor
|
||||
if(M:bruteloss && prob(20)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(20)) M:heal_organ_damage(1,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2167,7 +2167,7 @@ datum
|
||||
M:drowsyness = max(0,M:drowsyness-1)
|
||||
M:jitteriness = max(0,M:jitteriness-3)
|
||||
M:sleeping = 0
|
||||
if(M:toxloss && prob(20))
|
||||
if(M:getToxLoss() && prob(20))
|
||||
M:toxloss--
|
||||
if (M.bodytemperature < 310) //310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
@@ -2204,7 +2204,7 @@ datum
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
M:drowsyness = max(0,M:drowsyness-1)
|
||||
M:sleeping = 0
|
||||
if(M:toxloss && prob(20))
|
||||
if(M:getToxLoss() && prob(20))
|
||||
M:toxloss--
|
||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature-5)
|
||||
@@ -2656,7 +2656,7 @@ datum
|
||||
color = "#895C4C" // rgb: 137, 92, 76
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(M:bruteloss && prob(10)) M:heal_organ_damage(1,0)
|
||||
if(M:getBruteLoss() && prob(10)) M:heal_organ_damage(1,0)
|
||||
M:nutrition += 2
|
||||
if(!data) data = 1
|
||||
data++
|
||||
@@ -3030,10 +3030,10 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M:oxyloss && prob(50)) M:oxyloss -= 2
|
||||
if(M:bruteloss && prob(60)) M:heal_organ_damage(2,0)
|
||||
if(M:getOxyLoss() && prob(50)) M:oxyloss -= 2
|
||||
if(M:getBruteLoss() && prob(60)) M:heal_organ_damage(2,0)
|
||||
if(M:fireloss && prob(50)) M:heal_organ_damage(0,2)
|
||||
if(M:toxloss && prob(50)) M:toxloss -= 2
|
||||
if(M:getToxLoss() && prob(50)) M:toxloss -= 2
|
||||
if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15)
|
||||
if(M.confused !=0) M.confused = max(0,M.confused - 5)
|
||||
..()
|
||||
@@ -3677,7 +3677,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:oxyloss += 0.5
|
||||
M:toxloss += 0.5
|
||||
M:getToxLoss() += 0.5
|
||||
M:weakened = max(M:weakened, 15)
|
||||
M:silent = max(M:silent, 15)
|
||||
if(!data) data = 1
|
||||
|
||||
@@ -601,6 +601,7 @@
|
||||
|
||||
var/list/can_be_placed_into = list(
|
||||
/obj/machinery/chem_master/,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/obj/structure/table,
|
||||
/obj/structure/secure_closet,
|
||||
/obj/structure/closet,
|
||||
@@ -611,6 +612,7 @@
|
||||
/obj/machinery/bot/medbot,
|
||||
/obj/machinery/computer/pandemic,
|
||||
/obj/item/weapon/secstorage/ssafe,
|
||||
/obj/machinery/disposal,
|
||||
/obj/machinery/disease2/incubator,
|
||||
/obj/machinery/disease2/isolator,
|
||||
/obj/machinery/disease2/biodestroyer
|
||||
@@ -1970,7 +1972,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
||||
name = "beaker"
|
||||
desc = "A beaker. Can hold up to 30 units."
|
||||
desc = "A beaker. Can hold up to 50 units."
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "beaker0"
|
||||
item_state = "beaker"
|
||||
@@ -3161,4 +3163,4 @@
|
||||
icon_state = "jar"
|
||||
name = "empty jar"
|
||||
desc = "A jar. You're not sure what it's supposed to hold."
|
||||
return
|
||||
return
|
||||
@@ -28,9 +28,9 @@
|
||||
return "health60"
|
||||
if(30 to 50)
|
||||
return "health40"
|
||||
if(20 to 30)
|
||||
if(18 to 30)
|
||||
return "health25"
|
||||
if(5 to 15)
|
||||
if(5 to 18)
|
||||
return "health10"
|
||||
if(1 to 5)
|
||||
return "health1"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
icon_state = "rad"
|
||||
desc = "A hood with radiation protective properties. Label: Made with lead, do not eat insulation"
|
||||
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 90)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/radiation
|
||||
name = "Radiation suit"
|
||||
@@ -49,4 +49,4 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
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 = 90)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
|
||||
@@ -40,9 +40,9 @@
|
||||
paralysis = 0
|
||||
weakened = 0
|
||||
sleeping = 0
|
||||
bruteloss = max(bruteloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
if(stat)
|
||||
stat = 0
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
|
||||
proc/UpdateDamage()
|
||||
health = 60 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 60 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Doesn't work on other aliens/AI.*/
|
||||
if(stat)
|
||||
src << "\green You must be conscious to do this."
|
||||
return 0
|
||||
else if(X&&toxloss < X)
|
||||
else if(X&&getToxLoss() < X)
|
||||
src << "\green Not enough plasma stored."
|
||||
return 0
|
||||
else if(Y&&(!isturf(src.loc) || istype(src.loc, /turf/space)))
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if (src.nodamage == 0)
|
||||
//oxyloss is only used for suicide
|
||||
//toxloss isn't used for aliens, its actually used as alien powers!!
|
||||
src.health = 150 - src.oxyloss - src.fireloss - src.bruteloss
|
||||
src.health = 150 - src.getOxyLoss() - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 150
|
||||
src.stat = 0
|
||||
@@ -67,7 +67,7 @@
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 150)
|
||||
toxloss += 5
|
||||
if(toxloss > max_plasma)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
else
|
||||
@@ -76,9 +76,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 150 - (oxyloss + fireloss + bruteloss + cloneloss)
|
||||
health = 150 - (getOxyLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 3)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if (src.nodamage == 0)
|
||||
//oxyloss is only used for suicide
|
||||
//toxloss isn't used for aliens, its actually used as alien powers!!
|
||||
src.health = 125 - src.oxyloss - src.fireloss - src.bruteloss
|
||||
src.health = 125 - src.getOxyLoss() - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 125
|
||||
src.stat = 0
|
||||
@@ -67,7 +67,7 @@
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 125)
|
||||
toxloss += 10
|
||||
if(toxloss > max_plasma)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
else
|
||||
@@ -77,9 +77,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 150 - (oxyloss + fireloss + bruteloss + cloneloss)
|
||||
health = 150 - (getOxyLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 3)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
stat(null, "Move Mode: [m_intent]")
|
||||
|
||||
if (client.statpanel == "Status")
|
||||
stat(null, "Plasma Stored: [toxloss]")
|
||||
stat(null, "Plasma Stored: [getToxLoss()]")
|
||||
|
||||
///mob/living/carbon/alien/humanoid/bullet_act(var/obj/item/projectile/Proj) taken care of in living
|
||||
|
||||
@@ -755,7 +755,7 @@ In all, this is a lot like the monkey code. /N
|
||||
if (nodamage == 0)
|
||||
//oxyloss is only used for suicide
|
||||
//toxloss isn't used for aliens, its actually used as alien powers!!
|
||||
health = 100 - oxyloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - fireloss - getBruteLoss()
|
||||
else
|
||||
health = 100
|
||||
stat = 0
|
||||
|
||||
@@ -84,9 +84,9 @@
|
||||
paralysis = max(min(paralysis, 20), 0)
|
||||
weakened = max(min(weakened, 20), 0)
|
||||
sleeping = max(min(sleeping, 20), 0)
|
||||
bruteloss = max(bruteloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 100)
|
||||
toxloss += 15
|
||||
if(toxloss > max_plasma)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
else
|
||||
@@ -396,9 +396,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 100 - (oxyloss + fireloss + bruteloss + cloneloss)
|
||||
health = 100 - (getOxyLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 3)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if (src.nodamage == 0)
|
||||
//oxyloss is only used for suicide
|
||||
//toxloss isn't used for aliens, its actually used as alien powers!!
|
||||
src.health = 250 - src.oxyloss - src.fireloss - src.bruteloss
|
||||
src.health = 250 - src.getOxyLoss() - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 250
|
||||
src.stat = 0
|
||||
@@ -70,7 +70,7 @@
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 250)
|
||||
toxloss += 20
|
||||
if(toxloss > max_plasma)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
else
|
||||
bruteloss -= 5
|
||||
@@ -78,9 +78,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 250 - (oxyloss + fireloss + bruteloss + cloneloss)
|
||||
health = 250 - (getOxyLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 3)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
if (client.statpanel == "Status")
|
||||
stat(null, "Progress: [amount_grown]/200")
|
||||
stat(null, "Plasma Stored: [toxloss]")
|
||||
stat(null, "Plasma Stored: [getToxLoss()]")
|
||||
|
||||
|
||||
///mob/living/carbon/alien/larva/bullet_act(var/obj/item/projectile/Proj) taken care of in living
|
||||
@@ -503,7 +503,7 @@
|
||||
if (nodamage == 0)
|
||||
//oxyloss is only used for suicide
|
||||
//toxloss isn't used for aliens, its actually used as alien powers!!
|
||||
health = 25 - oxyloss - fireloss - bruteloss
|
||||
health = 25 - getOxyLoss() - fireloss - getBruteLoss()
|
||||
else
|
||||
health = 25
|
||||
stat = 0
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
paralysis = max(min(paralysis, 20), 0)
|
||||
weakened = max(min(weakened, 20), 0)
|
||||
sleeping = max(min(sleeping, 20), 0)
|
||||
bruteloss = max(bruteloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
|
||||
handle_mutations_and_radiation()
|
||||
@@ -323,9 +323,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 25 - (oxyloss + fireloss + bruteloss + cloneloss)
|
||||
health = 25 - (getOxyLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(sleeping)
|
||||
paralysis = max(paralysis, 3)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 200 - (oxyloss + fireloss + bruteloss)
|
||||
health = 200 - (getOxyLoss() + fireloss + getBruteLoss())
|
||||
|
||||
weakened = 0
|
||||
stunned = 0
|
||||
@@ -43,7 +43,7 @@
|
||||
return 1
|
||||
|
||||
updatehealth()
|
||||
src.health = 200 - src.oxyloss - src.fireloss - src.bruteloss
|
||||
src.health = 200 - src.getOxyLoss() - src.fireloss - src.getBruteLoss()
|
||||
|
||||
xcom_attack(mob/living/carbon/human/target as mob)
|
||||
if(!ishuman(target))
|
||||
|
||||
@@ -45,10 +45,10 @@
|
||||
stunned = max(stunned,0)
|
||||
paralysis = max(paralysis, 0)
|
||||
weakened = max(weakened, 0)
|
||||
bruteloss = max(bruteloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
|
||||
handle_mutations_and_radiation()
|
||||
|
||||
@@ -144,9 +144,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 100 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 100 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 25) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 25) paralysis = max(paralysis, 3)
|
||||
|
||||
if(sleeping)
|
||||
paralysis = max(paralysis, 5)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
M.show_message(text("\red <B>[user] attacks [src]'s stomach wall with the [I.name]!"), 2)
|
||||
playsound(user.loc, 'attackblob.ogg', 50, 1)
|
||||
|
||||
if(prob(src.bruteloss - 50))
|
||||
if(prob(src.getBruteLoss() - 50))
|
||||
src.gib()
|
||||
|
||||
/mob/living/carbon/gib(give_medal)
|
||||
|
||||
@@ -115,8 +115,8 @@
|
||||
if (src.stat == 2 || (changeling && changeling.changeling_fakedeath == 1))
|
||||
usr << "\red [src] is limp and unresponsive, a dull lifeless look in [t_his] eyes."
|
||||
else
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 30)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << "\red [src.name] looks slightly injured!"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"
|
||||
|
||||
@@ -688,7 +688,7 @@
|
||||
M.pulling = null
|
||||
|
||||
//this is the gay blood on floor shit -- Added back -- Skie
|
||||
if (M.lying && (prob(M.bruteloss / 6)))
|
||||
if (M.lying && (prob(M.getBruteLoss() / 6)))
|
||||
var/turf/location = M.loc
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_blood(M)
|
||||
@@ -1874,7 +1874,7 @@ It can still be worn/put on as normal.
|
||||
return
|
||||
if ((target.health >= -99.0 && target.health < 0))
|
||||
target.cpr_time = world.time
|
||||
var/suff = min(target.oxyloss, 7)
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.oxyloss -= suff
|
||||
target.updatehealth()
|
||||
for(var/mob/O in viewers(source, null))
|
||||
@@ -2195,7 +2195,7 @@ It can still be worn/put on as normal.
|
||||
for(var/datum/organ/external/O in organs)
|
||||
src.bruteloss += O.brute_dam
|
||||
src.fireloss += O.burn_dam
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss - src.cloneloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.fireloss - src.getBruteLoss() - src.cloneloss
|
||||
|
||||
|
||||
/mob/living/carbon/human/abiotic(var/full_body = 0)
|
||||
|
||||
@@ -102,9 +102,9 @@
|
||||
paralysis = max(min(paralysis, 20), 0)
|
||||
weakened = max(min(weakened, 20), 0)
|
||||
sleeping = max(min(sleeping, 20), 0)
|
||||
bruteloss = max(bruteloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
oxygen_used = breath.oxygen*ratio/6
|
||||
oxygen_alert = max(oxygen_alert, 1)*/
|
||||
else // We're in safe limits
|
||||
oxyloss = max(oxyloss-5, 0)
|
||||
oxyloss = max(getOxyLoss()-5, 0)
|
||||
oxygen_used = breath.oxygen/6
|
||||
oxygen_alert = 0
|
||||
|
||||
@@ -603,11 +603,11 @@
|
||||
if(light_amount > 0) //if there's enough light, heal
|
||||
if(fireloss)
|
||||
heal_overall_damage(0,1)
|
||||
if(bruteloss)
|
||||
if(getBruteLoss())
|
||||
heal_overall_damage(1,0)
|
||||
if(toxloss)
|
||||
if(getToxLoss())
|
||||
toxloss--
|
||||
if(oxyloss)
|
||||
if(getOxyLoss())
|
||||
oxyloss--
|
||||
|
||||
if(overeatduration > 500 && !(mutations & FAT))
|
||||
@@ -656,9 +656,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
// health = 100 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
// health = 100 - (getOxyLoss() + getToxLoss() + fireloss + bruteloss + cloneloss)
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(sleeping)
|
||||
paralysis = max(paralysis, 3)
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [] is limp and unresponsive.", src.name)
|
||||
else
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 40)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 40)
|
||||
usr << text("\red [] has some punctures in its flesh!", src.name)
|
||||
else
|
||||
usr << text("\red <B>[] has a lot of punctures and tears in its flesh!</B>", src.name)
|
||||
|
||||
@@ -396,9 +396,9 @@
|
||||
handle_regular_status_updates()
|
||||
|
||||
if(istype(src, /mob/living/carbon/metroid/adult))
|
||||
health = 200 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 200 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
else
|
||||
health = 150 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 150 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
|
||||
|
||||
@@ -416,11 +416,11 @@
|
||||
if(src.stat != 2) src.stat = 1
|
||||
|
||||
if(prob(30))
|
||||
if(oxyloss>0) oxyloss = max(oxyloss-1, 0)
|
||||
if(toxloss>0) toxloss = max(toxloss-1, 0)
|
||||
if(getOxyLoss()>0) oxyloss = max(getOxyLoss()-1, 0)
|
||||
if(getToxLoss()>0) toxloss = max(getToxLoss()-1, 0)
|
||||
if(fireloss>0) fireloss = max(fireloss-1,0)
|
||||
if(cloneloss>0) cloneloss = max(cloneloss-1,0)
|
||||
if(bruteloss>0) bruteloss = max(bruteloss-1,0)
|
||||
if(getBruteLoss()>0) bruteloss = max(getBruteLoss()-1,0)
|
||||
|
||||
|
||||
if (src.stat == 2)
|
||||
|
||||
@@ -648,9 +648,9 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
|
||||
if (nodamage == 0)
|
||||
// metroids can't suffocate unless they suicide. They are also not harmed by fire
|
||||
if(istype(src, /mob/living/carbon/metroid/adult))
|
||||
health = 200 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 200 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
else
|
||||
health = 150 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 150 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
else
|
||||
if(istype(src, /mob/living/carbon/metroid/adult))
|
||||
health = 200
|
||||
|
||||
@@ -76,14 +76,14 @@
|
||||
if(Victim.health <= 0)
|
||||
Victim.toxloss += rand(2,4)
|
||||
|
||||
if(toxloss > 0)
|
||||
toxloss = max(0, toxloss-10)
|
||||
if(getToxLoss() > 0)
|
||||
toxloss = max(0, getToxLoss()-10)
|
||||
|
||||
if(oxyloss > 0)
|
||||
oxyloss = max(0, oxyloss-10)
|
||||
if(getOxyLoss() > 0)
|
||||
oxyloss = max(0, getOxyLoss()-10)
|
||||
|
||||
if(bruteloss > 0)
|
||||
bruteloss = max(0, bruteloss-10)
|
||||
if(getBruteLoss() > 0)
|
||||
bruteloss = max(0, getBruteLoss()-10)
|
||||
|
||||
if(fireloss > 0)
|
||||
fireloss = max(0, fireloss-10)
|
||||
@@ -96,9 +96,9 @@
|
||||
if(Metroid.Victim == M && Metroid != src)
|
||||
Metroid.Feedstop()
|
||||
|
||||
if(toxloss<0) toxloss = 0
|
||||
if(oxyloss<0) oxyloss = 0
|
||||
if(bruteloss<0) bruteloss = 0
|
||||
if(getToxLoss()<0) toxloss = 0
|
||||
if(getOxyLoss()<0) oxyloss = 0
|
||||
if(getBruteLoss()<0) bruteloss = 0
|
||||
if(fireloss<0) fireloss = 0
|
||||
if(cloneloss<0) cloneloss = 0
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [] is limp and unresponsive, a dull lifeless look in their eyes.", src.name)
|
||||
else
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 30)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << text("\red [] looks slightly bruised!", src.name)
|
||||
else
|
||||
usr << text("\red <B>[] looks severely bruised!</B>", src.name)
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
oxygen_used = breath.oxygen*ratio/6
|
||||
oxygen_alert = max(oxygen_alert, 1)*/
|
||||
else // We're in safe limits
|
||||
oxyloss = max(oxyloss-5, 0)
|
||||
oxyloss = max(getOxyLoss()-5, 0)
|
||||
oxygen_used = breath.oxygen/6
|
||||
oxygen_alert = 0
|
||||
|
||||
@@ -397,9 +397,9 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = 100 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
|
||||
health = 100 - (getOxyLoss() + getToxLoss() + fireloss + getBruteLoss() + cloneloss)
|
||||
|
||||
if(oxyloss > 25) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 25) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 5)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
bruteloss += 30
|
||||
if ((O.icon_state == "flaming" && !( shielded )))
|
||||
fireloss += 40
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
return
|
||||
|
||||
//mob/living/carbon/monkey/bullet_act(var/obj/item/projectile/Proj)taken care of in living
|
||||
@@ -139,7 +139,7 @@
|
||||
O.show_message("\red <B>[M.name] has bit [name]!</B>", 1)
|
||||
var/damage = rand(1, 5)
|
||||
bruteloss += damage
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(istype(D, /datum/disease/jungle_fever))
|
||||
contract_disease(D,1,0)
|
||||
@@ -536,16 +536,16 @@
|
||||
if(1.0)
|
||||
if (stat != 2)
|
||||
bruteloss += 200
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
if(2.0)
|
||||
if (stat != 2)
|
||||
bruteloss += 60
|
||||
fireloss += 60
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
if(3.0)
|
||||
if (stat != 2)
|
||||
bruteloss += 30
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
if (prob(50))
|
||||
paralysis += 10
|
||||
else
|
||||
@@ -554,7 +554,7 @@
|
||||
/mob/living/carbon/monkey/blob_act()
|
||||
if (stat != 2)
|
||||
fireloss += 60
|
||||
health = 100 - oxyloss - toxloss - fireloss - bruteloss
|
||||
health = 100 - getOxyLoss() - getToxLoss() - fireloss - getBruteLoss()
|
||||
if (prob(50))
|
||||
paralysis += 10
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
set hidden = 1
|
||||
if ((src.health < 0 && src.health > -95.0))
|
||||
src.oxyloss += src.health + 200
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.fireloss - src.getBruteLoss()
|
||||
src << "\blue You have given up life and succumbed to death."
|
||||
|
||||
|
||||
/mob/living/proc/updatehealth()
|
||||
if(!src.nodamage)
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss - src.cloneloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.fireloss - src.getBruteLoss() - src.cloneloss
|
||||
else
|
||||
src.health = 100
|
||||
src.stat = 0
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
// heal ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
||||
bruteloss = max(0, bruteloss-brute)
|
||||
bruteloss = max(0, getBruteLoss()-brute)
|
||||
fireloss = max(0, fireloss-burn)
|
||||
src.updatehealth()
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
// heal MANY external organs, in random order
|
||||
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
||||
bruteloss = max(0, bruteloss-brute)
|
||||
bruteloss = max(0, getBruteLoss()-brute)
|
||||
fireloss = max(0, fireloss-burn)
|
||||
src.updatehealth()
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
/mob/living/silicon/ai/ex_act(severity)
|
||||
flick("flash", flash)
|
||||
|
||||
var/b_loss = bruteloss
|
||||
var/b_loss = getBruteLoss()
|
||||
var/f_loss = fireloss
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [] is powered-down.", src.name)
|
||||
else
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 30)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << text("\red [] looks slightly dented", src.name)
|
||||
else
|
||||
usr << text("\red <B>[] looks severely dented!</B>", src.name)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
src << "Alert cancelled. Power has been restored without our assistance."
|
||||
src:aiRestorePowerRoutine = 0
|
||||
spawn(1)
|
||||
while (src.oxyloss>0 && stat!=2)
|
||||
while (src.getOxyLoss()>0 && stat!=2)
|
||||
sleep(50)
|
||||
src.oxyloss-=1
|
||||
src.oxyloss = 0
|
||||
@@ -85,7 +85,7 @@
|
||||
src << "Alert cancelled. Power has been restored."
|
||||
src:aiRestorePowerRoutine = 0
|
||||
spawn(1)
|
||||
while (src.oxyloss>0 && stat!=2)
|
||||
while (src.getOxyLoss()>0 && stat!=2)
|
||||
sleep(50)
|
||||
src.oxyloss-=1
|
||||
src.oxyloss = 0
|
||||
@@ -239,9 +239,9 @@
|
||||
/mob/living/silicon/ai/updatehealth()
|
||||
if (src.nodamage == 0)
|
||||
if(src.fire_res_on_core)
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.bruteloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getBruteLoss()
|
||||
else
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 100
|
||||
src.stat = 0
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/mob/living/silicon/decoy/updatehealth()
|
||||
if (src.nodamage == 0)
|
||||
src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
|
||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 100
|
||||
src.stat = 0
|
||||
@@ -6,8 +6,8 @@
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [] appears disabled.", src.name)
|
||||
else
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 30)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
usr << text("\red [] looks slightly dented", src.name)
|
||||
else
|
||||
usr << text("\red <B>[]'s casing appears cracked and broken!</B>", src.name)
|
||||
|
||||
@@ -23,4 +23,4 @@
|
||||
src.health = 100
|
||||
src.stat = 0
|
||||
else
|
||||
src.health = 100 - src.bruteloss - src.fireloss
|
||||
src.health = 100 - src.getBruteLoss() - src.fireloss
|
||||
@@ -83,7 +83,7 @@
|
||||
/mob/living/silicon/pai/ex_act(severity)
|
||||
flick("flash", src.flash)
|
||||
|
||||
var/b_loss = src.bruteloss
|
||||
var/b_loss = src.getBruteLoss()
|
||||
var/f_loss = src.fireloss
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
|
||||
@@ -469,10 +469,10 @@
|
||||
dat += {"Bioscan Results for [M]: <br>"
|
||||
Overall Status: [M.stat > 1 ? "dead" : "[M.health]% healthy"] <br>
|
||||
Scan Breakdown: <br>
|
||||
Respiratory: [M.oxyloss > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.oxyloss]</font><br>
|
||||
Toxicology: [M.toxloss > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.toxloss]</font><br>
|
||||
Respiratory: [M.getOxyLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.getOxyLoss()]</font><br>
|
||||
Toxicology: [M.getToxLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.getToxLoss()]</font><br>
|
||||
Burns: [M.fireloss > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.fireloss]</font><br>
|
||||
Structural Integrity: [M.bruteloss > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.bruteloss]</font><br>
|
||||
Structural Integrity: [M.getBruteLoss() > 50 ? "<font color=#FF5555>" : "<font color=#55FF55>"][M.getBruteLoss()]</font><br>
|
||||
Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)<br>
|
||||
"}
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
usr << text("\blue This is \icon[src] <B>[src.name]</B>!")
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [src.name] is powered-down.")
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 75)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 75)
|
||||
usr << text("\red [src.name] looks slightly dented")
|
||||
else
|
||||
usr << text("\red <B>[src.name] looks severely dented!</B>")
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
paralysis = max(min(paralysis, 30), 0)
|
||||
weakened = max(min(weakened, 20), 0)
|
||||
sleeping = 0
|
||||
bruteloss = max(bruteloss, 0)
|
||||
toxloss = max(toxloss, 0)
|
||||
oxyloss = max(oxyloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = max(getToxLoss(), 0)
|
||||
oxyloss = max(getOxyLoss(), 0)
|
||||
fireloss = max(fireloss, 0)
|
||||
|
||||
use_power()
|
||||
@@ -87,9 +87,9 @@
|
||||
if(src.stat)
|
||||
src.camera.status = 0
|
||||
|
||||
health = 200 - (oxyloss + fireloss + bruteloss)
|
||||
health = 200 - (getOxyLoss() + fireloss + getBruteLoss())
|
||||
|
||||
if(oxyloss > 50) paralysis = max(paralysis, 3)
|
||||
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
|
||||
|
||||
if(src.sleeping)
|
||||
src.paralysis = max(src.paralysis, 3)
|
||||
|
||||
@@ -97,46 +97,25 @@
|
||||
if("Medical")
|
||||
module = new /obj/item/weapon/robot_module/medical(src)
|
||||
hands.icon_state = "medical"
|
||||
var/icontype = input("Select an icon!", "Robot", null, null) in list("Kent", "Medbot", "Surgeon")
|
||||
if(icontype == "Kent")
|
||||
icon_state = "toiletbot"
|
||||
else if(icontype == "Medbot")
|
||||
icon_state = "Medbot"
|
||||
else if(icontype == "Surgeon")
|
||||
icon_state = "surgeon"
|
||||
icon_state = "surgeon"
|
||||
modtype = "Med"
|
||||
|
||||
if("Security")
|
||||
module = new /obj/item/weapon/robot_module/security(src)
|
||||
hands.icon_state = "security"
|
||||
var/icontype = input("Select an icon!", "Robot", null, null) in list("Armored", "Robocop", "Robocop Red", "Heavy Duty", "Bloodhound")
|
||||
if(icontype == "Armored")
|
||||
icon_state = "Security"
|
||||
else if(icontype == "Robocop")
|
||||
icon_state = "Security2"
|
||||
else if(icontype == "Robocop Red")
|
||||
icon_state = "Security3"
|
||||
else if(icontype == "Heavy Duty")
|
||||
icon_state = "secborg"
|
||||
else if(icontype == "Bloodhound")
|
||||
icon_state = "bloodhound"
|
||||
icon_state = "bloodhound"
|
||||
modtype = "Sec"
|
||||
|
||||
if("Engineering")
|
||||
module = new /obj/item/weapon/robot_module/engineering(src)
|
||||
hands.icon_state = "engineer"
|
||||
|
||||
var/icontype = input("Select an icon!", "Robot", null, null) in list("Engineer", "Engiseer")
|
||||
if(icontype == "Engineer")
|
||||
icon_state = "Engineering"
|
||||
else
|
||||
icon_state = "Engineering2"
|
||||
icon_state = "landmate"
|
||||
modtype = "Eng"
|
||||
|
||||
if("Janitor")
|
||||
module = new /obj/item/weapon/robot_module/janitor(src)
|
||||
hands.icon_state = "janitor"
|
||||
icon_state = "Janbot"
|
||||
icon_state = "mopgearrex"
|
||||
modtype = "Jan"
|
||||
|
||||
overlays -= "eyes" //Takes off the eyes that it started with
|
||||
@@ -217,7 +196,7 @@
|
||||
del(src)
|
||||
return
|
||||
|
||||
var/b_loss = bruteloss
|
||||
var/b_loss = getBruteLoss()
|
||||
var/f_loss = fireloss
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -338,7 +317,7 @@
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:remove_fuel(0))
|
||||
bruteloss -= 30
|
||||
if(bruteloss < 0) bruteloss = 0
|
||||
if(getBruteLoss() < 0) bruteloss = 0
|
||||
updatehealth()
|
||||
add_fingerprint(user)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
@@ -666,6 +645,12 @@
|
||||
if(icon_state == "bloodhound")
|
||||
overlays = null
|
||||
overlays += "eyes-bloodhound"
|
||||
if(icon_state =="landmate")
|
||||
overlays = null
|
||||
overlays += "eyes-landmate"
|
||||
if(icon_state =="mopgearrex")
|
||||
overlays = null
|
||||
overlays += "eyes-mopgearrex"
|
||||
else
|
||||
overlays -= "eyes"
|
||||
|
||||
|
||||
@@ -391,16 +391,16 @@ var/global/list/uneatable = list(
|
||||
|
||||
toxmob()
|
||||
var/toxrange = 10
|
||||
var/toxloss = 4
|
||||
var/toxdamage = 4 // changed the name to toxdamage from toxloss to prevent further conflicts
|
||||
var/radiation = 5
|
||||
if (src.energy>200)
|
||||
toxloss = round(((src.energy-150)/50)*4,1)
|
||||
toxdamage = round(((src.energy-150)/50)*4,1)
|
||||
radiation = round(((src.energy-150)/50)*5,1)
|
||||
for(var/mob/living/M in view(toxrange, src.loc))
|
||||
if(istype(M,/mob/living/))
|
||||
M.apply_effect(rand(radiation), IRRADIATE)
|
||||
toxloss = (toxloss - (toxloss*M.getarmor(null, "rad")))
|
||||
M.apply_effect(toxloss, TOX)
|
||||
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
|
||||
M.apply_effect(toxdamage, TOX)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
usr << text("\blue This is \icon[src] <B>[src.name]</B>!")
|
||||
if (src.stat == 2)
|
||||
usr << text("\red [src.name] is powered-down.")
|
||||
if (src.bruteloss)
|
||||
if (src.bruteloss < 75)
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 75)
|
||||
usr << text("\red [src.name] looks slightly dented")
|
||||
else
|
||||
usr << text("\red <B>[src.name] looks severely dented!</B>")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
del(src)
|
||||
return
|
||||
|
||||
var/b_loss = src.bruteloss
|
||||
var/b_loss = src.getBruteLoss()
|
||||
var/f_loss = src.fireloss
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
@@ -187,7 +187,7 @@
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||
if (W:remove_fuel(0))
|
||||
src.bruteloss -= 30
|
||||
if(src.bruteloss < 0) src.bruteloss = 0
|
||||
if(src.getBruteLoss() < 0) src.bruteloss = 0
|
||||
src.updatehealth()
|
||||
src.add_fingerprint(user)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
paralysis = max(min(paralysis, 1), 0)
|
||||
weakened = max(min(weakened, 15), 0)
|
||||
sleeping = max(min(sleeping, 1), 0)
|
||||
bruteloss = max(bruteloss, 0)
|
||||
bruteloss = max(getBruteLoss(), 0)
|
||||
toxloss = 0
|
||||
oxyloss = 0
|
||||
fireloss = max(fireloss, 0)
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
handle_regular_status_updates()
|
||||
|
||||
health = src.health_max - (fireloss + bruteloss)
|
||||
health = src.health_max - (fireloss + getBruteLoss())
|
||||
|
||||
if(health <= 0)
|
||||
death()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/mob/living/silicon/hive_mainframe/updatehealth()
|
||||
if (src.nodamage == 0)
|
||||
src.health = 100 - src.fireloss - src.bruteloss
|
||||
src.health = 100 - src.fireloss - src.getBruteLoss()
|
||||
else
|
||||
src.health = 100
|
||||
src.stat = 0
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
var/dat = "\blue Analyzing Results for [C]:\n"
|
||||
dat += "\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]\n"
|
||||
dat += "\blue \t Damage Specifics: [C.oxyloss > 50 ? "\red" : "\blue"][C.oxyloss]-[C.toxloss > 50 ? "\red" : "\blue"][C.toxloss]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.bruteloss > 50 ? "\red" : "\blue"][C.bruteloss]\n"
|
||||
dat += "\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.fireloss > 50 ? "\red" : "\blue"][C.fireloss]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]\n"
|
||||
dat += "\blue \t Key: Suffocation/Toxin/Burns/Brute\n"
|
||||
dat += "\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)"
|
||||
if(C.virus)
|
||||
|
||||
Reference in New Issue
Block a user