diff --git a/code/citadel/pokemon.dm b/code/citadel/pokemon.dm new file mode 100644 index 0000000000..b6be0033c0 --- /dev/null +++ b/code/citadel/pokemon.dm @@ -0,0 +1,306 @@ +//Sprites are trademarks of Gamefreak, Nintendo, The Pokemon Company, and Spike Chunsoft. +#define ispokemon(A) (istype(A, /mob/living/simple_animal/pokemon)) +//POKEBALL +/obj/item/pokeball + name = "pokeball" + icon = 'icons/obj/pokeball.dmi' + icon_state = "pokeball" + force = 0 + throwforce = 0 + var/success_chance = 25 + var/pokemon +/obj/item/pokeball/great + name = "great ball" + icon_state = "pokeball_great" + success_chance = 50 +/obj/item/pokeball/ultra + icon_state = "pokeball_ultra" + name = "ultra ball" + success_chance = 75 +/obj/item/pokeball/master + icon_state = "pokeball_master" + name = "master ball" + success_chance = 100 +/* //WIP +/obj/item/pokeball/throw_impact(atom/hit_atom) + if(ispokemon(hit_atom)) + var/mob/living/simple_animal/pokemon/pmon = hit_atom + var/initial_success_chance = success_chance + pmon.resize = 0.1 + pmon.color = "RED" + pmon.canmove = 0 + sleep(15) + if(pmon.pokeball == src) + pmon.loc = src + pokemon = pmon + + return 1 + if(pmon.pokeball && pmon.pokeball !=src) + return ..() + var/bonus_chance = ((pmon.maxHealth - pmon.health) / 2) + if(bonus_chance > 100) + bonus_chance = 100 + success_chance = (success_chance + bonus_chance) + if(success_chance > 100) + success_chance = 100 + if(success_chance < 0)//just in case + success_chance = 0 + sleep(15) + if(prob(success_chance)) + visible_message("[src] shakes...") + else + escape() + sleep(15) + if(prob(success_chance)) + visible_message("[src] shakes...") + else + escape() + sleep(15) + if(prob(success_chance)) + visible_message("[src] shakes...") + else + escape() + else + ..() +/obj/item/pokeball/proc/capture(mob/living/simple_animal/pokemon/pmon, mob/living/user) + +/obj/item/pokeball/proc/escape(mob/living/simple_animal/pokemon/pmon, mob/living/user) + if(!pokemon) + return + pmon.resize = 10 + pmon.color = null + pmon.canmove = 1 + pmon.loc = src.loc + if(pmon.pokeball != src) + visible_message("[pmon] breaks free from [src]") + PoolOrNew(/obj/effect/particle_effect/sparks, loc) + playsound(src.loc, "sparks", 50, 1) + qdel(src) + + else +/obj/item/pokeball/proc/recall +/obj/item/pokeball/proc/release +*/ +/mob/living/simple_animal/pokemon + name = "eevee" + icon_state = "eevee" + icon_living = "eevee" + icon_dead = "eevee_d" + desc = "Gotta catch 'em all!" + icon = 'icons/mob/pokemon.dmi' + var/pokeball + pixel_x = -16 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 5) + ventcrawler = 2 + health = 100 + maxHealth = 100 + layer = 4 + response_help = "pets" + wander = 1 + turns_per_move = 2 + pass_flags = PASSTABLE | PASSMOB + +/mob/living/simple_animal/pokemon/proc/simple_lay_down() + set name = "Rest" + set category = "IC" + + resting = !resting + src << "You are now [resting ? "resting" : "getting up"]." + update_canmove() + update_icon() + +/mob/living/simple_animal/pokemon/proc/update_icon() + if(lying || resting || sleeping) + icon_state = "[icon_state]_rest" + else + icon_state = "[icon_living]" + +/mob/living/simple_animal/pokemon/New() + ..() + verbs += /mob/living/simple_animal/pokemon/proc/simple_lay_down + +/* +/////TEMPLATE///// + +/mob/living/simple_animal/pokemon/ + name = "" + icon_state = "" + icon_living = "" + icon_dead = "" +*/ + +/mob/living/simple_animal/pokemon/leg + icon = 'icons/mob/legendary.dmi' + pixel_x = -32 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 12) + health = 200 + maxHealth = 200 + + +/mob/living/simple_animal/pokemon/leg/articuno + name = "Articuno" + icon_state = "articuno" + icon_living = "articuno" + icon_dead = "articuno_d" + flying = 1 + +/mob/living/simple_animal/pokemon/leg/rayquaza + name = "Rayquaza" + icon_state = "rayquaza" + icon_living = "rayquaza" + icon_dead = "rayquaza_d" + flying = 1 + +//ALPHABETICAL PLEASE + +/mob/living/simple_animal/pokemon/absol + name = "absol" + icon_state = "absol" + icon_living = "absol" + icon_dead = "absol_d" + speak = list("Absol!", "Ab-Absol!") + +/mob/living/simple_animal/pokemon/aggron + name = "aggron" + icon_state = "aggron" + icon_living = "aggron" + icon_dead = "aggron_d" + +/mob/living/simple_animal/pokemon/ampharos + name = "ampharos" + icon_state = "ampharos" + icon_living = "ampharos" + icon_dead = "ampharos_d" + +/mob/living/simple_animal/pokemon/charmander + name = "charmander" + icon_state = "charmander" + icon_living = "charmander" + icon_dead = "charmander_d" + +/mob/living/simple_animal/pokemon/ditto + name = "ditto" + icon_state = "ditto" + icon_living = "ditto" + icon_dead = "ditto_d" + +/mob/living/simple_animal/pokemon/dratini/dragonair + name = "dragonair" + desc = "A Dragonair stores an enormous amount of energy inside its body. It is said to alter the weather around it by loosing energy from the crystals on its neck and tail." + icon_state = "dragonair" + icon_living = "dragonair" + icon_dead = "dragonair_d" + +/mob/living/simple_animal/pokemon/dratini/dragonair/dragonite + name = "dragonite" + desc = "It can circle the globe in just 16 hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land." + icon_state = "dragonite" + icon_living = "dragonite" + icon_dead = "dragonite_d" + +/mob/living/simple_animal/pokemon/dratini + name = "dratini" + desc = "A Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels." + icon_state = "dratini" + icon_living = "dratini" + icon_dead = "dratini_d" + +/mob/living/simple_animal/pokemon/eevee + name = "eevee" + desc = "Eevee has an unstable genetic makeup that suddenly mutates due to its environment. Radiation from various stones causes this Pokémon to evolve." + icon_state = "eevee" + icon_living = "eevee" + icon_dead = "eevee_d" + speak = list("Eevee!", "Ee-Eevee!") + response_help = "pets" + response_harm = "hits" + +/mob/living/simple_animal/pokemon/eevee/espeon + name = "espeon" + desc = "Espeon is extremely loyal to any trainer it considers to be worthy. It is said to have developed precognitive powers to protect its trainer from harm." + icon_state = "espeon" + icon_living = "espeon" + icon_dead = "espeon_d" + +/mob/living/simple_animal/pokemon/flaaffy + name = "flaaffy" + icon_state = "flaaffy" + icon_living = "flaaffy" + icon_dead = "flaaffy_d" + +/mob/living/simple_animal/pokemon/eevee/flareon + name = "flareon" + desc = "Flareon's fluffy fur releases heat into the air so that its body does not get excessively hot. Its body temperature can rise to a maximum of 1,650 degrees F." + icon_state = "flareon" + icon_living = "flareon" + icon_dead = "flareon_d" + speak = list("Flare!", "Flareon!") + +/mob/living/simple_animal/pokemon/eevee/glaceon + name = "glaceon" + desc = "By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry." + icon_state = "glaceon" + icon_living = "glaceon" + icon_dead = "glaceon_d" + speak = list("Glace!", "Glaceon!") + +/mob/living/simple_animal/pokemon/eevee/jolteon + name = "jolteon" + desc = "Its cells generate weak power that is amplified by its fur's static electricity to drop thunderbolts. The bristling fur is made of electrically charged needles." + icon_state = "jolteon" + icon_living = "jolteon" + icon_dead = "jolteon_d" + speak = list("Jolt!", "Jolteon!") + +/mob/living/simple_animal/pokemon/larvitar + name = "larvitar" + desc = "It is born deep underground. It can't emerge until it has entirely consumed the soil around it." + icon_state = "larvitar" + icon_living = "larvitar" + icon_dead = "larvitar_d" + +/mob/living/simple_animal/pokemon/mareep + name = "mareep" + icon_state = "mareep" + icon_living = "mareep" + icon_dead = "mareep_d" + +/mob/living/simple_animal/pokemon/poochyena/mightyena + name = "mightyena" + icon_state = "mightyena" + icon_living = "mightyena" + icon_dead = "mightyena" + +/mob/living/simple_animal/pokemon/miltank + name = "miltank" + icon_state = "miltank" + icon_living = "miltank" + icon_dead = "miltank_d" + +/mob/living/simple_animal/pokemon/poochyena + name = "poochyena" + icon_state = "poochyena" + icon_living = "poochyena" + icon_dead = "poochyena_d" + +/mob/living/simple_animal/pokemon/eevee/sylveon + name = "Sylveon" + desc = "Sylveon, the Intertwining Pokémon. Sylveon affectionately wraps its ribbon-like feelers around its Trainer's arm as they walk together." + icon_state = "sylveon" + icon_living = "sylveon" + icon_dead = "sylveon_d" + speak = list("Sylveon!", "Syl!") + response_help = "pets" + response_harm = "hits" + +/mob/living/simple_animal/pokemon/eevee/umbreon + name = "umbreon" + icon_state = "umbreon" + icon_dead = "umbreon_d" + icon_living = "umbreon" + +/mob/living/simple_animal/pokemon/vulpix + name = "vulpix" + icon_state = "vulpix" + icon_living = "vulpix" + icon_dead = "vulpix_d" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 04a9b38903..ce6732f4c1 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -115,6 +115,12 @@ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown) burn_state = FLAMMABLE +/obj/item/weapon/storage/bag/plants/holding // Now botany can crash the server too + name = "plant bag of holding" + icon_state = "plantbag_holding" + storage_slots = INFINITY + max_combined_w_class = INFINITY + //////// /obj/item/weapon/storage/bag/plants/portaseeder diff --git a/icons/mob/pokemon.dmi b/icons/mob/pokemon.dmi index a2316fe640..a115c14994 100644 Binary files a/icons/mob/pokemon.dmi and b/icons/mob/pokemon.dmi differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi index 558e0f6250..b3c852e89d 100644 Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/obj/pokeball.dmi b/icons/obj/pokeball.dmi new file mode 100644 index 0000000000..c84362a793 Binary files /dev/null and b/icons/obj/pokeball.dmi differ diff --git a/tgstation.dme b/tgstation.dme index e365563baa..f018c061bc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -130,6 +130,7 @@ #include "code\_onclick\hud\swarmer.dm" #include "code\citadel\dogborgs.dm" #include "code\citadel\dogborgstuff.dm" +#include "code\citadel\pokemon.dm" #include "code\citadel\vore\hook-defs_vr.dm" #include "code\citadel\vore\trycatch_vr.dm" #include "code\citadel\vore\eating\belly_vr.dm"