diff --git a/baystation12.dme b/baystation12.dme index 71891280e30..b4c4d73d1f1 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -593,7 +593,6 @@ #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\displaycase.dm" -#include "code\game\objects\structures\doccart.dm" #include "code\game\objects\structures\door_assembly.dm" #include "code\game\objects\structures\electricchair.dm" #include "code\game\objects\structures\extinguisher.dm" @@ -947,7 +946,6 @@ #include "code\modules\mob\living\carbon\metroid\life.dm" #include "code\modules\mob\living\carbon\metroid\login.dm" #include "code\modules\mob\living\carbon\metroid\metroid.dm" -#include "code\modules\mob\living\carbon\metroid\powers.dm" #include "code\modules\mob\living\carbon\metroid\say.dm" #include "code\modules\mob\living\carbon\metroid\subtypes.dm" #include "code\modules\mob\living\carbon\metroid\update_icons.dm" @@ -1337,6 +1335,10 @@ #include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" #include "code\WorkInProgress\Susan\susan_desert_turfs.dm" #include "code\WorkInProgress\ZomgPonies\karma.dm" +#include "code\WorkInProgress\ZomgPonies\clothing\civilian.dm" +#include "code\WorkInProgress\ZomgPonies\mobs\pony.dm" +#include "code\WorkInProgress\ZomgPonies\mobs\metroid\powers.dm" +#include "code\WorkInProgress\ZomgPonies\objects\doccart.dm" #include "code\ZAS\Airflow.dm" #include "code\ZAS\Connection.dm" #include "code\ZAS\Debug.dm" diff --git a/code/modules/clothing/spacesuits/civilian.dm b/code/WorkInProgress/ZomgPonies/clothing/civilian.dm similarity index 100% rename from code/modules/clothing/spacesuits/civilian.dm rename to code/WorkInProgress/ZomgPonies/clothing/civilian.dm diff --git a/code/WorkInProgress/ZomgPonies/mobs/metroid/Readme.txt b/code/WorkInProgress/ZomgPonies/mobs/metroid/Readme.txt new file mode 100644 index 00000000000..81a5feee3e5 --- /dev/null +++ b/code/WorkInProgress/ZomgPonies/mobs/metroid/Readme.txt @@ -0,0 +1 @@ +replaces code/modules/mobs/living/carbon/metroid/powers.dm \ No newline at end of file diff --git a/code/WorkInProgress/ZomgPonies/mobs/metroid/powers.dm b/code/WorkInProgress/ZomgPonies/mobs/metroid/powers.dm new file mode 100644 index 00000000000..7733b07f9aa --- /dev/null +++ b/code/WorkInProgress/ZomgPonies/mobs/metroid/powers.dm @@ -0,0 +1,277 @@ +/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() + return + + if(stat) + src << "I must be conscious to do this..." + return + + var/list/choices = list() + for(var/mob/living/C in view(1,src)) + 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 + if(!M) return + if(M in view(1, src)) + + if(!istype(src, /mob/living/carbon/brain)) + if(!istype(M, /mob/living/carbon/slime)) + if(stat != 2) + if(health > -70) + + for(var/mob/living/carbon/slime/met in view()) + if(met.Victim == M && met != src) + src << "The [met.name] is already feeding on this subject..." + return + src << "\blue I have latched onto the subject and begun feeding..." + M << "\red The [src.name] has latched onto your head!" + Feedon(M) + + else + src << "This subject does not have a strong enough life energy..." + else + src << "This subject does not have an edible life energy..." + else + src << "I must not feed on my brothers..." + else + src << "This subject does not have an edible life energy..." + + + +/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/slime/adult)) + icon_state = "[colour] adult slime eat" + else + icon_state = "[colour] baby slime eat" + + while(Victim && M.health > -70 && stat != 2) + // M.canmove = 0 + canmove = 0 + + if(M in view(1, src)) + loc = M.loc + + if(prob(15) && M.client && istype(M, /mob/living/carbon)) + M << "\red [pick("You can feel your body becoming weak!", \ + "You feel like you're about to die!", \ + "You feel every part of your body screaming in agony!", \ + "A low, rolling pain passes through your body!", \ + "Your body feels as if it's falling apart!", \ + "You feel extremely weak!", \ + "A sharp, deep pain bathes every inch of your body!")]" + + if(istype(M, /mob/living/carbon)) + Victim.adjustCloneLoss(rand(1,10)) + Victim.adjustToxLoss(rand(1,2)) + if(Victim.health <= 0) + Victim.adjustToxLoss(rand(2,4)) + + // Heal yourself + adjustToxLoss(-10) + adjustOxyLoss(-10) + adjustBruteLoss(-10) + adjustFireLoss(-10) + adjustCloneLoss(-10) + + if(Victim) + 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) + if(prob(80)) + lastnut = nutrition + powerlevel++ + if(powerlevel > 10) + powerlevel = 10 + + if(istype(src, /mob/living/carbon/slime/adult)) + if(nutrition > 1200) + nutrition = 1200 + else + if(nutrition > 1000) + nutrition = 1000 + + Victim.updatehealth() + updatehealth() + + else + if(prob(25)) + src << "\red [pick("This subject is incompatable", \ + "This subject does not have a life energy", "This subject is empty", \ + "I am not satisified", "I can not feed from this subject", \ + "I do not feel nourished", "This subject is not food")]..." + + sleep(rand(15,45)) + + else + break + + if(stat == 2) + if(!istype(src, /mob/living/carbon/slime/adult)) + icon_state = "[colour] baby slime dead" + + else + if(istype(src, /mob/living/carbon/slime/adult)) + icon_state = "[colour] adult slime" + else + icon_state = "[colour] baby slime" + + canmove = 1 + anchored = 0 + + if(M) + if(M.health <= -70) + M.canmove = 0 + if(!client) + if(Victim && !rabid && !attacked) + if(Victim.LAssailant && Victim.LAssailant != Victim) + if(prob(50)) + if(!(Victim.LAssailant in Friends)) + Friends.Add(Victim.LAssailant) // no idea why i was using the |= operator + + if(M.client && istype(src, /mob/living/carbon/human)) + if(prob(85)) + rabid = 1 // UUUNNBGHHHH GONNA EAT JUUUUUU + + if(client) src << "This subject does not have a strong enough life energy anymore..." + else + M.canmove = 1 + + if(client) src << "I have stopped feeding..." + else + if(client) src << "I have stopped feeding..." + + Victim = null + +/mob/living/carbon/slime/proc/Feedstop() + if(Victim) + if(Victim.client) Victim << "[src] has let go of your head!" + Victim = null + +/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/slime/verb/Evolve() + set category = "Slime" + set desc = "This will let you evolve from baby to adult slime." + + if(stat) + src << "I must be conscious to do this..." + return + if(!istype(src, /mob/living/carbon/slime/adult)) + if(amount_grown >= 10) + var/mob/living/carbon/slime/adult/new_slime = new adulttype(loc) + new_slime.nutrition = nutrition + new_slime.powerlevel = max(0, powerlevel-1) + new_slime.a_intent = "hurt" + new_slime.key = key + new_slime.universal_speak = universal_speak + new_slime << "You are now an adult slime." + del(src) + else + src << "I am not ready to evolve yet..." + else + src << "I have already evolved..." + +/mob/living/carbon/slime/verb/Reproduce() + set category = "Slime" + set desc = "This will make you split into four Slimes. NOTE: this will KILL you, but you will be transferred into one of the babies." + + if(stat) + src << "I must be conscious to do this..." + return + + if(istype(src, /mob/living/carbon/slime/adult)) + if(amount_grown >= 10) + //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 must be conscious to do this..." + return + + var/list/babies = list() + var/new_nutrition = round(nutrition * 0.9) + var/new_powerlevel = round(powerlevel / 4) + for(var/i=1,i<=4,i++) + if(prob(80)) + var/mob/living/carbon/slime/M = new primarytype(loc) + M.nutrition = new_nutrition + M.powerlevel = new_powerlevel + if(i != 1) step_away(M,src) + babies += M + else + var/mutations = pick("one","two","three","four") + switch(mutations) + if("one") + var/mob/living/carbon/slime/M = new mutationone(loc) + M.nutrition = new_nutrition + M.powerlevel = new_powerlevel + if(i != 1) step_away(M,src) + babies += M + if("two") + var/mob/living/carbon/slime/M = new mutationtwo(loc) + M.nutrition = new_nutrition + M.powerlevel = new_powerlevel + if(i != 1) step_away(M,src) + babies += M + if("three") + var/mob/living/carbon/slime/M = new mutationthree(loc) + M.nutrition = new_nutrition + M.powerlevel = new_powerlevel + if(i != 1) step_away(M,src) + babies += M + if("four") + var/mob/living/carbon/slime/M = new mutationfour(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_n_take(babies) + new_slime.a_intent = "hurt" + new_slime.universal_speak = universal_speak + new_slime.key = key + + new_slime << "You are now a slime!" + + if(new_slime.client) + if(babies.len) + var/list/candidates = get_active_candidates() + if(candidates.len) + var/mob/dead/observer/picked = pick(candidates) + var/mob/living/carbon/slime/S = pick(babies) + picked.mind.transfer_to(S) + S.a_intent = "hurt" + S.universal_speak = universal_speak + S << "You are now a slime!" + + else return + else + new_slime << "You're an only child!" + else + src << "I am not ready to reproduce yet..." + else + src << "I am not old enough to reproduce yet..." + + + +/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 = "Slime" + if(Victim) return + handle_ventcrawl() \ No newline at end of file diff --git a/code/WorkInProgress/ZomgPonies/mobs/pony.dm b/code/WorkInProgress/ZomgPonies/mobs/pony.dm new file mode 100644 index 00000000000..c9742e32f87 --- /dev/null +++ b/code/WorkInProgress/ZomgPonies/mobs/pony.dm @@ -0,0 +1,89 @@ +/mob/living/simple_animal/pony + name = "\improper pony" + desc = "A bound spirit" + icon = 'icons/mob/pony.dmi' +// icon_dead = "shade_dead" + maxHealth = 50 + health = 50 + speak_emote = list("whinnys") + emote_hear = list("excitedly says") + response_help = "nuzzles" + response_disarm = "flails it's hooves at" + response_harm = "kicks" + melee_damage_lower = 5 + melee_damage_upper = 15 + attacktext = "sends rainbows of power to" + minbodytemp = 0 + maxbodytemp = 4000 + min_oxy = 0 + max_co2 = 0 + max_tox = 0 + speed = 0 + stop_automated_movement = 0 + status_flags = 0 + faction = "cult" + status_flags = CANPUSH + + + Life() + ..() + if(stat == 2) + new /obj/item/weapon/ectoplasm (src.loc) + for(var/mob/M in viewers(src, null)) + if((M.client && !( M.blinded ))) + M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") + ghostize() + del src + return + + + attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri + if(istype(O, /obj/item/device/soulstone)) + O.transfer_soul("SHADE", src, user) + else + if(O.force) + var/damage = O.force + if (O.damtype == HALLOSS) + damage = 0 + health -= damage + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + else + usr << "\red This weapon is ineffective, it does no damage." + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red [user] gently taps [src] with the [O]. ") + return + + +/mob/living/simple_animal/pony/twilight + name = "Twilight Sparkle" + real_name = "Twilight Sparkle" + icon_state = "twilight" + icon_living = "twilight" + +/mob/living/simple_animal/pony/pinkie + name = "Pinkie Pie" + real_name = "Pinkie Pie" + icon_state = "pinkie" + icon_living = "pinkie" + +/mob/living/simple_animal/pony/rainbow + name = "Rainbow Dash" + real_name = "Rainbow Dash" + icon_state = "rainbow" + icon_living = "rainbow" + +mob/living/simple_animal/pony/fluttershy + name = "Fluttershy" + real_name = "Fluttershy" + icon_state = "fluttershy" + icon_living = "fluttershy" + +mob/living/simple_animal/pony/applejack + name = "Applejack" + real_name = "Applejack" + icon_state = "applejack" + icon_living = "applejack" + diff --git a/code/game/objects/structures/doccart.dm b/code/WorkInProgress/ZomgPonies/objects/doccart.dm similarity index 100% rename from code/game/objects/structures/doccart.dm rename to code/WorkInProgress/ZomgPonies/objects/doccart.dm