From 247aa415f4e9ba25e24d8eca53f5f4f3be9a5850 Mon Sep 17 00:00:00 2001 From: Alffd Date: Sun, 23 Apr 2017 18:06:22 -0400 Subject: [PATCH] Ports Catsplosion from TG --- .../mob/living/simple_animal/friendly/cat.dm | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 95a1d100161..e98d1007676 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -37,6 +37,59 @@ icon_resting = "cat_rest" gender = FEMALE gold_core_spawnable = CHEM_MOB_SPAWN_INVALID + var/list/family = list() + var/lives = 9 + var/memory_saved = 0 + +/mob/living/simple_animal/pet/cat/Runtime/New() + Read_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/Life() + if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + Write_Memory() + ..() + +/mob/living/simple_animal/pet/cat/Runtime/death() + if(!memory_saved) + Write_Memory(1) + ..() + +/mob/living/simple_animal/pet/cat/Runtime/proc/Read_Memory() + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + S["family"] >> family + S["lives"] >> lives + + if(isnull(family)) + family = list() + + if(isnull(lives)) + lives = 9 + + if(lives <= 0) + lives = 10 //Lowers to 9 in Write_Memory + Write_Memory(1) + qdel(src) + + for(var/cat_type in family) + if(family[cat_type] > 0) + for(var/i in 1 to family[cat_type]) + new cat_type(loc) + +/mob/living/simple_animal/pet/cat/Runtime/proc/Write_Memory(dead) + var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") + if(dead) + S["lives"] << lives - 1 + family = list() + for(var/mob/living/simple_animal/pet/cat/C in mob_list) + if(istype(C,type) || C.stat || !C.butcher_results || C.name == "SyndiCat") + continue + if(C.type in family) + family[C.type] += 1 + else + family[C.type] = 1 + S["family"] << family + memory_saved = 1 /mob/living/simple_animal/pet/cat/handle_automated_action() ..()