mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +01:00
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:
@@ -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)
|
||||
..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user