Files
vgstation13/code/modules/mob/living/simple_animal/friendly/cat.dm
I-VAPE-VOX-CLOACA-EVERY-DAY-OF-MY-LIFE 2edde95469 [done][needs test merge][waiting for test merge since 3 weeks ago] curb your roundend 2: curb harder: return of curb (#20333)
* Working proof of concept

* Seems to be fully functional, yet ugly

* Beats me

* Perfect layout

* Looks great now

* Clear credits correctly

* Actually fix the rejoin situation

* Credits work when rebooting world manually

* Comments the debug out until I make a proper verb for it

* Adds credits panel & slight refactors

* Adds images to credits

* Adds more disclaimers and episode names

* Names

* Fixes prespawned corpses in the credits

Celt is an idiot and this did not actually work
2018-12-02 16:30:27 -08:00

157 lines
4.0 KiB
Plaintext

//Cat
/mob/living/simple_animal/cat
name = "cat"
desc = "Kitty!!"
icon_state = "cat2"
icon_living = "cat2"
icon_dead = "cat2_dead"
gender = MALE
size = SIZE_SMALL
speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
speak_emote = list("purrs", "meows")
emote_hear = list("meows", "mews")
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
speak_override = TRUE
can_breed = 1
species_type = /mob/living/simple_animal/cat
childtype = /mob/living/simple_animal/cat/kitten
holder_type = /obj/item/weapon/holder/animal/cat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
min_oxy = 16 // Require atleast 16kPA oxygen
minbodytemp = 223 // Below -50 Degrees Celcius
maxbodytemp = 323 // Above 50 Degrees Celcius
var/turns_since_scan = 0
var/mob/living/simple_animal/mouse/movement_target=null
var/kill_verbs = list("splats", "toys with", "worries")
var/growl_verbs = list("hisses and spits", "mrowls fiercely", "growls")
held_items = list()
//RUNTIME IS ALIVE! SQUEEEEEEEE~
/mob/living/simple_animal/cat/Runtime
name = "Runtime"
desc = "GCAT"
icon_state = "cat"
icon_living = "cat"
icon_dead = "cat_dead"
gender = FEMALE
is_pet = TRUE
/mob/living/simple_animal/cat/Proc
name = "Proc"
/mob/living/simple_animal/cat/salem
name = "Salem"
desc = "Meow."
icon_state = "salem"
icon_living= "salem"
icon_dead= "salem_dead"
gender = FEMALE
holder_type = /obj/item/weapon/holder/animal/salem
/mob/living/simple_animal/cat/kitten
name = "kitten"
desc = "D'aaawwww"
icon_state = "kitten"
icon_living = "kitten"
icon_dead = "kitten_dead"
gender = NEUTER
size = SIZE_TINY
/mob/living/simple_animal/cat/Life()
if(timestopped)
return 0 //under effects of time magick
//MICE!
if((src.loc) && isturf(src.loc))
if(!stat && !resting && !locked_to)
for(var/mob/living/simple_animal/mouse/M in view(1,src))
if(!M.stat && Adjacent(M))
M.splat()
visible_message("<span class='warning'>\The [name] [pick(kill_verbs)] \the [M]!</span>")
movement_target = null
stop_automated_movement = 0
break
..()
for(var/mob/living/simple_animal/mouse/snack in oview(src, 3))
if(prob(15) && !snack.stat)
emote("me",, pick("[pick(growl_verbs)] at [snack]!", "eyes [snack] hungrily."))
break
if(!stat && !resting && !locked_to)
turns_since_scan++
if(turns_since_scan > 5)
start_walk_to(0)
turns_since_scan = 0
if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
movement_target = null
stop_automated_movement = 0
if( !movement_target || !(movement_target.loc in oview(src, 3)) )
movement_target = null
stop_automated_movement = 0
for(var/mob/living/simple_animal/mouse/snack in oview(src,3))
if(isturf(snack.loc) && !snack.stat)
movement_target = snack
break
if(movement_target)
stop_automated_movement = 1
start_walk_to(movement_target,0,3)
/mob/living/simple_animal/cat/snek
name = "snake"
desc = "sssSSSSsss"
icon_state = "snek"
icon_living = "snek"
icon_dead = "snek_dead"
gender = NEUTER
speak = list("SssssSSSS.", "Slirp.","HSSSSS")
speak_emote = list("hisses")
emote_hear = list("hisses")
emote_see = list("slithers")
kill_verbs = list("strikes at", "splats", "bites", "lunges at")
growl_verbs = list("hisses")
species_type = /mob/living/simple_animal/cat/snek
butchering_drops = null
childtype = null
holder_type = null
/mob/living/simple_animal/cat/snek/corpus
name = "Corpus"
density = 0
var/list/wizard_snakes = list()
/mob/living/simple_animal/cat/snek/wizard
health = 5
maxHealth = 5
/mob/living/simple_animal/cat/snek/wizard/New(turf/T, var/spell_holder) //For the snake spell
..(T)
if(spell_holder)
wizard_snakes[src] = spell_holder
/mob/living/simple_animal/cat/snek/wizard/death(var/gibbed = FALSE)
if(!transmogrify())
visible_message("<span class='notice'>\The [src] vanishes!</span>")
qdel(src)
..(TRUE)
/mob/living/simple_animal/cat/snek/wizard/Destroy()
wizard_snakes[src] = null
wizard_snakes -= src
..()