mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-28 02:52:28 +00:00
Cats.
This commit is contained in:
@@ -283,8 +283,8 @@
|
||||
if("slime") M.change_mob_type( /mob/living/simple_mob/slime/xenobio , null, null, delmob )
|
||||
if("monkey") M.change_mob_type( /mob/living/carbon/human/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 )
|
||||
if("runtime") M.change_mob_type( /mob/living/simple_animal/cat/fluff/Runtime , null, null, delmob )
|
||||
if("cat") M.change_mob_type( /mob/living/simple_mob/animal/passive/cat , null, null, delmob )
|
||||
if("runtime") M.change_mob_type( /mob/living/simple_mob/animal/passive/cat/runtime , null, null, delmob )
|
||||
if("corgi") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi , null, null, delmob )
|
||||
if("ian") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi/Ian , null, null, delmob )
|
||||
if("crab") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab , null, null, delmob )
|
||||
|
||||
@@ -107,11 +107,6 @@
|
||||
last_turf_display = TRUE
|
||||
debug_ai = AI_LOG_INFO
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate
|
||||
hostile = FALSE
|
||||
ai_inactive = TRUE
|
||||
ai_holder_type = /datum/ai_holder/hostile/ranged/debug
|
||||
|
||||
/datum/ai_holder/hostile/ranged/robust/on_engagement(atom/movable/AM)
|
||||
step_rand(holder)
|
||||
holder.face_atom(AM)
|
||||
136
code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm
Normal file
136
code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm
Normal file
@@ -0,0 +1,136 @@
|
||||
/mob/living/simple_mob/animal/passive/cat
|
||||
name = "cat"
|
||||
desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
|
||||
tt_desc = "E Felis silvestris catus"
|
||||
icon_state = "cat2"
|
||||
item_state = "cat2"
|
||||
icon_living = "cat2"
|
||||
icon_dead = "cat2_dead"
|
||||
icon_rest = "cat2_rest"
|
||||
|
||||
movement_cooldown = 0.5 SECONDS
|
||||
|
||||
see_in_dark = 6 // Not sure if this actually works.
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
|
||||
holder_type = /obj/item/weapon/holder/cat
|
||||
mob_size = MOB_SMALL
|
||||
|
||||
has_langs = list("Cat")
|
||||
|
||||
var/mob/living/friend = null // Our best pal, who we'll follow. Meow.
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/handle_special()
|
||||
if(!stat && prob(2)) // spooky
|
||||
var/mob/observer/dead/spook = locate() in range(src, 5)
|
||||
if(spook)
|
||||
var/turf/T = get_turf(spook)
|
||||
var/list/visible = list()
|
||||
for(var/obj/O in T.contents)
|
||||
if(!O.invisibility && O.name)
|
||||
visible += O
|
||||
if(visible.len)
|
||||
var/atom/A = pick(visible)
|
||||
visible_emote("suddenly stops and stares at something unseen[istype(A) ? " near [A]":""].")
|
||||
|
||||
// Instakills mice.
|
||||
/mob/living/simple_mob/animal/passive/cat/apply_melee_effects(var/atom/A)
|
||||
if(ismouse(A))
|
||||
var/mob/living/simple_mob/animal/passive/mouse/mouse = A
|
||||
if(mouse.getMaxHealth() > 20) // In case a badmin makes giant mice or something.
|
||||
mouse.splat()
|
||||
visible_emote(pick("bites \the [mouse]!", "toys with \the [mouse].", "chomps on \the [mouse]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/IIsAlly(mob/living/L)
|
||||
if(L == friend) // Always be pals with our special friend.
|
||||
return TRUE
|
||||
|
||||
. = ..()
|
||||
|
||||
if(.) // We're pals, but they might be a dirty mouse...
|
||||
if(ismouse(L))
|
||||
return FALSE // Cats and mice can never get along.
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/verb/become_friends()
|
||||
set name = "Become Friends"
|
||||
set category = "IC"
|
||||
set src in view(1)
|
||||
|
||||
var/mob/living/L = usr
|
||||
if(!istype(L))
|
||||
return // Fuck off ghosts.
|
||||
|
||||
if(friend)
|
||||
if(friend == usr)
|
||||
to_chat(L, span("notice", "\The [src] is already your friend! Meow!"))
|
||||
return
|
||||
else
|
||||
to_chat(L, span("warning", "\The [src] ignores you."))
|
||||
return
|
||||
|
||||
friend = L
|
||||
face_atom(L)
|
||||
to_chat(L, span("notice", "\The [src] is now your friend! Meow."))
|
||||
visible_emote(pick("nuzzles [friend].", "brushes against [friend].", "rubs against [friend].", "purrs."))
|
||||
|
||||
if(has_AI())
|
||||
var/datum/ai_holder/AI = ai_holder
|
||||
AI.set_follow(friend)
|
||||
|
||||
|
||||
//RUNTIME IS ALIVE! SQUEEEEEEEE~
|
||||
/mob/living/simple_mob/animal/passive/cat/runtime
|
||||
name = "Runtime"
|
||||
desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally."
|
||||
tt_desc = "E Felis silvestris medicalis" // a hypoallergenic breed produced by NT for... medical purposes? Sure.
|
||||
gender = FEMALE
|
||||
icon_state = "cat"
|
||||
item_state = "cat"
|
||||
icon_living = "cat"
|
||||
icon_dead = "cat_dead"
|
||||
icon_rest = "cat_rest"
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/kitten
|
||||
name = "kitten"
|
||||
desc = "D'aaawwww"
|
||||
icon_state = "kitten"
|
||||
item_state = "kitten"
|
||||
icon_living = "kitten"
|
||||
icon_dead = "kitten_dead"
|
||||
gender = NEUTER
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/kitten/initialize()
|
||||
if(gender == NEUTER)
|
||||
gender = pick(MALE, FEMALE)
|
||||
return ..()
|
||||
|
||||
// Leaving this here for now.
|
||||
/obj/item/weapon/holder/cat/fluff/bones
|
||||
name = "Bones"
|
||||
desc = "It's Bones! Meow."
|
||||
gender = MALE
|
||||
icon_state = "cat3"
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cat/bones
|
||||
name = "Bones"
|
||||
desc = "That's Bones the cat. He's a laid back, black cat. Meow."
|
||||
gender = MALE
|
||||
icon_state = "cat3"
|
||||
item_state = "cat3"
|
||||
icon_living = "cat3"
|
||||
icon_dead = "cat3_dead"
|
||||
icon_rest = "cat3_rest"
|
||||
holder_type = /obj/item/weapon/holder/cat/fluff/bones
|
||||
|
||||
|
||||
/datum/say_list/cat
|
||||
speak = list("Meow!","Esp!","Purr!","HSSSSS")
|
||||
emote_hear = list("meows","mews")
|
||||
emote_see = list("shakes their head", "shivers")
|
||||
say_maybe_target = list("Meow?","Mew?","Mao?")
|
||||
say_got_target = list("MEOW!","HSSSS!","REEER!")
|
||||
|
||||
@@ -48,5 +48,5 @@
|
||||
faction = "cult"
|
||||
supernatural = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/cult/cultify()
|
||||
/mob/living/simple_mob/animal/space/bats/cult/cultify()
|
||||
return
|
||||
@@ -303,7 +303,7 @@
|
||||
*/
|
||||
|
||||
//Good mobs!
|
||||
if(ispath(MP, /mob/living/simple_animal/cat))
|
||||
if(ispath(MP, /mob/living/simple_mob/animal/passive/cat))
|
||||
return 1
|
||||
if(ispath(MP, /mob/living/simple_mob/animal/passive/dog))
|
||||
return 1
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/mob/living/simple_mob/slime/xenobio)
|
||||
else
|
||||
spawn_type = pick(\
|
||||
/mob/living/simple_animal/cat,
|
||||
/mob/living/simple_mob/animal/passive/cat,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi,
|
||||
/mob/living/simple_mob/animal/passive/dog/corgi/puppy,
|
||||
/mob/living/simple_mob/animal/passive/chicken,
|
||||
|
||||
Reference in New Issue
Block a user