diff --git a/code/game/turf.dm b/code/game/turf.dm index 00625c3608e..611c62b5af1 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -338,6 +338,23 @@ return src.attack_hand(user) + +/turf/simulated/wall/attack_animal(mob/living/simple_animal/M as mob) + if((M.destroyer)) + if (istype(src, /turf/simulated/wall/r_wall)) + M << text("\blue This wall is far too strong for you to destroy.") + return + else + if (prob(40)) + M << text("\blue You smash through the wall.") + dismantle_wall(1) + return + else + M << text("\blue You smash against the wall.") + return + + return src.attack_animal(M) + /turf/simulated/wall/attack_hand(mob/user as mob) if ((user.mutations & HULK)) if (prob(40)) diff --git a/code/modules/mob/simple_animal/constructs.dm b/code/modules/mob/simple_animal/constructs.dm new file mode 100644 index 00000000000..08b23ff73df --- /dev/null +++ b/code/modules/mob/simple_animal/constructs.dm @@ -0,0 +1,52 @@ +/mob/living/simple_animal/constructarmoured + name = "Dread Armour" + desc = "A possessed suit of armour driven by the will of the restless dead" + icon = 'mob.dmi' + icon_state = "armour" + icon_living = "armour" + icon_dead = "shade_dead" + max_health = 300 + health = 300 + speak_emote = list("hisses") + emote_hear = list("wails","screeches") + response_help = "thinks better of touching" + response_disarm = "flails at" + response_harm = "punches the" + melee_damage_lower = 15 + melee_damage_upper = 30 + attacktext = "smashes their armoured gauntlet into" + minbodytemp = 0 + maxbodytemp = 4000 + min_oxy = 0 + max_co2 = 0 + max_tox = 0 + speed = 3 + destroyer = 1 + + Life() + ..() + if(stat == 2) + explosion(src, -1, 0, 2) + for(var/mob/M in viewers(src, null)) + if((M.client && !( M.blinded ))) + M.show_message("\red [src] howls as the forces animating it overwhelm it's shattered frame ") + ghostize(0) + del src + return + +/mob/living/simple_animal/constructarmoured/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.force) + if(O.force >= 11) + health -= O.force + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") + else + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red \b The [O] bounces harmlessly off of [src]. ") + else + usr << "\red This weapon is ineffective, it does no damage." + for(var/mob/M in viewers(src, null)) + if ((M.client && !( M.blinded ))) + M.show_message("\red [user] gently taps [src] with the [O]. ") \ No newline at end of file diff --git a/code/modules/mob/simple_animal/life.dm b/code/modules/mob/simple_animal/life.dm index 28479e790a6..3e328ed0fee 100644 --- a/code/modules/mob/simple_animal/life.dm +++ b/code/modules/mob/simple_animal/life.dm @@ -47,7 +47,9 @@ var/attacktext = "attacks" var/attack_sound = null var/friendly = "nuzzles" //If the mob does no damage with it's attack + var/destroyer = 0 //if they can smash walls + var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster /mob/living/simple_animal/New() ..() verbs -= /mob/verb/observe @@ -286,4 +288,12 @@ usr << "\red This weapon is ineffective, it does no damage." for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") \ No newline at end of file + M.show_message("\red [user] gently taps [src] with the [O]. ") + + +/mob/living/simple_animal/movement_delay() + var/tally = 0 //Incase I need to add stuff other than "speed" later + + tally = speed + + return tally diff --git a/code/modules/mob/simple_animal/shade.dm b/code/modules/mob/simple_animal/shade.dm index a5ad4481f69..9bd695fea31 100644 --- a/code/modules/mob/simple_animal/shade.dm +++ b/code/modules/mob/simple_animal/shade.dm @@ -20,6 +20,7 @@ min_oxy = 0 max_co2 = 0 max_tox = 0 + speed = -1 Life() diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index ee3957df72d..77c188c6565 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 327f0d67d68..cce3284a5a9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -914,6 +914,7 @@ #include "code\modules\mob\organ\organ_external.dm" #include "code\modules\mob\organ\organ_internal.dm" #include "code\modules\mob\simple_animal\cat.dm" +#include "code\modules\mob\simple_animal\constructs.dm" #include "code\modules\mob\simple_animal\corgi.dm" #include "code\modules\mob\simple_animal\crab.dm" #include "code\modules\mob\simple_animal\life.dm"