mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 12:04:48 +01:00
Added a bunch of new goon powers.
Conflicts: code/modules/mob/living/carbon/human/emote.dm
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
// WAS: /datum/bioEffect/mute
|
||||
/datum/dna/gene/disability/mute
|
||||
name = "Mute"
|
||||
desc = "Completley shuts down the speech center of the subject's brain."
|
||||
desc = "Completely shuts down the speech center of the subject's brain."
|
||||
activation_message = "You feel unable to express yourself at all."
|
||||
deactivation_message = "You feel able to speak freely again."
|
||||
|
||||
@@ -278,4 +278,85 @@
|
||||
C << "\red [src.personalized_stink]"
|
||||
else
|
||||
C << "\red [stinkString()]"
|
||||
*/
|
||||
*/
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// WAS: /datum/bioEffect/immolate
|
||||
/datum/dna/gene/basic/grant_spell/immolate
|
||||
name = "Incendiary Mitochondria"
|
||||
desc = "The subject becomes able to convert excess cellular energy into thermal energy."
|
||||
activation_messages = list("You suddenly feel rather hot.")
|
||||
deactivation_messages = list("You no longer feel uncomfortably hot.")
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/immolate
|
||||
|
||||
New()
|
||||
..()
|
||||
block = IMMOLATEBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/immolate
|
||||
name = "Incendiary Mitochondria"
|
||||
desc = "The subject becomes able to convert excess cellular energy into thermal energy."
|
||||
panel = "Mutant Powers"
|
||||
|
||||
charge_type = "recharge"
|
||||
charge_max = 600
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
range = -1
|
||||
selection_type = "range"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/immolate/cast(list/targets)
|
||||
if (istype(usr,/mob/living/))
|
||||
var/mob/living/L = usr
|
||||
|
||||
L.adjust_fire_stacks(0.5) // Same as walking into fire. Was 100 (goon fire)
|
||||
L.visible_message("\red <b>[L.name]</b> suddenly bursts into flames!")
|
||||
//playsound(L.loc, 'mag_fireballlaunch.ogg', 50, 0)
|
||||
|
||||
return
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WAS: /datum/bioEffect/melt
|
||||
/datum/dna/gene/basic/grant_verb/melt
|
||||
name = "Self Biomass Manipulation"
|
||||
desc = "The subject becomes able to transform the matter of their cells into a liquid state."
|
||||
activation_messages = list("You feel strange and jiggly.")
|
||||
deactivation_messages = list("You feel more solid.")
|
||||
|
||||
verbtype=/proc/bioproc_melt
|
||||
|
||||
New()
|
||||
..()
|
||||
block = MELTBLOCK
|
||||
|
||||
/proc/bioproc_melt()
|
||||
set name = "Dissolve"
|
||||
set desc = "Transform yourself into a liquified state."
|
||||
set category = "Mutant Abilities"
|
||||
|
||||
if (istype(usr,/mob/living/carbon/human/))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
|
||||
H.visible_message("\red <b>[H.name]'s flesh melts right off! Holy shit!</b>")
|
||||
//if (H.gender == "female")
|
||||
// playsound(H.loc, 'female_fallscream.ogg', 50, 0)
|
||||
//else
|
||||
// playsound(H.loc, 'male_fallscream.ogg', 50, 0)
|
||||
//playsound(H.loc, 'bubbles.ogg', 50, 0)
|
||||
//playsound(H.loc, 'loudcrunch2.ogg', 50, 0)
|
||||
var/mob/living/carbon/human/skellington/nH = new /mob/living/carbon/human/skellington(H.loc)
|
||||
nH.real_name = H.real_name
|
||||
nH.name = "[H.name]'s skeleton"
|
||||
//H.decomp_stage = 4
|
||||
nH.brain_op_stage = 4
|
||||
H.gib(1)
|
||||
else
|
||||
usr.visible_message("\red <b>[usr.name] melts into a pile of bloody viscera!</b>")
|
||||
usr.gib(1)
|
||||
|
||||
return
|
||||
|
||||
@@ -72,4 +72,399 @@
|
||||
if((world.time - M.last_movement) >= 30 && !M.stat && M.canmove && !M.restrained())
|
||||
M.alpha = round(255 * 0.10)
|
||||
else
|
||||
M.alpha = round(255 * 0.80)
|
||||
M.alpha = round(255 * 0.80)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/dna/gene/basic/grant_spell
|
||||
var/obj/effect/proc_holder/spell/spelltype
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.spell_list += spelltype
|
||||
return 1
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.spell_list -= spelltype
|
||||
/datum/dna/gene/basic/grant_verb
|
||||
var/verbtype
|
||||
|
||||
activate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs += verbtype
|
||||
return 1
|
||||
|
||||
deactivate(var/mob/M, var/connected, var/flags)
|
||||
..()
|
||||
M.verbs -= verbtype
|
||||
|
||||
// WAS: /datum/bioEffect/cryokinesis
|
||||
/datum/dna/gene/basic/grant_spell/cryo
|
||||
name = "Cryokinesis"
|
||||
desc = "Allows the subject to lower the body temperature of others."
|
||||
activation_messages = list("You notice a strange cold tingle in your fingertips.")
|
||||
deactivation_messages = list("Your fingers feel warmer.")
|
||||
|
||||
spelltype = /obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
|
||||
New()
|
||||
..()
|
||||
block = CRYOBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/cryokinesis
|
||||
name = "Cryokinesis"
|
||||
desc = "Drops the bodytemperature of another person."
|
||||
panel = "Mutant Powers"
|
||||
|
||||
charge_type = "recharge"
|
||||
charge_max = 600
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
range = 7
|
||||
selection_type = "range"
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/cryokinesis/cast(list/targets)
|
||||
if(!targets.len)
|
||||
usr << "<span class='notice'>No target found in range.</span>"
|
||||
return
|
||||
|
||||
var/mob/living/carbon/C = targets[1]
|
||||
|
||||
if(!iscarbon(C))
|
||||
usr << "\red This will only work on normal organic beings."
|
||||
return
|
||||
|
||||
C.bodytemperature = -1500
|
||||
C.ExtinguishMob()
|
||||
|
||||
C.visible_message("\red A cloud of fine ice crystals engulfs [C]!")
|
||||
|
||||
//playsound(usr.loc, 'bamf.ogg', 50, 0)
|
||||
|
||||
new/obj/effects/self_deleting(C.loc, icon('icons/effects/genetics.dmi', "cryokinesis"))
|
||||
|
||||
return
|
||||
|
||||
/obj/effects/self_deleting
|
||||
density = 0
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
icon = null
|
||||
desc = ""
|
||||
//layer = 15
|
||||
|
||||
New(var/atom/location, var/icon/I, var/duration = 20, var/oname = "something")
|
||||
src.name = oname
|
||||
loc=location
|
||||
src.icon = I
|
||||
spawn(duration)
|
||||
del(src)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WAS: /datum/bioEffect/mattereater
|
||||
/datum/dna/gene/basic/grant_spell/mattereater
|
||||
name = "Matter Eater"
|
||||
desc = "Allows the subject to eat just about anything without harm."
|
||||
activation_messages = list("You feel hungry.")
|
||||
deactivation_messages = list("You don't feel quite so hungry anymore.")
|
||||
|
||||
spelltype=/obj/effect/proc_holder/spell/targeted/eat
|
||||
|
||||
New()
|
||||
..()
|
||||
block = EATBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat
|
||||
name = "Eat"
|
||||
desc = "Eat just about anything!"
|
||||
panel = "Mutant Powers"
|
||||
|
||||
charge_type = "recharge"
|
||||
charge_max = 300
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
range = 1
|
||||
selection_type = "range"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat/choose_targets(mob/user = usr)
|
||||
var/list/targets = list()
|
||||
var/list/possible_targets = list()
|
||||
|
||||
for(var/obj/item/O in view_or_range(range, user, selection_type))
|
||||
possible_targets += O
|
||||
|
||||
targets += input("Choose the target for the spell.", "Targeting") as mob in possible_targets
|
||||
|
||||
if(!targets.len) //doesn't waste the spell
|
||||
revert_cast(user)
|
||||
return
|
||||
|
||||
perform(targets)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/eat/cast(list/targets)
|
||||
if(!targets.len)
|
||||
usr << "<span class='notice'>No target found in range.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/the_item = targets[1]
|
||||
|
||||
usr.visible_message("\red [usr] eats [the_item].")
|
||||
playsound(usr.loc, 'sound/items/eatfood.ogg', 50, 0)
|
||||
|
||||
del(the_item)
|
||||
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H=usr
|
||||
for(var/name in H.organs_by_name)
|
||||
var/datum/organ/external/affecting = null
|
||||
if(!H.organs[name])
|
||||
continue
|
||||
affecting = H.organs[name]
|
||||
if(!istype(affecting, /datum/organ/external))
|
||||
continue
|
||||
affecting.heal_damage(4, 0)
|
||||
usr:UpdateDamageIcon()
|
||||
usr:updatehealth()
|
||||
|
||||
return
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//WAS: /datum/bioEffect/jumpy
|
||||
/datum/dna/gene/basic/grant_spell/jumpy
|
||||
name = "Jumpy"
|
||||
desc = "Allows the subject to leap great distances."
|
||||
//cooldown = 30
|
||||
activation_messages = list("Your leg muscles feel taut and strong.")
|
||||
deactivation_messages = list("Your leg muscles shrink back to normal.")
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/leap
|
||||
|
||||
New()
|
||||
..()
|
||||
block = JUMPBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/leap
|
||||
name = "Jump"
|
||||
desc = "Leap great distances!"
|
||||
panel = "Mutant Powers"
|
||||
range = -1
|
||||
include_user = 1
|
||||
|
||||
charge_type = "recharge"
|
||||
charge_max = 30
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/leap/cast(list/targets)
|
||||
if (istype(usr.loc,/mob/))
|
||||
usr << "\red You can't jump right now!"
|
||||
return
|
||||
|
||||
if (istype(usr.loc,/turf/))
|
||||
usr.visible_message("\red <b>[usr.name]</b> takes a huge leap!")
|
||||
playsound(usr.loc, 'sound/weapons/thudswoosh.ogg', 50, 1)
|
||||
var/prevLayer = usr.layer
|
||||
usr.layer = 15
|
||||
|
||||
for(var/i=0, i<10, i++)
|
||||
step(usr, usr.dir)
|
||||
if(i < 5) usr.pixel_y += 8
|
||||
else usr.pixel_y -= 8
|
||||
sleep(1)
|
||||
|
||||
if (M_FAT in usr.mutations && prob(66))
|
||||
usr.visible_message("\red <b>[usr.name]</b> crashes due to their heavy weight!")
|
||||
//playsound(usr.loc, 'zhit.wav', 50, 1)
|
||||
usr.weakened += 10
|
||||
usr.stunned += 5
|
||||
|
||||
usr.layer = prevLayer
|
||||
|
||||
if (istype(usr.loc,/obj/))
|
||||
var/obj/container = usr.loc
|
||||
usr << "\red You leap and slam your head against the inside of [container]! Ouch!"
|
||||
usr.paralysis += 3
|
||||
usr.weakened += 5
|
||||
container.visible_message("\red <b>[usr.loc]</b> emits a loud thump and rattles a bit.")
|
||||
playsound(usr.loc, 'sound/effects/bang.ogg', 50, 1)
|
||||
var/wiggle = 6
|
||||
while(wiggle > 0)
|
||||
wiggle--
|
||||
container.pixel_x = rand(-3,3)
|
||||
container.pixel_y = rand(-3,3)
|
||||
sleep(1)
|
||||
container.pixel_x = 0
|
||||
container.pixel_y = 0
|
||||
|
||||
|
||||
return
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WAS: /datum/bioEffect/polymorphism
|
||||
|
||||
/datum/dna/gene/basic/grant_spell/polymorph
|
||||
name = "Polymorphism"
|
||||
desc = "Enables the subject to reconfigure their appearance to mimic that of others."
|
||||
|
||||
spelltype =/obj/effect/proc_holder/spell/targeted/polymorph
|
||||
//cooldown = 1800
|
||||
activation_messages = list("You don't feel entirely like yourself somehow.")
|
||||
deactivation_messages = list("You feel secure in your identity.")
|
||||
|
||||
New()
|
||||
..()
|
||||
block = POLYMORPHBLOCK
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph
|
||||
name = "Polymorph"
|
||||
desc = "Mimic the appearance of others!"
|
||||
panel = "Mutant Powers"
|
||||
charge_max = 1800
|
||||
|
||||
clothes_req = 0
|
||||
stat_allowed = 0
|
||||
invocation_type = "none"
|
||||
range = 1
|
||||
selection_type = "range"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/polymorph/cast(list/targets)
|
||||
var/mob/living/M=targets[1]
|
||||
if(!ishuman(M))
|
||||
usr << "\red You can only change your appearance to that of another human."
|
||||
return
|
||||
|
||||
if(!ishuman(usr)) return
|
||||
|
||||
|
||||
//playsound(usr.loc, 'blobattack.ogg', 50, 1)
|
||||
|
||||
usr.visible_message("\red [usr]'s body shifts and contorts.")
|
||||
|
||||
spawn(10)
|
||||
if(M && usr)
|
||||
//playsound(usr.loc, 'gib.ogg', 50, 1)
|
||||
usr.UpdateAppearance(M.dna.UI)
|
||||
usr:real_name = M:real_name
|
||||
usr:name = M:name
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WAS: /datum/bioEffect/empath
|
||||
/datum/dna/gene/basic/grant_verb/empath
|
||||
name = "Empathic Thought"
|
||||
desc = "The subject becomes able to read the minds of others for certain information."
|
||||
|
||||
verbtype = /proc/bioproc_empath
|
||||
activation_messages = list("You suddenly notice more about others than you did before.")
|
||||
deactivation_messages = list("You no longer feel able to sense intentions.")
|
||||
|
||||
New()
|
||||
..()
|
||||
block = EMPATHBLOCK
|
||||
|
||||
/proc/bioproc_empath(var/mob/living/carbon/M in range(7,usr))
|
||||
set name = "Read Mind"
|
||||
set desc = "Read the minds of others for information."
|
||||
set category = "Mutant Abilities"
|
||||
|
||||
if(!iscarbon(M))
|
||||
usr << "\red You may only use this on other organic beings."
|
||||
return
|
||||
|
||||
if(usr.stat)
|
||||
return
|
||||
|
||||
if (M_PSY_RESIST in M.mutations)
|
||||
usr << "\red You can't see into [M.name]'s mind at all!"
|
||||
return
|
||||
|
||||
if (M.stat == 2)
|
||||
usr << "\red [M.name] is dead and cannot have their mind read."
|
||||
return
|
||||
if (M.health < 0)
|
||||
usr << "\red [M.name] is dying, and their thoughts are too scrambled to read."
|
||||
return
|
||||
|
||||
usr << "\blue Mind Reading of [M.name]:</b>"
|
||||
var/pain_condition = M.health
|
||||
// lower health means more pain
|
||||
var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
|
||||
"their hair","what to do next","their job","space","amusing things","sad things",
|
||||
"annoying things","happy things","something incoherent","something they did wrong")
|
||||
var/thoughts = "thinking about [pick(randomthoughts)]"
|
||||
if (M.fire_stacks)
|
||||
pain_condition -= 50
|
||||
thoughts = "preoccupied with the fire"
|
||||
if (M.radiation)
|
||||
pain_condition -= 25
|
||||
|
||||
switch(pain_condition)
|
||||
if (81 to INFINITY)
|
||||
usr << "\blue <b>Condition</b>: [M.name] feels good."
|
||||
if (61 to 80)
|
||||
usr << "\blue <b>Condition</b>: [M.name] is suffering mild pain."
|
||||
if (41 to 60)
|
||||
usr << "\blue <b>Condition</b>: [M.name] is suffering significant pain."
|
||||
if (21 to 40)
|
||||
usr << "\blue <b>Condition</b>: [M.name] is suffering severe pain."
|
||||
else
|
||||
usr << "\blue <b>Condition</b>: [M.name] is suffering excruciating pain."
|
||||
thoughts = "haunted by their own mortality"
|
||||
|
||||
switch(M.a_intent)
|
||||
if ("help")
|
||||
usr << "\blue <b>Mood</b>: You sense benevolent thoughts from [M.name]."
|
||||
if ("disarm")
|
||||
usr << "\blue <b>Mood</b>: You sense cautious thoughts from [M.name]."
|
||||
if ("grab")
|
||||
usr << "\blue <b>Mood</b>: You sense hostile thoughts from [M.name]."
|
||||
if ("harm")
|
||||
usr << "\blue <b>Mood</b>: You sense cruel thoughts from [M.name]."
|
||||
for(var/mob/living/L in view(7,M))
|
||||
if (L == M)
|
||||
continue
|
||||
thoughts = "thinking about punching [L.name]"
|
||||
break
|
||||
else
|
||||
usr << "\blue <b>Mood</b>: You sense strange thoughts from [M.name]."
|
||||
|
||||
if (istype(M,/mob/living/carbon/human))
|
||||
var/numbers[0]
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.mind && H.mind.initial_account)
|
||||
numbers += H.mind.initial_account.account_number
|
||||
numbers += H.mind.initial_account.remote_access_pin
|
||||
if(numbers.len>0)
|
||||
usr << "\blue <b>Numbers</b>: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name]."
|
||||
usr << "\blue <b>Thoughts</b>: [M.name] is currently [thoughts]."
|
||||
|
||||
if (/datum/dna/gene/basic/grant_verb/empath in M.active_genes)
|
||||
M << "\red You sense [usr.name] reading your mind."
|
||||
else if (prob(5) || M.mind.assigned_role=="Chaplain")
|
||||
M << "\red You sense someone intruding upon your thoughts..."
|
||||
return
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// WAS: /datum/bioEffect/superfart
|
||||
/datum/dna/gene/basic/superfart
|
||||
name = "High-Pressure Intestines"
|
||||
desc = "Vastly increases the gas capacity of the subject's digestive tract."
|
||||
activation_messages = list("You feel bloated and gassy.")
|
||||
deactivation_messages = list("You no longer feel gassy. What a relief!")
|
||||
|
||||
mutation = M_SUPER_FART
|
||||
|
||||
New()
|
||||
..()
|
||||
block = SUPERFARTBLOCK
|
||||
@@ -77,6 +77,14 @@
|
||||
PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS)
|
||||
SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS)
|
||||
CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS)
|
||||
CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS)
|
||||
EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS)
|
||||
JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS)
|
||||
MELTBLOCK = getAssignedBlock("MELT", numsToAssign)
|
||||
IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign)
|
||||
EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS)
|
||||
SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS)
|
||||
POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS)
|
||||
|
||||
//
|
||||
// Static Blocks
|
||||
|
||||
@@ -523,7 +523,7 @@ steam.start() -- spawns the effect
|
||||
number = n
|
||||
cardinals = c
|
||||
|
||||
chemholder.reagents.add_reagent("mercury", 50)
|
||||
chemholder.reagents.add_reagent("space_drugs", rand(1,10))
|
||||
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
|
||||
@@ -86,6 +86,14 @@ var/SOBERBLOCK = 0
|
||||
var/PSYRESISTBLOCK = 0
|
||||
var/SHADOWBLOCK = 0
|
||||
var/CHAMELEONBLOCK = 0
|
||||
var/CRYOBLOCK = 0
|
||||
var/EATBLOCK = 0
|
||||
var/JUMPBLOCK = 0
|
||||
var/MELTBLOCK = 0
|
||||
var/EMPATHBLOCK = 0
|
||||
var/SUPERFARTBLOCK = 0
|
||||
var/IMMOLATEBLOCK = 0
|
||||
var/POLYMORPHBLOCK = 0
|
||||
|
||||
var/skipupdate = 0
|
||||
///////////////
|
||||
|
||||
@@ -548,22 +548,66 @@
|
||||
if(world.time-lastFart >= 600)
|
||||
message = "<b>[src]</b> [pick("passes wind","farts")]."
|
||||
m_type = 2
|
||||
var/location = get_turf(src)
|
||||
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
|
||||
var/turf/location = get_turf(src)
|
||||
var/aoe_range=2 // Default
|
||||
if(M_SUPER_FART in mutations)
|
||||
aoe_range+=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(M_TOXIC_FARTS in mutations)
|
||||
if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO)
|
||||
if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS))
|
||||
return
|
||||
src << "\red You gas yourself!"
|
||||
reagents.add_reagent("mercury", rand(10,20))
|
||||
return
|
||||
var/datum/effect/effect/system/chem_smoke_spread/fart/S = new /datum/effect/effect/system/chem_smoke_spread/fart
|
||||
S.attach(location)
|
||||
S.set_up(src, 10, 0, location)
|
||||
spawn(0)
|
||||
S.start()
|
||||
sleep(10)
|
||||
S.start()
|
||||
message=""
|
||||
if(wearing_suit)
|
||||
if(!wearing_mask)
|
||||
src << "\red You gas yourself!"
|
||||
reagents.add_reagent("space_drugs", rand(10,20))
|
||||
else
|
||||
// Was /turf/, now /mob/
|
||||
for(var/mob/M in view(location,2))
|
||||
// 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.
|
||||
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(M_SUPER_FART in mutations)
|
||||
message=""
|
||||
playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
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)
|
||||
if(wearing_suit)
|
||||
for(var/mob/living/V in view(src,aoe_range))
|
||||
shake_camera(V,10,5)
|
||||
if (V == src)
|
||||
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
|
||||
else
|
||||
message = "<b>[src]</b> strains, and nothing happens."
|
||||
|
||||
@@ -32,6 +32,11 @@
|
||||
set_species("Vox")
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/skellington/New()
|
||||
h_style = "Bald"
|
||||
set_species("Skellington")
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/diona/New()
|
||||
species = new /datum/species/diona(src)
|
||||
..()
|
||||
|
||||
@@ -368,6 +368,7 @@ var/MAX_EXPLOSION_RANGE = 14
|
||||
#define M_STRONG 202 // (Nothing)
|
||||
#define M_SOBER 203 // Increased alcohol metabolism
|
||||
#define M_PSY_RESIST 204 // Block remoteview
|
||||
#define M_SUPER_FART 205 // Duh
|
||||
|
||||
//disabilities
|
||||
#define NEARSIGHTED 1
|
||||
|
||||
Reference in New Issue
Block a user