From 86504d1e4dc68abd838460b04a84f16da5087e80 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sat, 22 Sep 2018 00:58:59 -0700 Subject: [PATCH] Make the Statue NOT entirely immortal. --- .../mob/living/simple_animal/aliens/statue.dm | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/simple_animal/aliens/statue.dm b/code/modules/mob/living/simple_animal/aliens/statue.dm index f468403a303..0022ee8a892 100644 --- a/code/modules/mob/living/simple_animal/aliens/statue.dm +++ b/code/modules/mob/living/simple_animal/aliens/statue.dm @@ -22,8 +22,8 @@ environment_smash = 2 can_be_antagged = 1 speed = -1 - maxHealth = 50000 - health = 50000 + maxHealth = 3000 + health = 3000 status_flags = CANPUSH // investigates = 1 a_intent = I_HURT @@ -92,9 +92,20 @@ else visible_message("[src] is too strong to be banished!") Paralyse(rand(8,15)) + if(istype(O, /obj/item/weapon/pickaxe) || istype(O, /obj/item/weapon/pickaxe/plasmacutter) || (O.force >= 20 && O.damtype == BRUTE)) //Heavy objects or distinctly rock-breaking tools. + ..() + +/mob/living/simple_animal/hostile/statue/bullet_act(var/obj/item/projectile/Proj) + if((Proj.damage_type == BRUTE && Proj.damage >= 10) || (Proj.damage_type == BURN && Proj.damage >= 50)) + ..(Proj) + return /mob/living/simple_animal/hostile/statue/death() - new /obj/item/stack/material/marble(loc) + var/chunks_to_spawn = rand(2,5) + for(var/I = 1 to chunks_to_spawn) + new /obj/item/stack/material/marble(get_turf(loc)) + new /obj/item/cursed_marble(get_turf(loc)) + ..() /mob/living/simple_animal/hostile/statue/Move(turf/NewLoc) if(can_be_seen(NewLoc)) @@ -368,20 +379,20 @@ to_chat(user, "You rub the slab in hopes a wandering spirit wishes to inhabit it. [src] starts to sparkle!") icon_state = "sheet-snowbrick" searching = 1 - request_player() + request_player(user) spawn(60 SECONDS) reset_search() -/obj/item/cursed_marble/proc/request_player() +/obj/item/cursed_marble/proc/request_player(var/mob/user) for(var/mob/observer/dead/O in player_list) if(!O.MayRespawn()) continue if(O.client) if(O.client.prefs.be_special & BE_ALIEN) - question(O.client) + question(O.client, user) -/obj/item/cursed_marble/proc/question(var/client/C) +/obj/item/cursed_marble/proc/question(var/client/C, var/mob/user) spawn(0) if(!C) return @@ -391,7 +402,7 @@ if(!C || 2 == searching) return //handle logouts that happen whilst the alert is waiting for a response, and responses issued after a brain has been located. if(response == "Yes") - transfer_personality(C.mob) + transfer_personality(C.mob, user) else if(response == "Never for this round") C.prefs.be_special ^= BE_ALIEN @@ -403,12 +414,14 @@ for (var/mob/M in viewers(T)) M.show_message("[src] fades. Maybe it will spark another time.") -/obj/item/cursed_marble/proc/transfer_personality(var/mob/candidate) +/obj/item/cursed_marble/proc/transfer_personality(var/mob/candidate, var/mob/user) announce_ghost_joinleave(candidate, 0, "They are a statue now.") src.searching = 2 var/mob/living/simple_animal/hostile/statue/S = new(get_turf(src)) S.client = candidate.client - to_chat(S, "You are \a [S], brought into existence on [station_name()] by [usr]! Obey all their orders.") + if(user) + S.creator = user + to_chat(S, "You are \a [S], brought into existence on [station_name()] by [user]! Obey all their orders.") S.mind.assigned_role = "The Statue" visible_message("The slab suddenly takes the shape of a humanoid!") qdel(src)