Merge pull request #477 from Fox-McCloud/Chemistry-Cleanup

Chemistry Cleanup and Fixes
This commit is contained in:
ZomgPonies
2015-03-01 23:08:16 -05:00
14 changed files with 135 additions and 817 deletions
+3 -3
View File
@@ -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)
+14 -6
View File
@@ -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"
+6 -5
View File
@@ -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)
+1 -1
View File
@@ -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"
+57 -78
View File
@@ -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
+37 -215
View File
@@ -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
+1 -333
View File
@@ -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
+3 -3
View File
@@ -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"