mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
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:
@@ -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> | "
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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!"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user