mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
Merge pull request #477 from Fox-McCloud/Chemistry-Cleanup
Chemistry Cleanup and Fixes
This commit is contained in:
@@ -133,9 +133,9 @@ var/global/sent_strike_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/advance(src), slot_shoes)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/deathsquad(src), slot_wear_suit)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(src), slot_gloves)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(src), slot_head)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/swat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(src), slot_wear_mask)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back)
|
||||
@@ -152,7 +152,7 @@ var/global/sent_strike_team = 0
|
||||
equip_to_slot_or_del(new /obj/item/weapon/disk/nuclear(src), slot_in_backpack)
|
||||
|
||||
equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(src), slot_l_store)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/grenade/flashbang(src), slot_r_store)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/shield/energy(src), slot_r_store)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double/full(src), slot_s_store)
|
||||
equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(src), slot_belt)
|
||||
|
||||
|
||||
@@ -154,18 +154,26 @@
|
||||
action_button_name = "HALT!"
|
||||
icon_action_button = "action_sechailer"
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/warden
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/hos
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat
|
||||
name = "\improper SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000."
|
||||
action_button_name = "HALT!"
|
||||
icon_state = "swat"
|
||||
icon_state = "officermask"
|
||||
aggressiveness = 3
|
||||
ignore_maskadjust = 1
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/cyborg
|
||||
name = "security hailer"
|
||||
desc = "A set of recognizable pre-recorded messages for cyborgs to use when apprehending criminals."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "taperecorderidle"
|
||||
aggressiveness = 1 //Borgs are nicecurity!
|
||||
ignore_maskadjust = 1
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/cyborg/New()
|
||||
..()
|
||||
verbs -= /obj/item/clothing/mask/gas/sechailer/verb/adjust
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/verb/adjust()
|
||||
set category = "Object"
|
||||
set name = "Adjust Mask"
|
||||
|
||||
@@ -36,15 +36,16 @@
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0)
|
||||
action_button_name = "Adjust Sterile Mask"
|
||||
icon_action_button = "action_sterile"
|
||||
ignore_maskadjust = 0
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/mask.dmi'
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/mask/surgical/attack_self(var/mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
adjustmask(user)
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache
|
||||
name = "fake moustache"
|
||||
desc = "Warning: moustache is fake."
|
||||
@@ -168,9 +169,9 @@
|
||||
ignore_maskadjust = 0
|
||||
adjusted_flags = SLOT_HEAD
|
||||
icon_state = "bandbotany"
|
||||
icon_action_button = "action_bandana"
|
||||
icon_action_button = "action_bandbotany"
|
||||
action_button_name = "Adjust Bandana"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/bandana/attack_self(var/mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/obj/item/clothing/mask/gas/voice
|
||||
name = "gas mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
|
||||
// desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics."
|
||||
var/obj/item/voice_changer/changer
|
||||
origin_tech = "syndicate=4"
|
||||
|
||||
|
||||
@@ -303,17 +303,16 @@
|
||||
m_type = 1
|
||||
|
||||
if ("cough")
|
||||
if(!reagents.has_reagent("dextromethorphan"))
|
||||
if(miming)
|
||||
message = "<B>[src]</B> appears to cough!"
|
||||
m_type = 1
|
||||
if(miming)
|
||||
message = "<B>[src]</B> appears to cough!"
|
||||
m_type = 1
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "<B>[src]</B> coughs!"
|
||||
m_type = 2
|
||||
else
|
||||
if (!muzzled)
|
||||
message = "<B>[src]</B> coughs!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> makes a strong noise."
|
||||
m_type = 2
|
||||
message = "<B>[src]</B> makes a strong noise."
|
||||
m_type = 2
|
||||
|
||||
if ("frown")
|
||||
message = "<B>[src]</B> frowns."
|
||||
@@ -709,75 +708,55 @@
|
||||
|
||||
// Needed for M_TOXIC_FART
|
||||
if("fart")
|
||||
if(world.time-lastFart >= 600)
|
||||
// playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
|
||||
if(TOXIC_FARTS in mutations)
|
||||
message = "<b>[src]</b> unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart."
|
||||
else
|
||||
message = "<b>[src]</b> [pick("passes wind","farts")]."
|
||||
m_type = 2
|
||||
|
||||
var/turf/location = get_turf(src)
|
||||
var/aoe_range=2 // Default
|
||||
if(SUPER_FART in mutations)
|
||||
aoe_range+=3 //Was 5
|
||||
|
||||
/* // If we're wearing a suit, don't blast or gas those around us.
|
||||
var/wearing_suit=0
|
||||
var/wearing_mask=0
|
||||
if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO)
|
||||
wearing_suit=1
|
||||
if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS))
|
||||
wearing_mask=1 */
|
||||
|
||||
// Process toxic farts first.
|
||||
if(TOXIC_FARTS in mutations)
|
||||
for(var/mob/M in range(location,aoe_range))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
continue
|
||||
if(!airborne_can_reach(location,M,aoe_range))
|
||||
continue
|
||||
// Now, we don't have this:
|
||||
//new /obj/effects/fart_cloud(T,L)
|
||||
// But:
|
||||
// <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it
|
||||
// <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem
|
||||
// <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud
|
||||
// So, let's give 'em space drugs.
|
||||
if (M == src)
|
||||
continue
|
||||
M.reagents.add_reagent("space_drugs",rand(1,10))
|
||||
/*
|
||||
var/datum/effect/effect/system/smoke_spread/chem/fart/S = new /datum/effect/effect/system/smoke_spread/chem/fart
|
||||
S.attach(location)
|
||||
S.set_up(src, 10, 0, location)
|
||||
spawn(0)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
*/
|
||||
if(SUPER_FART in mutations)
|
||||
visible_message("\red <b>[name]</b> hunches down and grits their teeth!")
|
||||
if(do_after(usr,30))
|
||||
visible_message("\red <b>[name]</b> unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.")
|
||||
//playsound(L.loc, 'superfart.ogg', 50, 0)
|
||||
for(var/mob/living/V in range(location,aoe_range))
|
||||
shake_camera(V,10,5)
|
||||
if (V == src)
|
||||
continue
|
||||
if(!airborne_can_reach(get_turf(src), get_turf(V)))
|
||||
continue
|
||||
V << "\red You are sent flying!"
|
||||
V.Weaken(5) // why the hell was this set to 12 christ
|
||||
step_away(V,location,15)
|
||||
step_away(V,location,15)
|
||||
step_away(V,location,15)
|
||||
else
|
||||
usr << "\red You were interrupted and couldn't fart! Rude!"
|
||||
lastFart=world.time
|
||||
// playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun
|
||||
if(TOXIC_FARTS in mutations)
|
||||
message = "<b>[src]</b> unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart."
|
||||
else
|
||||
message = "<b>[src]</b> strains, and nothing happens."
|
||||
m_type = 1
|
||||
message = "<b>[src]</b> [pick("passes wind","farts")]."
|
||||
m_type = 2
|
||||
|
||||
var/turf/location = get_turf(src)
|
||||
var/aoe_range=2 // Default
|
||||
if(SUPER_FART in mutations)
|
||||
aoe_range+=3 //Was 5
|
||||
|
||||
// Process toxic farts first.
|
||||
if(TOXIC_FARTS in mutations)
|
||||
for(var/mob/M in range(location,aoe_range))
|
||||
if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS))
|
||||
continue
|
||||
if(!airborne_can_reach(location,M,aoe_range))
|
||||
continue
|
||||
// Now, we don't have this:
|
||||
//new /obj/effects/fart_cloud(T,L)
|
||||
// But:
|
||||
// <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it
|
||||
// <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem
|
||||
// <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud
|
||||
// So, let's give 'em space drugs.
|
||||
if (M == src)
|
||||
continue
|
||||
M.reagents.add_reagent("space_drugs",rand(1,10))
|
||||
|
||||
if(SUPER_FART in mutations)
|
||||
visible_message("\red <b>[name]</b> hunches down and grits their teeth!")
|
||||
if(do_after(usr,30))
|
||||
visible_message("\red <b>[name]</b> unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.")
|
||||
//playsound(L.loc, 'superfart.ogg', 50, 0)
|
||||
for(var/mob/living/V in range(location,aoe_range))
|
||||
shake_camera(V,10,5)
|
||||
if (V == src)
|
||||
continue
|
||||
if(!airborne_can_reach(get_turf(src), get_turf(V)))
|
||||
continue
|
||||
V << "\red You are sent flying!"
|
||||
V.Weaken(5) // why the hell was this set to 12 christ
|
||||
step_away(V,location,15)
|
||||
step_away(V,location,15)
|
||||
step_away(V,location,15)
|
||||
else
|
||||
usr << "\red You were interrupted and couldn't fart! Rude!"
|
||||
|
||||
|
||||
if ("help")
|
||||
src << "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough,\ncry, custom, deathgasp, drool, eyebrow, frown, gasp, giggle, groan, grumble, handshake, hug-(none)/mob, glare-(none)/mob,\ngrin, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, raise, salute, shake, shiver, shrug,\nsigh, signal-#1-10, smile, sneeze, sniff, snore, stare-(none)/mob, tremble, twitch, twitch_s, whimper,\nwink, yawn"
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
for(var/obj/O in temp_list)
|
||||
if(O)
|
||||
modules += O
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/proc/add_languages(var/mob/living/silicon/robot/R)
|
||||
//full set of languages
|
||||
R.add_language("Galactic Common", 1)
|
||||
@@ -108,7 +108,7 @@
|
||||
src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/dropper(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
src.modules += new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
src.modules += new /obj/item/stack/medical/advanced/ointment(src)
|
||||
src.modules += new /obj/item/stack/medical/splint(src)
|
||||
@@ -204,7 +204,7 @@
|
||||
src.modules += new /obj/item/weapon/melee/baton/robot(src)
|
||||
src.modules += new /obj/item/weapon/gun/energy/disabler/cyborg(src)
|
||||
src.modules += new /obj/item/taperoll/police(src)
|
||||
src.modules += new /obj/item/device/taperecorder(src)
|
||||
src.modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src)
|
||||
src.emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
|
||||
return
|
||||
|
||||
@@ -265,13 +265,13 @@
|
||||
if(src.emag)
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = src.emag
|
||||
B.reagents.add_reagent("beer2", 2)
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R)
|
||||
//full set of languages
|
||||
R.add_language("Galactic Common", 1)
|
||||
R.add_language("Sol Common", 1)
|
||||
R.add_language("Tradeband", 1)
|
||||
R.add_language("Gutter", 1)
|
||||
R.add_language("Gutter", 1)
|
||||
R.add_language("Sinta'unathi", 1)
|
||||
R.add_language("Siik'tajr", 1)
|
||||
R.add_language("Skrellian", 1)
|
||||
@@ -373,7 +373,7 @@
|
||||
src.emag = new /obj/item/weapon/reagent_containers/spray/alien/acid(src)
|
||||
src.emag.reagents.add_reagent("pacid", 125)
|
||||
src.emag.reagents.add_reagent("sacid", 125)
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/alien/hunter/add_languages(var/mob/living/silicon/robot/R)
|
||||
..()
|
||||
R.add_language("xenocommon", 1)
|
||||
|
||||
@@ -1,158 +0,0 @@
|
||||
//Cough medicine.
|
||||
/datum/reagent/antidepressant/dextromethorphan
|
||||
name = "Dextromethorphan"
|
||||
id = "dextromethorphan"
|
||||
description = "Cough medicine."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF1111"
|
||||
custom_metabolism = 0.05
|
||||
data = 0
|
||||
var/message = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 0
|
||||
if(!message) message = 0
|
||||
data += custom_metabolism
|
||||
switch(data + src.volume)
|
||||
if(1 to 5)
|
||||
if(message == 0)
|
||||
M << "\red Your throat feels better and you stop coughing."
|
||||
//The coughing check is made in carbon/human/emote.dm where it checks after this reagent.
|
||||
message = 1
|
||||
if(5 to 12.5)
|
||||
if(message < 2)
|
||||
M << "\red You feel full of strength and energy! You're getting restless!"
|
||||
message = 2
|
||||
if(prob(5)) M.emote(pick("twitch_s"))
|
||||
if(12.5 to 25)
|
||||
if(message < 3)
|
||||
M << "\red Your heartrate is racing. You feel euphoric!"
|
||||
message = 3
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(5)) M.emote(pick("twitch_s","moan"))
|
||||
if(25 to INFINITY)
|
||||
if(message < 4)
|
||||
M << "\red Your heart is racing and your body won't respond properly. You almost feel like you're on autopilot."
|
||||
message = 4
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("twitch","moan","drool"))
|
||||
if(prob(10)) M:weakened = max(M:weakened, 10)
|
||||
if(prob(5)) M.hallucination = max(M.hallucination, 5)
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/dextromethorphan
|
||||
name = "Dextromethorphan"
|
||||
id = "dextromethorphan"
|
||||
result = "dextromethorphan"
|
||||
required_reagents = list("cryptobiolin" = 1, "hydrogen" = 1, "carbon" = 1)
|
||||
result_amount = 3
|
||||
|
||||
//MDMA
|
||||
/datum/reagent/antidepressant/mdma
|
||||
name = "MDMA"
|
||||
id = "mdma"
|
||||
description = "MDMA is one of the most popular recreational psychoactives, most commonly sold in the form of 'ecstasy' tablets. It is known for its empathogenic, euphoric, and stimulant effects, and has also been used in psychotherapy."
|
||||
reagent_state = LIQUID
|
||||
color = "#EEEEEE"
|
||||
custom_metabolism = 0.1
|
||||
data = 0
|
||||
var/message = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 0
|
||||
if(!message) message = 0
|
||||
data += custom_metabolism
|
||||
switch(data + src.volume)
|
||||
if(1 to 5)
|
||||
if(message == 0)
|
||||
M << "\red Your heart rate increases. Your senses all seem more amplified. You start to feel... euphoric."
|
||||
message = 1
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(5)) M.emote(pick("giggle","moan"))
|
||||
if(5 to 10)
|
||||
if(message < 2)
|
||||
M << "\red Your heart rate increases. Your senses all seem more amplified. You start to feel... euphoric."
|
||||
message = 2
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(5)) M.emote(pick("giggle","moan"))
|
||||
if(10 to 20)
|
||||
if(message < 3)
|
||||
M << "\red Your heart rate increases. Your senses all seem more amplified. You start to feel... euphoric."
|
||||
message = 3
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(5)) M.emote(pick("giggle","moan"))
|
||||
if(20 to INFINITY)
|
||||
if(message < 4)
|
||||
M << "\red That was probably too much..."
|
||||
message = 4
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("twitch","giggle","moan"))
|
||||
if(prob(10)) M.emote(pick("drool"))
|
||||
if(prob(10)) M:weakened = max(M:weakened, 10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/mdma
|
||||
name = "MDMA"
|
||||
id = "mdma"
|
||||
result = "mdma"
|
||||
required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1, "sugar" = 1)
|
||||
result_amount = 3
|
||||
|
||||
//Meth
|
||||
/datum/reagent/antidepressant/meth
|
||||
name = "Methamphetamine"
|
||||
id = "meth"
|
||||
description = "Methamphetamine is a neurotoxin and potent psychostimulant of the phenethylamine and amphetamine classes that is used as a recreational drug and, rarely, to treat attention deficit hyperactivity disorder (ADHD) and obesity."
|
||||
reagent_state = LIQUID
|
||||
color = "#000088"
|
||||
custom_metabolism = 0.1
|
||||
data = 0
|
||||
var/message = 0
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 0
|
||||
if(!message) message = 0
|
||||
data += custom_metabolism
|
||||
switch(data + src.volume)
|
||||
if(1 to 5)
|
||||
if(message == 0)
|
||||
M << "\red You feel an intense euphoria wash over you."
|
||||
message = 1
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("giggle","moan"))
|
||||
if(5 to 10)
|
||||
if(message < 2)
|
||||
M << "\red The euphoria washing over you is accompanied by an intense restlessness. You need something to do... badly."
|
||||
message = 2
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("giggle", "moan", "twitch_s", "twitch"))
|
||||
if(10 to 20)
|
||||
if(message < 3)
|
||||
M << "\red The euphoria you're feeling is accompanied by equal parts restlessness and discomfort as your heartbeat goes all over the place."
|
||||
message = 3
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("giggle", "moan", "twitch_s", "twitch"))
|
||||
if(20 to INFINITY)
|
||||
if(message < 4)
|
||||
M << "\red Your heartbeat becomes highly irregular all of a sudden. The world seems a blur around you. Your head is aching."
|
||||
message = 4
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(prob(10)) M.emote(pick("giggle", "moan", "twitch_s", "twitch"))
|
||||
if(prob(10)) M.emote(pick("drool"))
|
||||
if(prob(10)) M:weakened = max(M:weakened, 10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/meth
|
||||
name = "Methamphetamine"
|
||||
id = "meth"
|
||||
result = "meth"
|
||||
required_reagents = list("water" = 1, "dextromethorphan" = 1, "potassium" = 1)
|
||||
required_catalysts = list("fuel" = 5)
|
||||
result_amount = 3
|
||||
@@ -485,38 +485,6 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
srejuvenate
|
||||
name = "Soporific Rejuvenant"
|
||||
id = "stoxin2"
|
||||
description = "Put people to sleep, and heals them."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
data++
|
||||
if(M.losebreath >= 10)
|
||||
M.losebreath = max(10, M.losebreath-10)
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
switch(data)
|
||||
if(1 to 15)
|
||||
M.eye_blurry = max(M.eye_blurry, 10)
|
||||
if(15 to 25)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
if(25 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustOxyLoss(-M.getOxyLoss())
|
||||
M.SetWeakened(0)
|
||||
M.SetStunned(0)
|
||||
M.SetParalysis(0)
|
||||
M.dizziness = 0
|
||||
M.drowsyness = 0
|
||||
M.stuttering = 0
|
||||
M.confused = 0
|
||||
M.jitteriness = 0
|
||||
..()
|
||||
return
|
||||
|
||||
inaprovaline
|
||||
name = "Inaprovaline"
|
||||
id = "inaprovaline"
|
||||
@@ -1012,7 +980,7 @@ datum
|
||||
if(prob(50))
|
||||
M.apply_effect(50,IRRADIATE,0) // curing it that way may kill you instead
|
||||
M.adjustToxLoss(100)
|
||||
M:antibodies |= V.antigen
|
||||
C.antibodies |= V.antigen
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1037,24 +1005,12 @@ datum
|
||||
|
||||
var/needs_update = 1 //M.mutations.len > 0
|
||||
|
||||
//Ryetalyn now cures by a random chance per on_mob_life call - Bone White
|
||||
// 1 volume = ~2% chance
|
||||
// 10 volume = ~17% chance
|
||||
// 30 volume = ~38% chance
|
||||
//if (rand(0, 50+volume) > 50 && ishuman(M))
|
||||
if (volume >= 1 && ishuman(M))
|
||||
for(var/block=1;block<=DNA_SE_LENGTH;block++)
|
||||
M.dna.SetSEState(block,0)
|
||||
genemutcheck(M,block,null,MUTCHK_FORCED)
|
||||
M.update_mutations()
|
||||
for(var/block=1;block<=DNA_SE_LENGTH;block++)
|
||||
M.dna.SetSEState(block,0)
|
||||
genemutcheck(M,block,null,MUTCHK_FORCED)
|
||||
M.update_mutations()
|
||||
|
||||
M.dna.struc_enzymes = M.dna.struc_enzymes_original
|
||||
|
||||
/* Old Code (non-functional)
|
||||
M.mutations = list()
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
*/
|
||||
M.dna.struc_enzymes = M.dna.struc_enzymes_original
|
||||
|
||||
// Might need to update appearance for hulk etc.
|
||||
if(needs_update && ishuman(M))
|
||||
@@ -1637,25 +1593,6 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
Alchdranine
|
||||
name = "Alchdranine"
|
||||
id = "alchdranine"
|
||||
description = "Alchdranine is an extremely strange chemical substance that can be used to treat almost any injury with a high level of effectiveness "
|
||||
reagent_state = LIQUID
|
||||
color = "#07a4d1" // rgb: 7, 164, 209
|
||||
|
||||
on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(!alien || alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-1*REM)
|
||||
M.heal_organ_damage(1*REM,0)
|
||||
M.heal_organ_damage(0,1*REM)
|
||||
M.adjustToxLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
adminordrazine //An OP chemical for admins
|
||||
name = "Adminordrazine"
|
||||
id = "adminordrazine"
|
||||
@@ -1665,43 +1602,20 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom ///This can even heal dead people.
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,5)
|
||||
M.setCloneLoss(0)
|
||||
M.setOxyLoss(0)
|
||||
M.radiation = 0
|
||||
M.heal_organ_damage(5,5)
|
||||
M.adjustToxLoss(-5)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 5)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
holder.remove_reagent("stoxin", 5)
|
||||
if(holder.has_reagent("plasma"))
|
||||
holder.remove_reagent("plasma", 5)
|
||||
if(holder.has_reagent("sacid"))
|
||||
holder.remove_reagent("sacid", 5)
|
||||
if(holder.has_reagent("pacid"))
|
||||
holder.remove_reagent("pacid", 5)
|
||||
if(holder.has_reagent("cyanide"))
|
||||
holder.remove_reagent("cyanide", 5)
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 5)
|
||||
if(holder.has_reagent("amatoxin"))
|
||||
holder.remove_reagent("amatoxin", 5)
|
||||
if(holder.has_reagent("chloralhydrate"))
|
||||
holder.remove_reagent("chloralhydrate", 5)
|
||||
if(holder.has_reagent("carpotoxin"))
|
||||
holder.remove_reagent("carpotoxin", 5)
|
||||
if(holder.has_reagent("zombiepowder"))
|
||||
holder.remove_reagent("zombiepowder", 5)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = 0
|
||||
M.setBrainLoss(0)
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
M.eye_blurry = 0
|
||||
M.eye_blind = 0
|
||||
// M.disabilities &= ~NEARSIGHTED //doesn't even do anythig cos of the disabilities = 0 bit
|
||||
// M.sdisabilities &= ~BLIND //doesn't even do anythig cos of the sdisabilities = 0 bit
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/internal/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
@@ -1714,9 +1628,16 @@ datum
|
||||
M.dizziness = 0
|
||||
M.drowsyness = 0
|
||||
M.stuttering = 0
|
||||
M.slurring = 0
|
||||
M.confused = 0
|
||||
M.sleeping = 0
|
||||
M.jitteriness = 0
|
||||
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.virus2.len)
|
||||
for (var/ID in C.virus2)
|
||||
var/datum/disease2/disease/V = C.virus2[ID]
|
||||
C.antibodies |= V.antigen
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2136,47 +2057,7 @@ datum
|
||||
description = "A highly addictive stimulant extracted from the tobacco plant."
|
||||
reagent_state = LIQUID
|
||||
color = "#181818" // rgb: 24, 24, 24
|
||||
/*
|
||||
ethanol
|
||||
name = "Ethanol"
|
||||
id = "ethanol"
|
||||
description = "A well-known alcohol with a variety of applications."
|
||||
reagent_state = LIQUID
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M.Dizzy(5)
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
if(data >= 25)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
M.stuttering += 4
|
||||
if(data >= 40 && prob(33))
|
||||
if (!M.confused) M.confused = 1
|
||||
M.confused += 3
|
||||
..()
|
||||
return
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
if(istype(O,/obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
usr << "The solution melts away the ink on the paper."
|
||||
if(istype(O,/obj/item/weapon/book))
|
||||
if(volume >= 5)
|
||||
var/obj/item/weapon/book/affectedbook = O
|
||||
affectedbook.dat = null
|
||||
usr << "The solution melts away the ink on the book."
|
||||
else
|
||||
usr << "It wasn't enough..."
|
||||
return
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 15)
|
||||
return
|
||||
*/
|
||||
ammonia
|
||||
name = "Ammonia"
|
||||
id = "ammonia"
|
||||
@@ -2184,11 +2065,6 @@ datum
|
||||
reagent_state = GAS
|
||||
color = "#404030" // rgb: 64, 64, 48
|
||||
|
||||
ultraglue
|
||||
name = "Ultra Glue"
|
||||
id = "glue"
|
||||
description = "An extremely powerful bonding agent."
|
||||
color = "#FFFFCC" // rgb: 255, 255, 204
|
||||
|
||||
diethylamine
|
||||
name = "Diethylamine"
|
||||
@@ -2254,28 +2130,23 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
beer2 //copypasta of chloral hydrate, disguised as normal beer for use by emagged brobots
|
||||
beer2 //disguised as normal beer for use by emagged brobots
|
||||
name = "Beer"
|
||||
id = "beer2"
|
||||
description = "An alcoholic beverage made from malted grains, hops, yeast, and water."
|
||||
reagent_state = LIQUID
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
reaction_mob(var/mob/living/carbon/M, var/method=TOUCH, var/volume)
|
||||
if(!..()) return
|
||||
if(!istype(M) || !M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
src = null
|
||||
if((method==TOUCH && prob(33)) || method==INGEST)
|
||||
randmuti(M)
|
||||
if(prob(98)) randmutb(M)
|
||||
else randmutg(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
return
|
||||
on_mob_life(var/mob/living/carbon/M)
|
||||
if(!istype(M)) return
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(10,IRRADIATE,0)
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!data)
|
||||
data = 1
|
||||
switch(data)
|
||||
if(1 to 50)
|
||||
M.sleeping += 1
|
||||
if(51 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustToxLoss((data - 50)*REM)
|
||||
data++
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2294,19 +2165,6 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(50)) M.heal_organ_damage(1,0)
|
||||
M.nutrition += nutriment_factor // For hunger and fatness
|
||||
/*
|
||||
// If overeaten - vomit and fall down
|
||||
// Makes you feel bad but removes reagents and some effect
|
||||
// from your body
|
||||
if (M.nutrition > 650)
|
||||
M.nutrition = rand (250, 400)
|
||||
M.weakened += rand(2, 10)
|
||||
M.jitteriness += rand(0, 5)
|
||||
M.dizziness = max (0, (M.dizziness - rand(0, 15)))
|
||||
M.druggy = max (0, (M.druggy - rand(0, 15)))
|
||||
M.adjustToxLoss(rand(-15, -5)))
|
||||
M.updatehealth()
|
||||
*/
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2598,25 +2456,6 @@ datum
|
||||
return
|
||||
..()
|
||||
|
||||
/* //removed because of meta bullshit. this is why we can't have nice things.
|
||||
syndicream
|
||||
name = "Cream filling"
|
||||
id = "syndicream"
|
||||
description = "Delicious cream filling of a mysterious origin. Tastes criminally good."
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#AB7878" // rgb: 171, 120, 120
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.mind)
|
||||
if(M.mind.special_role)
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(1,1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
*/
|
||||
cornoil
|
||||
name = "Corn Oil"
|
||||
id = "cornoil"
|
||||
@@ -2705,7 +2544,7 @@ datum
|
||||
..()
|
||||
return
|
||||
|
||||
/* We're back to flour bags
|
||||
|
||||
flour
|
||||
name = "flour"
|
||||
id = "flour"
|
||||
@@ -2723,7 +2562,6 @@ datum
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
*/
|
||||
|
||||
rice
|
||||
name = "Rice"
|
||||
@@ -3327,6 +3165,13 @@ datum
|
||||
usr << "It wasn't enough..."
|
||||
return
|
||||
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 15)
|
||||
return
|
||||
|
||||
beer //It's really much more stronger than other drinks.
|
||||
name = "Beer"
|
||||
id = "beer"
|
||||
@@ -3974,29 +3819,6 @@ datum
|
||||
|
||||
return
|
||||
|
||||
|
||||
//Fox
|
||||
/////////////////Requires Further Balance Testing//////////////////
|
||||
/*
|
||||
lectrazine
|
||||
name = "Lectrazine"
|
||||
id = "lectrazine"
|
||||
description = "An extremly powerful cardiostimulant and analgesic which is used in revival of deceased."
|
||||
reagent_state = LIQUID
|
||||
color = "#080000"
|
||||
custom_metabolism = 0.1
|
||||
|
||||
reaction_mob(var/mob/living/carbon/M as mob, var/methode=INGEST)
|
||||
if(!M) M = holder.my_atom
|
||||
M.stat = CONSCIOUS
|
||||
M.setOxyLoss(0)
|
||||
M.heal_organ_damage(15,0)
|
||||
M.SetParalysis(15)
|
||||
M.adjustBrainLoss(10*REM)
|
||||
return
|
||||
|
||||
|
||||
*/
|
||||
// Undefine the alias for REAGENTS_EFFECT_MULTIPLER
|
||||
#undef REM
|
||||
|
||||
@@ -4004,4 +3826,4 @@ datum
|
||||
/datum/reagent/Destroy()
|
||||
if(holder)
|
||||
holder.reagent_list -= src
|
||||
holder = null
|
||||
holder = null
|
||||
|
||||
@@ -327,13 +327,6 @@ datum
|
||||
required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1)
|
||||
result_amount = 3
|
||||
|
||||
ethanoloxidation
|
||||
name = "ethanoloxidation" //Kind of a placeholder in case someone ever changes it so that chemicals
|
||||
id = "ethanoloxidation" // react in the body. Also it would be silly if it didn't exist.
|
||||
result = "water"
|
||||
required_reagents = list("ethylredoxrazine" = 1, "ethanol" = 1)
|
||||
result_amount = 2
|
||||
|
||||
glycerol
|
||||
name = "Glycerol"
|
||||
id = "glycerol"
|
||||
@@ -405,33 +398,6 @@ datum
|
||||
holder.del_reagent("napalm")
|
||||
return
|
||||
|
||||
/*
|
||||
smoke
|
||||
name = "Smoke"
|
||||
id = "smoke"
|
||||
result = null
|
||||
required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1 )
|
||||
result_amount = null
|
||||
secondary = 1
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/system/bad_smoke_spread/S = new /datum/effect/system/bad_smoke_spread
|
||||
S.attach(location)
|
||||
S.set_up(10, 0, location)
|
||||
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
spawn(0)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
holder.clear_reagents()
|
||||
return */
|
||||
|
||||
chemsmoke
|
||||
name = "Chemsmoke"
|
||||
id = "chemsmoke"
|
||||
@@ -720,289 +686,7 @@ datum
|
||||
M.show_message( "<span class ='notice'>The blood seems to break apart in the fuel.</span>", 1)
|
||||
holder.del_reagent("blood")
|
||||
return
|
||||
/////////////////////////////////////OLD SLIME CORE REACTIONS ///////////////////////////////
|
||||
/*
|
||||
slimepepper
|
||||
name = "Slime Condensedcapaicin"
|
||||
id = "m_condensedcapaicin"
|
||||
result = "condensedcapsaicin"
|
||||
required_reagents = list("sugar" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 1
|
||||
slimefrost
|
||||
name = "Slime Frost Oil"
|
||||
id = "m_frostoil"
|
||||
result = "frostoil"
|
||||
required_reagents = list("water" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 1
|
||||
slimeglycerol
|
||||
name = "Slime Glycerol"
|
||||
id = "m_glycerol"
|
||||
result = "glycerol"
|
||||
required_reagents = list("blood" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 1
|
||||
|
||||
slime_explosion
|
||||
name = "Slime Explosion"
|
||||
id = "m_explosion"
|
||||
result = null
|
||||
required_reagents = list("blood" = 1)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 2
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round (created_volume/10, 1), location, 0, 0)
|
||||
e.start()
|
||||
|
||||
holder.clear_reagents()
|
||||
return
|
||||
slimejam
|
||||
name = "Slime Jam"
|
||||
id = "m_jam"
|
||||
result = "slimejelly"
|
||||
required_reagents = list("water" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 2
|
||||
slimesynthi
|
||||
name = "Slime Synthetic Flesh"
|
||||
id = "m_flesh"
|
||||
result = null
|
||||
required_reagents = list("sugar" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 2
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
return
|
||||
|
||||
slimeenzyme
|
||||
name = "Slime Enzyme"
|
||||
id = "m_enzyme"
|
||||
result = "enzyme"
|
||||
required_reagents = list("blood" = 1, "water" = 1)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 3
|
||||
slimeplasma
|
||||
name = "Slime Plasma"
|
||||
id = "m_plasma"
|
||||
result = "plasma"
|
||||
required_reagents = list("sugar" = 1, "blood" = 2)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 3
|
||||
slimevirus
|
||||
name = "Slime Virus"
|
||||
id = "m_virus"
|
||||
result = null
|
||||
required_reagents = list("sugar" = 1, "sacid" = 1)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 3
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
holder.clear_reagents()
|
||||
|
||||
var/virus = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, \
|
||||
/datum/disease/pierrot_throat, /datum/disease/fake_gbs, \
|
||||
/datum/disease/brainrot, /datum/disease/magnitis)
|
||||
|
||||
|
||||
var/datum/disease/F = new virus(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
holder.add_reagent("blood", 20, data)
|
||||
|
||||
holder.add_reagent("cyanide", rand(1,10))
|
||||
|
||||
return
|
||||
|
||||
slimeteleport
|
||||
name = "Slime Teleport"
|
||||
id = "m_tele"
|
||||
result = null
|
||||
required_reagents = list("pacid" = 2, "mutagen" = 2)
|
||||
required_catalysts = list("plasma" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 4
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
// Calculate new position (searches through beacons in world)
|
||||
var/obj/item/device/radio/beacon/chosen
|
||||
var/list/possible = list()
|
||||
for(var/obj/item/device/radio/beacon/W in world)
|
||||
possible += W
|
||||
|
||||
if(possible.len > 0)
|
||||
chosen = pick(possible)
|
||||
|
||||
if(chosen)
|
||||
// Calculate previous position for transition
|
||||
|
||||
var/turf/FROM = get_turf_loc(holder.my_atom) // the turf of origin we're travelling FROM
|
||||
var/turf/TO = get_turf_loc(chosen) // the turf of origin we're travelling TO
|
||||
|
||||
playsound(TO, 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
var/list/flashers = list()
|
||||
for(var/mob/living/carbon/human/M in viewers(TO, null))
|
||||
if(M:eyecheck() <= 0)
|
||||
flick("e_flash", M.flash) // flash dose faggots
|
||||
flashers += M
|
||||
|
||||
var/y_distance = TO.y - FROM.y
|
||||
var/x_distance = TO.x - FROM.x
|
||||
for (var/atom/movable/A in range(2, FROM )) // iterate thru list of mobs in the area
|
||||
if(istype(A, /obj/item/device/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid
|
||||
if( A.anchored && !istype(A, /mob/dead/observer) ) continue // don't teleport anchored things (computers, tables, windows, grilles, etc) because this causes problems!
|
||||
// do teleport ghosts however because hell why not
|
||||
|
||||
var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place
|
||||
if(!A.Move(newloc)) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving
|
||||
A.loc = locate(A.x + x_distance, A.y + y_distance, TO.z)
|
||||
|
||||
spawn()
|
||||
if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect
|
||||
var/mob/M = A
|
||||
if(M.client)
|
||||
var/obj/blueeffect = new /obj(src)
|
||||
blueeffect.screen_loc = "WEST,SOUTH to EAST,NORTH"
|
||||
blueeffect.icon = 'icons/effects/effects.dmi'
|
||||
blueeffect.icon_state = "shieldsparkles"
|
||||
blueeffect.layer = 17
|
||||
blueeffect.mouse_opacity = 0
|
||||
M.client.screen += blueeffect
|
||||
sleep(20)
|
||||
M.client.screen -= blueeffect
|
||||
del(blueeffect)
|
||||
slimecrit
|
||||
name = "Slime Crit"
|
||||
id = "m_tele"
|
||||
result = null
|
||||
required_reagents = list("sacid" = 1, "blood" = 1)
|
||||
required_catalysts = list("plasma" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 4
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
var/blocked = list(/mob/living/simple_animal/hostile,
|
||||
/mob/living/simple_animal/hostile/pirate,
|
||||
/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/simple_animal/hostile/russian,
|
||||
/mob/living/simple_animal/hostile/russian/ranged,
|
||||
/mob/living/simple_animal/hostile/syndicate,
|
||||
/mob/living/simple_animal/hostile/syndicate/melee,
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space,
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged,
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space,
|
||||
/mob/living/simple_animal/hostile/alien/queen/large,
|
||||
/mob/living/simple_animal/clown
|
||||
)//exclusion list for things you don't want the reaction to create.
|
||||
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
|
||||
|
||||
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
|
||||
if(M:eyecheck() <= 0)
|
||||
flick("e_flash", M.flash)
|
||||
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
var/chosen = pick(critters)
|
||||
var/mob/living/simple_animal/hostile/C = new chosen
|
||||
C.loc = get_turf_loc(holder.my_atom)
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(C, pick(NORTH,SOUTH,EAST,WEST))
|
||||
slimebork
|
||||
name = "Slime Bork"
|
||||
id = "m_tele"
|
||||
result = null
|
||||
required_reagents = list("sugar" = 1, "water" = 1)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 4
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
|
||||
// BORK BORK BORK
|
||||
|
||||
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
|
||||
if(M:eyecheck() <= 0)
|
||||
flick("e_flash", M.flash)
|
||||
|
||||
for(var/i = 1, i <= created_volume + rand(1,2), i++)
|
||||
var/chosen = pick(borks)
|
||||
var/obj/B = new chosen
|
||||
if(B)
|
||||
B.loc = get_turf_loc(holder.my_atom)
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
step(B, pick(NORTH,SOUTH,EAST,WEST))
|
||||
|
||||
|
||||
|
||||
slimechloral
|
||||
name = "Slime Chloral"
|
||||
id = "m_bunch"
|
||||
result = "chloralhydrate"
|
||||
required_reagents = list("blood" = 1, "water" = 2)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 5
|
||||
slimeretro
|
||||
name = "Slime Retro"
|
||||
id = "m_xeno"
|
||||
result = null
|
||||
required_reagents = list("sugar" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 5
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/datum/disease/F = new /datum/disease/dna_retrovirus(0)
|
||||
var/list/data = list("viruses"= list(F))
|
||||
holder.add_reagent("blood", 20, data)
|
||||
slimefoam
|
||||
name = "Slime Foam"
|
||||
id = "m_foam"
|
||||
result = null
|
||||
required_reagents = list("sacid" = 1)
|
||||
result_amount = 2
|
||||
required_container = /obj/item/slime_core
|
||||
required_other = 5
|
||||
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution violently bubbles!"
|
||||
|
||||
location = get_turf(holder.my_atom)
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution spews out foam!"
|
||||
|
||||
//world << "Holder volume is [holder.total_volume]"
|
||||
//for(var/datum/reagent/R in holder.reagent_list)
|
||||
// world << "[R.name] = [R.volume]"
|
||||
|
||||
var/datum/effect/effect/system/foam_spread/s = new()
|
||||
s.set_up(created_volume, location, holder, 0)
|
||||
s.start()
|
||||
holder.clear_reagents()
|
||||
return
|
||||
*/
|
||||
/////////////////////////////////////////////NEW SLIME CORE REACTIONS/////////////////////////////////////////////
|
||||
|
||||
//Grey
|
||||
@@ -2184,20 +1868,4 @@ datum
|
||||
id = "rewriter"
|
||||
result = "rewriter"
|
||||
required_reagents = list("spacemountainwind" = 1, "coffee" = 1)
|
||||
result_amount = 2
|
||||
|
||||
|
||||
|
||||
//Fox
|
||||
///////////////////////Requires Balance Testing///////////////////
|
||||
/*
|
||||
lectrazine
|
||||
name = "Lectrazine"
|
||||
id = "lectrazine"
|
||||
result = "lectrazine"
|
||||
required_reagents = list("inaprovaline" = 1, "phosphorus" = 1)
|
||||
required_catalysts = list("silver" = 5)
|
||||
result_amount = 2
|
||||
|
||||
*/
|
||||
|
||||
result_amount = 2
|
||||
@@ -76,7 +76,6 @@
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300)
|
||||
build_path = /obj/item/weapon/shield/riot/tele
|
||||
locked = 1
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/lasercannon
|
||||
|
||||
@@ -104,12 +104,12 @@
|
||||
|
||||
////////////////////////STAGE 4/////////////////////////////////
|
||||
|
||||
/datum/disease2/effect/alchdranine
|
||||
/datum/disease2/effect/doctorsdelight
|
||||
name = "Panacea Effect"
|
||||
stage = 4
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if (mob.reagents.get_reagent_amount("alchdranine") < 1)
|
||||
mob.reagents.add_reagent("alchdranine", 1)
|
||||
if (mob.reagents.get_reagent_amount("doctorsdelight") < 1)
|
||||
mob.reagents.add_reagent("doctorsdelight", 1)
|
||||
|
||||
/datum/disease2/effect/viralsputum_major
|
||||
name = "Hemoptysis"
|
||||
|
||||
Reference in New Issue
Block a user