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()
|
||||
|
||||
Reference in New Issue
Block a user