Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -273,7 +273,7 @@ var/const/INJECT = 5 //injection
|
||||
if(30 to 40)
|
||||
need_mob_update += R.addiction_act_stage4(C)
|
||||
if(40 to INFINITY)
|
||||
C << "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>"
|
||||
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
cached_addictions.Remove(R)
|
||||
addiction_tick++
|
||||
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
|
||||
@@ -400,14 +400,14 @@ var/const/INJECT = 5 //injection
|
||||
if(C.mix_sound)
|
||||
playsound(get_turf(cached_my_atom), C.mix_sound, 80, 1)
|
||||
for(var/mob/M in seen)
|
||||
M << "<span class='notice'>\icon[my_atom] [C.mix_message]</span>"
|
||||
to_chat(M, "<span class='notice'>\icon[my_atom] [C.mix_message]</span>")
|
||||
|
||||
if(istype(cached_my_atom, /obj/item/slime_extract))
|
||||
var/obj/item/slime_extract/ME2 = my_atom
|
||||
ME2.Uses--
|
||||
if(ME2.Uses <= 0) // give the notification that the slime core is dead
|
||||
for(var/mob/M in seen)
|
||||
M << "<span class='notice'>\icon[my_atom] \The [my_atom]'s power is consumed in the reaction.</span>"
|
||||
to_chat(M, "<span class='notice'>\icon[my_atom] \The [my_atom]'s power is consumed in the reaction.</span>")
|
||||
ME2.name = "used slime extract"
|
||||
ME2.desc = "This extract has been used up."
|
||||
|
||||
@@ -513,6 +513,11 @@ var/const/INJECT = 5 //injection
|
||||
if("OBJ")
|
||||
R.reaction_obj(A, R.volume * volume_modifier, show_message)
|
||||
|
||||
/datum/reagents/proc/holder_full()
|
||||
if(total_volume >= maximum_volume)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, no_react = 0)
|
||||
if(!isnum(amount) || !amount)
|
||||
return FALSE
|
||||
@@ -657,7 +662,7 @@ var/const/INJECT = 5 //injection
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.id == reagent_id)
|
||||
//world << "proffering a data-carrying reagent ([reagent_id])"
|
||||
//to_chat(world, "proffering a data-carrying reagent ([reagent_id])")
|
||||
return R.data
|
||||
|
||||
/datum/reagents/proc/set_data(reagent_id, new_data)
|
||||
@@ -665,7 +670,7 @@ var/const/INJECT = 5 //injection
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.id == reagent_id)
|
||||
//world << "reagent data set ([reagent_id])"
|
||||
//to_chat(world, "reagent data set ([reagent_id])")
|
||||
R.data = new_data
|
||||
|
||||
/datum/reagents/proc/copy_data(datum/reagent/current_reagent)
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
|
||||
/obj/machinery/chem_dispenser/emag_act(mob/user)
|
||||
if(emagged)
|
||||
user << "<span class='warning'>\The [src] has no functional safeties to emag.</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] has no functional safeties to emag.</span>")
|
||||
return
|
||||
user << "<span class='notice'>You short out \the [src]'s safeties.</span>"
|
||||
to_chat(user, "<span class='notice'>You short out \the [src]'s safeties.</span>")
|
||||
dispensable_reagents |= emagged_reagents//add the emagged reagents to the dispensable ones
|
||||
emagged = 1
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
var/obj/item/weapon/reagent_containers/B = I
|
||||
. = 1 //no afterattack
|
||||
if(beaker)
|
||||
user << "<span class='warning'>A container is already loaded into the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>A container is already loaded into the machine!</span>")
|
||||
return
|
||||
|
||||
if(!user.drop_item()) // Can't let go?
|
||||
@@ -182,14 +182,14 @@
|
||||
|
||||
beaker = B
|
||||
beaker.loc = src
|
||||
user << "<span class='notice'>You add \the [B] to the machine.</span>"
|
||||
to_chat(user, "<span class='notice'>You add \the [B] to the machine.</span>")
|
||||
|
||||
if(!icon_beaker)
|
||||
icon_beaker = image('icons/obj/chemical.dmi', src, "disp_beaker") //randomize beaker overlay position.
|
||||
icon_beaker.pixel_x = rand(-10,5)
|
||||
add_overlay(icon_beaker)
|
||||
else if(user.a_intent != INTENT_HARM && !istype(I, /obj/item/weapon/card/emag))
|
||||
user << "<span class='warning'>You can't load \the [I] into the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't load \the [I] into the machine!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -57,14 +57,14 @@
|
||||
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
|
||||
. = 1 //no afterattack
|
||||
if(beaker)
|
||||
user << "<span class='warning'>A beaker is already loaded into the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
|
||||
return
|
||||
|
||||
if(!user.drop_item())
|
||||
return
|
||||
beaker = I
|
||||
I.loc = src
|
||||
user << "<span class='notice'>You add the beaker to the machine.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the beaker to the machine.</span>")
|
||||
icon_state = "mixer1b"
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
build_path = new_path
|
||||
name = "[new_name] 3000 (Machine Board)"
|
||||
user << "<span class='notice'>You change the circuit board setting to \"[new_name]\".</span>"
|
||||
to_chat(user, "<span class='notice'>You change the circuit board setting to \"[new_name]\".</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -107,30 +107,30 @@
|
||||
if(istype(I, /obj/item/weapon/reagent_containers) && (I.container_type & OPENCONTAINER))
|
||||
. = 1 // no afterattack
|
||||
if(panel_open)
|
||||
user << "<span class='warning'>You can't use the [src.name] while its panel is opened!</span>"
|
||||
to_chat(user, "<span class='warning'>You can't use the [src.name] while its panel is opened!</span>")
|
||||
return
|
||||
if(beaker)
|
||||
user << "<span class='warning'>A container is already loaded in the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>A container is already loaded in the machine!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
|
||||
beaker = I
|
||||
beaker.loc = src
|
||||
user << "<span class='notice'>You add the beaker to the machine.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the beaker to the machine.</span>")
|
||||
src.updateUsrDialog()
|
||||
icon_state = "mixer1"
|
||||
|
||||
else if(!condi && istype(I, /obj/item/weapon/storage/pill_bottle))
|
||||
if(bottle)
|
||||
user << "<span class='warning'>A pill bottle is already loaded into the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>A pill bottle is already loaded into the machine!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
|
||||
bottle = I
|
||||
bottle.loc = src
|
||||
user << "<span class='notice'>You add the pill bottle into the dispenser slot.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the pill bottle into the dispenser slot.</span>")
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -283,14 +283,14 @@
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if(beaker)
|
||||
user << "<span class='warning'>A beaker is already loaded into the machine!</span>"
|
||||
to_chat(user, "<span class='warning'>A beaker is already loaded into the machine!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
|
||||
beaker = I
|
||||
beaker.loc = src
|
||||
user << "<span class='notice'>You add the beaker to the machine.</span>"
|
||||
to_chat(user, "<span class='notice'>You add the beaker to the machine.</span>")
|
||||
updateUsrDialog()
|
||||
icon_state = "mixer1"
|
||||
else
|
||||
|
||||
@@ -132,18 +132,18 @@
|
||||
update_icon()
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
user << "<span class='warning'>There's already a container inside.</span>"
|
||||
to_chat(user, "<span class='warning'>There's already a container inside.</span>")
|
||||
return 1 //no afterattack
|
||||
|
||||
if(is_type_in_list(I, dried_items))
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = I
|
||||
if(!G.dry)
|
||||
user << "<span class='warning'>You must dry that first!</span>"
|
||||
to_chat(user, "<span class='warning'>You must dry that first!</span>")
|
||||
return 1
|
||||
|
||||
if(holdingitems && holdingitems.len >= limit)
|
||||
usr << "The machine cannot hold anymore items."
|
||||
to_chat(usr, "The machine cannot hold anymore items.")
|
||||
return 1
|
||||
|
||||
//Fill machine with a bag!
|
||||
@@ -153,11 +153,11 @@
|
||||
B.remove_from_storage(G, src)
|
||||
holdingitems += G
|
||||
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
|
||||
user << "<span class='notice'>You fill the All-In-One grinder to the brim.</span>"
|
||||
to_chat(user, "<span class='notice'>You fill the All-In-One grinder to the brim.</span>")
|
||||
break
|
||||
|
||||
if(!I.contents.len)
|
||||
user << "<span class='notice'>You empty the plant bag into the All-In-One grinder.</span>"
|
||||
to_chat(user, "<span class='notice'>You empty the plant bag into the All-In-One grinder.</span>")
|
||||
|
||||
src.updateUsrDialog()
|
||||
return 1
|
||||
@@ -166,7 +166,7 @@
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
return ..()
|
||||
else
|
||||
user << "<span class='warning'>Cannot refine into a reagent!</span>"
|
||||
to_chat(user, "<span class='warning'>Cannot refine into a reagent!</span>")
|
||||
return 1
|
||||
|
||||
if(user.drop_item())
|
||||
|
||||
@@ -85,27 +85,27 @@
|
||||
return
|
||||
|
||||
/datum/reagent/proc/overdose_start(mob/living/M)
|
||||
M << "<span class='userdanger'>You feel like you took too much of [name]!</span>"
|
||||
to_chat(M, "<span class='userdanger'>You feel like you took too much of [name]!</span>")
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
|
||||
if(prob(30))
|
||||
M << "<span class='notice'>You feel like some [name] right about now.</span>"
|
||||
to_chat(M, "<span class='notice'>You feel like some [name] right about now.</span>")
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
|
||||
if(prob(30))
|
||||
M << "<span class='notice'>You feel like you need [name]. You just can't get enough.</span>"
|
||||
to_chat(M, "<span class='notice'>You feel like you need [name]. You just can't get enough.</span>")
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
|
||||
if(prob(30))
|
||||
M << "<span class='danger'>You have an intense craving for [name].</span>"
|
||||
to_chat(M, "<span class='danger'>You have an intense craving for [name].</span>")
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
|
||||
if(prob(30))
|
||||
M << "<span class='boldannounce'>You're not feeling good at all! You really need some [name].</span>"
|
||||
to_chat(M, "<span class='boldannounce'>You're not feeling good at all! You really need some [name].</span>")
|
||||
return
|
||||
|
||||
/proc/pretty_string_from_reagent_list(var/list/reagent_list)
|
||||
|
||||
@@ -44,14 +44,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(istype(O,/obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
usr << "<span class='notice'>[paperaffected]'s ink washes away.</span>"
|
||||
to_chat(usr, "<span class='notice'>[paperaffected]'s ink washes away.</span>")
|
||||
if(istype(O,/obj/item/weapon/book))
|
||||
if(reac_volume >= 5)
|
||||
var/obj/item/weapon/book/affectedbook = O
|
||||
affectedbook.dat = null
|
||||
usr << "<span class='notice'>Through thorough application, you wash away [affectedbook]'s writing.</span>"
|
||||
to_chat(usr, "<span class='notice'>Through thorough application, you wash away [affectedbook]'s writing.</span>")
|
||||
else
|
||||
usr << "<span class='warning'>The ink smears, but doesn't wash away!</span>"
|
||||
to_chat(usr, "<span class='warning'>The ink smears, but doesn't wash away!</span>")
|
||||
return
|
||||
|
||||
/datum/reagent/consumable/ethanol/reaction_mob(mob/living/M, method=TOUCH, reac_volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if(message_living && !issilicon(M))
|
||||
totalmessage += message_living
|
||||
totalmessage += "!"
|
||||
M << "<span class='userdanger'>[totalmessage]</span>"
|
||||
to_chat(M, "<span class='userdanger'>[totalmessage]</span>")
|
||||
|
||||
/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
|
||||
if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob))
|
||||
@@ -198,7 +198,7 @@
|
||||
M.adjustToxLoss(1*REM)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/N = M
|
||||
N.hal_screwyhud = 5 //fully healed, honest
|
||||
N.hal_screwyhud = SCREWYHUD_HEALTHY //fully healed, honest
|
||||
..()
|
||||
|
||||
/datum/reagent/blob/regenerative_materia/on_mob_delete(mob/living/M)
|
||||
@@ -232,7 +232,7 @@
|
||||
O.blob_mobs.Add(BS)
|
||||
BS.Zombify(M)
|
||||
O.add_points(points)
|
||||
O << "<span class='notice'>Gained [points] resources from the zombification of [M].</span>"
|
||||
to_chat(O, "<span class='notice'>Gained [points] resources from the zombification of [M].</span>")
|
||||
|
||||
/datum/reagent/blob/zombifying_pods/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
|
||||
if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage <= 20 && B.obj_integrity - damage <= 0 && prob(30)) //if the cause isn't fire or a bomb, the damage is less than 21, we're going to die from that damage, 20% chance of a shitty spore.
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M << "<span class = 'notice'>[pick("You remember to square your shoulders.","You remember to keep your head down.","You can't decide between squaring your shoulders and keeping your head down.","You remember to relax.","You think about how someday you'll get two strokes off your golf game.")]</span>"
|
||||
to_chat(M, "<span class = 'notice'>[pick("You remember to square your shoulders.","You remember to keep your head down.","You can't decide between squaring your shoulders and keeping your head down.","You remember to relax.","You think about how someday you'll get two strokes off your golf game.")]</span>")
|
||||
..()
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/space_drugs/overdose_start(mob/living/M)
|
||||
M << "<span class='userdanger'>You start tripping hard!</span>"
|
||||
to_chat(M, "<span class='userdanger'>You start tripping hard!</span>")
|
||||
|
||||
|
||||
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M)
|
||||
@@ -41,7 +41,7 @@
|
||||
/datum/reagent/drug/nicotine/on_mob_life(mob/living/M)
|
||||
if(prob(1))
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
|
||||
M << "<span class='notice'>[smoke_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[smoke_message]</span>")
|
||||
M.AdjustParalysis(-1, 0)
|
||||
M.AdjustStunned(-1, 0)
|
||||
M.AdjustWeakened(-1, 0)
|
||||
@@ -61,7 +61,7 @@
|
||||
/datum/reagent/drug/crank/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[high_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.AdjustParalysis(-1, 0)
|
||||
M.AdjustStunned(-1, 0)
|
||||
M.AdjustWeakened(-1, 0)
|
||||
@@ -109,7 +109,7 @@
|
||||
/datum/reagent/drug/krokodil/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[high_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/krokodil/overdose_process(mob/living/M)
|
||||
@@ -126,12 +126,12 @@
|
||||
|
||||
/datum/reagent/krokodil/addiction_act_stage2(mob/living/M)
|
||||
if(prob(25))
|
||||
M << "<span class='danger'>Your skin feels loose...</span>"
|
||||
to_chat(M, "<span class='danger'>Your skin feels loose...</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/krokodil/addiction_act_stage3(mob/living/M)
|
||||
if(prob(25))
|
||||
M << "<span class='danger'>Your skin starts to peel away...</span>"
|
||||
to_chat(M, "<span class='danger'>Your skin starts to peel away...</span>")
|
||||
M.adjustBruteLoss(3*REM, 0)
|
||||
..()
|
||||
. = 1
|
||||
@@ -139,7 +139,7 @@
|
||||
/datum/reagent/drug/krokodil/addiction_act_stage4(mob/living/carbon/human/M)
|
||||
CHECK_DNA_AND_SPECIES(M)
|
||||
if(!istype(M.dna.species, /datum/species/krokodil_addict))
|
||||
M << "<span class='userdanger'>Your skin falls off easily!</span>"
|
||||
to_chat(M, "<span class='userdanger'>Your skin falls off easily!</span>")
|
||||
M.adjustBruteLoss(50*REM, 0) // holy shit your skin just FELL THE FUCK OFF
|
||||
M.set_species(/datum/species/krokodil_addict)
|
||||
else
|
||||
@@ -160,7 +160,7 @@
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[high_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.AdjustParalysis(-2, 0)
|
||||
M.AdjustStunned(-2, 0)
|
||||
M.AdjustWeakened(-2, 0)
|
||||
@@ -238,7 +238,7 @@
|
||||
/datum/reagent/drug/bath_salts/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[high_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.AdjustParalysis(-3, 0)
|
||||
M.AdjustStunned(-3, 0)
|
||||
M.AdjustWeakened(-3, 0)
|
||||
@@ -324,7 +324,7 @@
|
||||
/datum/reagent/drug/aranesp/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
|
||||
if(prob(5))
|
||||
M << "<span class='notice'>[high_message]</span>"
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.adjustStaminaLoss(-18, 0)
|
||||
M.adjustToxLoss(0.5, 0)
|
||||
if(prob(50))
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
taste_description = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
|
||||
M << "<span class='userdanger'>You go into hyperglycaemic shock! Lay off the twinkies!</span>"
|
||||
to_chat(M, "<span class='userdanger'>You go into hyperglycaemic shock! Lay off the twinkies!</span>")
|
||||
M.AdjustSleeping(30, 0)
|
||||
. = 1
|
||||
|
||||
@@ -553,10 +553,10 @@
|
||||
taste_description = "tingling mushroom"
|
||||
|
||||
/datum/reagent/consumable/tinlux/reaction_mob(mob/living/M)
|
||||
M.AddLuminosity(2)
|
||||
M.set_light(2)
|
||||
|
||||
/datum/reagent/consumable/tinlux/on_mob_delete(mob/living/M)
|
||||
M.AddLuminosity(-2)
|
||||
M.set_light(-2)
|
||||
|
||||
/datum/reagent/consumable/vitfro
|
||||
name = "Vitrium Froth"
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
switch(M.bodytemperature) // Low temperatures are required to take effect.
|
||||
if(0 to 100) // At extreme temperatures (upgraded cryo) the effect is greatly increased.
|
||||
M.status_flags &= ~DISFIGURED
|
||||
M.adjustCloneLoss(-7, 0)
|
||||
M.adjustCloneLoss(-1, 0)
|
||||
M.adjustOxyLoss(-9, 0)
|
||||
M.adjustBruteLoss(-5, 0)
|
||||
M.adjustFireLoss(-5, 0)
|
||||
@@ -140,7 +140,7 @@
|
||||
. = 1
|
||||
if(100 to 225) // At lower temperatures (cryo) the full effect is boosted
|
||||
M.status_flags &= ~DISFIGURED
|
||||
M.adjustCloneLoss(-2, 0)
|
||||
M.adjustCloneLoss(-1, 0)
|
||||
M.adjustOxyLoss(-7, 0)
|
||||
M.adjustBruteLoss(-3, 0)
|
||||
M.adjustFireLoss(-3, 0)
|
||||
@@ -156,6 +156,29 @@
|
||||
. = 1
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/clonexadone
|
||||
name = "Clonexadone"
|
||||
id = "clonexadone"
|
||||
description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone."
|
||||
color = "#0000C8"
|
||||
taste_description = "muscle"
|
||||
metabolization_rate = 1.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/clonexadone/on_mob_life(mob/living/M)
|
||||
switch(M.bodytemperature) // Low temperatures are required to take effect.
|
||||
if(0 to 100) // At extreme temperatures (upgraded cryo) the effect is greatly increased.
|
||||
M.status_flags &= ~DISFIGURED
|
||||
M.adjustCloneLoss(-7, 0)
|
||||
. = 1
|
||||
if(100 to 225) // At lower temperatures (cryo) the full effect is boosted
|
||||
M.status_flags &= ~DISFIGURED
|
||||
M.adjustCloneLoss(-3, 0)
|
||||
. = 1
|
||||
if(225 to T0C)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
M.adjustCloneLoss(-2, 0)
|
||||
. = 1
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/rezadone
|
||||
name = "Rezadone"
|
||||
@@ -200,11 +223,11 @@
|
||||
if(method in list(INGEST, VAPOR, INJECT))
|
||||
M.adjustToxLoss(0.5*reac_volume)
|
||||
if(show_message)
|
||||
M << "<span class='warning'>You don't feel so good...</span>"
|
||||
to_chat(M, "<span class='warning'>You don't feel so good...</span>")
|
||||
else if(M.getFireLoss())
|
||||
M.adjustFireLoss(-reac_volume)
|
||||
if(show_message)
|
||||
M << "<span class='danger'>You feel your burns healing! It stings like hell!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel your burns healing! It stings like hell!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
|
||||
@@ -248,11 +271,11 @@
|
||||
if(method in list(INGEST, VAPOR, INJECT))
|
||||
M.adjustToxLoss(0.5*reac_volume)
|
||||
if(show_message)
|
||||
M << "<span class='warning'>You don't feel so good...</span>"
|
||||
to_chat(M, "<span class='warning'>You don't feel so good...</span>")
|
||||
else if(M.getBruteLoss())
|
||||
M.adjustBruteLoss(-reac_volume)
|
||||
if(show_message)
|
||||
M << "<span class='danger'>You feel your bruises healing! It stings like hell!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel your bruises healing! It stings like hell!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
|
||||
@@ -302,7 +325,7 @@
|
||||
/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/M)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/N = M
|
||||
N.hal_screwyhud = 5
|
||||
N.hal_screwyhud = SCREWYHUD_HEALTHY
|
||||
M.adjustBruteLoss(-0.25*REM, 0)
|
||||
M.adjustFireLoss(-0.25*REM, 0)
|
||||
..()
|
||||
@@ -314,7 +337,7 @@
|
||||
M.Stun(4)
|
||||
M.Weaken(4)
|
||||
if(show_message)
|
||||
M << "<span class='warning'>Your stomach agonizingly cramps!</span>"
|
||||
to_chat(M, "<span class='warning'>Your stomach agonizingly cramps!</span>")
|
||||
else
|
||||
var/mob/living/carbon/C = M
|
||||
for(var/s in C.surgeries)
|
||||
@@ -323,13 +346,13 @@
|
||||
// +10% success propability on each step, useful while operating in less-than-perfect conditions
|
||||
|
||||
if(show_message)
|
||||
M << "<span class='danger'>You feel your wounds fade away to nothing!</span>" //It's a painkiller, after all
|
||||
to_chat(M, "<span class='danger'>You feel your wounds fade away to nothing!</span>" )
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/mine_salve/on_mob_delete(mob/living/M)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/N = M
|
||||
N.hal_screwyhud = 0
|
||||
N.hal_screwyhud = SCREWYHUD_NONE
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/synthflesh
|
||||
@@ -347,7 +370,7 @@
|
||||
M.adjustBruteLoss(-1.25 * reac_volume)
|
||||
M.adjustFireLoss(-1.25 * reac_volume)
|
||||
if(show_message)
|
||||
M << "<span class='danger'>You feel your burns and bruises healing! It stings like hell!</span>"
|
||||
to_chat(M, "<span class='danger'>You feel your burns and bruises healing! It stings like hell!</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/charcoal
|
||||
@@ -582,7 +605,7 @@
|
||||
M.status_flags |= IGNORESLOWDOWN
|
||||
switch(current_cycle)
|
||||
if(11)
|
||||
M << "<span class='warning'>You start to feel tired...</span>" //Warning when the victim is starting to pass out
|
||||
to_chat(M, "<span class='warning'>You start to feel tired...</span>" )
|
||||
if(12 to 24)
|
||||
M.drowsyness += 1
|
||||
if(24 to INFINITY)
|
||||
@@ -653,13 +676,13 @@
|
||||
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
|
||||
if(M.disabilities & BLIND)
|
||||
if(prob(20))
|
||||
M << "<span class='warning'>Your vision slowly returns...</span>"
|
||||
to_chat(M, "<span class='warning'>Your vision slowly returns...</span>")
|
||||
M.cure_blind()
|
||||
M.cure_nearsighted()
|
||||
M.blur_eyes(35)
|
||||
|
||||
else if(M.disabilities & NEARSIGHT)
|
||||
M << "<span class='warning'>The blackness in your peripheral vision fades.</span>"
|
||||
to_chat(M, "<span class='warning'>The blackness in your peripheral vision fades.</span>")
|
||||
M.cure_nearsighted()
|
||||
M.blur_eyes(10)
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
|
||||
/datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(is_servant_of_ratvar(M))
|
||||
M << "<span class='userdanger'>A darkness begins to spread its unholy tendrils through your mind, purging the Justiciar's influence!</span>"
|
||||
to_chat(M, "<span class='userdanger'>A darkness begins to spread its unholy tendrils through your mind, purging the Justiciar's influence!</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/water/holywater/on_mob_life(mob/living/M)
|
||||
@@ -190,8 +190,8 @@
|
||||
if("speech")
|
||||
clockwork_say(M, "...[text2ratvar(pick("Engine... your light grows dark...", "Where are you, master?", "He lies rusting in Error...", "Purge all untruths and... and... something..."))]")
|
||||
if("message")
|
||||
M << "<span class='boldwarning'>[pick("Ratvar's illumination of your mind has begun to flicker", "He lies rusting in Reebe, derelict and forgotten. And there he shall stay", \
|
||||
"You can't save him. Nothing can save him now", "It seems that Nar-Sie will triumph after all")].</span>"
|
||||
to_chat(M, "<span class='boldwarning'>[pick("Ratvar's illumination of your mind has begun to flicker", "He lies rusting in Reebe, derelict and forgotten. And there he shall stay", \
|
||||
"You can't save him. Nothing can save him now", "It seems that Nar-Sie will triumph after all")].</span>")
|
||||
if("emote")
|
||||
M.visible_message("<span class='warning'>[M] [pick("whimpers quietly", "shivers as though cold", "glances around in paranoia")].</span>")
|
||||
if(data >= 75) // 30 units, 135 seconds
|
||||
@@ -344,7 +344,7 @@
|
||||
|
||||
if(method == INGEST)
|
||||
if(show_message)
|
||||
M << "<span class='notice'>That tasted horrible.</span>"
|
||||
to_chat(M, "<span class='notice'>That tasted horrible.</span>")
|
||||
M.AdjustStunned(2)
|
||||
M.AdjustWeakened(2)
|
||||
..()
|
||||
@@ -384,7 +384,7 @@
|
||||
|
||||
/datum/reagent/stableslimetoxin/on_mob_life(mob/living/carbon/human/H)
|
||||
..()
|
||||
H << "<span class='warning'><b>You crumple in agony as your flesh wildly morphs into new forms!</b></span>"
|
||||
to_chat(H, "<span class='warning'><b>You crumple in agony as your flesh wildly morphs into new forms!</b></span>")
|
||||
H.visible_message("<b>[H]</b> falls to the ground and screams as [H.p_their()] skin bubbles and froths!") //'froths' sounds painful when used with SKIN.
|
||||
H.Weaken(3, 0)
|
||||
spawn(30)
|
||||
@@ -394,10 +394,10 @@
|
||||
var/current_species = H.dna.species.type
|
||||
var/datum/species/mutation = race
|
||||
if(mutation && mutation != current_species)
|
||||
H << mutationtext
|
||||
to_chat(H, mutationtext)
|
||||
H.set_species(mutation)
|
||||
else
|
||||
H << "<span class='danger'>The pain vanishes suddenly. You feel no different.</span>"
|
||||
to_chat(H, "<span class='danger'>The pain vanishes suddenly. You feel no different.</span>")
|
||||
|
||||
return 1
|
||||
|
||||
@@ -535,7 +535,7 @@
|
||||
taste_description = "slime"
|
||||
|
||||
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/human/H)
|
||||
H << "<span class='warning'><b>You grit your teeth in pain as your body rapidly mutates!</b></span>"
|
||||
to_chat(H, "<span class='warning'><b>You grit your teeth in pain as your body rapidly mutates!</b></span>")
|
||||
H.visible_message("<b>[H]</b> suddenly transforms!")
|
||||
randomize_human(H)
|
||||
..()
|
||||
@@ -855,7 +855,7 @@
|
||||
|
||||
/datum/reagent/bluespace/on_mob_life(mob/living/M)
|
||||
if(current_cycle > 10 && prob(15))
|
||||
M << "<span class='warning'>You feel unstable...</span>"
|
||||
to_chat(M, "<span class='warning'>You feel unstable...</span>")
|
||||
M.Jitter(2)
|
||||
current_cycle = 1
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/do_teleport, M, get_turf(M), 5, asoundin = 'sound/effects/phasein.ogg'), 30)
|
||||
@@ -1528,3 +1528,37 @@
|
||||
M.resize = 1/current_size
|
||||
M.update_transform()
|
||||
..()
|
||||
|
||||
/datum/reagent/glitter
|
||||
name = "generic glitter"
|
||||
id = "glitter"
|
||||
description = "if you can see this description, contact a coder."
|
||||
color = "#FFFFFF" //pure white
|
||||
taste_description = "plastic"
|
||||
reagent_state = SOLID
|
||||
var/glitter_type = /obj/effect/decal/cleanable/glitter
|
||||
|
||||
/datum/reagent/glitter/reaction_turf(turf/T, reac_volume)
|
||||
if(!istype(T))
|
||||
return
|
||||
new glitter_type(T)
|
||||
|
||||
/datum/reagent/glitter/pink
|
||||
name = "pink glitter"
|
||||
id = "pink_glitter"
|
||||
description = "pink sparkles that get everywhere"
|
||||
color = "#ff8080" //A light pink color
|
||||
glitter_type = /obj/effect/decal/cleanable/glitter/pink
|
||||
|
||||
/datum/reagent/glitter/white
|
||||
name = "white glitter"
|
||||
id = "white_glitter"
|
||||
description = "white sparkles that get everywhere"
|
||||
glitter_type = /obj/effect/decal/cleanable/glitter/white
|
||||
|
||||
/datum/reagent/glitter/blue
|
||||
name = "blue glitter"
|
||||
id = "blue_glitter"
|
||||
description = "blue sparkles that get everywhere"
|
||||
color = "#4040FF" //A blueish color
|
||||
glitter_type = /obj/effect/decal/cleanable/glitter/blue
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M << "<span class='danger'>Your insides are burning!</span>"
|
||||
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
|
||||
M.adjustToxLoss(rand(20,60)*REM, 0)
|
||||
. = 1
|
||||
else if(prob(40))
|
||||
@@ -383,7 +383,7 @@
|
||||
if(prob(50))
|
||||
switch(pick(1, 2, 3, 4))
|
||||
if(1)
|
||||
M << "<span class='danger'>You can barely see!</span>"
|
||||
to_chat(M, "<span class='danger'>You can barely see!</span>")
|
||||
M.blur_eyes(3)
|
||||
if(2)
|
||||
M.emote("cough")
|
||||
@@ -391,7 +391,7 @@
|
||||
M.emote("sneeze")
|
||||
if(4)
|
||||
if(prob(75))
|
||||
M << "You scratch at an itch."
|
||||
to_chat(M, "You scratch at an itch.")
|
||||
M.adjustBruteLoss(2*REM, 0)
|
||||
. = 1
|
||||
..()
|
||||
@@ -470,7 +470,7 @@
|
||||
if(prob(5))
|
||||
M.losebreath += 1
|
||||
if(prob(8))
|
||||
M << "You feel horrendously weak!"
|
||||
to_chat(M, "You feel horrendously weak!")
|
||||
M.Stun(2, 0)
|
||||
M.adjustToxLoss(2*REM, 0)
|
||||
return ..()
|
||||
@@ -500,15 +500,15 @@
|
||||
|
||||
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/M)
|
||||
if(prob(15))
|
||||
M << "You scratch at your head."
|
||||
to_chat(M, "You scratch at your head.")
|
||||
M.adjustBruteLoss(0.2*REM, 0)
|
||||
. = 1
|
||||
if(prob(15))
|
||||
M << "You scratch at your leg."
|
||||
to_chat(M, "You scratch at your leg.")
|
||||
M.adjustBruteLoss(0.2*REM, 0)
|
||||
. = 1
|
||||
if(prob(15))
|
||||
M << "You scratch at your arm."
|
||||
to_chat(M, "You scratch at your arm.")
|
||||
M.adjustBruteLoss(0.2*REM, 0)
|
||||
. = 1
|
||||
if(prob(3))
|
||||
@@ -822,7 +822,7 @@
|
||||
if(M.dizziness < 6)
|
||||
M.dizziness = Clamp(M.dizziness + 3, 0, 5)
|
||||
if(prob(20))
|
||||
M << "You feel confused and disorientated."
|
||||
to_chat(M, "You feel confused and disorientated.")
|
||||
..()
|
||||
|
||||
/datum/reagent/toxin/peaceborg/tire
|
||||
@@ -838,7 +838,7 @@
|
||||
if(M.staminaloss < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.)
|
||||
M.adjustStaminaLoss(10)
|
||||
if(prob(30))
|
||||
M << "You should sit down and take a rest..."
|
||||
to_chat(M, "You should sit down and take a rest...")
|
||||
..()
|
||||
|
||||
/datum/reagent/toxin/delayed
|
||||
@@ -860,3 +860,11 @@
|
||||
M.Weaken(1, 0)
|
||||
. = 1
|
||||
..()
|
||||
|
||||
/datum/reagent/toxin/mimesbane
|
||||
name = "Mime's Bane"
|
||||
id = "mimesbane"
|
||||
description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture."
|
||||
color = "#F0F8FF" // rgb: 240, 248, 255
|
||||
toxpwr = 0
|
||||
taste_description = "stillness"
|
||||
|
||||
@@ -184,6 +184,13 @@
|
||||
results = list("cryoxadone" = 3)
|
||||
required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1)
|
||||
|
||||
/datum/chemical_reaction/clonexadone
|
||||
name = "Clonexadone"
|
||||
id = "clonexadone"
|
||||
results = list("clonexadone" = 2)
|
||||
required_reagents = list("cryoxadone" = 1, "sodium" = 1)
|
||||
required_catalysts = list("plasma" = 5)
|
||||
|
||||
/datum/chemical_reaction/haloperidol
|
||||
name = "Haloperidol"
|
||||
id = "haloperidol"
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/stack/sheet/mineral/gold(location)
|
||||
|
||||
|
||||
/datum/chemical_reaction/capsaicincondensation
|
||||
name = "Capsaicincondensation"
|
||||
id = "capsaicincondensation"
|
||||
@@ -124,7 +124,7 @@
|
||||
results = list("nitrous_oxide" = 2, "water" = 4)
|
||||
required_reagents = list("ammonia" = 3, "nitrogen" = 1, "oxygen" = 2)
|
||||
required_temp = 525
|
||||
|
||||
|
||||
////////////////////////////////// Mutation Toxins ///////////////////////////////////
|
||||
|
||||
/datum/chemical_reaction/stable_mutation_toxin
|
||||
@@ -426,7 +426,7 @@
|
||||
/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "<span class='danger'>The solution spews out foam!</span>"
|
||||
to_chat(M, "<span class='danger'>The solution spews out foam!</span>")
|
||||
var/datum/effect_system/foam_spread/s = new()
|
||||
s.set_up(created_volume*2, location, holder)
|
||||
s.start()
|
||||
@@ -444,7 +444,7 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "<span class='danger'>The solution spews out a metallic foam!</span>"
|
||||
to_chat(M, "<span class='danger'>The solution spews out a metallic foam!</span>")
|
||||
|
||||
var/datum/effect_system/foam_spread/metal/s = new()
|
||||
s.set_up(created_volume*5, location, holder, 1)
|
||||
@@ -460,7 +460,7 @@
|
||||
/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "<span class='danger'>The solution spews out a metallic foam!</span>"
|
||||
to_chat(M, "<span class='danger'>The solution spews out a metallic foam!</span>")
|
||||
var/datum/effect_system/foam_spread/metal/s = new()
|
||||
s.set_up(created_volume*5, location, holder, 2)
|
||||
s.start()
|
||||
|
||||
@@ -65,14 +65,14 @@
|
||||
deity = SSreligion.Bible_deity_name
|
||||
else
|
||||
deity = "Christ"
|
||||
R << "<span class='userdanger'>The power of [deity] compels you!</span>"
|
||||
to_chat(R, "<span class='userdanger'>The power of [deity] compels you!</span>")
|
||||
R.stun(20)
|
||||
R.reveal(100)
|
||||
R.adjustHealth(50)
|
||||
sleep(20)
|
||||
for(var/mob/living/carbon/C in get_hearers_in_view(round(created_volume/48,1),get_turf(holder.my_atom)))
|
||||
if(iscultist(C))
|
||||
C << "<span class='userdanger'>The divine explosion sears you!</span>"
|
||||
to_chat(C, "<span class='userdanger'>The divine explosion sears you!</span>")
|
||||
C.Weaken(2)
|
||||
C.adjust_fire_stacks(5)
|
||||
C.IgniteMob()
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[i+1]
|
||||
else
|
||||
amount_per_transfer_from_this = possible_transfer_amounts[1]
|
||||
user << "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>"
|
||||
to_chat(user, "<span class='notice'>[src]'s transfer amount is now [amount_per_transfer_from_this] units.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/attack(mob/M, mob/user, def_zone)
|
||||
@@ -67,7 +67,7 @@
|
||||
covered = "mask"
|
||||
if(covered)
|
||||
var/who = (isnull(user) || eater == user) ? "your" : "[eater.p_their()]"
|
||||
user << "<span class='warning'>You have to remove [who] [covered] first!</span>"
|
||||
to_chat(user, "<span class='warning'>You have to remove [who] [covered] first!</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -86,18 +86,18 @@ Borg Hypospray
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/carbon/M, mob/user)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
user << "<span class='notice'>The injector is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>The injector is empty.</span>")
|
||||
return
|
||||
if(!istype(M))
|
||||
return
|
||||
if(R.total_volume && M.can_inject(user, 1, user.zone_selected,bypass_protection))
|
||||
M << "<span class='warning'>You feel a tiny prick!</span>"
|
||||
user << "<span class='notice'>You inject [M] with the injector.</span>"
|
||||
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
|
||||
to_chat(user, "<span class='notice'>You inject [M] with the injector.</span>")
|
||||
var/fraction = min(amount_per_transfer_from_this/R.total_volume, 1)
|
||||
R.reaction(M, INJECT, fraction)
|
||||
if(M.reagents)
|
||||
var/trans = R.trans_to(M, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>[trans] unit\s injected. [R.total_volume] unit\s remaining.</span>"
|
||||
to_chat(user, "<span class='notice'>[trans] unit\s injected. [R.total_volume] unit\s remaining.</span>")
|
||||
|
||||
var/list/injected = list()
|
||||
for(var/datum/reagent/RG in R.reagent_list)
|
||||
@@ -111,7 +111,7 @@ Borg Hypospray
|
||||
mode = chosen_reagent
|
||||
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]]
|
||||
user << "<span class='notice'>[src] is now dispensing '[R.name]'.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is now dispensing '[R.name]'.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
|
||||
@@ -125,11 +125,11 @@ Borg Hypospray
|
||||
for(var/datum/reagents/RS in reagent_list)
|
||||
var/datum/reagent/R = locate() in RS.reagent_list
|
||||
if(R)
|
||||
usr << "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>"
|
||||
to_chat(usr, "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>")
|
||||
empty = 0
|
||||
|
||||
if(empty)
|
||||
usr << "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>"
|
||||
to_chat(usr, "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/hacked
|
||||
icon_state = "borghypo_s"
|
||||
@@ -181,15 +181,15 @@ Borg Shaker
|
||||
else if(target.is_open_container() && target.reagents)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
user << "<span class='warning'>[src] is currently out of this ingredient! Please allow some time for the synthesizer to produce more.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is currently out of this ingredient! Please allow some time for the synthesizer to produce more.</span>")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
user << "<span class='notice'>[target] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = R.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/borgshaker/DescribeContents()
|
||||
var/empty = 1
|
||||
@@ -197,11 +197,11 @@ Borg Shaker
|
||||
var/datum/reagents/RS = reagent_list[mode]
|
||||
var/datum/reagent/R = locate() in RS.reagent_list
|
||||
if(R)
|
||||
usr << "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>"
|
||||
to_chat(usr, "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>")
|
||||
empty = 0
|
||||
|
||||
if(empty)
|
||||
usr << "<span class='warning'>It is currently empty! Please allow some time for the synthesizer to produce more.</span>"
|
||||
to_chat(usr, "<span class='warning'>It is currently empty! Please allow some time for the synthesizer to produce more.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/borgshaker/hacked
|
||||
..()
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
if(reagents.total_volume > 0)
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
user << "<span class='notice'>[target] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
|
||||
user << "<span class='warning'>You cannot directly fill [target]!</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill [target]!</span>")
|
||||
return
|
||||
|
||||
var/trans = 0
|
||||
@@ -49,11 +49,11 @@
|
||||
target.visible_message("<span class='danger'>[user] tries to squirt something into [target]'s eyes, but fails!</span>", \
|
||||
"<span class='userdanger'>[user] tries to squirt something into [target]'s eyes, but fails!</span>")
|
||||
|
||||
user << "<span class='notice'>You transfer [trans] unit\s of the solution.</span>"
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution.</span>")
|
||||
update_icon()
|
||||
return
|
||||
else if(isalien(target)) //hiss-hiss has no eyes!
|
||||
target << "<span class='danger'>[target] does not seem to have any eyes!</span>"
|
||||
to_chat(target, "<span class='danger'>[target] does not seem to have any eyes!</span>")
|
||||
return
|
||||
|
||||
target.visible_message("<span class='danger'>[user] squirts something into [target]'s eyes!</span>", \
|
||||
@@ -69,22 +69,22 @@
|
||||
add_logs(user, M, "squirted", R)
|
||||
|
||||
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You transfer [trans] unit\s of the solution.</span>"
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution.</span>")
|
||||
update_icon()
|
||||
|
||||
else
|
||||
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||
user << "<span class='notice'>You cannot directly remove reagents from [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You cannot directly remove reagents from [target].</span>")
|
||||
return
|
||||
|
||||
if(!target.reagents.total_volume)
|
||||
user << "<span class='warning'>[target] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[target] is empty!</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
|
||||
user << "<span class='notice'>You fill [src] with [trans] unit\s of the solution.</span>"
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] unit\s of the solution.</span>")
|
||||
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
return
|
||||
|
||||
if(!reagents || !reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
|
||||
if(istype(M))
|
||||
@@ -46,7 +46,7 @@
|
||||
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
|
||||
add_logs(user, M, "fed", reagentlist(src))
|
||||
else
|
||||
user << "<span class='notice'>You swallow a gulp of [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
|
||||
var/fraction = min(5/reagents.total_volume, 1)
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
spawn(5)
|
||||
@@ -59,28 +59,28 @@
|
||||
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
|
||||
if(target.reagents && !target.reagents.total_volume)
|
||||
user << "<span class='warning'>[target] is empty and can't be refilled!</span>"
|
||||
to_chat(user, "<span class='warning'>[target] is empty and can't be refilled!</span>")
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
user << "<span class='notice'>[src] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You fill [src] with [trans] unit\s of the contents of [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] unit\s of the contents of [target].</span>")
|
||||
|
||||
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
user << "<span class='notice'>[target] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
|
||||
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] unit\s of the solution to [target].</span>")
|
||||
|
||||
else if(reagents.total_volume)
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
@@ -96,18 +96,18 @@
|
||||
if(reagents)
|
||||
if(reagents.chem_temp < hotness) //can't be heated to be hotter than the source
|
||||
reagents.chem_temp += added_heat
|
||||
user << "<span class='notice'>You heat [src] with [I].</span>"
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [I].</span>")
|
||||
reagents.handle_reactions()
|
||||
else
|
||||
user << "<span class='warning'>[src] is already hotter than [I]!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is already hotter than [I]!</span>")
|
||||
|
||||
if(istype(I,/obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = I
|
||||
if(reagents)
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
user << "<span class='notice'>[src] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
else
|
||||
user << "<span class='notice'>You break [E] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You break [E] in [src].</span>")
|
||||
reagents.add_reagent("eggyolk", 5)
|
||||
qdel(E)
|
||||
return
|
||||
@@ -251,13 +251,13 @@
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/mop))
|
||||
if(reagents.total_volume < 1)
|
||||
user << "<span class='warning'>[src] is out of water!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is out of water!</span>")
|
||||
else
|
||||
reagents.trans_to(O, 5)
|
||||
user << "<span class='notice'>You wet [O] in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You wet [O] in [src].</span>")
|
||||
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
else if(isprox(O))
|
||||
user << "<span class='notice'>You add [O] to [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You add [O] to [src].</span>")
|
||||
qdel(O)
|
||||
qdel(src)
|
||||
user.put_in_hands(new /obj/item/weapon/bucket_sensor)
|
||||
@@ -267,7 +267,7 @@
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot == slot_head && reagents.total_volume)
|
||||
user << "<span class='userdanger'>[src]'s contents spill all over you!</span>"
|
||||
to_chat(user, "<span class='userdanger'>[src]'s contents spill all over you!</span>")
|
||||
reagents.reaction(user, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
if(!iscarbon(M))
|
||||
return
|
||||
|
||||
if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
|
||||
M << "<span class='warning'>You feel a tiny prick!</span>"
|
||||
user << "<span class='notice'>You inject [M] with [src].</span>"
|
||||
to_chat(M, "<span class='warning'>You feel a tiny prick!</span>")
|
||||
to_chat(user, "<span class='notice'>You inject [M] with [src].</span>")
|
||||
|
||||
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
|
||||
reagents.reaction(M, INJECT, fraction)
|
||||
@@ -39,7 +39,7 @@
|
||||
else
|
||||
trans = reagents.copy_to(M, amount_per_transfer_from_this)
|
||||
|
||||
user << "<span class='notice'>[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].</span>"
|
||||
to_chat(user, "<span class='notice'>[trans] unit\s injected. [reagents.total_volume] unit\s remaining in [src].</span>")
|
||||
|
||||
var/contained = english_list(injected)
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
..()
|
||||
if(!iscyborg(user))
|
||||
@@ -102,9 +102,9 @@
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/examine()
|
||||
..()
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
usr << "<span class='notice'>It is currently loaded.</span>"
|
||||
to_chat(usr, "<span class='notice'>It is currently loaded.</span>")
|
||||
else
|
||||
usr << "<span class='notice'>It is spent.</span>"
|
||||
to_chat(usr, "<span class='notice'>It is spent.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/stimpack //goliath kiting
|
||||
name = "stimpack medipen"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(self_delay)
|
||||
if(!do_mob(user, M, self_delay))
|
||||
return 0
|
||||
M << "<span class='notice'>You [apply_method] [src].</span>"
|
||||
to_chat(M, "<span class='notice'>You [apply_method] [src].</span>")
|
||||
|
||||
else
|
||||
M.visible_message("<span class='danger'>[user] attempts to force [M] to [apply_method] [src].</span>", \
|
||||
@@ -55,11 +55,11 @@
|
||||
if(!proximity) return
|
||||
if(target.is_open_container() != 0 && target.reagents)
|
||||
if(!target.reagents.total_volume)
|
||||
user << "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>"
|
||||
to_chat(user, "<span class='warning'>[target] is empty! There's nothing to dissolve [src] in.</span>")
|
||||
return
|
||||
user << "<span class='notice'>You dissolve [src] in [target].</span>"
|
||||
to_chat(user, "<span class='notice'>You dissolve [src] in [target].</span>")
|
||||
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
|
||||
O << "<span class='warning'>[user] slips something into [target]!</span>"
|
||||
to_chat(O, "<span class='warning'>[user] slips something into [target]!</span>")
|
||||
reagents.trans_to(target, reagents.total_volume)
|
||||
qdel(src)
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
list_reagents = list("salbutamol" = 30)
|
||||
roundstart = 1
|
||||
/obj/item/weapon/reagent_containers/pill/charcoal
|
||||
name = "antitoxin pill"
|
||||
name = "charcoal pill"
|
||||
desc = "Neutralizes many common toxins."
|
||||
icon_state = "pill17"
|
||||
list_reagents = list("charcoal" = 10)
|
||||
|
||||
@@ -27,19 +27,19 @@
|
||||
|
||||
if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution
|
||||
if(!A.reagents.total_volume && A.reagents)
|
||||
user << "<span class='notice'>\The [A] is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [A] is empty.</span>")
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
user << "<span class='notice'>\The [src] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [src] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = A.reagents.trans_to(src, 50) //transfer 50u , using the spray's transfer amount would take too long to refill
|
||||
user << "<span class='notice'>You fill \the [src] with [trans] units of the contents of \the [A].</span>"
|
||||
to_chat(user, "<span class='notice'>You fill \the [src] with [trans] units of the contents of \the [A].</span>")
|
||||
return
|
||||
|
||||
if(reagents.total_volume < amount_per_transfer_from_this)
|
||||
user << "<span class='warning'>\The [src] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [src] is empty!</span>")
|
||||
return
|
||||
|
||||
spray(A)
|
||||
@@ -115,7 +115,7 @@
|
||||
else
|
||||
amount_per_transfer_from_this = initial(amount_per_transfer_from_this)
|
||||
current_range = spray_range
|
||||
user << "<span class='notice'>You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.</span>"
|
||||
to_chat(user, "<span class='notice'>You switch the nozzle setting to [stream_mode ? "\"stream\"":"\"spray\""]. You'll now use [amount_per_transfer_from_this] units per use.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/verb/empty()
|
||||
set name = "Empty Spray Bottle"
|
||||
@@ -126,7 +126,7 @@
|
||||
if (alert(usr, "Are you sure you want to empty that?", "Empty Bottle:", "Yes", "No") != "Yes")
|
||||
return
|
||||
if(isturf(usr.loc) && src.loc == usr)
|
||||
usr << "<span class='notice'>You empty \the [src] onto the floor.</span>"
|
||||
to_chat(usr, "<span class='notice'>You empty \the [src] onto the floor.</span>")
|
||||
reagents.reaction(usr.loc)
|
||||
src.reagents.clear_reagents()
|
||||
|
||||
|
||||
@@ -66,12 +66,12 @@
|
||||
var/mob/living/carbon/monkey/M
|
||||
M = target
|
||||
M.retaliate(user)
|
||||
|
||||
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
user << "<span class='notice'>The syringe is full.</span>"
|
||||
to_chat(user, "<span class='notice'>The syringe is full.</span>")
|
||||
return
|
||||
|
||||
if(L) //living mob
|
||||
@@ -89,34 +89,34 @@
|
||||
if(L.transfer_blood_to(src, drawn_amount))
|
||||
user.visible_message("[user] takes a blood sample from [L].")
|
||||
else
|
||||
user << "<span class='warning'>You are unable to draw any blood from [L]!</span>"
|
||||
to_chat(user, "<span class='warning'>You are unable to draw any blood from [L]!</span>")
|
||||
|
||||
else //if not mob
|
||||
if(!target.reagents.total_volume)
|
||||
user << "<span class='warning'>[target] is empty!</span>"
|
||||
to_chat(user, "<span class='warning'>[target] is empty!</span>")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract))
|
||||
user << "<span class='warning'>You cannot directly remove reagents from [target]!</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot directly remove reagents from [target]!</span>")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
|
||||
|
||||
user << "<span class='notice'>You fill [src] with [trans] units of the solution.</span>"
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the solution.</span>")
|
||||
if (reagents.total_volume >= reagents.maximum_volume)
|
||||
mode=!mode
|
||||
update_icon()
|
||||
|
||||
if(SYRINGE_INJECT)
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='notice'>[src] is empty.</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
|
||||
user << "<span class='warning'>You cannot directly fill [target]!</span>"
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill [target]!</span>")
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
user << "<span class='notice'>[target] is full.</span>"
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
if(L) //living mob
|
||||
@@ -142,12 +142,12 @@
|
||||
add_logs(user, L, "injected", src, addition="which had [contained]")
|
||||
else
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) injected [L.name] ([L.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
L.attack_log += "\[[time_stamp()]\] <font color='orange'>Injected themselves ([contained]) with [src.name].</font>"
|
||||
L.log_message("<font color='orange'>Injected themselves ([contained]) with [src.name].</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
|
||||
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
|
||||
reagents.reaction(L, INJECT, fraction)
|
||||
reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
user << "<span class='notice'>You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.</span>"
|
||||
to_chat(user, "<span class='notice'>You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.</span>")
|
||||
if (reagents.total_volume <= 0 && mode==SYRINGE_INJECT)
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
/obj/structure/reagent_dispensers/examine(mob/user)
|
||||
..()
|
||||
if(reagents.total_volume)
|
||||
user << "<span class='notice'>It has [reagents.total_volume] units left.</span>"
|
||||
to_chat(user, "<span class='notice'>It has [reagents.total_volume] units left.</span>")
|
||||
else
|
||||
user << "<span class='danger'>It's empty.</span>"
|
||||
to_chat(user, "<span class='danger'>It's empty.</span>")
|
||||
|
||||
|
||||
/obj/structure/reagent_dispensers/proc/boom()
|
||||
@@ -89,20 +89,20 @@
|
||||
var/boom_message = "[key_name_admin(P.firer)] triggered a fueltank explosion via projectile."
|
||||
bombers += boom_message
|
||||
message_admins(boom_message)
|
||||
var/log_message = "[key_name(P.firer)] triggered a fueltank explosion via projectile."
|
||||
P.firer.attack_log += "\[[time_stamp()]\] [log_message]"
|
||||
log_attack(log_message)
|
||||
var/log_message = "triggered a fueltank explosion via projectile."
|
||||
P.firer.log_message(log_message, INDIVIDUAL_ATTACK_LOG)
|
||||
log_attack("[key_name(P.firer)] [log_message]")
|
||||
boom()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
if(!reagents.has_reagent("welding_fuel"))
|
||||
user << "<span class='warning'>[src] is out of fuel!</span>"
|
||||
to_chat(user, "<span class='warning'>[src] is out of fuel!</span>")
|
||||
return
|
||||
var/obj/item/weapon/weldingtool/W = I
|
||||
if(!W.welding)
|
||||
if(W.reagents.has_reagent("welding_fuel", W.max_fuel))
|
||||
user << "<span class='warning'>Your [W.name] is already full!</span>"
|
||||
to_chat(user, "<span class='warning'>Your [W.name] is already full!</span>")
|
||||
return
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
user.visible_message("<span class='notice'>[user] refills [user.p_their()] [W.name].</span>", "<span class='notice'>You refill [W].</span>")
|
||||
@@ -113,9 +113,9 @@
|
||||
var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool."
|
||||
bombers += message_admins
|
||||
message_admins(message_admins)
|
||||
var/message_log = "[key_name(user)] triggered a fueltank explosion via welding tool."
|
||||
user.attack_log += "\[[time_stamp()]\] [message_log]"
|
||||
log_attack(message_log)
|
||||
var/message_log = "triggered a fueltank explosion via welding tool."
|
||||
user.log_message(message_log, INDIVIDUAL_ATTACK_LOG)
|
||||
log_attack("[key_name(user)] [message_log]")
|
||||
boom()
|
||||
return
|
||||
return ..()
|
||||
@@ -146,11 +146,11 @@
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
|
||||
..()
|
||||
user << "There are [paper_cups ? paper_cups : "no"] paper cups left."
|
||||
to_chat(user, "There are [paper_cups ? paper_cups : "no"] paper cups left.")
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user)
|
||||
if(!paper_cups)
|
||||
user << "<span class='warning'>There aren't any cups left!</span>"
|
||||
to_chat(user, "<span class='warning'>There aren't any cups left!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] takes a cup from [src].</span>", "<span class='notice'>You take a paper cup from [src].</span>")
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/sillycup/S = new(get_turf(src))
|
||||
|
||||
Reference in New Issue
Block a user