diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm index 9e025fffa3c..6c707d022de 100644 --- a/code/datums/spells/wizard.dm +++ b/code/datums/spells/wizard.dm @@ -40,7 +40,7 @@ range = -1 include_user = 1 - mutations = 136 + mutations = LASER | HULK duration = 300 /obj/proc_holder/spell/targeted/inflict_handler/disintegrate diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm index f82b12f837f..e7a107ec078 100644 --- a/code/game/magic/cultist/ritual.dm +++ b/code/game/magic/cultist/ritual.dm @@ -92,6 +92,14 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", // self other technology - Communication rune //was other hear blood // join hide technology - stun rune. Rune color: bright pink. + New() + ..() + for(var/mob/living/silicon/ai/AI in world) + if(AI.client) + var/image/blood = image('blood.dmi', loc = src, icon_state = "floor[rand(1,7)]") + blood.override = 1 + AI.client.images += blood + examine() if(!iscultist(usr)) usr << "A strange collection of symbols drawn in blood." diff --git a/code/game/objects/alien/defines.dm b/code/game/objects/alien/defines.dm index c1740a95c82..eb51694160d 100644 --- a/code/game/objects/alien/defines.dm +++ b/code/game/objects/alien/defines.dm @@ -31,7 +31,19 @@ opacity = 1 anchored = 1 var/health = 50 - var/mob/living/affecting = null + //var/mob/living/affecting = null + + wall + name = "resin wall" + desc = "Purple slime solidified into a wall." + icon_state = "resinwall" //same as resin, but consistency ho! + + membrane + name = "resin membrane" + desc = "Purple slime just thin enough to let light pass through." + icon_state = "resinmembrane" + opacity = 0 + health = 20 /obj/alien/weeds name = "weeds" diff --git a/code/game/objects/alien/resin.dm b/code/game/objects/alien/resin.dm index 84d74bc524b..34e79019bd3 100644 --- a/code/game/objects/alien/resin.dm +++ b/code/game/objects/alien/resin.dm @@ -3,7 +3,7 @@ /obj/alien/resin/proc/healthcheck() if(health <=0) density = 0 - if(affecting) + /* if(affecting) var/mob/living/carbon/M = affecting contents.Remove(affecting) if(ishuman(M)) @@ -13,7 +13,7 @@ M.loc = loc M.paralysis += 10 for(var/mob/O in viewers(src, 3)) - O.show_message(text("A body appeared from the dead resin!"), 1, text("You hear faint moaning somewhere about you."), 2) + O.show_message(text("A body appeared from the dead resin!"), 1, text("You hear faint moaning somewhere about you."), 2)*/ del(src) return @@ -64,10 +64,10 @@ /obj/alien/resin/attack_hand() if ((usr.mutations & HULK)) - usr << text("\blue You easily destroy the resin wall.") + usr << text("\blue You easily destroy the [name].") for(var/mob/O in oviewers(src)) - O.show_message(text("\red [] destroys the resin wall!", usr), 1) - health-=50 + O.show_message(text("\red [] destroys the [name]!", usr), 1) + health = 0 healthcheck() return @@ -77,20 +77,20 @@ /obj/alien/resin/attack_alien() if (islarva(usr))//Safety check for larva. /N return - usr << text("\green You claw at the resin wall.") + usr << text("\green You claw at the [name].") for(var/mob/O in oviewers(src)) O.show_message(text("\red [] claws at the resin!", usr), 1) playsound(loc, 'attackblob.ogg', 100, 1) health -= rand(10, 20) if(health <= 0) - usr << text("\green You slice the resin wall to pieces.") + usr << text("\green You slice the [name] to pieces.") for(var/mob/O in oviewers(src)) - O.show_message(text("\red [] slices the resin wall apart!", usr), 1) + O.show_message(text("\red [] slices the [name] apart!", usr), 1) healthcheck() return /obj/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) + /*if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) var/obj/item/weapon/grab/G = W if(isalien(user)&&(ishuman(G.affecting)||ismonkey(G.affecting))) //Only aliens can stick humans and monkeys into resin walls. Also, the wall must not have a person inside already. @@ -109,7 +109,7 @@ process() else user << "\red This wall is already occupied." - return + return */ var/aforce = W.force health = max(0, health - aforce) @@ -118,8 +118,8 @@ ..() return -/obj/alien/resin/process() - if(affecting) +/obj/alien/resin/process() //Buggy and irrelevant now that you're able to just make nice little infection chambers - Urist + /*if(affecting) var/mob/living/carbon/M = affecting var/check = 0 if(ishuman(affecting))//So they do not suicide and kill the babby. @@ -156,7 +156,7 @@ O.show_message(text("A body appeared from the dead resin!"), 1, text("You hear faint moaning somewhere about you."), 2) else for(var/mob/O in viewers(src, 3)) - O.show_message(text("\red An alien larva bursts from the resin wall!"), 1, text("\red You hear a high, alien screech nearby!"), 2) + O.show_message(text("\red An alien larva bursts from the resin wall!"), 1, text("\red You hear a high, alien screech nearby!"), 2)*/ return /obj/alien/resin/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 61dca577e0f..b8f345036e0 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -35,14 +35,19 @@ return /mob/living/carbon/alien/humanoid/drone/verb/resinwall() // -- TLE - set name = "Shape Resin Wall (100)" + set name = "Shape Resin (100)" set desc = "Produce a wall of resin that blocks entry and line of sight" set category = "Alien" if(powerc(100)) toxloss -= 100 - src << "\green You begin to shape a wall of resin." + var/choice = input("Choose what you wish to shape.","Resin building") as anything in list("resin wall","resin membrane") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist + src << "\green You shape a [choice]." for(var/mob/O in viewers(src, null)) O.show_message(text("\red [src] vomits up a thick purple substance and begins to shape it!"), 1) - new /obj/alien/resin(loc) + switch(choice) + if("resin wall") + new /obj/alien/resin/wall(loc) + if("resin membrane") + new /obj/alien/resin/membrane(loc) return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 81e661f9221..e6ca03c9a21 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -62,6 +62,13 @@ if(src.mind) ticker.mode.remove_revolutionary(src.mind) + + if(client) + for(var/obj/rune/rune in world) + var/image/blood = image('blood.dmi', loc = rune, icon_state = "floor[rand(1,7)]") + blood.override = 1 + client.images += blood + return diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 2ef64ff9d40..e6f532a61a1 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -45,4 +45,9 @@ if(ticker.mode.name == "cult") if (src.mind in ticker.mode:cult) ticker.mode:update_cult_icons_added(src.mind) + if(isAI(src)) + for(var/obj/rune/rune in world) + var/image/blood = image('blood.dmi', loc = rune, icon_state = "floor[rand(1,7)]") + blood.override = 1 + client.images += blood ..() diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index 13dbf1f7724..46f6feca1e4 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ