diff --git a/code/modules/clothing/head/tophat.dm b/code/modules/clothing/head/tophat.dm index 594cb9480eb..dd60bab0510 100644 --- a/code/modules/clothing/head/tophat.dm +++ b/code/modules/clothing/head/tophat.dm @@ -34,7 +34,7 @@ barry.say(pick("BUZZ BUZZ", "PULLING A RABBIT OUT OF A HAT IS A TIRED TROPE", "I DIDN'T ASK TO BEE HERE"), forced = "bee hat") else magician.visible_message(span_notice("[magician] taps [src] with [hitby_wand], then reaches in and pulls out a bunny! Cute!"), span_notice("You tap [src] with your [hitby_wand.name] and pull out a cute bunny!")) - var/mob/living/simple_animal/rabbit/empty/bunbun = new(get_turf(magician)) + var/mob/living/simple_animal/rabbit/bunbun = new(get_turf(magician)) bunbun.mob_try_pickup(magician, instant=TRUE) #undef RABBIT_CD_TIME diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 0d7fb89c339..7b26a2d089a 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -26,75 +26,9 @@ if(R.name != "blobspawn") if(prob(35)) if(isspaceturf(R.loc)) - new /mob/living/simple_animal/rabbit/space(R.loc) + new /mob/living/simple_animal/rabbit/easter/space(R.loc) else - new /mob/living/simple_animal/rabbit(R.loc) - -/mob/living/simple_animal/rabbit - name = "\improper rabbit" - desc = "The hippiest hop around." - gender = PLURAL - mob_biotypes = MOB_ORGANIC|MOB_BEAST - health = 15 - maxHealth = 15 - icon = 'icons/mob/easter.dmi' - icon_state = "rabbit_white" - icon_living = "rabbit_white" - icon_dead = "rabbit_white_dead" - speak = list("Hop into Easter!","Come get your eggs!","Prizes for everyone!") - speak_emote = list("sniffles","twitches") - emote_hear = list("hops.") - emote_see = list("hops around","bounces up and down") - butcher_results = list(/obj/item/food/meat/slab = 1) - can_be_held = TRUE - density = FALSE - speak_chance = 2 - turns_per_move = 3 - response_help_continuous = "pets" - response_help_simple = "pet" - response_disarm_continuous = "gently pushes aside" - response_disarm_simple = "gently push aside" - response_harm_continuous = "kicks" - response_harm_simple = "kick" - attack_verb_continuous = "kicks" - attack_verb_simple = "kick" - pass_flags = PASSTABLE | PASSMOB - mob_size = MOB_SIZE_SMALL - gold_core_spawnable = FRIENDLY_SPAWN - ///passed to animal_variety component as the prefix icon. - var/icon_prefix = "rabbit" - ///passed to egg_layer component as how many eggs it starts out as able to lay. - var/initial_egg_amount = 10 - -/mob/living/simple_animal/rabbit/Initialize(mapload) - . = ..() - AddElement(/datum/element/pet_bonus, "hops around happily!") - AddElement(/datum/element/animal_variety, icon_prefix, pick("brown","black","white"), TRUE) - var/list/feed_messages = list("[p_they()] nibbles happily.", "[p_they()] noms happily.") - var/eggs_added_from_eating = rand(1, 4) - var/max_eggs_held = 8 - AddComponent(/datum/component/egg_layer,\ - /obj/item/surprise_egg,\ - list(/obj/item/food/grown/carrot),\ - feed_messages,\ - list("hides an egg.","scampers around suspiciously.","begins making a huge racket.","begins shuffling."),\ - initial_egg_amount,\ - eggs_added_from_eating,\ - max_eggs_held\ - ) - -/mob/living/simple_animal/rabbit/empty //top hats summon these kinds of rabbits instead of the normal kind - initial_egg_amount = 0 - -/mob/living/simple_animal/rabbit/space - icon_state = "s_rabbit_white" - icon_living = "s_rabbit_white" - icon_dead = "s_rabbit_white_dead" - icon_prefix = "s_rabbit" - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = 1500 - unsuitable_atmos_damage = 0 + new /mob/living/simple_animal/rabbit/easter(R.loc) //Easter Baskets /obj/item/storage/basket/easter diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index f7daf9abe84..f86c2ee27de 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -108,10 +108,21 @@ /obj/effect/holodeck_effect/mobspawner/pet/Initialize(mapload) . = ..() - mobtype = list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/chick/holo, /mob/living/simple_animal/pet/fox) - mobtype += pick(/mob/living/simple_animal/pet/dog/corgi, /mob/living/simple_animal/pet/dog/corgi/puppy, - /mob/living/simple_animal/pet/dog/pug) - mobtype += pick(/mob/living/simple_animal/pet/cat, /mob/living/simple_animal/pet/cat/kitten) + mobtype = list( + /mob/living/simple_animal/butterfly, + /mob/living/simple_animal/chick/holo, + /mob/living/simple_animal/pet/fox, + /mob/living/simple_animal/rabbit, + ) + mobtype += pick( + /mob/living/simple_animal/pet/dog/corgi, + /mob/living/simple_animal/pet/dog/corgi/puppy, + /mob/living/simple_animal/pet/dog/pug, + ) + mobtype += pick( + /mob/living/simple_animal/pet/cat, + /mob/living/simple_animal/pet/cat/kitten, + ) /obj/effect/holodeck_effect/mobspawner/bee mobtype = /mob/living/simple_animal/hostile/bee/toxin diff --git a/code/modules/mob/living/simple_animal/friendly/rabbit.dm b/code/modules/mob/living/simple_animal/friendly/rabbit.dm new file mode 100644 index 00000000000..603fd873c57 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/rabbit.dm @@ -0,0 +1,87 @@ +/** + * ## Rabbit + * + * A creature that hops around with small tails and long ears. + * + * This contains the code for both your standard rabbit as well as the subtypes commonly found during Easter. + * + */ +/mob/living/simple_animal/rabbit + name = "\improper rabbit" + desc = "The hippiest hop around." + gender = PLURAL + mob_biotypes = MOB_ORGANIC|MOB_BEAST + health = 15 + maxHealth = 15 + icon = 'icons/mob/rabbit.dmi' + icon_state = "rabbit_white" + icon_living = "rabbit_white" + icon_dead = "rabbit_white_dead" + speak_emote = list("sniffles","twitches") + emote_hear = list("hops.") + emote_see = list("hops around","bounces up and down") + butcher_results = list(/obj/item/food/meat/slab = 1) + can_be_held = TRUE + density = FALSE + speak_chance = 2 + turns_per_move = 3 + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently pushes aside" + response_disarm_simple = "gently push aside" + response_harm_continuous = "kicks" + response_harm_simple = "kick" + attack_verb_continuous = "kicks" + attack_verb_simple = "kick" + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + gold_core_spawnable = FRIENDLY_SPAWN + //passed to animal_varity as the prefix icon. + var/icon_prefix = "rabbit" + +/mob/living/simple_animal/rabbit/Initialize(mapload) + . = ..() + AddElement(/datum/element/pet_bonus, "hops around happily!") + AddElement(/datum/element/animal_variety, icon_prefix, pick("brown","black","white"), TRUE) + +/mob/living/simple_animal/rabbit/easter + icon_state = "e_rabbit_white" + icon_living = "e_rabbit_white" + icon_dead = "e_rabbit_white_dead" + icon_prefix = "e_rabbit" + speak = list( + "Hop into Easter!", + "Come get your eggs!", + "Prizes for everyone!", + ) + icon_prefix = "e_rabbit" + ///passed to the egg_layer component as how many eggs it starts out as able to lay. + var/initial_egg_amount = 10 + ///passed to the egg_layer component as how many eggs it's allowed to hold at most. + var/max_eggs_held = 8 + +/mob/living/simple_animal/rabbit/easter/space + icon_state = "s_rabbit_white" + icon_living = "s_rabbit_white" + icon_dead = "s_rabbit_white_dead" + icon_prefix = "s_rabbit" + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 1500 + unsuitable_atmos_damage = 0 + +/mob/living/simple_animal/rabbit/easter/Initialize(mapload) + . = ..() + //passed to the egg_layer component as how many eggs it gets when it eats something. + var/eggs_added_from_eating = rand(1, 4) + var/list/feed_messages = list("[p_they()] nibbles happily.", "[p_they()] noms happily.") + AddElement(/datum/element/animal_variety, icon_prefix, pick("brown","black","white"), TRUE) + AddComponent(/datum/component/egg_layer,\ + /obj/item/surprise_egg,\ + list(/obj/item/food/grown/carrot),\ + feed_messages,\ + list("hides an egg.","scampers around suspiciously.","begins making a huge racket.","begins shuffling."),\ + initial_egg_amount,\ + eggs_added_from_eating,\ + max_eggs_held,\ + ) diff --git a/icons/mob/easter.dmi b/icons/mob/easter.dmi deleted file mode 100644 index 2cd67d5112d..00000000000 Binary files a/icons/mob/easter.dmi and /dev/null differ diff --git a/icons/mob/rabbit.dmi b/icons/mob/rabbit.dmi new file mode 100644 index 00000000000..bc9652bbb01 Binary files /dev/null and b/icons/mob/rabbit.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 6e67b75e540..10724123bb5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3174,6 +3174,7 @@ #include "code\modules\mob\living\simple_animal\friendly\mouse.dm" #include "code\modules\mob\living\simple_animal\friendly\penguin.dm" #include "code\modules\mob\living\simple_animal\friendly\pet.dm" +#include "code\modules\mob\living\simple_animal\friendly\rabbit.dm" #include "code\modules\mob\living\simple_animal\friendly\robot_customer.dm" #include "code\modules\mob\living\simple_animal\friendly\sloth.dm" #include "code\modules\mob\living\simple_animal\friendly\snake.dm"