Kinetic gun can now break through mining tiles due to the goliath being able to possibly trap you in an unwinnable situation otherwise

More mob behavior vars in hostile animal, added Passtable to hivelord and brood and removed their environment smash

Conflicts:
	code/modules/mob/living/simple_animal/hostile/hostile.dm
This commit is contained in:
Ergovisavi
2014-01-23 10:22:07 -05:00
committed by ZomgPonies
parent 5dc5c451a5
commit 89c23fc494
3 changed files with 28 additions and 17 deletions
@@ -23,7 +23,10 @@
var/minimum_distance = 1 //Minimum approach distance, so ranged mobs chase targets down, but still keep their distance set in tiles to the target, set higher to make mobs keep distance
var/search_objects = 0 //If we want to consider objects when searching around, set this to 1. If you want to search for objects while also ignoring mobs until hurt, set it to 2. To completely ignore mobs, even when attacked, set it to 3
var/list/wanted_objects = list() //A list of objects that will be checked against to attack, should we have search_objects enabled
var/execute = 0 //Mobs with execute set to 1 will attempt to attack things that are unconscious, Mobs with execute set to 2 will attempt to attack the dead.
var/stat_attack = 0 //Mobs with stat_attack to 1 will attempt to attack things that are unconscious, Mobs with stat_attack set to 2 will attempt to attack the dead.
var/stat_exclusive = 0 //Mobs with this set to 1 will exclusively attack things defined by stat_attack, stat_attack 2 means they will only attack corpses
var/environment_smash = 1 //Mobs with this set to 1 will attempt to break things in the environment to pursue targets, on by default for original simple mobs
var/attack_faction = null //Put a faction string here to have a mob only ever attack a specific faction
/mob/living/simple_animal/hostile/Life()
@@ -109,9 +112,9 @@
return 1
if(isliving(the_target) && search_objects < 2)
var/mob/living/L = the_target
if(L.stat > execute)
if(L.stat > stat_attack || L.stat != stat_attack && stat_exclusive == 1)
return 0
if(L.faction == src.faction && !attack_same || L.faction != src.faction && attack_same == 2)
if(L.faction == src.faction && !attack_same || L.faction != src.faction && attack_same == 2 || L.faction != attack_faction && attack_faction)
return 0
if(L in friends)
return 0
@@ -257,11 +260,13 @@
return
/mob/living/simple_animal/hostile/proc/DestroySurroundings()
var/list/directions = cardinal.Copy()
for(var/dir in directions)
var/turf/T = get_step(src, dir)
if(istype(T, /turf/simulated/wall) && wall_smash)
T.attack_animal(src)
for(var/atom/A in T)
if(istype(A, /obj/structure/window) || istype(A, /obj/structure/closet) || istype(A, /obj/structure/table) || istype(A, /obj/structure/grille) || istype(A, /obj/structure/rack))
A.attack_animal(src)
if(environment_smash)
var/list/directions = cardinal.Copy()
for(var/dir in directions)
var/turf/T = get_step(src, dir)
if(istype(T, /turf/simulated/wall) && wall_smash)
T.attack_animal(src)
for(var/atom/A in T)
if(istype(A, /obj/structure/window) || istype(A, /obj/structure/closet) || istype(A, /obj/structure/table) || istype(A, /obj/structure/grille) || istype(A, /obj/structure/rack))
A.attack_animal(src)
else return
@@ -32,6 +32,7 @@
/mob/living/simple_animal/hostile/asteroid/bullet_act(var/obj/item/projectile/P)//Limits the weapons available to kill them at range
if(P.damage < 30)
visible_message("<span class='danger'>The [P.name] had no effect on [src.name]!</span>")
Aggro()
return
..()
@@ -67,10 +68,9 @@
harm_intent_damage = 5
melee_damage_lower = 15
melee_damage_upper = 15
attacktext = "bites into "
attacktext = "bites into"
a_intent = "harm"
attack_sound = 'sound/weapons/bladeslice.ogg'
ranged_cooldown_cap = 4
/obj/item/projectile/temp/basilisk
@@ -176,12 +176,13 @@
melee_damage_lower = 2
melee_damage_upper = 2
attacktext = "lashes out at"
throw_message = "falls right through the strange body of the "
throw_message = "falls right through the strange body of the"
ranged_cooldown = 0
ranged_cooldown_cap = 0
environment_smash = 0
retreat_distance = 5
minimum_distance = 5
pass_flags = PASSTABLE
/mob/living/simple_animal/hostile/asteroid/Hivelord/OpenFire(var/the_target)
var/mob/living/simple_animal/hostile/asteroid/Hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/Hivelordbrood(src.loc)
@@ -212,7 +213,9 @@
melee_damage_lower = 2
melee_damage_upper = 2
attacktext = "slashes"
throw_message = "falls right through the strange body of the "
throw_message = "falls right through the strange body of the"
environment_smash = 0
pass_flags = PASSTABLE
/mob/living/simple_animal/hostile/asteroid/Hivelordbrood/New()
..()
@@ -244,7 +247,7 @@
melee_damage_lower = 25
melee_damage_upper = 25
attacktext = "pulverizes"
throw_message = "does nothing to the rocky hide of the "
throw_message = "does nothing to the rocky hide of the"
/mob/living/simple_animal/hostile/asteroid/Goliath/OpenFire()
visible_message("<span class='warning'>The [src.name] digs its tentacles under [target.name]!</span>")
@@ -180,6 +180,9 @@ obj/item/projectile/kinetic/New()
/obj/item/projectile/kinetic/on_hit(var/atom/target)
var/turf/target_turf= get_turf(target)
if(istype(target_turf, /turf/simulated/mineral))
var/turf/simulated/mineral/M = target_turf
M.gets_drilled()
new /obj/item/effect/kinetic_blast(target_turf)
..()