diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 7d4c50a01fe..75d94094c29 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -100,4 +100,16 @@ maxcharge = 300 m_amt = 0 g_amt = 0 - minor_fault = 1 \ No newline at end of file + minor_fault = 1 + + +/obj/item/weapon/cell/slime + name = "charged slime core" + desc = "A yellow slime core infused with plasma, it crackles with power." + origin_tech = "powerstorage=2;biotech=4" + icon = 'icons/mob/slimes.dmi' //'icons/obj/harvest.dmi' + icon_state = "yellow slime extract" //"potato_battery" + maxcharge = 10000 + maxcharge = 10000 + m_amt = 0 + g_amt = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 67a2e16a0cc..ea99e7b3297 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -433,7 +433,7 @@ if(Victim) return // if it's eating someone already, continue eating! - if(prob(5)) + if(prob(1)) emote(pick("bounce","sway","light","vibrate","jiggle")) if(AIproc && SStun) return diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index e64629686e9..b72d4bf7438 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -912,9 +912,11 @@ datum required_other = 1 on_reaction(var/datum/reagents/holder) for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) - O.show_message(text("\red Infused with plasma, the core begins to quiver and grow. Soon after, a new baby slime emerges from the extract!"), 1) + O.show_message(text("\red Infused with plasma, the core begins to quiver and grow, turning into a new baby slime!"), 1) var/mob/living/carbon/slime/S = new /mob/living/carbon/slime S.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) slimemonkey name = "Slime Monkey" @@ -928,6 +930,8 @@ datum for(var/i = 1, i <= 3, i++) var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube M.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) //Green slimemutate name = "Mutation Toxin" @@ -954,6 +958,8 @@ datum var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel P.amount = 5 P.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) //Gold slimecrit name = "Slime Crit" @@ -993,6 +999,8 @@ datum if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(C, pick(NORTH,SOUTH,EAST,WEST)) + holder.clear_reagents() + del (holder) //Silver slimebork name = "Slime Bork" @@ -1021,6 +1029,8 @@ datum if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(B, pick(NORTH,SOUTH,EAST,WEST)) + holder.clear_reagents() + del (holder) //Blue slimefrost @@ -1043,32 +1053,91 @@ datum on_reaction(var/datum/reagents/holder) for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(5) + sleep(50) playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) for(var/mob/living/M in range (get_turf_loc(holder.my_atom), 7)) M.bodytemperature -= 140 M << "\blue You feel a chill!" + holder.clear_reagents() + del (holder) //Orange slimecasp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" result = "capsaicin" - required_reagents = list("plasma" = 5) + required_reagents = list("blood" = 5) result_amount = 10 required_container = /obj/item/slime_extract/orange required_other = 1 + slimefire + name = "Slime fire" + id = "m_fire" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/orange + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + var/turf/location = get_turf(holder.my_atom.loc) + for(var/turf/simulated/floor/target_tile in range(0,location)) + if(target_tile.parent && target_tile.parent.group_processing) + target_tile.parent.suspend_group_processing() + + var/datum/gas_mixture/napalm = new + + napalm.toxins = 25 + napalm.temperature = 1400 + + target_tile.assume_air(napalm) + spawn (0) target_tile.hotspot_expose(700, 400) + holder.clear_reagents() + del (holder) + //Yellow slimeoverload name = "Slime EMP" id = "m_emp" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("blood" = 5) result_amount = 1 required_container = /obj/item/slime_extract/yellow required_other = 1 on_reaction(var/datum/reagents/holder, var/created_volume) empulse(get_turf_loc(holder.my_atom), 3, 7) + holder.clear_reagents() + del (holder) + + slimecell + name = "Slime Powercell" + id = "m_cell" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime + P.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) + + slimeglow + name = "Slime Glow" + id = "m_glow" + result = null + required_reagents = list("water" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) + O.show_message(text("\red The slime begins to emit a soft light."), 1) + var/obj/item/slime_extract/yellow/Y = holder + Y.luminosity = 6 //Purple slimepsteroid @@ -1082,6 +1151,8 @@ datum on_reaction(var/datum/reagents/holder) var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid P.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) @@ -1108,32 +1179,34 @@ datum var/obj/item/stack/sheet/mineral/plasma/P = new /obj/item/stack/sheet/mineral/plasma P.amount = 10 P.loc = get_turf_loc(holder.my_atom) + holder.clear_reagents() + del (holder) //Red - slimefire - name = "Slime fire" - id = "m_fire" - result = null + slimeglycerol + name = "Slime Glycerol" + id = "m_glycerol" + result = "glycerol" required_reagents = list("plasma" = 5) + result_amount = 8 + required_container = /obj/item/slime_extract/red + required_other = 1 + + + slimebloodlust + name = "Bloodlust" + id = "m_bloodlust" + result = null + required_reagents = list("blood" = 5) result_amount = 1 required_container = /obj/item/slime_extract/red required_other = 1 on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(5) - var/turf/location = get_turf(holder.my_atom.loc) - for(var/turf/simulated/floor/target_tile in range(0,location)) - if(target_tile.parent && target_tile.parent.group_processing) - target_tile.parent.suspend_group_processing() - - var/datum/gas_mixture/napalm = new - - napalm.toxins = 25 - napalm.temperature = 1400 - - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(700, 400) + for(var/mob/living/carbon/slime/slime in viewers(get_turf_loc(holder.my_atom), null)) + slime.tame = 0 + slime.rabid = 1 + for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) + O.show_message(text("\red The [slime] is driven into a frenzy!."), 1) //Pink slimeppotion