@@ -192,7 +192,7 @@
|
||||
stage = 3
|
||||
maxm = 3
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.toxloss += (2*multiplier)
|
||||
mob.adjustToxLoss(2*multiplier)
|
||||
|
||||
/datum/disease2/effect/scream
|
||||
name = "Random screaming syndrome"
|
||||
@@ -261,7 +261,7 @@
|
||||
name = "Toxification syndrome"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.toxloss += 15
|
||||
mob.adjustToxLoss(15)
|
||||
/*
|
||||
/datum/disease2/effect/hallucinations
|
||||
name = "Hallucinational Syndrome"
|
||||
|
||||
@@ -35,8 +35,8 @@
|
||||
if(M.virus2)
|
||||
M.virus2.cure_added(resistance)
|
||||
else if(works == 1)
|
||||
M.toxloss += rand(20,50)
|
||||
M.adjustToxLoss(rand(20,50))
|
||||
else if(works == 2)
|
||||
M.toxloss += rand(50,100)
|
||||
M.adjustToxLoss(rand(50,100))
|
||||
else if(works == 3)
|
||||
infect_virus2(M,virus2,1)
|
||||
|
||||
@@ -51,11 +51,11 @@
|
||||
if(prob(2))
|
||||
affected_mob << "\red Your stomach hurts."
|
||||
if(prob(20))
|
||||
affected_mob.toxloss += 1
|
||||
affected_mob.adjustToxLoss(1)
|
||||
affected_mob.updatehealth()
|
||||
if(5)
|
||||
affected_mob << "\red You feel something tearing its way out of your stomach..."
|
||||
affected_mob.toxloss += 10
|
||||
affected_mob.adjustToxLoss(10)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(40))
|
||||
ASSERT(gibbed == 0)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if(prob(3))
|
||||
affected_mob << "\red You feel a stabbing pain in your abdomen!"
|
||||
affected_mob.stunned = rand(2,3)
|
||||
affected_mob.toxloss += 1
|
||||
affected_mob.adjustToxLoss(1)
|
||||
if(3)
|
||||
if(prob(1))
|
||||
if (affected_mob.nutrition > 100)
|
||||
@@ -32,8 +32,8 @@
|
||||
if (istype(location, /turf/simulated))
|
||||
location.add_vomit_floor(affected_mob)
|
||||
affected_mob.nutrition -= 95
|
||||
affected_mob:toxloss = max(affected_mob:getToxLoss()-1,0)
|
||||
affected_mob:adjustToxLoss(-1)
|
||||
else
|
||||
affected_mob << "\red You gag as you want to throw up, but there's nothing in your stomach!"
|
||||
affected_mob.weakened += 10
|
||||
affected_mob.toxloss += 3
|
||||
affected_mob.adjustToxLoss(3)
|
||||
@@ -36,7 +36,7 @@
|
||||
if(prob(2))
|
||||
affected_mob << "\red Your try to remember something important...but can't."
|
||||
/* if(prob(10))
|
||||
affected_mob.toxloss +=3
|
||||
affected_mob.adjustToxLoss(3)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(2))
|
||||
affected_mob << "\red Your head hurts." */
|
||||
@@ -46,7 +46,7 @@
|
||||
if(prob(2))
|
||||
affected_mob.emote("drool")
|
||||
/* if(prob(15))
|
||||
affected_mob.toxloss +=4
|
||||
affected_mob.adjustToxLoss(4)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(2))
|
||||
affected_mob << "\red Your head hurts." */
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
if(prob(1))
|
||||
affected_mob << "\red Your stomach hurts."
|
||||
if(prob(20))
|
||||
affected_mob.toxloss += 2
|
||||
affected_mob.adjustToxLoss(2)
|
||||
affected_mob.updatehealth()
|
||||
if(4)
|
||||
if(!src.transformed)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
if(prob(1))
|
||||
affected_mob << "\red Your stomach hurts."
|
||||
if(prob(20))
|
||||
affected_mob.toxloss += 1
|
||||
affected_mob.adjustToxLoss(1)
|
||||
affected_mob.updatehealth()
|
||||
|
||||
if(3)
|
||||
@@ -49,6 +49,6 @@
|
||||
if(prob(1))
|
||||
affected_mob << "\red Your stomach hurts."
|
||||
if(prob(20))
|
||||
affected_mob.toxloss += 1
|
||||
affected_mob.adjustToxLoss(1)
|
||||
affected_mob.updatehealth()
|
||||
return
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
switch(stage)
|
||||
if(2)
|
||||
if(prob(45))
|
||||
affected_mob.toxloss += 5
|
||||
affected_mob.adjustToxLoss(5)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(1))
|
||||
affected_mob.emote("sneeze")
|
||||
@@ -30,7 +30,7 @@
|
||||
if(4)
|
||||
if(prob(10))
|
||||
affected_mob.emote("cough")
|
||||
affected_mob.toxloss += 5
|
||||
affected_mob.adjustToxLoss(5)
|
||||
affected_mob.updatehealth()
|
||||
if(5)
|
||||
affected_mob << "\red Your body feels as if it's trying to rip itself open..."
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if(affected_mob.ckey == "rosham")
|
||||
src.cure()
|
||||
if(prob(45))
|
||||
affected_mob.toxloss += 5
|
||||
affected_mob.adjustToxLoss(5)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(1))
|
||||
affected_mob << "\red You feel strange..."
|
||||
@@ -39,7 +39,7 @@
|
||||
affected_mob.emote("gasp")
|
||||
affected_mob << "\red You feel a burning beat inside..."
|
||||
if(prob(20))
|
||||
affected_mob.toxloss += 5
|
||||
affected_mob.adjustToxLoss(5)
|
||||
affected_mob.updatehealth()
|
||||
if(5)
|
||||
if(affected_mob.ckey == "rosham")
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
affected_mob << "\red You can feel... something...inside you."
|
||||
if(5)
|
||||
affected_mob <<"\red Your skin feels as if it's about to burst off..."
|
||||
affected_mob.toxloss += 10
|
||||
affected_mob.adjustToxLoss(10)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(40)) //So everyone can feel like robot Seth Brundle
|
||||
ASSERT(src.gibbed == 0)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
affected_mob << "\red You can feel... something...inside you."
|
||||
if(5)
|
||||
affected_mob <<"\red Your skin feels impossibly calloused..."
|
||||
affected_mob.toxloss += 10
|
||||
affected_mob.adjustToxLoss(10)
|
||||
affected_mob.updatehealth()
|
||||
if(prob(40))
|
||||
ASSERT(gibbed == 0)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
target.heal_overall_damage(amt_dam_brute,0)
|
||||
else if (amt_dam_fire <= 0)
|
||||
target.heal_overall_damage(amt_dam_brute,amt_dam_fire)
|
||||
target.toxloss += amt_dam_tox
|
||||
target.adjustToxLoss(amt_dam_tox)
|
||||
target.oxyloss += amt_dam_oxy
|
||||
//disabling
|
||||
target.weakened += amt_weaken
|
||||
|
||||
@@ -450,6 +450,10 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
/mob/proc/getCloneLoss()
|
||||
return cloneloss
|
||||
|
||||
/mob/proc/adjustToxLoss(var/amount)
|
||||
toxloss = max(toxloss + amount, 0)
|
||||
|
||||
|
||||
|
||||
// Standard for setting hasn't been agreed upon yet.
|
||||
|
||||
@@ -461,13 +465,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
||||
/mob/proc/setOxyLoss(var/T)
|
||||
oxyloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setToxLoss(var/T)
|
||||
toxloss = T
|
||||
|
||||
|
||||
|
||||
/mob/proc/setFireLoss(var/T)
|
||||
fireloss = T
|
||||
|
||||
|
||||
@@ -894,7 +894,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
)
|
||||
|
||||
C.oxyloss = max(0, C.oxyloss-25)
|
||||
C.toxloss = max(0, C.toxloss-25)
|
||||
C.adjustToxLoss(-25)
|
||||
|
||||
if(istype(C, /mob/living/carbon/human))
|
||||
// ------- YOUR TARGET IS HUMAN -------
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
connected = null
|
||||
O.name = text("monkey ([])",copytext(md5(M.real_name), 2, 6))
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.fireloss)
|
||||
O.toxloss += (M.getToxLoss() + 20)
|
||||
O.adjustToxLoss(M.getToxLoss() + 20)
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.stat = M.stat
|
||||
O.a_intent = "hurt"
|
||||
@@ -467,7 +467,7 @@
|
||||
i++
|
||||
updateappearance(O,O.dna.uni_identity)
|
||||
O.take_overall_damage(M.getBruteLoss(), M.fireloss)
|
||||
O.toxloss += M.getToxLoss()
|
||||
O.adjustToxLoss(M.getToxLoss())
|
||||
O.oxyloss += M.getOxyLoss()
|
||||
O.stat = M.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
while (src.occupant.health < 100)
|
||||
src.occupant.oxyloss = max (src.occupant.getOxyLoss()-1, 0)
|
||||
src.occupant.fireloss = max (src.occupant.fireloss-1, 0)
|
||||
src.occupant.toxloss = max (src.occupant.getToxLoss()-1, 0)
|
||||
src.occupant.adjustToxLoss(-1)
|
||||
src.occupant.bruteloss = max (src.occupant.getBruteLoss()-1, 0)
|
||||
src.occupant.updatehealth()
|
||||
if (src.occupant.health >= 0 && src.occupant.stat == 2)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
//severe damage should heal waaay slower without proper chemicals
|
||||
if(occupant.bodytemperature < 225)
|
||||
if (occupant.getToxLoss())
|
||||
occupant.toxloss = max(0, occupant.getToxLoss() - min(1, 20/occupant.getToxLoss()))
|
||||
occupant.adjustToxLoss(max(-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)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/mob/verb/togglemidis()
|
||||
set category = "Special Verbs"
|
||||
set name = "Toggle Midis"
|
||||
set desc = "This will prevent further admin midis from playing, as well as cut off the current one."
|
||||
|
||||
if(istype(usr,/mob))
|
||||
var/mob/M = usr
|
||||
@@ -8,5 +9,8 @@
|
||||
|
||||
if(M.client)
|
||||
M.client.midis = !M.client.midis
|
||||
M << "You will now [M.client.midis? "start":"stop"] receiving any sounds uploaded by admins."
|
||||
if(!M.client.midis)
|
||||
M << sound(null, 0, 0, 777) // breaks the client's sound output on channel 777
|
||||
|
||||
M << "You will now [M.client.midis? "start":"stop"] receiving any sounds uploaded by admins[M.client.midis? "":", and any current midis playing have been disabled"]."
|
||||
return
|
||||
@@ -336,6 +336,7 @@ datum
|
||||
D.cure(0)
|
||||
*/
|
||||
|
||||
handle_reactions()
|
||||
return 0
|
||||
|
||||
for(var/A in typesof(/datum/reagent) - /datum/reagent)
|
||||
@@ -352,8 +353,11 @@ datum
|
||||
//debug
|
||||
update_total()
|
||||
my_atom.on_reagent_change()
|
||||
handle_reactions()
|
||||
return 0
|
||||
|
||||
handle_reactions()
|
||||
|
||||
return 1
|
||||
|
||||
remove_reagent(var/reagent, var/amount, var/safety)//Added a safety check for the trans_id_to
|
||||
|
||||
@@ -9,15 +9,17 @@
|
||||
icon = 'chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
var/energy = 25
|
||||
var/max_energy = 25
|
||||
var/max_energy = 75
|
||||
var/amount = 30
|
||||
var/beaker = null
|
||||
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine","sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron","copper","mercury","radium","water","ethanol","sugar","acid",)
|
||||
proc
|
||||
recharge()
|
||||
if(stat & BROKEN) return
|
||||
if(energy != max_energy)
|
||||
energy++
|
||||
use_power(50)
|
||||
spawn(600) recharge()
|
||||
use_power(2000) // This thing uses up alot of power (this is still low as shit for creating reagents from thin air)
|
||||
spawn(200) recharge()
|
||||
|
||||
New()
|
||||
recharge()
|
||||
@@ -40,41 +42,91 @@
|
||||
del(src)
|
||||
return
|
||||
|
||||
Topic(href, href_list)
|
||||
proc/updateWindow(mob/user as mob)
|
||||
winset(user, "chemdispenser.energy", "text=\"Energy: [src.energy]\"")
|
||||
winset(user, "chemdispenser.amount", "text=\"Amount: [src.amount]\"")
|
||||
if (beaker)
|
||||
winset(user, "chemdispenser.eject", "text=\"Eject beaker\"")
|
||||
else
|
||||
winset(user, "chemdispenser.eject", "text=\"\[Insert beaker\]\"")
|
||||
proc/initWindow(mob/user as mob)
|
||||
var/i = 0
|
||||
var list/nameparams = params2list(winget(user, "chemdispenser_reagents.template_name", "pos;size;type;image;image-mode"))
|
||||
var list/buttonparams = params2list(winget(user, "chemdispenser_reagents.template_dispense", "pos;size;type;image;image-mode;text;is-flat"))
|
||||
for(var/re in dispensable_reagents)
|
||||
for(var/da in typesof(/datum/reagent) - /datum/reagent)
|
||||
var/datum/reagent/temp = new da()
|
||||
if(temp.id == re)
|
||||
var list/newparams1 = nameparams.Copy()
|
||||
var list/newparams2 = buttonparams.Copy()
|
||||
var/posy = 8 + 40 * i
|
||||
newparams1["pos"] = text("8,[posy]")
|
||||
newparams2["pos"] = text("248,[posy]")
|
||||
newparams1["parent"] = "chemdispenser_reagents"
|
||||
newparams2["parent"] = "chemdispenser_reagents"
|
||||
newparams1["text"] = temp.name
|
||||
newparams2["command"] = text("skincmd \"chemdispenser;[temp.id]\"")
|
||||
winset(user, "chemdispenser_reagent_name[i]", list2params(newparams1))
|
||||
winset(user, "chemdispenser_reagent_dispense[i]", list2params(newparams2))
|
||||
i++
|
||||
winset(user, "chemdispenser_reagents", "size=340x[8 + 40 * i]")
|
||||
|
||||
SkinCmd(mob/user as mob, var/data as text)
|
||||
if(stat & BROKEN) return
|
||||
if(usr.stat || usr.restrained()) return
|
||||
if(!in_range(src, usr)) return
|
||||
|
||||
usr.machine = src
|
||||
|
||||
if (href_list["dispense"])
|
||||
if(!energy)
|
||||
var/dat = "Not enough energy.<BR><A href='?src=\ref[src];ok=1'>OK</A>"
|
||||
usr << browse("<TITLE>Chemical Dispenser</TITLE>Chemical dispenser:<BR>Energy = [energy]/[max_energy]<BR><BR>[dat]", "window=chem_dispenser")
|
||||
return
|
||||
var/id = href_list["dispense"]
|
||||
var/obj/item/weapon/reagent_containers/glass/dispenser/G = new/obj/item/weapon/reagent_containers/glass/dispenser(src.loc)
|
||||
switch(text2num(href_list["state"]))
|
||||
if(LIQUID)
|
||||
G.icon_state = "liquid"
|
||||
if(GAS)
|
||||
G.icon_state = "vapour"
|
||||
if(SOLID)
|
||||
G.icon_state = "solid"
|
||||
G.pixel_x = rand(-7, 7)
|
||||
G.pixel_y = rand(-7, 7)
|
||||
G.name += " ([lowertext(href_list["name"])])"
|
||||
G.reagents.add_reagent(id,30)
|
||||
energy--
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
if (data == "amountc")
|
||||
var/num = text2num(input("Enter desired output amount", "Amount", "30"))
|
||||
if (num)
|
||||
amount = text2num(num)
|
||||
else if (data == "eject")
|
||||
if (src.beaker)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = src.beaker
|
||||
B.loc = src.loc
|
||||
src.beaker = null
|
||||
else if (copytext(data, 1, 7) == "amount")
|
||||
if (text2num(copytext(data, 7)))
|
||||
amount = text2num(copytext(data, 7))
|
||||
else
|
||||
usr << browse(null, "window=chem_dispenser")
|
||||
return
|
||||
if (dispensable_reagents.Find(data) && beaker != null)
|
||||
var/obj/item/weapon/reagent_containers/glass/B = src.beaker
|
||||
var/datum/reagents/R = B.reagents
|
||||
var/space = R.maximum_volume - R.total_volume
|
||||
R.add_reagent(data, min(amount, energy * 10, space))
|
||||
energy = max(energy - min(amount, space) / 10, 0)
|
||||
|
||||
amount = round(amount, 10) // Chem dispenser doesnt really have that much prescion
|
||||
if (amount < 0) // Since the user can actually type the commands himself, some sanity checking
|
||||
amount = 0
|
||||
if (amount > 100)
|
||||
amount = 100
|
||||
|
||||
for(var/mob/player)
|
||||
if (player.machine == src && player.client)
|
||||
updateWindow(player)
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
|
||||
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
|
||||
if(!istype(B, /obj/item/weapon/reagent_containers/glass))
|
||||
return
|
||||
|
||||
if(src.beaker)
|
||||
user << "A beaker is already loaded into the machine."
|
||||
return
|
||||
|
||||
src.beaker = B
|
||||
user.drop_item()
|
||||
B.loc = src
|
||||
user << "You add the beaker to the machine!"
|
||||
for(var/mob/player)
|
||||
if (player.machine == src && player.client)
|
||||
updateWindow(player)
|
||||
|
||||
attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
@@ -85,16 +137,11 @@
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
user.machine = src
|
||||
var/dat = ""
|
||||
for(var/re in dispensable_reagents)
|
||||
for(var/da in typesof(/datum/reagent) - /datum/reagent)
|
||||
var/datum/reagent/temp = new da()
|
||||
if(temp.id == re)
|
||||
dat += "<A href='?src=\ref[src];dispense=[temp.id];state=[temp.reagent_state];name=[temp.name]'>[temp.name]</A><BR>"
|
||||
dat += "[temp.description]<BR><BR>"
|
||||
user << browse("<TITLE>Chemical Dispenser</TITLE>Chemical dispenser:<BR>Energy = [energy]/[max_energy]<BR><BR>[dat]", "window=chem_dispenser")
|
||||
|
||||
onclose(user, "chem_dispenser")
|
||||
initWindow(user)
|
||||
updateWindow(user)
|
||||
winshow(user, "chemdispenser", 1)
|
||||
user.skincmds["chemdispenser"] = src
|
||||
return
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -88,7 +88,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(10))
|
||||
M << "\red Your insides are burning!"
|
||||
M.toxloss+=rand(20,60)
|
||||
M.adjustToxLoss(rand(20,60))
|
||||
else if(prob(40))
|
||||
M:heal_organ_damage(5,0)
|
||||
..()
|
||||
@@ -250,7 +250,7 @@ datum
|
||||
T.wet_overlay = null
|
||||
|
||||
for(var/mob/living/carbon/metroid/M in T)
|
||||
M.toxloss+=rand(15,20)
|
||||
M.adjustToxLoss(rand(15,20))
|
||||
|
||||
var/hotspot = (locate(/obj/effect/hotspot) in T)
|
||||
if(hotspot && !istype(T, /turf/space))
|
||||
@@ -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:getToxLoss()-2,0)
|
||||
M:adjustToxLoss(-2)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -337,7 +337,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss += 1.5
|
||||
M:adjustToxLoss(1.5)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -350,7 +350,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss += 3
|
||||
M:adjustToxLoss(3)
|
||||
M:oxyloss += 3
|
||||
M:sleeping += 1
|
||||
..()
|
||||
@@ -580,7 +580,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss++
|
||||
M:adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -633,7 +633,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss++
|
||||
M:adjustToxLoss(1)
|
||||
M.take_organ_damage(0, 1)
|
||||
..()
|
||||
return
|
||||
@@ -687,7 +687,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss++
|
||||
M:adjustToxLoss(1)
|
||||
M.take_organ_damage(0, 1)
|
||||
..()
|
||||
return
|
||||
@@ -856,7 +856,7 @@ datum
|
||||
M.crit_op_stage = 0.0
|
||||
if (method==INGEST)
|
||||
usr << "Well, that was stupid."
|
||||
M:toxloss += 3
|
||||
M:adjustToxLoss(3)
|
||||
return
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
@@ -958,7 +958,7 @@ datum
|
||||
return
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss += 1
|
||||
M:adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -982,7 +982,7 @@ datum
|
||||
del(C)
|
||||
|
||||
for(var/mob/living/carbon/metroid/M in T)
|
||||
M.toxloss+=rand(5,10)
|
||||
M.adjustToxLoss(rand(5,10))
|
||||
|
||||
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
M.clean_blood()
|
||||
@@ -1016,7 +1016,7 @@ datum
|
||||
/* Don't know if this is necessary.
|
||||
on_mob_life(var/mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss += 3.0
|
||||
M:adjustToxLoss(3.0)
|
||||
..()
|
||||
return
|
||||
*/
|
||||
@@ -1035,9 +1035,9 @@ datum
|
||||
src = null
|
||||
if(istype(M, /mob/living/carbon))
|
||||
if(!M.wear_mask) // If not wearing a mask
|
||||
M:toxloss += 2 // 4 toxic damage per application, doubled for some reason
|
||||
M:adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason
|
||||
if(istype(M,/mob/living/carbon/human) && M:mutantrace == "plant") //plantmen take a LOT of damage
|
||||
M:toxloss += 10
|
||||
M:adjustToxLoss(10)
|
||||
//if(prob(10))
|
||||
//M.make_dizzy(1) doesn't seem to do anything
|
||||
|
||||
@@ -1053,7 +1053,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(holder.has_reagent("inaprovaline"))
|
||||
holder.remove_reagent("inaprovaline", 2)
|
||||
M:toxloss++
|
||||
M:adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
@@ -1202,7 +1202,7 @@ datum
|
||||
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:getToxLoss() && prob(40)) M:toxloss--
|
||||
if(M:getToxLoss() && prob(40)) M:adjustToxLoss(-1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1219,7 +1219,7 @@ datum
|
||||
M:oxyloss = 0
|
||||
M:radiation = 0
|
||||
M:heal_organ_damage(5,5)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-5)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-5)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 5)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
@@ -1280,7 +1280,7 @@ datum
|
||||
if(M:paralysis) M:paralysis--
|
||||
if(M:stunned) M:stunned--
|
||||
if(M:weakened) M:weakened--
|
||||
if(prob(60)) M:toxloss++
|
||||
if(prob(60)) M:adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -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:getToxLoss()) M:toxloss--
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-1)
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
..()
|
||||
@@ -1403,7 +1403,7 @@ datum
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-1)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-3)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1420,7 +1420,7 @@ datum
|
||||
if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-3)
|
||||
if(M:getOxyLoss()) M:oxyloss = max(0, M:getOxyLoss()-3)
|
||||
M:heal_organ_damage(3,3)
|
||||
if(M:getToxLoss()) M:toxloss = max(0, M:getToxLoss()-3)
|
||||
if(M:getToxLoss()) M:adjustToxLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1445,7 +1445,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss += 2
|
||||
M:adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1458,7 +1458,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:adjustToxLoss(0.5)
|
||||
M:weakened = max(M:weakened, 10)
|
||||
M:silent = max(M:silent, 10)
|
||||
..()
|
||||
@@ -1587,7 +1587,7 @@ datum
|
||||
M:sleeping += 1
|
||||
if(51 to INFINITY)
|
||||
M:sleeping += 1
|
||||
M:toxloss += (data - 50)
|
||||
M:adjustToxLoss(data - 50)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1609,7 +1609,7 @@ datum
|
||||
M:sleeping += 1
|
||||
if(51 to INFINITY)
|
||||
M:sleeping += 1
|
||||
M:toxloss += (data - 50)
|
||||
M:adjustToxLoss(data - 50)
|
||||
data++
|
||||
..()
|
||||
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.getToxLoss() - rand(5, 15)))
|
||||
M.adjustToxLoss(rand(-15, -5)))
|
||||
M.updatehealth()
|
||||
*/
|
||||
..()
|
||||
@@ -1701,7 +1701,7 @@ datum
|
||||
|
||||
reaction_turf(var/turf/simulated/T, var/volume)
|
||||
for(var/mob/living/carbon/metroid/M in T)
|
||||
M.toxloss+=rand(15,30)
|
||||
M.adjustToxLoss(rand(15,30))
|
||||
|
||||
sodiumchloride
|
||||
name = "Table Salt"
|
||||
@@ -1753,7 +1753,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:toxloss++
|
||||
M:adjustToxLoss(1)
|
||||
..()
|
||||
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:getToxLoss() && prob(20)) M:toxloss--
|
||||
if(M:getToxLoss() && prob(20)) M:adjustToxLoss(-1)
|
||||
M:nutrition++
|
||||
..()
|
||||
return
|
||||
@@ -2014,7 +2014,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M:nutrition += nutriment_factor
|
||||
M:toxloss += 1
|
||||
M:adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2168,7 +2168,7 @@ datum
|
||||
M:jitteriness = max(0,M:jitteriness-3)
|
||||
M:sleeping = 0
|
||||
if(M:getToxLoss() && prob(20))
|
||||
M:toxloss--
|
||||
M:adjustToxLoss(-1)
|
||||
if (M.bodytemperature < 310) //310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature+5)
|
||||
..()
|
||||
@@ -2205,7 +2205,7 @@ datum
|
||||
M:drowsyness = max(0,M:drowsyness-1)
|
||||
M:sleeping = 0
|
||||
if(M:getToxLoss() && prob(20))
|
||||
M:toxloss--
|
||||
M:adjustToxLoss(-1)
|
||||
if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature-5)
|
||||
return
|
||||
@@ -3033,7 +3033,7 @@ datum
|
||||
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:getToxLoss() && prob(50)) M:toxloss -= 2
|
||||
if(M:getToxLoss() && prob(50)) M:adjustToxLoss(-2)
|
||||
if(M.dizziness !=0) M.dizziness = max(0,M.dizziness-15)
|
||||
if(M.confused !=0) M.confused = max(0,M.confused - 5)
|
||||
..()
|
||||
|
||||
@@ -601,6 +601,7 @@
|
||||
|
||||
var/list/can_be_placed_into = list(
|
||||
/obj/machinery/chem_master/,
|
||||
/obj/machinery/chem_dispenser/,
|
||||
/obj/machinery/reagentgrinder,
|
||||
/obj/structure/table,
|
||||
/obj/structure/secure_closet,
|
||||
@@ -3163,4 +3164,4 @@
|
||||
icon_state = "jar"
|
||||
name = "empty jar"
|
||||
desc = "A jar. You're not sure what it's supposed to hold."
|
||||
return
|
||||
return
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
blob_act()
|
||||
src << "The blob attempts to reabsorb you."
|
||||
toxloss += 20
|
||||
adjustToxLoss(20)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Doesn't work on other aliens/AI.*/
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(50,1))
|
||||
toxloss -= 50
|
||||
adjustToxLoss(-50)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("\green <B>[src] has planted some alien weeds!</B>"), 1)
|
||||
new /obj/effect/alien/weeds/node(loc)
|
||||
@@ -36,7 +36,7 @@ Doesn't work on other aliens/AI.*/
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(5))
|
||||
toxloss -= 5
|
||||
adjustToxLoss(-5)
|
||||
for(var/obj/item/clothing/mask/facehugger/F in range(8,src))
|
||||
F.GoActive()
|
||||
emote("roar")
|
||||
@@ -48,7 +48,7 @@ Doesn't work on other aliens/AI.*/
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(10))
|
||||
toxloss -= 10
|
||||
adjustToxLoss(-10)
|
||||
var/msg = sanitize(input("Message:", "Alien Whisper") as text|null)
|
||||
if(msg)
|
||||
log_say("AlienWhisper: [key_name(src)]->[M.key] : [msg]")
|
||||
@@ -66,8 +66,8 @@ Doesn't work on other aliens/AI.*/
|
||||
if (amount)
|
||||
if(powerc(amount))
|
||||
if (get_dist(src,M) <= 1)
|
||||
M.toxloss += amount
|
||||
toxloss -= amount
|
||||
M.adjustToxLoss(amount)
|
||||
adjustToxLoss(-amount)
|
||||
M << "\green [src] has transfered [amount] plasma to you."
|
||||
src << {"\green You have trasferred [amount] plasma to [M]"}
|
||||
else
|
||||
@@ -101,7 +101,7 @@ I kind of like the right click only--the window version can get a little confusi
|
||||
if(!A == "Abort Command")
|
||||
if(powerc(200))//Check 2.
|
||||
if(A in view(1))//Check 3.
|
||||
toxloss -= 200
|
||||
adjustToxLoss(-200)
|
||||
A.acid(src)
|
||||
else
|
||||
src << "\green Target is too far away."
|
||||
@@ -115,7 +115,7 @@ I kind of like the right click only--the window version can get a little confusi
|
||||
if(istype(O, /obj))
|
||||
if(powerc(200))
|
||||
if(!O.unacidable)
|
||||
toxloss -= 200
|
||||
adjustToxLoss(-200)
|
||||
O.acid()
|
||||
else//So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid.
|
||||
src << "\green You cannot destroy this object."
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(500))
|
||||
toxloss -= 500
|
||||
adjustToxLoss(-500)
|
||||
src << "\green You begin to evolve!"
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("\green <B>[src] begins to twist and contort!</B>"), 1)
|
||||
@@ -40,7 +40,7 @@
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(100))
|
||||
toxloss -= 100
|
||||
adjustToxLoss(-100)
|
||||
var/choice = input("Choose what you wish to shape.","Resin building") as anything in list("resin wall","resin membrane") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
|
||||
src << "\green You shape a [choice]."
|
||||
for(var/mob/O in viewers(src, null))
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 150)
|
||||
toxloss += 5
|
||||
adjustToxLoss(5)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(50))
|
||||
toxloss -= 50
|
||||
adjustToxLoss(-50)
|
||||
alien_invis = 1.0
|
||||
src << "\green You are now invisible."
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 125)
|
||||
toxloss += 10
|
||||
adjustToxLoss(10)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
if(isalien(target))
|
||||
src << "\green Your allies are not a valid target."
|
||||
return
|
||||
toxloss -= 50
|
||||
adjustToxLoss(-50)
|
||||
src << "\green You spit neurotoxin at [target]."
|
||||
for(var/mob/O in oviewers())
|
||||
if ((O.client && !( O.blinded )))
|
||||
|
||||
@@ -149,12 +149,12 @@
|
||||
if(1 to 49)
|
||||
src.radiation--
|
||||
if(prob(25))
|
||||
src.toxloss++
|
||||
src.adjustToxLoss(1)
|
||||
src.updatehealth()
|
||||
|
||||
if(50 to 74)
|
||||
src.radiation -= 2
|
||||
src.toxloss++
|
||||
src.adjustToxLoss(1)
|
||||
if(prob(5))
|
||||
src.radiation -= 5
|
||||
src.weakened = 3
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
if(75 to 100)
|
||||
src.radiation -= 3
|
||||
src.toxloss += 3
|
||||
src.adjustToxLoss(3)
|
||||
if(prob(1))
|
||||
src << "\red You mutate!"
|
||||
randmutb(src)
|
||||
@@ -267,7 +267,7 @@
|
||||
|
||||
if(Toxins_pp) // Detect toxins in air
|
||||
|
||||
toxloss += breath.toxins*250
|
||||
adjustToxLoss(breath.toxins*250)
|
||||
toxins_alert = max(toxins_alert, 1)
|
||||
|
||||
toxins_used = breath.toxins
|
||||
@@ -295,7 +295,7 @@
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 100)
|
||||
toxloss += 15
|
||||
adjustToxLoss(15)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 250)
|
||||
toxloss += 20
|
||||
adjustToxLoss(20)
|
||||
if(getToxLoss() > max_plasma)
|
||||
toxloss = max_plasma
|
||||
else
|
||||
@@ -172,7 +172,7 @@
|
||||
return
|
||||
|
||||
if(powerc(50,1))//Can't plant eggs on spess tiles. That's silly.
|
||||
toxloss -= 200
|
||||
adjustToxLoss(-200)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(text("\green <B>[src] has laid an egg!</B>"), 1)
|
||||
new /obj/effect/alien/egg(loc)
|
||||
|
||||
@@ -129,12 +129,12 @@
|
||||
if(1 to 49)
|
||||
radiation--
|
||||
if(prob(25))
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
updatehealth()
|
||||
|
||||
if(50 to 74)
|
||||
radiation -= 2
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
if(prob(5))
|
||||
radiation -= 5
|
||||
weakened = 3
|
||||
@@ -144,7 +144,7 @@
|
||||
|
||||
if(75 to 100)
|
||||
radiation -= 3
|
||||
toxloss += 3
|
||||
adjustToxLoss(3)
|
||||
updatehealth()
|
||||
|
||||
update_mind()
|
||||
@@ -248,7 +248,7 @@
|
||||
|
||||
if(Toxins_pp) // Detect toxins in air
|
||||
|
||||
toxloss += breath.toxins*250
|
||||
adjustToxLoss(breath.toxins*250)
|
||||
toxins_alert = max(toxins_alert, 1)
|
||||
|
||||
toxins_used = breath.toxins
|
||||
@@ -276,7 +276,7 @@
|
||||
//If there are alien weeds on the ground then heal if needed or give some toxins
|
||||
if(locate(/obj/effect/alien/weeds) in loc)
|
||||
if(health >= 25)
|
||||
toxloss += 5
|
||||
adjustToxLoss(5)
|
||||
else
|
||||
bruteloss -= 5
|
||||
fireloss -= 5
|
||||
|
||||
@@ -62,12 +62,12 @@
|
||||
if(1 to 49)
|
||||
radiation--
|
||||
if(prob(25))
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
updatehealth()
|
||||
|
||||
if(50 to 74)
|
||||
radiation -= 2
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
if(prob(5))
|
||||
radiation -= 5
|
||||
weakened = 3
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
if(75 to 100)
|
||||
radiation -= 3
|
||||
toxloss += 3
|
||||
adjustToxLoss(3)
|
||||
if(prob(1))
|
||||
src << "\red You mutate!"
|
||||
randmutb(src)
|
||||
|
||||
@@ -190,12 +190,12 @@
|
||||
if(1 to 49)
|
||||
radiation--
|
||||
if(prob(25))
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
updatehealth()
|
||||
|
||||
if(50 to 74)
|
||||
radiation -= 2
|
||||
toxloss++
|
||||
adjustToxLoss(1)
|
||||
if(prob(5))
|
||||
radiation -= 5
|
||||
weakened = 3
|
||||
@@ -205,7 +205,7 @@
|
||||
|
||||
if(75 to 100)
|
||||
radiation -= 3
|
||||
toxloss += 3
|
||||
adjustToxLoss(3)
|
||||
if(prob(1))
|
||||
src << "\red You mutate!"
|
||||
randmutb(src)
|
||||
@@ -369,7 +369,7 @@
|
||||
|
||||
if(Toxins_pp > safe_toxins_max) // Too much toxins
|
||||
var/ratio = breath.toxins/safe_toxins_max
|
||||
toxloss += min(ratio, 10) //Limit amount of damage toxin exposure can do per second
|
||||
adjustToxLoss(min(ratio, 10)) //Limit amount of damage toxin exposure can do per second
|
||||
toxins_alert = max(toxins_alert, 1)
|
||||
else
|
||||
toxins_alert = 0
|
||||
@@ -605,8 +605,8 @@
|
||||
heal_overall_damage(0,1)
|
||||
if(getBruteLoss())
|
||||
heal_overall_damage(1,0)
|
||||
if(getToxLoss())
|
||||
toxloss--
|
||||
adjustToxLoss(-1)
|
||||
|
||||
if(getOxyLoss())
|
||||
oxyloss--
|
||||
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
|
||||
AIprocess() // the master AI process
|
||||
|
||||
if(AIproc || stat == 2) return
|
||||
if(AIproc || stat == 2 || client) return
|
||||
|
||||
var/hungry = 0
|
||||
var/starving = 0
|
||||
@@ -233,7 +233,7 @@
|
||||
if(Victim) // can't eat AND have this little process at the same time
|
||||
break
|
||||
|
||||
if(!Target)
|
||||
if(!Target || client)
|
||||
break
|
||||
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
|
||||
if(prob(30))
|
||||
if(getOxyLoss()>0) oxyloss = max(getOxyLoss()-1, 0)
|
||||
if(getToxLoss()>0) toxloss = max(getToxLoss()-1, 0)
|
||||
if(getToxLoss()>0) adjustToxLoss(-1)
|
||||
if(fireloss>0) fireloss = max(fireloss-1,0)
|
||||
if(cloneloss>0) cloneloss = max(cloneloss-1,0)
|
||||
if(getBruteLoss()>0) bruteloss = max(getBruteLoss()-1,0)
|
||||
@@ -486,7 +486,7 @@
|
||||
nutrition = 0
|
||||
if(prob(75))
|
||||
|
||||
toxloss+=rand(0,5)
|
||||
adjustToxLoss(rand(0,5))
|
||||
|
||||
else
|
||||
if(istype(src, /mob/living/carbon/metroid/adult))
|
||||
|
||||
@@ -72,12 +72,12 @@
|
||||
|
||||
if(istype(M, /mob/living/carbon))
|
||||
Victim.cloneloss += rand(1,10)
|
||||
Victim.toxloss += rand(1,2)
|
||||
Victim.adjustToxLoss(rand(1,2))
|
||||
if(Victim.health <= 0)
|
||||
Victim.toxloss += rand(2,4)
|
||||
Victim.adjustToxLoss(rand(2,4))
|
||||
|
||||
if(getToxLoss() > 0)
|
||||
toxloss = max(0, getToxLoss()-10)
|
||||
adjustToxLoss(-10)
|
||||
|
||||
if(getOxyLoss() > 0)
|
||||
oxyloss = max(0, getOxyLoss()-10)
|
||||
|
||||
@@ -149,12 +149,12 @@
|
||||
if(1 to 49)
|
||||
src.radiation--
|
||||
if(prob(25))
|
||||
src.toxloss++
|
||||
src.adjustToxLoss(1)
|
||||
src.updatehealth()
|
||||
|
||||
if(50 to 74)
|
||||
src.radiation -= 2
|
||||
src.toxloss++
|
||||
src.adjustToxLoss(1)
|
||||
if(prob(5))
|
||||
src.radiation -= 5
|
||||
src.weakened = 3
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
if(75 to 100)
|
||||
src.radiation -= 3
|
||||
src.toxloss += 3
|
||||
src.adjustToxLoss(3)
|
||||
if(prob(1))
|
||||
src << "\red You mutate!"
|
||||
randmutb(src)
|
||||
@@ -316,7 +316,7 @@
|
||||
|
||||
if(Toxins_pp > safe_toxins_max) // Too much toxins
|
||||
var/ratio = breath.toxins/safe_toxins_max
|
||||
toxloss += min(ratio, 10) //Limit amount of damage toxin exposure can do per second
|
||||
adjustToxLoss(min(ratio, 10)) //Limit amount of damage toxin exposure can do per second
|
||||
toxins_alert = max(toxins_alert, 1)
|
||||
else
|
||||
toxins_alert = 0
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
if(mutations & COLD_RESISTANCE) damage = 0
|
||||
fireloss += (damage/(blocked+1))
|
||||
if(TOX)
|
||||
toxloss += (damage/(blocked+1))
|
||||
adjustToxLoss(damage/(blocked+1))
|
||||
if(OXY)
|
||||
oxyloss += (damage/(blocked+1))
|
||||
if(CLONE)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
return 0
|
||||
|
||||
var/area/A = src.loc.loc // make sure it's in an area
|
||||
if(!A || !isarea(A))
|
||||
if(!A || !isarea(A) || !A.master)
|
||||
return 0 // if not, then not powered
|
||||
|
||||
return A.master.powered(chan) // return power status of the area
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
/obj/machinery/proc/use_power(var/amount, var/chan=EQUIP) // defaults to Equipment channel
|
||||
var/area/A = src.loc.loc // make sure it's in an area
|
||||
if(!A || !isarea(A))
|
||||
if(!A || !isarea(A) || !A.master)
|
||||
return
|
||||
|
||||
A.master.use_power(amount, chan)
|
||||
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -67,18 +67,10 @@ macro "macro"
|
||||
name = "CTRL+W"
|
||||
command = "attack-self"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD1+REP"
|
||||
command = ".southwest"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD2+REP"
|
||||
command = ".south"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD3+REP"
|
||||
command = ".southeast"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD4+REP"
|
||||
command = ".west"
|
||||
@@ -91,18 +83,10 @@ macro "macro"
|
||||
name = "NUMPAD6+REP"
|
||||
command = ".east"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD7+REP"
|
||||
command = ".northwest"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD8+REP"
|
||||
command = ".north"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD9+REP"
|
||||
command = ".northeast"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "MULTIPLY"
|
||||
command = "swap-hand"
|
||||
@@ -291,6 +275,360 @@ menu "menu"
|
||||
saved-params = "is-checked"
|
||||
|
||||
|
||||
window "chemdispenser"
|
||||
elem "chemdispenser"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 340x480
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "pos;size;is-minimized;is-maximized"
|
||||
on-size = ""
|
||||
title = "Chem Dispenser"
|
||||
titlebar = true
|
||||
statusbar = false
|
||||
can-close = true
|
||||
can-minimize = true
|
||||
can-resize = true
|
||||
is-pane = false
|
||||
is-minimized = false
|
||||
is-maximized = false
|
||||
can-scroll = none
|
||||
icon = ""
|
||||
image = ""
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
transparent-color = none
|
||||
alpha = 255
|
||||
macro = ""
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "energy"
|
||||
type = LABEL
|
||||
pos = 8,24
|
||||
size = 56x16
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
text = "Energy: 25"
|
||||
image = ""
|
||||
image-mode = center
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
elem "eject"
|
||||
type = BUTTON
|
||||
pos = 264,4
|
||||
size = 72x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Insert beaker]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;eject\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amountc"
|
||||
type = BUTTON
|
||||
pos = 208,4
|
||||
size = 48x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Other]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amountc\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount3"
|
||||
type = BUTTON
|
||||
pos = 176,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[30]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount30\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount2"
|
||||
type = BUTTON
|
||||
pos = 144,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[20]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount20\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount1"
|
||||
type = BUTTON
|
||||
pos = 112,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[10]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount10\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount"
|
||||
type = LABEL
|
||||
pos = 4,4
|
||||
size = 100x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 12
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
text = "Amount: 30"
|
||||
image = ""
|
||||
image-mode = center
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
elem "child1"
|
||||
type = CHILD
|
||||
pos = 0,40
|
||||
size = 340x440
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "splitter"
|
||||
on-size = ""
|
||||
left = "chemdispenser_reagents"
|
||||
right = ""
|
||||
is-vert = false
|
||||
splitter = 50
|
||||
show-splitter = true
|
||||
lock = none
|
||||
|
||||
window "chemdispenser_reagents"
|
||||
elem "chemdispenser_reagents"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 340x448
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "pos;size;is-minimized;is-maximized"
|
||||
on-size = ""
|
||||
title = ""
|
||||
titlebar = false
|
||||
statusbar = false
|
||||
can-close = false
|
||||
can-minimize = false
|
||||
can-resize = false
|
||||
is-pane = true
|
||||
is-minimized = false
|
||||
is-maximized = false
|
||||
can-scroll = vertical
|
||||
icon = ""
|
||||
image = ""
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
transparent-color = none
|
||||
alpha = 255
|
||||
macro = ""
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "template_dispense"
|
||||
type = BUTTON
|
||||
pos = 256,8
|
||||
size = 64x32
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Dispense"
|
||||
image = 'icons\\dispensebutton_bg.png'
|
||||
command = ""
|
||||
is-flat = true
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "template_name"
|
||||
type = LABEL
|
||||
pos = 18,8
|
||||
size = 230x32
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 15
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
text = "Chloral Hydrate"
|
||||
image = 'icons\\reagentname_bg.png'
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
|
||||
window "mainwindow"
|
||||
elem "mainwindow"
|
||||
type = MAIN
|
||||
@@ -920,7 +1258,7 @@ window "vendingslot"
|
||||
is-maximized = false
|
||||
can-scroll = none
|
||||
icon = ""
|
||||
image = 'icons\\vending_icons\\vendingslot_bg.png'
|
||||
image = 'icons\\vendingslot_bg.png'
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
transparent-color = none
|
||||
@@ -1012,7 +1350,7 @@ window "vendingslot"
|
||||
window "vendingwindow"
|
||||
elem "vendingwindow"
|
||||
type = MAIN
|
||||
pos = 758,177
|
||||
pos = 281,0
|
||||
size = 300x470
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
|
||||