diff --git a/code/WorkInProgress/virus2/Disease2/base.dm b/code/WorkInProgress/virus2/Disease2/base.dm index 5ccff0caf64..932d34a8420 100644 --- a/code/WorkInProgress/virus2/Disease2/base.dm +++ b/code/WorkInProgress/virus2/Disease2/base.dm @@ -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" diff --git a/code/WorkInProgress/virus2/Disease2/cureimplanter.dm b/code/WorkInProgress/virus2/Disease2/cureimplanter.dm index a6b484a2397..52247d995ef 100644 --- a/code/WorkInProgress/virus2/Disease2/cureimplanter.dm +++ b/code/WorkInProgress/virus2/Disease2/cureimplanter.dm @@ -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) diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm index 5e74eee0cec..1008c7f54b4 100644 --- a/code/datums/diseases/alien_embryo.dm +++ b/code/datums/diseases/alien_embryo.dm @@ -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) diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 949a6fbcc5a..2bc6032bca6 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -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 \ No newline at end of file + affected_mob.adjustToxLoss(3) \ No newline at end of file diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 473f024073e..a96dd660d1a 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -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." */ diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 92ea7c5057e..3712ad2d25d 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -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) diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index ee8a5d8d387..13f9e04d666 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -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 diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 62091b7715c..ceddf45117f 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -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..." diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 06afd7278e3..8e70770a4a4 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -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") diff --git a/code/datums/diseases/robotic_transformation.dm b/code/datums/diseases/robotic_transformation.dm index bd0e2b07bd4..f4363435e90 100644 --- a/code/datums/diseases/robotic_transformation.dm +++ b/code/datums/diseases/robotic_transformation.dm @@ -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) diff --git a/code/datums/diseases/xeno_transformation.dm b/code/datums/diseases/xeno_transformation.dm index 92dfe91c534..90d6d656ea8 100644 --- a/code/datums/diseases/xeno_transformation.dm +++ b/code/datums/diseases/xeno_transformation.dm @@ -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) diff --git a/code/datums/spells/inflict_handler.dm b/code/datums/spells/inflict_handler.dm index c22c49f2bd9..03c6685c25a 100644 --- a/code/datums/spells/inflict_handler.dm +++ b/code/datums/spells/inflict_handler.dm @@ -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 diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index f0353d0ec04..56575936ce6 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -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 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index 7b390a14da8..b052f56c7fe 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -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 ------- diff --git a/code/game/dna.dm b/code/game/dna.dm index 7404cbea1ef..47dab89e77a 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -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) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index d452b5eaa0c..e5de5447612 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -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) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index d9a1f10f716..924bbfdfc25 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -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) diff --git a/code/game/verbs/sound.dm b/code/game/verbs/sound.dm index 06b27939075..cced7b67b23 100644 --- a/code/game/verbs/sound.dm +++ b/code/game/verbs/sound.dm @@ -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 \ No newline at end of file diff --git a/code/modules/chemical/Chemistry-Holder.dm b/code/modules/chemical/Chemistry-Holder.dm index 1f927036c0f..9dccadb9393 100644 --- a/code/modules/chemical/Chemistry-Holder.dm +++ b/code/modules/chemical/Chemistry-Holder.dm @@ -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 diff --git a/code/modules/chemical/Chemistry-Machinery.dm b/code/modules/chemical/Chemistry-Machinery.dm index c34ce589154..09d6ce86357 100644 --- a/code/modules/chemical/Chemistry-Machinery.dm +++ b/code/modules/chemical/Chemistry-Machinery.dm @@ -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.
OK" - usr << browse("Chemical DispenserChemical dispenser:
Energy = [energy]/[max_energy]

[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 += "[temp.name]
" - dat += "[temp.description]

" - user << browse("Chemical DispenserChemical dispenser:
Energy = [energy]/[max_energy]

[dat]", "window=chem_dispenser") - onclose(user, "chem_dispenser") + initWindow(user) + updateWindow(user) + winshow(user, "chemdispenser", 1) + user.skincmds["chemdispenser"] = src return ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index df45f769bcd..8152683ca91 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -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) ..() diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index 4d533642e51..0cdb22bb219 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -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 \ No newline at end of file + return diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm index 84c61a0f7df..754a0cef0e5 100644 --- a/code/modules/mob/living/blob/blob.dm +++ b/code/modules/mob/living/blob/blob.dm @@ -67,7 +67,7 @@ blob_act() src << "The blob attempts to reabsorb you." - toxloss += 20 + adjustToxLoss(20) return diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index ec1bb65084e..81fa6ab7b39 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -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 [src] has planted some alien weeds!"), 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." diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index d79ceb9d19a..a812626b651 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -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 [src] begins to twist and contort!"), 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)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 50bbc47c680..ec396649eff 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -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)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 2cc8166bce3..40e669c0487 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -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 ))) diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 9c565e06539..a6f08cee3f7 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -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 diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index c491e3f5f67..72bcf28ad6d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -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 [src] has laid an egg!"), 1) new /obj/effect/alien/egg(loc) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index f6586579cb7..f42624d3c3b 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -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 diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index bd9277fa59b..1713e449595 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c6a6b28e2b5..4bbe1663bf5 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -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-- diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 48edc4c9045..a82fa389ac6 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -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)) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 2073eae04f3..1bdc2b05190 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -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) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index cd8e4f7c56b..9b9afb40841 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -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 diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index f9cb220c086..43dde57f83b 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -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) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 2ffc1da29d6..22d810a801d 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -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) diff --git a/icons/dispensebutton_bg.png b/icons/dispensebutton_bg.png new file mode 100644 index 00000000000..195c02114ea Binary files /dev/null and b/icons/dispensebutton_bg.png differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 2c2b795463e..24f8f5276cf 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 35ea9a94466..1c92b1415e5 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/terminals.dmi b/icons/obj/terminals.dmi index fd48bec7f75..aa363819810 100644 Binary files a/icons/obj/terminals.dmi and b/icons/obj/terminals.dmi differ diff --git a/icons/reagentname_bg.png b/icons/reagentname_bg.png new file mode 100644 index 00000000000..879179edd81 Binary files /dev/null and b/icons/reagentname_bg.png differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 434d8b171ac..ae703f64e30 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -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