mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
* 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
157 lines
4.0 KiB
Plaintext
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
|
|
..()
|