This commit is contained in:
Neerti
2018-10-22 01:23:38 -04:00
parent 56a65ee2bb
commit f4b7c21f03
17 changed files with 14381 additions and 24 deletions

View File

@@ -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 )

View File

@@ -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)

View 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!")

View File

@@ -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

View File

@@ -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

View File

@@ -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,