diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 38c7df68aa3..6a981464bd5 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -16,6 +16,7 @@ for (var/mob/M in viewers(T)) M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2) qdel(src.cable) + cable = null /mob/living/silicon/pai/updatehealth() if(status_flags & GODMODE) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index d00e209d2fb..2fd2ddcab61 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -6,7 +6,7 @@ robot_talk_understand = 0 emote_type = 2 // pAIs emotes are heard, not seen, so they can be seen through a container (eg. person) small = 1 - pass_flags = 1 + pass_flags = PASSTABLE density = 0 holder_type = /obj/item/weapon/holder/pai var/network = "SS13" @@ -512,6 +512,10 @@ src << "You are far too small to pull anything!" return +/mob/living/silicon/pai/update_canmove() + . = ..() + density = 0 //this is reset every canmove update otherwise + /mob/living/silicon/pai/examine(mob/user) ..(user) diff --git a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm index eba943b5b66..83b74b11e9e 100644 --- a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm +++ b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm @@ -70,6 +70,8 @@ ventcrawler = 2 ranged = 1 ranged_cooldown_cap = 2 + universal_speak = 0 + universal_understand = 0 projectilesound = 'sound/weapons/taser2.ogg' AIStatus = AI_OFF var/resources = 0 //Resource points, generated by consuming metal/glass diff --git a/code/modules/mob/living/simple_animal/revenant/revenant.dm b/code/modules/mob/living/simple_animal/revenant/revenant.dm index a62839665d7..6ba32e69f5c 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant.dm @@ -35,6 +35,8 @@ var/essence_min = 1 //The minimum amount of essence a revenant can have; by default, it never drops below one var/essence_accumulated = 0 //How much essence the revenant has stolen var/revealed = 0 //If the revenant can take damage from normal sources. + var/unreveal_time = 0 //How long the revenant is revealed for, is about 2 seconds times this var. + var/unstun_time = 0 //How long the revenant is stunned for, is about 2 seconds times this var. var/inhibited = 0 //If the revenant's abilities are blocked by a chaplain's power. var/essence_drained = 0 //How much essence the revenant has drained. var/draining = 0 //If the revenant is draining someone. @@ -49,8 +51,18 @@ if(essence > essence_regen_cap) essence = essence_regen_cap maxHealth = essence * 3 + if(unreveal_time && world.time >= unreveal_time) + unreveal_time = 0 + revealed = 0 + invisibility = INVISIBILITY_OBSERVER + src << "You are once more concealed." + if(unstun_time && world.time >= unstun_time) + unstun_time = 0 + notransform = 0 + src << "You can move again!" if(!revealed) health = maxHealth //Heals to full when not revealed + update_spooky_icon() /mob/living/simple_animal/revenant/ex_act(severity) return 1 //Immune to the effects of explosions. @@ -263,11 +275,12 @@ return revealed = 1 invisibility = 0 - src << "You have been revealed." - spawn(time) - revealed = 0 - invisibility = INVISIBILITY_OBSERVER - src << "You are once more concealed." + if(!unreveal_time) + src << "You have been revealed!" + unreveal_time = world.time + time + else + src << "You have been revealed!" + unreveal_time = unreveal_time + time /mob/living/simple_animal/revenant/proc/stun(time) if(!src) @@ -275,10 +288,25 @@ if(time <= 0) return notransform = 1 - src << "You cannot move!" - spawn(time) - notransform = 0 - src << "You can move again!" + if(!unstun_time) + src << "You cannot move!" + unstun_time = world.time + time + else + src << "You cannot move!" + unstun_time = unstun_time + time + update_spooky_icon() + +/mob/living/simple_animal/revenant/proc/update_spooky_icon() + if(unreveal_time) + if(draining) + icon_state = "revenant_draining" + return + if(unstun_time) + icon_state = "revenant_stun" + return + icon_state = "revenant_revealed" + return + icon_state = "revenant_idle" /datum/objective/revenant var/targetAmount = 100 diff --git a/code/stylesheet.dm b/code/stylesheet.dm index a6ee7073d4e..dbfc30ca3b5 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -103,6 +103,9 @@ h1.alert, h2.alert {color: #000000;} .greentext {color: #00FF00; font-size: 3;} .redtext {color: #FF0000; font-size: 3;} +.revennotice {color: #1d2953;} +.revenboldnotice {color: #1d2953; font-weight: bold;} + .memo {color: #638500; text-align: center;} .memoedit {text-align: center; font-size: 2;} diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 5112dc2543f..ba76739718d 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 0aab96a6719..2e3d39e8f9f 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ