diff --git a/code/defines/mob/simple_animal/crab.dm b/code/defines/mob/simple_animal/crab.dm index c2b7e0ed9c4..1091147e812 100644 --- a/code/defines/mob/simple_animal/crab.dm +++ b/code/defines/mob/simple_animal/crab.dm @@ -15,6 +15,7 @@ response_disarm = "gently pushes aside the" response_harm = "stomps the" stop_automated_movement = 1 + friendly = "pinches" /mob/living/simple_animal/crab/Life() ..() diff --git a/code/defines/mob/simple_animal/life.dm b/code/defines/mob/simple_animal/life.dm index 8d0c102e980..86eb449cf23 100644 --- a/code/defines/mob/simple_animal/life.dm +++ b/code/defines/mob/simple_animal/life.dm @@ -38,7 +38,15 @@ var/max_co2 = 5 var/min_n2 = 0 var/max_n2 = 0 - var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above. + var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above + + + //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly + var/melee_damage_lower = 0 + var/melee_damage_upper = 0 + var/attacktext = "attacks" + var/attack_sound = null + var/friendly = "nuzzles" //If the mob does no damage with it's attack /mob/living/simple_animal/New() ..() diff --git a/code/defines/mob/simple_animal/shade.dm b/code/defines/mob/simple_animal/shade.dm new file mode 100644 index 00000000000..7dfc7ff338e --- /dev/null +++ b/code/defines/mob/simple_animal/shade.dm @@ -0,0 +1,22 @@ +/mob/living/simple_animal/shade + name = "Shade" + desc = "A bound spirit" + icon = 'mob.dmi' + icon_state = "shade" + icon_living = "shade" + icon_dead = "shade_dead" + max_health = 50 + health = 50 + speak_emote = list("wails", "screeches") + emote_hear = list("wails","screeches") + response_help = "puts their hand through" + response_disarm = "flails at" + response_harm = "punches the" + melee_damage_lower = 5 + melee_damage_upper = 15 + attacktext = "drains the life from" + minbodytemp = 0 + maxbodytemp = 4000 + min_oxy = 0 + max_co2 = 0 + max_tox = 0 \ No newline at end of file diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index be030136680..78ba1fc7f02 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -39,8 +39,6 @@ /atom/proc/attack_metroid(mob/user as mob) return - - /atom/proc/hand_h(mob/user as mob) //human (hand) - restrained return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index df6ece16303..1d2ae102207 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1106,6 +1106,19 @@ +/mob/living/carbon/human/attack_animal(mob/living/simple_animal/M as mob) + if(M.melee_damage_upper == 0) + M.emote("[M.friendly] [src]") + else + for(var/mob/O in viewers(src, null)) + O.show_message("\red [M] [M.attacktext] [src]!", 1) + var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") + var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) + var/armor = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor) + if(armor >= 2) return + /mob/living/carbon/human/attack_metroid(mob/living/carbon/metroid/M as mob) if(M.Victim) return // can't attack while eating! diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 24f8f5276cf..0d019783cd4 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 60c7caede2e..c0497510164 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -288,6 +288,7 @@ #include "code\defines\mob\simple_animal\corgi.dm" #include "code\defines\mob\simple_animal\crab.dm" #include "code\defines\mob\simple_animal\life.dm" +#include "code\defines\mob\simple_animal\shade.dm" #include "code\defines\obj\closet.dm" #include "code\defines\obj\clothing.dm" #include "code\defines\obj\computer.dm"