diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 1d6c6772a30..5caf9f7fe0f 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -4,9 +4,9 @@ name = "statue" // matches the name of the statue with the flesh-to-stone spell desc = "An incredibly lifelike marble carving. Its eyes seems to follow you.." // same as an ordinary statue with the added "eye following you" description icon = 'icons/obj/statue.dmi' - icon_state = "human_male" - icon_living = "human_male" - icon_dead = "human_male" + icon_state = "angelseen" + icon_living = "angelseen" + icon_dead = "angelseen" gender = NEUTER a_intent = "harm" @@ -64,9 +64,11 @@ /mob/living/simple_animal/hostile/statue/Move(var/turf/NewLoc) if(can_be_seen(NewLoc)) + icon_state = "angelseen" if(client) src << "You cannot move, there are eyes on you!" return 0 + icon_state = "angel" return ..() /mob/living/simple_animal/hostile/statue/Life() @@ -82,6 +84,7 @@ /mob/living/simple_animal/hostile/statue/AttackingTarget() if(!can_be_seen()) + icon_state = "angelattack" ..() /mob/living/simple_animal/hostile/statue/DestroySurroundings() @@ -94,9 +97,11 @@ /mob/living/simple_animal/hostile/statue/UnarmedAttack() if(can_be_seen()) + icon_state = "angelseen" if(client) src << "You cannot attack, there are eyes on you!" return + icon_state = "angelattack" ..() /mob/living/simple_animal/hostile/statue/proc/can_be_seen(var/turf/destination) @@ -118,10 +123,35 @@ for(var/atom/check in check_list) for(var/mob/living/M in viewers(world.view + 1, check) - src) if(M.client && CanAttack(M)) - if(!M.blinded && !(sdisabilities & BLIND)) + if(M.blinded || (sdisabilities & BLIND)) + return null + var/xdif = M.x - src.x + var/ydif = M.y - src.y + if(abs(xdif) < abs(ydif)) + //mob is either above or below src + if(ydif < 0 && M.dir == NORTH) + //mob is below src and looking up + return M + else if(ydif > 0 && M.dir == SOUTH) + //mob is above src and looking down + return M + else if(abs(xdif) > abs(ydif)) + //mob is either left or right of src + if(xdif < 0 && M.dir == EAST) + //mob is to the left of src and looking right + return M + else if(xdif > 0 && M.dir == WEST) + //mob is to the right of src and looking left + return M + else if (xdif == 0 && ydif == 0) + //mob is on the same tile as src return M return null + + + + // Cannot talk /mob/living/simple_animal/hostile/statue/say() @@ -182,6 +212,8 @@ var/turf/T = get_turf(L.loc) if(T && T in targets) L.eye_blind = max(L.eye_blind, 4) + if(issilicon(L)) + L.Weaken(4) return //Toggle Night Vision diff --git a/data/investigate/singulo.html b/data/investigate/singulo.html new file mode 100644 index 00000000000..c4bad095385 --- /dev/null +++ b/data/investigate/singulo.html @@ -0,0 +1,2 @@ +18:14 [0x200378c] (0,0,0) || Emitter deleted at (0,0,0)
+18:14 [0x200378b] (0,0,0) || Emitter deleted at (0,0,0)
diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index 46dec2a0033..9474155ee73 100644 Binary files a/icons/obj/statue.dmi and b/icons/obj/statue.dmi differ