Simple mobs can now attack humans (and you are able to set the attack messages and min/max damage of the attack with vars)

Simple mobs who attempt to attack and have a max damage of 0 (which is the default) will emote a friendly gesture towards the target, the default being "nuzzles" though also editable via vars.

Added the Shade simple mob (and some temporary sprites) which is the first simple mob capable of attacking. It was mostly for test purposes, but will probably end up becoming a feature of soul stones later on.

Note: Simple animals still cannot interact with other simple animals, critters, mechs, cyborgs, aliens, monkeys etc etc, only humans at this point.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2808 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
kortgstation@gmail.com
2011-12-25 08:43:02 +00:00
parent e7c27d1299
commit 2f2642130d
7 changed files with 46 additions and 3 deletions
+1
View File
@@ -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()
..()
+9 -1
View File
@@ -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()
..()
+22
View File
@@ -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
-2
View File
@@ -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
@@ -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 <B>[M]</B> [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!
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 124 KiB

+1
View File
@@ -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"