mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Minor Slime Additions
- Injecting slimes with plasma will increase their chance of mutating, up to 50%. - Injecting slimes with inaprovaline will decrease their chance of mutating, this can reach 0%. - Injecting a grey slime core with water will produce inaprovaline inside the core. - You can feed slimes plasma bars to make them more friendly, this does NOT work the same way as pink slime extracts, but rather like feeding them a monkey and punching the monkey to unconsciousness. - Adds gold slime core + blood reaction, will spawn a mob that plasma + gold core reactions normally spawn, but the mob will not be hostile. This does not prevent space bears from becoming VERY pissed off if you pet them. All shamelessly ~~open source stolen (thefted?)~~ ported from /tg/.
This commit is contained in:
@@ -182,7 +182,12 @@
|
||||
/mob/living/carbon/slime/proc/handle_chemicals_in_body()
|
||||
|
||||
if(reagents) reagents.metabolize(src)
|
||||
|
||||
if (reagents.get_reagent_amount("plasma")>=5)
|
||||
mutation_chance = min(mutation_chance + 5,50) //Prevents mutation chance going >50%
|
||||
reagents.remove_reagent("plasma", 5)
|
||||
if (reagents.get_reagent_amount("inaprovaline")>=5)
|
||||
mutation_chance = max(mutation_chance - 5,0) //Prevents muation chance going <0%
|
||||
reagents.remove_reagent("inaprovaline", 5)
|
||||
src.updatehealth()
|
||||
|
||||
return //TODO: DEFERRED
|
||||
|
||||
@@ -534,14 +534,23 @@
|
||||
return
|
||||
|
||||
/mob/living/carbon/slime/attackby(obj/item/W, mob/user)
|
||||
if(W.force > 0)
|
||||
if(istype(W,/obj/item/stack/sheet/mineral/plasma)) //Lets you feed slimes plasma.
|
||||
if (user in Friends)
|
||||
++Friends[user]
|
||||
else
|
||||
Friends[user] = 1
|
||||
user << "You feed the slime the plasma. It chirps happily."
|
||||
var/obj/item/stack/sheet/mineral/plasma/S = W
|
||||
S.use(1)
|
||||
return
|
||||
else if(W.force > 0)
|
||||
attacked += 10
|
||||
if(prob(25))
|
||||
user << "<span class='danger'>[W] passes right through [src]!</span>"
|
||||
return
|
||||
if(Discipline && prob(50)) // wow, buddy, why am I getting attacked??
|
||||
Discipline = 0
|
||||
if(W.force >= 3)
|
||||
else if(W.force >= 3)
|
||||
if(is_adult)
|
||||
if(prob(5 + round(W.force/2)))
|
||||
if(Victim || Target)
|
||||
@@ -613,7 +622,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
Target = null
|
||||
++Discipline
|
||||
return
|
||||
|
||||
|
||||
/mob/living/carbon/slime/can_use_vents()
|
||||
if(Victim)
|
||||
return "You cannot ventcrawl while feeding."
|
||||
|
||||
@@ -1032,6 +1032,18 @@ datum
|
||||
S.loc = get_turf_loc(holder.my_atom)
|
||||
|
||||
|
||||
slimeinaprov
|
||||
name = "Slime Inaprovaline"
|
||||
id = "m_inaprov"
|
||||
result = "inaprovaline"
|
||||
required_reagents = list("water" = 5)
|
||||
result_amount = 3
|
||||
required_other = 1
|
||||
required_container = /obj/item/slime_extract/grey
|
||||
on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
|
||||
|
||||
slimemonkey
|
||||
name = "Slime Monkey"
|
||||
id = "m_monkey"
|
||||
@@ -1119,6 +1131,59 @@ datum
|
||||
// for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
|
||||
// O.show_message(text("\red The slime core fizzles disappointingly,"), 1)
|
||||
|
||||
|
||||
slimecritlesser
|
||||
name = "Slime Crit Lesser"
|
||||
id = "m_tele3"
|
||||
result = null
|
||||
required_reagents = list("blood" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_extract/gold
|
||||
required_other = 1
|
||||
on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
|
||||
O.show_message(text("<span class='danger'>The slime extract begins to vibrate violently !</span>"), 1)
|
||||
spawn(50)
|
||||
|
||||
if(holder && holder.my_atom)
|
||||
|
||||
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/hostile/retaliate,
|
||||
/mob/living/simple_animal/hostile/retaliate/clown,
|
||||
/mob/living/simple_animal/hostile/mushroom,
|
||||
/mob/living/simple_animal/hostile/asteroid,
|
||||
/mob/living/simple_animal/hostile/asteroid/basilisk,
|
||||
/mob/living/simple_animal/hostile/asteroid/goldgrub,
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath,
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelord,
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelordbrood,
|
||||
/mob/living/simple_animal/hostile/carp/holocarp,
|
||||
/mob/living/simple_animal/hostile/mining_drone
|
||||
)//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(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
|
||||
if(M:eyecheck() <= 0)
|
||||
flick("e_flash", M.flash)
|
||||
|
||||
var/chosen = pick(critters)
|
||||
var/mob/living/simple_animal/hostile/C = new chosen
|
||||
C.faction |= "neutral"
|
||||
C.loc = get_turf(holder.my_atom)
|
||||
|
||||
//Silver
|
||||
slimebork
|
||||
name = "Slime Bork"
|
||||
|
||||
Reference in New Issue
Block a user