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)