Added Cheridan's slime sprites to replace roros. Replaced all mentions of roro/metroid with slime. Once Cheri has the rest of the sprites/Phol gets mutant race sprites I'll start work on redoing metroid/slime code with Giacom and adding breeding.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5223 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
Kortgstation@gmail.com
2012-11-29 04:12:22 +00:00
parent 3f1fc2ef62
commit 0c4f441cb5
69 changed files with 539 additions and 520 deletions
+3 -3
View File
@@ -97,7 +97,7 @@ var/global/floorIsLava = 0
body += "<A href='?src=\ref[src];makeai=\ref[M]'>Make AI</A> | "
body += "<A href='?src=\ref[src];makerobot=\ref[M]'>Make Robot</A> | "
body += "<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien</A> | "
body += "<A href='?src=\ref[src];makemetroid=\ref[M]'>Make Metroid</A> "
body += "<A href='?src=\ref[src];makeslime=\ref[M]'>Make slime</A> "
//Simple Animals
if(isanimal(M))
@@ -114,8 +114,8 @@ var/global/floorIsLava = 0
body += "<A href='?src=\ref[src];simplemake=sentinel;mob=\ref[M]'>Sentinel</A>, "
body += "<A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A> \] "
body += "<A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A> "
body += "\[ Metroid: <A href='?src=\ref[src];simplemake=metroid;mob=\ref[M]'>Baby</A>, "
body += "<A href='?src=\ref[src];simplemake=adultmetroid;mob=\ref[M]'>Adult</A> \] "
body += "\[ slime: <A href='?src=\ref[src];simplemake=slime;mob=\ref[M]'>Baby</A>, "
body += "<A href='?src=\ref[src];simplemake=adultslime;mob=\ref[M]'>Adult</A> \] "
body += "<A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</A> | "
body += "<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> | "
body += "<A href='?src=\ref[src];simplemake=cat;mob=\ref[M]'>Cat</A> | "
+2 -2
View File
@@ -228,8 +228,8 @@
if(iscarbon(M)) //Carbon stuff
if(ishuman(M))
M_job = M.job
else if(ismetroid(M))
M_job = "Metroid"
else if(isslime(M))
M_job = "slime"
else if(ismonkey(M))
M_job = "Monkey"
else if(isalien(M)) //aliens
+5 -5
View File
@@ -262,8 +262,8 @@
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob )
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob )
if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob )
if("metroid") M.change_mob_type( /mob/living/carbon/metroid , null, null, delmob )
if("adultmetroid") M.change_mob_type( /mob/living/carbon/metroid/adult , null, null, delmob )
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
if("adultslime") M.change_mob_type( /mob/living/carbon/slime/adult , null, null, delmob )
if("monkey") M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob )
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob )
if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob )
@@ -1137,15 +1137,15 @@
usr.client.cmd_admin_alienize(H)
else if(href_list["makemetroid"])
else if(href_list["makeslime"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makemetroid"])
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
usr.client.cmd_admin_metroidize(H)
usr.client.cmd_admin_slimeize(H)
else if(href_list["makerobot"])
if(!check_rights(R_SPAWN)) return
+6 -6
View File
@@ -230,20 +230,20 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
/client/proc/cmd_admin_metroidize(var/mob/M in mob_list)
/client/proc/cmd_admin_slimeize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Metroid"
set name = "Make slime"
if(!ticker)
alert("Wait until the game starts")
return
if(ishuman(M))
log_admin("[key_name(src)] has metroidized [M.key].")
log_admin("[key_name(src)] has slimeized [M.key].")
spawn(10)
M:Metroidize()
M:slimeize()
feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into a metroid.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a metroid.", 1)
log_admin("[key_name(usr)] made [key_name(M)] into a slime.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1)
else
alert("Invalid mob")
+3 -3
View File
@@ -10,10 +10,10 @@
desc = "It smells faintly of plasma"
icon_state = "petehat"
/obj/item/clothing/head/collectable/metroid
name = "collectable metroid cap!"
/obj/item/clothing/head/collectable/slime
name = "collectable slime cap!"
desc = "It just latches right in place!"
icon_state = "metroid"
icon_state = "slime"
/obj/item/clothing/head/collectable/xenom
name = "collectable xenomorph helmet!"
+20 -20
View File
@@ -50,9 +50,9 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
/datum/recipe/jellydonut/roro
reagents = list("rorojelly" = 5, "flour" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/rorojelly
/datum/recipe/jellydonut/slime
reagents = list("slimejelly" = 5, "flour" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
/datum/recipe/jellydonut/cherry
reagents = list("cherryjelly" = 5, "flour" = 5)
@@ -775,12 +775,12 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/stew
/datum/recipe/rorotoast
reagents = list("rorojelly" = 5)
/datum/recipe/slimetoast
reagents = list("slimejelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
)
result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
/datum/recipe/jelliedtoast
reagents = list("cherryjelly" = 5)
@@ -902,10 +902,10 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
/datum/recipe/roroburger
reagents = list("rorojelly" = 5, "flour" = 15)
/datum/recipe/slimeburger
reagents = list("slimejelly" = 5, "flour" = 15)
items = list()
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
/datum/recipe/jellyburger
reagents = list("cherryjelly" = 5, "flour" = 15)
@@ -920,13 +920,13 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/twobread
/datum/recipe/rorosandwich
reagents = list("rorojelly" = 5)
/datum/recipe/slimesandwich
reagents = list("slimejelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
)
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
/datum/recipe/cherrysandwich
reagents = list("cherryjelly" = 5)
@@ -989,11 +989,11 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup
/datum/recipe/rorosoup
reagents = list("water" = 10, "rorojelly" = 5)
/datum/recipe/slimesoup
reagents = list("water" = 10, "slimejelly" = 5)
items = list(
)
result = /obj/item/weapon/reagent_containers/food/snacks/rorosoup
result = /obj/item/weapon/reagent_containers/food/snacks/slimesoup
/datum/recipe/clownstears
reagents = list("water" = 10)
@@ -1002,14 +1002,14 @@ I said no!
/obj/item/weapon/ore/clown,
)
result = /obj/item/weapon/reagent_containers/food/snacks/clownstears
/datum/recipe/boiledrorocore
/*
/datum/recipe/boiledslimeextract
reagents = list("water" = 5)
items = list(
/obj/item/metroid_core,
/obj/item/slime_core,
)
result = /obj/item/weapon/reagent_containers/food/snacks/boiledrorocore
result = /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
*/
/datum/recipe/braincake
reagents = list("milk" = 5, "flour" = 15)
items = list(
@@ -213,7 +213,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -265,7 +265,7 @@
return
/mob/living/carbon/alien/humanoid/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/alien/humanoid/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -280,7 +280,7 @@
var/damage = rand(1, 3)
if(istype(M, /mob/living/carbon/metroid/adult))
if(istype(M, /mob/living/carbon/slime/adult))
damage = rand(10, 40)
else
damage = rand(5, 35)
@@ -208,7 +208,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -279,7 +279,7 @@
return
/mob/living/carbon/alien/larva/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/alien/larva/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -294,7 +294,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)
@@ -42,7 +42,7 @@
return 1
if (istype(other, /mob/living/carbon/human))
return 1
if (istype(other, /mob/living/carbon/metroid))
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()
@@ -64,9 +64,9 @@
loc = tmob.loc
tmob.loc = oldloc
now_pushing = 0
for(var/mob/living/carbon/metroid/Metroid in view(1,tmob))
if(Metroid.Victim == tmob)
Metroid.UpdateFeed()
for(var/mob/living/carbon/slime/slime in view(1,tmob))
if(slime.Victim == tmob)
slime.UpdateFeed()
return
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
@@ -317,7 +317,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -357,7 +357,7 @@
if(armor >= 2) return
/mob/living/carbon/human/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob)
if(M.Victim) return // can't attack while eating!
if (health > -100)
@@ -368,7 +368,7 @@
var/damage = rand(1, 3)
if(istype(M, /mob/living/carbon/metroid/adult))
if(istype(M, /mob/living/carbon/slime/adult))
damage = rand(10, 35)
else
damage = rand(5, 25)
+1 -1
View File
@@ -1034,7 +1034,7 @@
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
if(dna)
switch(dna.mutantrace)
if("lizard","metroid")
if("lizard","slime")
see_in_dark = 3
see_invisible = SEE_INVISIBLE_LEVEL_ONE
if("shadow")
+2 -2
View File
@@ -23,7 +23,7 @@
if(copytext(message, 1, 2) != "*")
message = replacetext(message, "s", stutter("ss"))
if(src.dna.mutantrace == "metroid" && prob(5))
if(src.dna.mutantrace == "slime" && prob(5))
if(copytext(message, 1, 2) != "*")
if(copytext(message, 1, 2) == ";")
message = ";"
@@ -134,7 +134,7 @@
return 1
if (istype(other, /mob/living/carbon/brain))
return 1
if (istype(other, /mob/living/carbon/metroid))
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()
@@ -54,7 +54,7 @@ There are several things that need to be remembered:
All of these are named after the variable they update from. They are defined at the mob/ level like
update_clothing was, so you won't cause undefined proc runtimes with usr.update_inv_wear_id() if the usr is a
metroid etc. Instead, it'll just return without doing any work. So no harm in calling it for metroids and such.
slime etc. Instead, it'll just return without doing any work. So no harm in calling it for slimes and such.
> There are also these special cases:
@@ -323,7 +323,7 @@ Please contact me on #coderbus IRC. ~Carn x
if(dna)
switch(dna.mutantrace)
if("lizard","golem","metroid","shadow")
if("lizard","golem","slime","shadow")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
if("plant")
@@ -1,10 +1,10 @@
/mob/living/carbon/metroid/death(gibbed)
/mob/living/carbon/slime/death(gibbed)
if(stat == DEAD) return
stat = DEAD
icon_state = "baby roro dead"
icon_state = "baby slime dead"
if(!gibbed)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
ghostize()
explosion(loc, -1,-1,3,12)
if(src) del(src)
@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/emote(var/act)
/mob/living/carbon/slime/emote(var/act)
if (findtext(act, "-", 1, null))
@@ -16,11 +16,6 @@
if("moan")
message = "<B>The [src.name]</B> moans."
m_type = 2
// if("roar")
// if (!muzzled)
// message = "<B>The [src.name]</B> roars." Commenting out since larva shouldn't roar /N
// m_type = 2
if("shiver")
message = "<B>The [src.name]</B> shivers."
m_type = 2
@@ -36,17 +31,11 @@
if("light")
message = "<B>The [src.name]</B> lights up for a bit, then stops."
m_type = 1
if("click")
message = "<B>The [src.name]</B> makes a clicking noise!"
if("jiggle")
message = "<B>The [src.name]</B> jiggles!"
m_type = 1
if("chatter")
message = "<B>The [src.name]</B> makes a noisy chattering sound!"
m_type = 1
if("growl")
message = "<B>The [src.name]</B> growls!"
m_type = 1
if("shriek")
message = "<B>The [src.name]</B> makes a high-pitched shriek!"
if("bounce")
message = "<B>The [src.name]</B> bounces in place."
m_type = 1
else
src << text("Invalid Emote: []", act)
@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/examine()
/mob/living/carbon/slime/examine()
set src in oview()
if(!usr || !src) return
@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/proc/regular_hud_updates()
/mob/living/carbon/slime/proc/regular_hud_updates()
return
+57 -51
View File
@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/Life()
/mob/living/carbon/slime/Life()
set invisibility = 0
set background = 1
@@ -41,21 +41,21 @@
/mob/living/carbon/metroid
/mob/living/carbon/slime
var/AIproc = 0 // determines if the AI loop is activated
var/Atkcool = 0 // attack cooldown
var/Tempstun = 0 // temporary temperature stuns
var/Discipline = 0 // if a metroid has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while
var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while
var/SStun = 0 // stun variable
/mob/living/carbon/metroid/proc/AIprocess() // the master AI process
/mob/living/carbon/slime/proc/AIprocess() // the master AI process
//world << "AI proc started."
if(AIproc || stat == DEAD || client) return
var/hungry = 0
var/starving = 0
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
switch(nutrition)
if(400 to 1100) hungry = 1
if(0 to 399)
@@ -84,7 +84,7 @@
if(Target)
//world << "[Target] Target Found"
for(var/mob/living/carbon/metroid/M in view(1,Target))
for(var/mob/living/carbon/slime/M in view(1,Target))
if(M.Victim == Target)
Target = null
AIproc = 0
@@ -104,7 +104,7 @@
Atkcool = 0
if(get_obstacle_ok(Target))
Target.attack_metroid(src)
Target.attack_slime(src)
//world << "retrun 1"
return
if(!Target.lying && prob(80))
@@ -117,7 +117,7 @@
Atkcool = 0
if(get_obstacle_ok(Target))
Target.attack_metroid(src)
Target.attack_slime(src)
if(prob(30))
@@ -145,12 +145,12 @@
var/sleeptime = movement_delay()
if(sleeptime <= 0) sleeptime = 1
sleep(sleeptime + 2) // this is about as fast as a player Metroid can go
sleep(sleeptime + 2) // this is about as fast as a player slime can go
AIproc = 0
//world << "AI proc ended."
/mob/living/carbon/metroid/proc/handle_environment(datum/gas_mixture/environment)
/mob/living/carbon/slime/proc/handle_environment(datum/gas_mixture/environment)
if(!environment)
adjustToxLoss(rand(10,20))
return
@@ -208,7 +208,7 @@
return //TODO: DEFERRED
/mob/living/carbon/metroid/proc/adjust_body_temperature(current, loc_temp, boost)
/mob/living/carbon/slime/proc/adjust_body_temperature(current, loc_temp, boost)
var/temperature = current
var/difference = abs(current-loc_temp) //get difference
var/increments// = difference/10 //find how many increments apart they are
@@ -225,7 +225,7 @@
temp_change = (temperature - current)
return temp_change
/mob/living/carbon/metroid/proc/handle_chemicals_in_body()
/mob/living/carbon/slime/proc/handle_chemicals_in_body()
if(reagents) reagents.metabolize(src)
@@ -235,9 +235,9 @@
return //TODO: DEFERRED
/mob/living/carbon/metroid/proc/handle_regular_status_updates()
/mob/living/carbon/slime/proc/handle_regular_status_updates()
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else
health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
@@ -315,10 +315,10 @@
return 1
/mob/living/carbon/metroid/proc/handle_nutrition()
/mob/living/carbon/slime/proc/handle_nutrition()
if(prob(20))
if(istype(src, /mob/living/carbon/metroid/adult)) nutrition-=rand(4,6)
if(istype(src, /mob/living/carbon/slime/adult)) nutrition-=rand(4,6)
else nutrition-=rand(2,3)
if(nutrition <= 0)
@@ -327,38 +327,44 @@
adjustToxLoss(rand(0,5))
else
if(istype(src, /mob/living/carbon/metroid/adult))
if(nutrition >= 1000)
if(prob(40)) amount_grown++
else
if(nutrition >= 800)
if(prob(40)) amount_grown++
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition >= 1000)
if(prob(40)) amount_grown++
else
if(nutrition >= 800)
if(prob(40)) amount_grown++
//lay eggs or grow
if(amount_grown >= 10 && !Victim && !Target)
if(istype(src, /mob/living/carbon/metroid/adult))
if(!client && nutrition >= 1000)
var/number = pick(1,1,1,1,1,1,2,2,2,3) //number of eggs laid
var/obj/item/weapon/reagent_containers/food/snacks/egg/roro/E
for(var/i=1,i<=number,i++)
E = new(loc)
src.nutrition -= 200
step_away(E,src)
if(istype(src, /mob/living/carbon/slime/adult))
if(!client)
var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4)
for(var/i=1,i<=number,i++) // reproduce (has a small chance of producing 3 or 4 offspring)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
// M.nutrition = round(nutrition * 0.9)
M.powerlevel = round(powerlevel/number)
M.Friends = Friends
M.tame = tame
M.rabid = rabid
M.Discipline = Discipline
if(i != 1) step_away(M,src)
del(src)
else
if(!client)
var/mob/living/carbon/metroid/adult/A = new/mob/living/carbon/metroid/adult(src.loc)
var/mob/living/carbon/slime/adult/A = new/mob/living/carbon/slime/adult(src.loc)
A.nutrition = nutrition
A.nutrition += 100
// A.nutrition += 100
A.powerlevel = max(0, powerlevel-1)
A.Friends = Friends
A.tame = tame
A.rabid = rabid
del(src)
/mob/living/carbon/metroid/proc/handle_targets()
/mob/living/carbon/slime/proc/handle_targets()
if(Tempstun)
if(!Victim) // not while they're eating!
canmove = 0
@@ -394,14 +400,14 @@
if(prob(5))
emote(pick("click","chatter","sway","light","vibrate","chatter","shriek"))
emote(pick("bounce","sway","light","vibrate","jiggle"))
if(AIproc && SStun) return
var/hungry = 0 // determines if the metroid is hungry
var/starving = 0 // determines if the metroid is starving-hungry
if(istype(src, /mob/living/carbon/metroid/adult)) // 1200 max nutrition
var/hungry = 0 // determines if the slime is hungry
var/starving = 0 // determines if the slime is starving-hungry
if(istype(src, /mob/living/carbon/slime/adult)) // 1200 max nutrition
switch(nutrition)
if(601 to 900)
if(prob(25)) hungry = 1//Ensures they continue eating, but aren't as aggressive at the same time
@@ -417,7 +423,7 @@
if(0 to 200) starving = 1
if(starving && !client) // if a metroid is starving, it starts losing its friends
if(starving && !client) // if a slime is starving, it starts losing its friends
if(Friends.len > 0 && prob(1))
var/mob/nofriend = pick(Friends)
Friends -= nofriend
@@ -428,42 +434,42 @@
if(hungry || starving) //Only add to the list if we need to
for(var/mob/living/L in view(7,src))
//Ignore other metroids, dead mobs and simple_animals
if(ismetroid(L) || L.stat != CONSCIOUS || isanimal(L))
//Ignore other slimes, dead mobs and simple_animals
if(isslime(L) || L.stat != CONSCIOUS || isanimal(L))
continue
if(issilicon(L))
if(!istype(src, /mob/living/carbon/metroid/adult)) //Non-starving diciplined adult metroids wont eat things
if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things
if(!starving && Discipline > 0)
continue
if(tame) //Tame metroids ignore electronic life
if(tame) //Tame slimes ignore electronic life
continue
targets += L //Possible target found!
else if(iscarbon(L))
if(istype(L, /mob/living/carbon/human)) //Ignore metroid(wo)men
if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men
var/mob/living/carbon/human/H = L
if(H.dna)
if(H.dna.mutantrace == "metroid")
if(H.dna.mutantrace == "slime")
continue
if(!istype(src, /mob/living/carbon/metroid/adult)) //Non-starving diciplined adult metroids wont eat things
if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things
if(!starving && Discipline > 0)
continue
if(L in Friends) //No eating friends!
continue
if(tame && ishuman(L)) //Tame metroids dont eat people.
if(tame && ishuman(L)) //Tame slimes dont eat people.
continue
if(!L.canmove) //Only one metroid can latch on at a time.
if(!L.canmove) //Only one slime can latch on at a time.
var/notarget = 0
for(var/mob/living/carbon/metroid/M in view(1,L))
for(var/mob/living/carbon/slime/M in view(1,L))
if(M.Victim == L)
notarget = 1
if(notarget)
@@ -474,7 +480,7 @@
if((hungry || starving) && targets.len > 0)
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(!starving)
for(var/mob/living/carbon/C in targets)
if(!Discipline && prob(5))
@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/Login()
/mob/living/carbon/slime/Login()
..()
update_hud()
return
@@ -1,7 +1,7 @@
/mob/living/carbon/metroid
name = "baby roro"
/mob/living/carbon/slime
name = "baby slime"
icon = 'icons/mob/mob.dmi'
icon_state = "baby roro"
icon_state = "baby slime"
pass_flags = PASSTABLE
voice_message = "skree!"
say_message = "hums"
@@ -17,33 +17,33 @@
see_in_dark = 8
// canstun and canweaken don't affect metroids because they ignore stun and weakened variables
// canstun and canweaken don't affect slimes because they ignore stun and weakened variables
// for the sake of cleanliness, though, here they are.
status_flags = CANPARALYSE|CANPUSH
var/cores = 3 // the number of /obj/item/metroid_core's the metroid has left inside
var/cores = 3 // the number of /obj/item/slime_core's the slime has left inside
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
var/amount_grown = 0 // controls how long the metroid has been overfed, if 10, grows into an adult
var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows into an adult
// if adult: if 10: reproduces
var/mob/living/Victim = null // the person the metroid is currently feeding on
var/mob/living/Target = null // AI variable - tells the Metroid to hunt this down
var/mob/living/Victim = null // the person the slime is currently feeding on
var/mob/living/Target = null // AI variable - tells the slime to hunt this down
var/attacked = 0 // determines if it's been attacked recently. Can be any number, is a cooloff-ish variable
var/tame = 0 // if set to 1, the Metroid will not eat humans ever, or attack them
var/rabid = 0 // if set to 1, the Metroid will attack and eat anything it comes in contact with
var/tame = 0 // if set to 1, the slime will not eat humans ever, or attack them
var/rabid = 0 // if set to 1, the slime will attack and eat anything it comes in contact with
var/list/Friends = list() // A list of potential friends
var/list/FriendsWeight = list() // A list containing values respective to Friends. This determines how many times a Metroid "likes" something. If the Metroid likes it more than 2 times, it becomes a friend
var/list/FriendsWeight = list() // A list containing values respective to Friends. This determines how many times a slime "likes" something. If the slime likes it more than 2 times, it becomes a friend
// Metroids pass on genetic data, so all their offspring have the same "Friends",
// slimes pass on genetic data, so all their offspring have the same "Friends",
/mob/living/carbon/metroid/adult
name = "adult roro"
/mob/living/carbon/slime/adult
name = "adult slime"
icon = 'icons/mob/mob.dmi'
icon_state = "adult roro"
icon_state = "adult slime"
health = 200
gender = NEUTER
@@ -52,25 +52,25 @@
nutrition = 800 // 1200 = max
/mob/living/carbon/metroid/New()
/mob/living/carbon/slime/New()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
R.my_atom = src
if(name == "baby roro")
name = text("baby roro ([rand(1, 1000)])")
if(name == "baby slime")
name = text("baby slime ([rand(1, 1000)])")
else
name = text("adult roro ([rand(1,1000)])")
name = text("adult slime ([rand(1,1000)])")
real_name = name
spawn (1)
regenerate_icons()
src << "\blue Your icons have been generated!"
..()
/mob/living/carbon/metroid/adult/New()
verbs.Remove(/mob/living/carbon/metroid/verb/ventcrawl)
/mob/living/carbon/slime/adult/New()
verbs.Remove(/mob/living/carbon/slime/verb/ventcrawl)
..()
/mob/living/carbon/metroid/movement_delay()
/mob/living/carbon/slime/movement_delay()
var/tally = 0
var/health_deficiency = (100 - health)
@@ -80,22 +80,22 @@
tally += (283.222 - bodytemperature) / 10 * 1.75
if(reagents)
if(reagents.has_reagent("hyperzine")) // hyperzine slows Metroids down
if(reagents.has_reagent("hyperzine")) // hyperzine slows slimes down
tally *= 2 // moves twice as slow
if(reagents.has_reagent("frostoil")) // frostoil also makes them move VEEERRYYYYY slow
tally *= 5
if(health <= 0) // if damaged, the metroid moves twice as slow
if(health <= 0) // if damaged, the slime moves twice as slow
tally *= 2
if (bodytemperature >= 330.23) // 135 F
return -1 // Metroids become supercharged at high temperatures
return -1 // slimes become supercharged at high temperatures
return tally+config.metroid_delay
return tally+config.slime_delay
/mob/living/carbon/metroid/Bump(atom/movable/AM as mob|obj, yes)
/mob/living/carbon/slime/Bump(atom/movable/AM as mob|obj, yes)
spawn( 0 )
if ((!( yes ) || now_pushing))
return
@@ -115,9 +115,9 @@
if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille))
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition <= 600 && !Atkcool)
AM.attack_metroid(src)
AM.attack_slime(src)
spawn()
Atkcool = 1
sleep(15)
@@ -125,7 +125,7 @@
else
if(nutrition <= 500 && !Atkcool)
if(prob(5))
AM.attack_metroid(src)
AM.attack_slime(src)
spawn()
Atkcool = 1
sleep(15)
@@ -134,7 +134,7 @@
if(ismob(AM))
var/mob/tmob = AM
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(istype(tmob, /mob/living/carbon/human))
if(prob(90))
now_pushing = 0
@@ -162,22 +162,22 @@
return
return
/mob/living/carbon/metroid/Process_Spacemove()
/mob/living/carbon/slime/Process_Spacemove()
return 2
/mob/living/carbon/metroid/Stat()
/mob/living/carbon/slime/Stat()
..()
statpanel("Status")
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
stat(null, "Health: [round((health / 200) * 100)]%")
else
stat(null, "Health: [round((health / 150) * 100)]%")
if (client.statpanel == "Status")
if(istype(src,/mob/living/carbon/metroid/adult))
if(istype(src,/mob/living/carbon/slime/adult))
stat(null, "Nutrition: [nutrition]/1200")
if(amount_grown >= 10)
stat(null, "You can reproduce!")
@@ -189,21 +189,21 @@
stat(null,"Power Level: [powerlevel]")
/mob/living/carbon/metroid/adjustFireLoss(amount)
/mob/living/carbon/slime/adjustFireLoss(amount)
..(-abs(amount)) // Heals them
return
/mob/living/carbon/metroid/bullet_act(var/obj/item/projectile/Proj)
/mob/living/carbon/slime/bullet_act(var/obj/item/projectile/Proj)
attacked += 10
..(Proj)
return 0
/mob/living/carbon/metroid/emp_act(severity)
/mob/living/carbon/slime/emp_act(severity)
powerlevel = 0 // oh no, the power!
..()
/mob/living/carbon/metroid/ex_act(severity)
/mob/living/carbon/slime/ex_act(severity)
if (stat == 2 && client)
return
@@ -234,7 +234,7 @@
updatehealth()
/mob/living/carbon/metroid/blob_act()
/mob/living/carbon/slime/blob_act()
if (stat == 2)
return
var/shielded = 0
@@ -256,14 +256,14 @@
return
/mob/living/carbon/metroid/u_equip(obj/item/W as obj)
/mob/living/carbon/slime/u_equip(obj/item/W as obj)
return
/mob/living/carbon/metroid/attack_ui(slot)
/mob/living/carbon/slime/attack_ui(slot)
return
/mob/living/carbon/metroid/meteorhit(O as obj)
/mob/living/carbon/slime/meteorhit(O as obj)
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
M.show_message(text("\red [] has been hit by []", src, O), 1)
@@ -275,7 +275,7 @@
return
/mob/living/carbon/metroid/Move(a, b, flag)
/mob/living/carbon/slime/Move(a, b, flag)
var/t7 = 1
if (restrained())
@@ -337,7 +337,7 @@
return
/mob/living/carbon/metroid/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -353,7 +353,7 @@
var/damage = rand(1, 3)
attacked += 5
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(1, 6)
else
damage = rand(1, 3)
@@ -366,7 +366,7 @@
return
/mob/living/carbon/metroid/attack_animal(mob/living/simple_animal/M as mob)
/mob/living/carbon/slime/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
else
@@ -380,7 +380,7 @@
adjustBruteLoss(damage)
updatehealth()
/mob/living/carbon/metroid/attack_paw(mob/living/carbon/monkey/M as mob)
/mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob)
if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens.
if (!ticker)
@@ -401,16 +401,16 @@
return
if (health > 0)
attacked += 10
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
//playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[M.name] has bit [src]!</B>"), 1)
O.show_message(text("\red <B>[M.name] has attacked [src]!</B>"), 1)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
/mob/living/carbon/metroid/attack_hand(mob/living/carbon/human/M as mob)
/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -466,7 +466,7 @@
if(prob(80) && !client)
Discipline++
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(Discipline == 1)
attacked = 0
@@ -566,7 +566,7 @@
/mob/living/carbon/metroid/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
/mob/living/carbon/slime/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -591,7 +591,7 @@
damage = rand(20, 40)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has slashed [name]!</B>", M), 1)
O.show_message(text("\red <B>[] has attacked [name]!</B>", M), 1)
else
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -635,7 +635,7 @@
anchored = 0
if(prob(80) && !client)
Discipline++
if(!istype(src, /mob/living/carbon/metroid))
if(!istype(src, /mob/living/carbon/slime))
if(Discipline == 1)
attacked = 0
@@ -660,15 +660,15 @@
return
/mob/living/carbon/metroid/restrained()
/mob/living/carbon/slime/restrained()
return 0
mob/living/carbon/metroid/var/co2overloadtime = null
mob/living/carbon/metroid/var/temperature_resistance = T0C+75
mob/living/carbon/slime/var/co2overloadtime = null
mob/living/carbon/slime/var/temperature_resistance = T0C+75
/mob/living/carbon/metroid/show_inv(mob/user as mob)
/mob/living/carbon/slime/show_inv(mob/user as mob)
user.set_machine(src)
var/dat = {"
@@ -680,22 +680,22 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
onclose(user, "mob[name]")
return
/mob/living/carbon/metroid/updatehealth()
/mob/living/carbon/slime/updatehealth()
if(status_flags & GODMODE)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
health = 200
else
health = 150
stat = CONSCIOUS
else
// metroids can't suffocate unless they suicide. They are also not harmed by fire
if(istype(src, /mob/living/carbon/metroid/adult))
// slimes can't suffocate unless they suicide. They are also not harmed by fire
if(istype(src, /mob/living/carbon/slime/adult))
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else
health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
/mob/living/carbon/metroid/proc/get_obstacle_ok(atom/A)
/mob/living/carbon/slime/proc/get_obstacle_ok(atom/A)
var/direct = get_dir(src, A)
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( src.loc )
var/ok = 0
@@ -777,12 +777,12 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
return 1
// Basically this Metroid Core catalyzes reactions that normally wouldn't happen anywhere
/obj/item/metroid_core
name = "roro core"
desc = "A very slimy and tender part of a Rorobeast. Legends claim these to have \"magical powers\"."
icon = 'icons/obj/surgery.dmi'
icon_state = "roro core"
// Basically this slime Core catalyzes reactions that normally wouldn't happen anywhere
/obj/item/slime_core
name = "slime extract"
desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"."
icon = 'icons/mob/mob.dmi'
icon_state = "slime extract"
flags = TABLEPASS
force = 1.0
w_class = 1.0
@@ -794,7 +794,7 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
var/Flush = 30
var/Uses = 5 // uses before it goes inert
/obj/item/metroid_core/New()
/obj/item/slime_core/New()
..()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
@@ -815,45 +815,45 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
Flush = 30
*/
/obj/item/weapon/reagent_containers/food/snacks/egg/roro
name = "roro egg"
/obj/item/weapon/reagent_containers/food/snacks/egg/slime
name = "slime egg"
desc = "A small, gelatinous egg."
icon = 'icons/mob/mob.dmi'
icon_state = "roro egg-growing"
icon_state = "slime egg-growing"
bitesize = 12
origin_tech = "biotech=4"
var/grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/New()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("rorojelly", 1)
reagents.add_reagent("slimejelly", 1)
spawn(rand(1200,1500))//the egg takes a while to "ripen"
Grow()
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/proc/Grow()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Grow()
grown = 1
icon_state = "roro egg-grown"
icon_state = "slime egg-grown"
processing_objects.Add(src)
return
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/proc/Hatch()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Hatch()
processing_objects.Remove(src)
var/turf/T = get_turf(src)
src.visible_message("\blue The [name] pulsates and quivers!")
spawn(rand(50,100))
src.visible_message("\blue The [name] bursts open!")
new/mob/living/carbon/metroid(T)
new/mob/living/carbon/slime(T)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/process()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/process()
var/turf/location = get_turf(src)
var/datum/gas_mixture/environment = location.return_air()
if (environment.toxins > MOLES_PLASMA_VISIBLE)//plasma exposure causes the egg to hatch
src.Hatch()
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype( W, /obj/item/toy/crayon ))
return
else
@@ -1,5 +1,5 @@
/mob/living/carbon/metroid/verb/Feed()
set category = "Roro"
/mob/living/carbon/slime/verb/Feed()
set category = "Slime"
set desc = "This will let you feed on any valid creature in the surrounding area. This should also be used to halt the feeding process."
if(Victim)
Feedstop()
@@ -11,7 +11,7 @@
var/list/choices = list()
for(var/mob/living/C in view(1,src))
if(C!=src && !istype(C,/mob/living/carbon/metroid))
if(C!=src && !istype(C,/mob/living/carbon/slime))
choices += C
var/mob/living/carbon/M = input(src,"Who do you wish to feed on?") in null|choices
@@ -19,11 +19,11 @@
if(M in view(1, src))
if(!istype(src, /mob/living/carbon/brain))
if(!istype(M, /mob/living/carbon/metroid))
if(!istype(M, /mob/living/carbon/slime))
if(stat != 2)
if(health > -70)
for(var/mob/living/carbon/metroid/met in view())
for(var/mob/living/carbon/slime/met in view())
if(met.Victim == M && met != src)
src << "<i>The [met.name] is already feeding on this subject...</i>"
return
@@ -42,17 +42,17 @@
/mob/living/carbon/metroid/proc/Feedon(var/mob/living/carbon/M)
/mob/living/carbon/slime/proc/Feedon(var/mob/living/carbon/M)
Victim = M
src.loc = M.loc
canmove = 0
anchored = 1
var/lastnut = nutrition
//if(M.client) M << "\red You legs become paralyzed!"
if(istype(src, /mob/living/carbon/metroid/adult))
icon_state = "adult roro eat"
if(istype(src, /mob/living/carbon/slime/adult))
icon_state = "adult slime eat"
else
icon_state = "baby roro eat"
icon_state = "baby slime eat"
while(Victim && M.health > -70 && stat != 2)
// M.canmove = 0
@@ -84,9 +84,9 @@
adjustCloneLoss(-10)
if(Victim)
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
if(Metroid.Victim == M && Metroid != src)
Metroid.Feedstop()
for(var/mob/living/carbon/slime/slime in view(1,M))
if(slime.Victim == M && slime != src)
slime.Feedstop()
nutrition += rand(10,25)
if(nutrition >= lastnut + 50)
@@ -96,7 +96,7 @@
if(powerlevel > 10)
powerlevel = 10
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition > 1200)
nutrition = 1200
else
@@ -119,14 +119,14 @@
break
if(stat == 2)
if(!istype(src, /mob/living/carbon/metroid/adult))
icon_state = "baby roro dead"
if(!istype(src, /mob/living/carbon/slime/adult))
icon_state = "baby slime dead"
else
if(istype(src, /mob/living/carbon/metroid/adult))
icon_state = "adult roro"
if(istype(src, /mob/living/carbon/slime/adult))
icon_state = "adult slime"
else
icon_state = "baby roro"
icon_state = "baby slime"
canmove = 1
anchored = 0
@@ -152,64 +152,81 @@
Victim = null
/mob/living/carbon/metroid/proc/Feedstop()
/mob/living/carbon/slime/proc/Feedstop()
if(Victim)
if(Victim.client) Victim << "[src] has let go of your head!"
Victim = null
/mob/living/carbon/metroid/proc/UpdateFeed(var/mob/M)
/mob/living/carbon/slime/proc/UpdateFeed(var/mob/M)
if(Victim)
if(Victim == M)
loc = M.loc // simple "attach to head" effect!
/mob/living/carbon/metroid/verb/Evolve()
set category = "Roro"
set desc = "This will let you evolve from baby to adult metroid."
/mob/living/carbon/slime/verb/Evolve()
set category = "slime"
set desc = "This will let you evolve from baby to adult slime."
if(stat)
src << "<i>I must be conscious to do this...</i>"
return
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(amount_grown >= 10)
var/mob/living/carbon/metroid/adult/new_metroid = new /mob/living/carbon/metroid/adult(loc)
new_metroid.nutrition = nutrition
new_metroid.powerlevel = max(0, powerlevel-1)
new_metroid.a_intent = "hurt"
new_metroid.key = key
var/mob/living/carbon/slime/adult/new_slime = new /mob/living/carbon/slime/adult(loc)
new_slime.nutrition = nutrition
new_slime.powerlevel = max(0, powerlevel-1)
new_slime.a_intent = "hurt"
new_slime.key = key
new_metroid << "<B>You are now an adult Metroid.</B>"
new_slime << "<B>You are now an adult slime.</B>"
del(src)
else
src << "<i>I am not ready to evolve yet...</i>"
else
src << "<i>I have already evolved...</i>"
/mob/living/carbon/metroid/verb/Reproduce()
set category = "Roro"
set desc = "This will make you lay an egg. NOTE: This decreases your nutrition."
/mob/living/carbon/slime/verb/Reproduce()
set category = "Slime"
set desc = "This will make you split into a random number of Slimes (usually 2). NOTE: this will KILL you, but you will be transferred into one of the babies."
if(stat)
src << "<i>I must be conscious to do this...</i>"
return
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(amount_grown >= 10)
if(src.nutrition >= 300)
new/obj/item/weapon/reagent_containers/food/snacks/egg/roro(loc)
src.nutrition -= 200
else
src << "<i>I have not fed enough...</i>"
if(input("Are you absolutely sure you want to reproduce? Your current body will cease to be, but your consciousness will be transferred into a produced slime.") in list("Yes","No")=="Yes")
if(stat)
src << "<i>I must be conscious to do this...</i>"
return
var/list/babies = list()
var/number = pick(14;2,3,4)
var/new_nutrition = round(nutrition * 0.9)
var/new_powerlevel = round(powerlevel / number)
for(var/i=1,i<=number,i++) // reproduce (has a small chance of producing 3 or 4 offspring)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
M.nutrition = new_nutrition
M.powerlevel = new_powerlevel
if(i != 1) step_away(M,src)
babies += M
var/mob/living/carbon/slime/new_slime = pick(babies)
new_slime.a_intent = "hurt"
new_slime.key = key
new_slime << "<B>You are now a slime!</B>"
del(src)
else
src << "<i>I am not ready to reproduce yet...</i>"
else
src << "<i>I am not old enough to lay eggs yet...</i>"
src << "<i>I am not old enough to reproduce yet...</i>"
/mob/living/carbon/metroid/verb/ventcrawl()
/mob/living/carbon/slime/verb/ventcrawl()
set name = "Crawl through Vent"
set desc = "Enter an air vent and crawl through the pipe system."
set category = "Roro"
set category = "Slime"
if(Victim) return
handle_ventcrawl()
handle_ventcrawl()
@@ -1,10 +1,10 @@
/mob/living/carbon/metroid/say(var/message)
/mob/living/carbon/slime/say(var/message)
if (silent)
return
else
return ..()
/mob/living/carbon/metroid/say_quote(var/text)
/mob/living/carbon/slime/say_quote(var/text)
var/ending = copytext(text, length(text))
if (ending == "?")
@@ -14,8 +14,8 @@
return "telepathically chirps, \"[text]\"";
/mob/living/carbon/metroid/say_understands(var/other)
if (istype(other, /mob/living/carbon/metroid))
/mob/living/carbon/slime/say_understands(var/other)
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()
@@ -337,7 +337,7 @@
updatehealth()
/mob/living/carbon/monkey/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/monkey/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -352,7 +352,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)
@@ -457,7 +457,7 @@
if ((s_active && !( contents.Find(s_active) )))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
+1 -1
View File
@@ -10,7 +10,7 @@
var/oxyloss = 0.0 //Oxygen depravation damage (no air in lungs)
var/toxloss = 0.0 //Toxic damage caused by being poisoned or radiated
var/fireloss = 0.0 //Burn damage caused by being way too hot, too cold or burnt.
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. Metroids also deal cloneloss damage to victims
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims
var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot.
var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off.
@@ -638,7 +638,7 @@
/mob/living/silicon/robot/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/silicon/robot/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -653,7 +653,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)
+1 -1
View File
@@ -163,7 +163,7 @@
statpanel("[P.panel]","",P)
*/
//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
//The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
var/mob/living/carbon/LAssailant = null
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
+1 -1
View File
@@ -194,7 +194,7 @@
return
*/
if(istype(affecting, /mob/living/carbon/metroid))
if(istype(affecting, /mob/living/carbon/slime))
assailant << "\blue You squeeze [affecting], but nothing interesting happens."
return
+4 -4
View File
@@ -30,13 +30,13 @@
return 1
return 0
/proc/ismetroid(A)
if(istype(A, /mob/living/carbon/metroid))
/proc/isslime(A)
if(istype(A, /mob/living/carbon/slime))
return 1
return 0
/proc/ismetroidadult(A)
if(istype(A, /mob/living/carbon/metroid/adult))
/proc/isslimeadult(A)
if(istype(A, /mob/living/carbon/slime/adult))
return 1
return 0
+9 -9
View File
@@ -207,7 +207,7 @@
del(src)
return
/mob/living/carbon/human/proc/Metroidize(adult as num, reproduce as num)
/mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num)
if (monkeyizing)
return
for(var/obj/item/W in src)
@@ -220,25 +220,25 @@
for(var/t in organs)
del(t)
var/mob/living/carbon/metroid/new_metroid
var/mob/living/carbon/slime/new_slime
if(reproduce)
var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring)
var/list/babies = list()
for(var/i=1,i<=number,i++)
var/mob/living/carbon/metroid/M = new/mob/living/carbon/metroid(loc)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
M.nutrition = round(nutrition/number)
step_away(M,src)
babies += M
new_metroid = pick(babies)
new_slime = pick(babies)
else
if(adult)
new_metroid = new /mob/living/carbon/metroid/adult(loc)
new_slime = new /mob/living/carbon/slime/adult(loc)
else
new_metroid = new /mob/living/carbon/metroid(loc)
new_metroid.a_intent = "hurt"
new_metroid.key = key
new_slime = new /mob/living/carbon/slime(loc)
new_slime.a_intent = "hurt"
new_slime.key = key
new_metroid << "<B>You are now a Metroid. Skreee!</B>"
new_slime << "<B>You are now a slime. Skreee!</B>"
spawn(0)//To prevent the proc from returning null.
del(src)
return
+1 -1
View File
@@ -14,7 +14,7 @@
/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob)
if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
if(!istype(usr, /mob/living/carbon/metroid) && !istype(usr, /mob/living/simple_animal))
if(!istype(usr, /mob/living/carbon/slime) && !istype(usr, /mob/living/simple_animal))
if( !usr.get_active_hand() ) //if active hand is empty
attack_hand(usr, 1, 1)
@@ -76,7 +76,6 @@
ammo_type = "/obj/item/ammo_casing/a762"
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
load_method = 2
recoil = 1
var/cover_open = 0
var/mag_inserted = 1
@@ -33,7 +33,7 @@
var/mob/living/new_mob
var/randomize = pick("monkey","robot","metroid","xeno","human")
var/randomize = pick("monkey","robot","slime","xeno","human")
switch(randomize)
if("monkey")
new_mob = new /mob/living/carbon/monkey(M.loc)
@@ -46,9 +46,9 @@
var/mob/living/silicon/robot/Robot = new_mob
Robot.mmi = new /obj/item/device/mmi(new_mob)
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
if("metroid")
if(prob(50)) new_mob = new /mob/living/carbon/metroid/adult(M.loc)
else new_mob = new /mob/living/carbon/metroid(M.loc)
if("slime")
if(prob(50)) new_mob = new /mob/living/carbon/slime/adult(M.loc)
else new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.universal_speak = 1
if("xeno")
var/alien_caste = pick("Hunter","Sentinel","Drone","Larva")
@@ -74,7 +74,7 @@
var/mob/living/carbon/human/H = new_mob
if(H.dna)
H.dna.mutantrace = pick("lizard","golem","metroid","plant",4;"")
H.dna.mutantrace = pick("lizard","golem","slime","plant",4;"")
else
return
+6 -6
View File
@@ -226,10 +226,10 @@ datum
matching_other = 1
else
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/M = my_atom
if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/M = my_atom
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to metroid cores -- Muskets requested this
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to slime cores -- Muskets requested this
matching_other = 1
@@ -249,10 +249,10 @@ datum
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The solution begins to bubble."
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/ME = my_atom
if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/ME = my_atom
ME.Uses--
if(ME.Uses <= 0) // give the notification that the metroid core is dead
if(ME.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The innards begin to boil!"
+14 -14
View File
@@ -73,9 +73,9 @@ datum
on_update(var/atom/A)
return
rorojelly
name = "Roro Jelly"
id = "rorojelly"
slimejelly
name = "slime Jelly"
id = "slimejelly"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
reagent_state = LIQUID
color = "#801E28" // rgb: 128, 30, 40
@@ -210,7 +210,7 @@ datum
T.overlays -= T.wet_overlay
T.wet_overlay = null
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,20))
var/hotspot = (locate(/obj/effect/hotspot) in T)
@@ -1022,7 +1022,7 @@ datum
for(var/obj/effect/decal/cleanable/C in src)
del(C)
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(5,10))
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
@@ -1104,8 +1104,8 @@ datum
return
reaction_obj(var/obj/O, var/volume)
src = null
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/roro))
var/obj/item/weapon/reagent_containers/food/snacks/egg/roro/egg = O
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime))
var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O
if (egg.grown)
egg.Hatch()
if((!O) || (!volume)) return 0
@@ -1792,15 +1792,15 @@ datum
M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("frostoil"))
holder.remove_reagent("frostoil", 5)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(5,20)
if(15 to 25)
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(10,20)
if(25 to INFINITY)
M.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(15,20)
data++
..()
@@ -1878,23 +1878,23 @@ datum
M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("capsaicin"))
holder.remove_reagent("capsaicin", 5)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(5,20)
if(15 to 25)
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(10,20)
if(25 to INFINITY)
M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT
if(prob(1)) M.emote("shiver")
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(15,20)
data++
..()
return
reaction_turf(var/turf/simulated/T, var/volume)
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,30))
sodiumchloride
+48 -48
View File
@@ -7,7 +7,7 @@ datum
var/list/required_reagents = new/list()
var/list/required_catalysts = new/list()
// Both of these variables are mostly going to be used with Metroid cores - but if you want to, you can use them for other things
// Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things
var/atom/required_container = null // the container required for the reaction to happen
var/required_other = 0 // an integer required for the reaction to happen
@@ -616,40 +616,40 @@ datum
result_amount = 5
/////////////////////////////////////METROID CORE REACTIONS ///////////////////////////////
/////////////////////////////////////slime CORE REACTIONS ///////////////////////////////
metroidpepper
name = "Metroid Condensedcapaicin"
slimepepper
name = "Slime Condensedcapaicin"
id = "m_condensedcapaicin"
result = "condensedcapsaicin"
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidfrost
name = "Metroid Frost Oil"
slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidglycerol
name = "Metroid Glycerol"
slimeglycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroid_explosion
name = "Metroid Explosion"
slime_explosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("blood" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
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)
@@ -659,50 +659,50 @@ datum
holder.clear_reagents()
return
metroidjam
name = "Metroid Jam"
slimejam
name = "Slime Jam"
id = "m_jam"
result = "metroid"
result = "slime"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
metroidsynthi
name = "Metroid Synthetic Flesh"
slimesynthi
name = "Slime Synthetic Flesh"
id = "m_flesh"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
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
metroidenzyme
name = "Metroid Enzyme"
slimeenzyme
name = "Slime Enzyme"
id = "m_enzyme"
result = "enzyme"
required_reagents = list("blood" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidplasma
name = "Metroid Plasma"
slimeplasma
name = "Slime Plasma"
id = "m_plasma"
result = "plasma"
required_reagents = list("sugar" = 1, "blood" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidvirus
name = "Metroid Virus"
slimevirus
name = "Slime Virus"
id = "m_virus"
result = null
required_reagents = list("sugar" = 1, "sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
on_reaction(var/datum/reagents/holder, var/created_volume)
holder.clear_reagents()
@@ -720,14 +720,14 @@ datum
return
metroidteleport
name = "Metroid Teleport"
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/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -779,14 +779,14 @@ datum
sleep(20)
M.client.screen -= blueeffect
del(blueeffect)
metroidcrit
name = "Metroid Crit"
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/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -805,13 +805,13 @@ datum
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
metroidbork
name = "Metroid Bork"
slimebork
name = "Slime Bork"
id = "m_tele"
result = null
required_reagents = list("sugar" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -835,33 +835,33 @@ datum
metroidchloral
name = "Metroid Chloral"
slimechloral
name = "Slime Chloral"
id = "m_bunch"
result = "chloralhydrate"
required_reagents = list("blood" = 1, "water" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
metroidretro
name = "Metroid Retro"
slimeretro
name = "Slime Retro"
id = "m_xeno"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
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)
metroidfoam
name = "Metroid Foam"
slimefoam
name = "Slime Foam"
id = "m_foam"
result = null
required_reagents = list("sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -9,15 +9,15 @@
item_state = "beaker"
New()
..()
reagents.add_reagent("metroid", 50)
reagents.add_reagent("slime", 50)
on_reagent_change()
if (reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
if("metroid")
icon_state = "jar_metroid"
name = "metroid jam"
desc = "A jar of metroid jam. Delicious!"
if("slime")
icon_state = "jar_slime"
name = "slime jam"
desc = "A jar of slime jam. Delicious!"
else
icon_state ="jar_what"
name = "jar of something"
@@ -50,7 +50,7 @@
M << "\red You cannot force any more of [src] to go down your throat."
return 0
else
if(!istype(M, /mob/living/carbon/metroid)) //If you're feeding it to someone else.
if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else.
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
for(var/mob/O in viewers(world.view, user))
@@ -354,7 +354,7 @@
if(6)
reagents.add_reagent("coco", 3)
if(7)
reagents.add_reagent("rorojelly", 3)
reagents.add_reagent("slimejelly", 3)
if(8)
reagents.add_reagent("banana", 3)
if(9)
@@ -382,7 +382,7 @@
src.name = "Frosted Jelly Donut"
reagents.add_reagent("sprinkles", 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/rorojelly
/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
name = "Jelly Donut"
desc = "You jelly?"
icon_state = "jdonut1"
@@ -390,7 +390,7 @@
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 5
if(prob(30))
src.icon_state = "jdonut2"
@@ -1149,13 +1149,13 @@
reagents.add_reagent("water", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/rorosoup
name = "Roro soup"
/obj/item/weapon/reagent_containers/food/snacks/slimesoup
name = "slime soup"
desc = "If no water is available, you may substitute tears."
icon_state = "rorosoup"
icon_state = "slimesoup"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
reagents.add_reagent("water", 10)
bitesize = 5
@@ -1235,7 +1235,7 @@
reagents.add_reagent("nutriment", 6)
reagents.add_reagent("blood", 10)
if(7)
reagents.add_reagent("rorojelly", 10)
reagents.add_reagent("slimejelly", 10)
reagents.add_reagent("water", 10)
if(8)
reagents.add_reagent("carbon", 10)
@@ -1476,7 +1476,7 @@
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
name = "Jellied Toast"
desc = "A slice of bread covered with delicious jam."
icon_state = "rorotoast"
icon_state = "slimetoast"
trash = /obj/item/trash/plate
New()
..()
@@ -1488,24 +1488,24 @@
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/roro
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger
name = "Jelly Burger"
desc = "Culinary delight..?"
icon_state = "roroburger"
icon_state = "slimeburger"
New()
..()
reagents.add_reagent("nutriment", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/roro
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
New()
@@ -1642,32 +1642,32 @@
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
name = "Jelly Sandwich"
desc = "You wish you had some peanut butter to go with this..."
icon_state = "rorosandwich"
icon_state = "slimesandwich"
trash = /obj/item/trash/plate
New()
..()
reagents.add_reagent("nutriment", 2)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/roro
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
New()
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/boiledrorocore
name = "Boiled Roro Core"
/*
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
name = "Boiled slime Core"
desc = "A boiled red thing."
icon_state = "boiledrorocore"
icon_state = "boiledslimecore"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 3
*/
/obj/item/weapon/reagent_containers/food/snacks/mint
name = "mint"
desc = "it is only wafer thin."
@@ -146,10 +146,10 @@
reagents.add_reagent("cryoxadone", 30)
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/roro
/obj/item/weapon/reagent_containers/glass/beaker/slime
New()
..()
reagents.add_reagent("rorojelly", 50)
reagents.add_reagent("slimejelly", 50)
update_icon()
/obj/item/weapon/reagent_containers/glass/bucket
@@ -59,7 +59,7 @@
return
if(ismob(target))//Blood!
if(istype(target, /mob/living/carbon/metroid))
if(istype(target, /mob/living/carbon/slime))
user << "\red You are unable to locate any blood."
return
if(src.reagents.has_reagent("blood"))
@@ -119,7 +119,7 @@
user << "\red [target] is empty."
return
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/metroid_core))
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_core))
user << "\red You cannot directly remove reagents from this object."
return
@@ -137,15 +137,15 @@
if(istype(target, /obj/item/weapon/implantcase/chem))
return
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/metroid_core) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/cigpacket))
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_core) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/cigpacket))
user << "\red You cannot directly fill this object."
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
user << "\red [target] is full."
return
if(istype(target, /obj/item/metroid_core))
var/obj/item/metroid_core/core = target
if(istype(target, /obj/item/slime_core))
var/obj/item/slime_core/core = target
core.Flush = 30 // reset flush counter
if(ismob(target) && target != user)