Merge branch 'master' into upstream-merge-27773
This commit is contained in:
@@ -10,45 +10,58 @@
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatesoldier
|
||||
name = "Syndicate Operative"
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
outfit = /datum/outfit/syndicatesoldiercorpse
|
||||
|
||||
/datum/outfit/syndicatesoldiercorpse
|
||||
name = "Syndicate Operative Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas
|
||||
helmet = /obj/item/clothing/head/helmet/swat
|
||||
head = /obj/item/clothing/head/helmet/swat
|
||||
back = /obj/item/weapon/storage/backpack
|
||||
has_id = 1
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
id = /obj/item/weapon/card/id
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatecommando
|
||||
name = "Syndicate Commando"
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
outfit = /datum/outfit/syndicatecommandocorpse
|
||||
|
||||
/datum/outfit/syndicatecommandocorpse
|
||||
name = "Syndicate Commando Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen
|
||||
pocket1 = /obj/item/weapon/tank/internals/emergency_oxygen
|
||||
has_id = 1
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
r_pocket = /obj/item/weapon/tank/internals/emergency_oxygen
|
||||
id = /obj/item/weapon/card/id
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/syndicatestormtrooper
|
||||
name = "Syndicate Stormtrooper"
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
outfit = /datum/outfit/syndicatestormtroopercorpse
|
||||
|
||||
/datum/outfit/syndicatestormtroopercorpse
|
||||
name = "Syndicate Stormtrooper Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/syndi/elite
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas/syndicate
|
||||
back = /obj/item/weapon/tank/jetpack/oxygen/harness
|
||||
has_id = 1
|
||||
id_job = "Operative"
|
||||
id_access_list = list(GLOB.access_syndicate)
|
||||
|
||||
id = /obj/item/weapon/card/id
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/clown/corpse
|
||||
@@ -58,62 +71,97 @@
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/pirate
|
||||
name = "Pirate"
|
||||
outfit = /datum/outfit/piratecorpse
|
||||
|
||||
/datum/outfit/piratecorpse
|
||||
name = "Pirate Corpse"
|
||||
uniform = /obj/item/clothing/under/pirate
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
helmet = /obj/item/clothing/head/bandana
|
||||
|
||||
head = /obj/item/clothing/head/bandana
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/pirate/ranged
|
||||
name = "Pirate Gunner"
|
||||
outfit = /datum/outfit/piratecorpse/ranged
|
||||
|
||||
/datum/outfit/piratecorpse/ranged
|
||||
name = "Pirate Gunner Corpse"
|
||||
suit = /obj/item/clothing/suit/pirate
|
||||
helmet = /obj/item/clothing/head/pirate
|
||||
head = /obj/item/clothing/head/pirate
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/russian
|
||||
name = "Russian"
|
||||
outfit = /datum/outfit/russiancorpse
|
||||
|
||||
/datum/outfit/russiancorpse
|
||||
name = "Russian Corpse"
|
||||
uniform = /obj/item/clothing/under/soviet
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
helmet = /obj/item/clothing/head/bearpelt
|
||||
head = /obj/item/clothing/head/bearpelt
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/russian/ranged
|
||||
helmet = /obj/item/clothing/head/ushanka
|
||||
outfit = /datum/outfit/russiancorpse/ranged
|
||||
|
||||
/datum/outfit/russiancorpse/ranged
|
||||
name = "Ranged Russian Corpse"
|
||||
head = /obj/item/clothing/head/ushanka
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/russian/ranged/trooper
|
||||
outfit = /datum/outfit/russiancorpse/ranged/trooper
|
||||
|
||||
/datum/outfit/russiancorpse/ranged/trooper
|
||||
name = "Ranged Russian Trooper Corpse"
|
||||
uniform = /obj/item/clothing/under/syndicate/camo
|
||||
suit = /obj/item/clothing/suit/armor/bulletproof
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
mask = /obj/item/clothing/mask/balaclava
|
||||
helmet = /obj/item/clothing/head/helmet/alt
|
||||
head = /obj/item/clothing/head/helmet/alt
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/russian/ranged/officer
|
||||
name = "Russian Officer"
|
||||
outfit = /datum/outfit/russiancorpse/officer
|
||||
|
||||
/datum/outfit/russiancorpse/officer
|
||||
name = "Russian Officer Corpse"
|
||||
uniform = /obj/item/clothing/under/rank/security/navyblue/russian
|
||||
suit = /obj/item/clothing/suit/security/officer/russian
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
radio = /obj/item/device/radio/headset
|
||||
helmet = /obj/item/clothing/head/ushanka
|
||||
ears = /obj/item/device/radio/headset
|
||||
head = /obj/item/clothing/head/ushanka
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/wizard
|
||||
name = "Space Wizard"
|
||||
name = "Space Wizard Corpse"
|
||||
outfit = /datum/outfit/wizardcorpse
|
||||
|
||||
/datum/outfit/wizardcorpse
|
||||
name = "Space Wizard Corpse"
|
||||
uniform = /obj/item/clothing/under/color/lightpurple
|
||||
suit = /obj/item/clothing/suit/wizrobe
|
||||
shoes = /obj/item/clothing/shoes/sandal/magic
|
||||
helmet = /obj/item/clothing/head/wizard
|
||||
head = /obj/item/clothing/head/wizard
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier
|
||||
name = "Nanotrasen Private Security Officer"
|
||||
id_job = "Private Security Force"
|
||||
id_access = "Security Officer"
|
||||
outfit = /datum/outfit/nanotrasensoldiercorpse2
|
||||
|
||||
/datum/outfit/nanotrasensoldiercorpse2
|
||||
name = "NT Private Security Officer Corpse"
|
||||
uniform = /obj/item/clothing/under/rank/security
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
radio = /obj/item/device/radio/headset
|
||||
ears = /obj/item/device/radio/headset
|
||||
mask = /obj/item/clothing/mask/gas/sechailer/swat
|
||||
helmet = /obj/item/clothing/head/helmet/swat/nanotrasen
|
||||
head = /obj/item/clothing/head/helmet/swat/nanotrasen
|
||||
back = /obj/item/weapon/storage/backpack/security
|
||||
has_id = 1
|
||||
id_job = "Private Security Force"
|
||||
id_access = "Security Officer"
|
||||
id = /obj/item/weapon/card/id
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
gold_core_spawnable = 2
|
||||
|
||||
/mob/living/simple_animal/pet/dog/Initialize()
|
||||
. = ..()
|
||||
var/dog_area = get_area(src)
|
||||
for(var/obj/structure/bed/dogbed/D in dog_area)
|
||||
if(!D.owner)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget()
|
||||
. = ..()
|
||||
if(. && ishuman(target) && target != summoner)
|
||||
new /obj/effect/hallucination/delusion(target.loc,target,force_kind="custom",duration=200,skip_nearby=0, custom_icon = src.icon_state, custom_icon_file = src.icon)
|
||||
new /obj/effect/hallucination/delusion(target.loc,target,"custom",200,0, icon_state,icon)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj)
|
||||
..()
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
//Will probably eventually be expanded to fit multiple types of Flan because I am a nerd.
|
||||
|
||||
/mob/living/simple_animal/hostile/flan
|
||||
name = "Flan"
|
||||
desc = "Definitely not a dessert."
|
||||
var/casting = 0
|
||||
icon_state = "flan" //Required for the inheritance of casting animations.
|
||||
icon_living = "flan"
|
||||
icon_dead = "flan_dead"
|
||||
turns_per_move = 5
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
speed = -2
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
harm_intent_damage = 5
|
||||
damage_coeff = list(BRUTE = 0.75, BURN = 1.5, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0)
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
attacktext = "headbutts"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
a_intent = INTENT_HARM
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 0
|
||||
ranged = 1
|
||||
retreat_distance = 2
|
||||
minimum_distance = 4
|
||||
AIStatus = AI_IDLE
|
||||
ranged_message = "begins to cast something"
|
||||
ranged_cooldown_time = 15
|
||||
var/spellname = "a generic spell!"
|
||||
var/spellsound = 'sound/effects/spray3.ogg'
|
||||
var/spellanimation = ATTACK_EFFECT_SMASH //More in defines/misc.dm
|
||||
var/spelldamagetype = BRUTE
|
||||
var/spelldamage = 15
|
||||
var/spellcasttime = 15 //if you varedit this also varedit ranged_cooldown_time else the mob will attack again before the spell hits, looking weird but still working
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/Initialize() //Required for the inheritance of casting animations.
|
||||
..()
|
||||
casting = 0
|
||||
icon_state = "[initial(icon_state)][casting]"
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/proc/spellaftereffects(mob/living/A) //Inherit and override. Allows for spells that stun and do basically anything you'd want.
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/OpenFire(mob/living/A) //Spellcasting!
|
||||
if(isliving(A)) //A is originally an atom, this is here to prevent that from fucking this up.
|
||||
visible_message("<span class='danger'><b>[src]</b> [ranged_message] at [A]!</span>")
|
||||
casting = 1
|
||||
icon_state = "[initial(icon_state)][casting]"
|
||||
if(do_after_mob(src, A, spellcasttime, uninterruptible = 1, progress = 0)) //Break LOS to dodge.
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if((A in view(src)))
|
||||
A.do_attack_animation(A, spellanimation)
|
||||
playsound(A, spellsound, 20, 1)
|
||||
A.apply_damage(damage = spelldamage,damagetype = spelldamagetype, def_zone = null, blocked = 0)
|
||||
visible_message("<span class='danger'><b>[A]</b> has been hit by [spellname]</span>")
|
||||
spellaftereffects(A,src)
|
||||
ranged_cooldown = world.time + ranged_cooldown_time
|
||||
casting = 0
|
||||
icon_state = "[initial(icon_state)][casting]"
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/fire
|
||||
name = "Flame Flan"
|
||||
desc = "You'd think they'd be spicy, but nobody has ever tried."
|
||||
icon_state = "fireflan"
|
||||
icon_living = "fireflan"
|
||||
icon_dead = "fireflan_dead"
|
||||
damage_coeff = list(BRUTE = 1.5, BURN = 0.75, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0)
|
||||
spellname = "a Fire spell!"
|
||||
spellsound = 'sound/effects/fuse.ogg'
|
||||
spelldamagetype = BURN
|
||||
spellcasttime = 20
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/fire/spellaftereffects(mob/living/A)
|
||||
A.adjust_fire_stacks(2)
|
||||
A.IgniteMob()
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/water
|
||||
name = "Water Flan"
|
||||
desc = "Is pretty likely to dampen your spirits."
|
||||
icon_state = "flan"
|
||||
icon_living = "flan"
|
||||
icon_dead = "flan_dead"
|
||||
spellname = "a Water spell!"
|
||||
spelldamage = 10 //Basic flan, learn the dance with em.
|
||||
|
||||
/mob/living/simple_animal/hostile/flan/water/spellaftereffects(mob/living/A)
|
||||
A.ExtinguishMob()
|
||||
@@ -44,6 +44,7 @@ Difficulty: Hard
|
||||
ranged = 1
|
||||
pixel_x = -32
|
||||
del_on_death = 1
|
||||
crusher_loot = list(/obj/structure/closet/crate/necropolis/bubblegum/crusher)
|
||||
loot = list(/obj/structure/closet/crate/necropolis/bubblegum)
|
||||
blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME
|
||||
var/charging = FALSE
|
||||
|
||||
@@ -46,7 +46,8 @@ Difficulty: Very Hard
|
||||
del_on_death = 1
|
||||
medal_type = MEDAL_PREFIX
|
||||
score_type = COLOSSUS_SCORE
|
||||
loot = list(/obj/effect/spawner/lootdrop/anomalous_crystal, /obj/item/organ/vocal_cords/colossus)
|
||||
crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher)
|
||||
loot = list(/obj/structure/closet/crate/necropolis/colossus)
|
||||
butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
|
||||
deathmessage = "disintegrates, leaving a glowing core in its wake."
|
||||
death_sound = 'sound/magic/demon_dies.ogg'
|
||||
@@ -444,13 +445,6 @@ Difficulty: Very Hard
|
||||
/obj/machinery/anomalous_crystal/ex_act()
|
||||
ActivationReaction(null, ACTIVATE_BOMB)
|
||||
|
||||
/obj/effect/spawner/lootdrop/anomalous_crystal
|
||||
name = "anomalous crystal spawner"
|
||||
|
||||
/obj/effect/spawner/lootdrop/anomalous_crystal/Initialize()
|
||||
loot = subtypesof(/obj/machinery/anomalous_crystal)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/anomalous_crystal/honk //Strips and equips you as a clown. I apologize for nothing
|
||||
observer_desc = "This crystal strips and equips its targets as clowns."
|
||||
possible_methods = list(ACTIVATE_MOB_BUMP, ACTIVATE_SPEECH)
|
||||
|
||||
@@ -51,6 +51,7 @@ Difficulty: Medium
|
||||
move_to_delay = 10
|
||||
ranged = 1
|
||||
pixel_x = -16
|
||||
crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher)
|
||||
loot = list(/obj/structure/closet/crate/necropolis/dragon)
|
||||
butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30)
|
||||
var/swooping = NONE
|
||||
|
||||
@@ -78,6 +78,9 @@ Difficulty: Hard
|
||||
internal = new/obj/item/device/gps/internal/hierophant(src)
|
||||
spawned_beacon = new(loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/spawn_crusher_loot()
|
||||
new /obj/item/crusher_trophy/vortex_talisman(get_turf(spawned_beacon))
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/hierophant/Life()
|
||||
. = ..()
|
||||
if(. && spawned_beacon && !QDELETED(spawned_beacon) && !client)
|
||||
@@ -461,6 +464,12 @@ Difficulty: Hard
|
||||
return ..()
|
||||
|
||||
/obj/effect/temp_visual/hierophant/wall/CanPass(atom/movable/mover, turf/target, height = 0)
|
||||
if(mover == caster.pulledby)
|
||||
return TRUE
|
||||
if(istype(mover, /obj/item/projectile))
|
||||
var/obj/item/projectile/P = mover
|
||||
if(P.firer == caster)
|
||||
return TRUE
|
||||
if(mover == caster)
|
||||
return TRUE
|
||||
return FALSE
|
||||
@@ -589,6 +598,8 @@ Difficulty: Hard
|
||||
do_damage(get_turf(src))
|
||||
|
||||
/obj/effect/temp_visual/hierophant/blast/proc/do_damage(turf/T)
|
||||
if(!damage)
|
||||
return
|
||||
for(var/mob/living/L in T.contents - hit_things) //find and damage mobs...
|
||||
hit_things += L
|
||||
if((friendly_fire_check && caster && caster.faction_check_mob(L)) || L.stat == DEAD)
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
/obj/structure/barricade,
|
||||
/obj/machinery/field,
|
||||
/obj/machinery/power/emitter)
|
||||
var/list/crusher_loot
|
||||
var/medal_type = MEDAL_PREFIX
|
||||
var/score_type = BOSS_SCORE
|
||||
var/elimination = 0
|
||||
@@ -44,6 +45,10 @@
|
||||
layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise
|
||||
mouse_opacity = 2 // Easier to click on in melee, they're giant targets anyway
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/Initialize(mapload)
|
||||
. = ..()
|
||||
apply_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/Destroy()
|
||||
QDEL_NULL(internal)
|
||||
. = ..()
|
||||
@@ -52,12 +57,19 @@
|
||||
if(health > 0)
|
||||
return
|
||||
else
|
||||
var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
|
||||
if(C && crusher_loot)
|
||||
if(C.total_damage >= maxHealth * 0.60) //if you do at least 60% of its health with the crusher, you'll get the item
|
||||
spawn_crusher_loot()
|
||||
if(!admin_spawned)
|
||||
SSblackbox.set_details("megafauna_kills","[initial(name)]")
|
||||
if(!elimination) //used so the achievment only occurs for the last legion to die.
|
||||
grant_achievement(medal_type,score_type)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/proc/spawn_crusher_loot()
|
||||
loot = crusher_loot
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gib()
|
||||
if(health > 0)
|
||||
return
|
||||
|
||||
@@ -23,3 +23,51 @@
|
||||
environment_smash = ENVIRONMENT_SMASH_NONE
|
||||
del_on_death = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace
|
||||
name = "Nanotrasen Private Security Officer"
|
||||
desc = "An officer part of Nanotrasen's private security force."
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "nanotrasen"
|
||||
icon_living = "nanotrasen"
|
||||
icon_dead = null
|
||||
icon_gib = "syndicate_gib"
|
||||
turns_per_move = 5
|
||||
response_help = "pokes"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "hits"
|
||||
speed = 0
|
||||
stat_attack = 1
|
||||
robust_searching = 1
|
||||
vision_range = 3
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
attacktext = "punches"
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
faction = list("nanotrasenprivate")
|
||||
a_intent = INTENT_HARM
|
||||
loot = list(/obj/effect/mob_spawn/human/corpse/nanotrasensoldier)
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 15
|
||||
status_flags = CANPUSH
|
||||
search_objects = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace/Aggro()
|
||||
..()
|
||||
summon_backup(15)
|
||||
say("411 in progress, requesting backup!")
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/nanotrasenpeace/ranged
|
||||
icon_state = "nanotrasenrangedsmg"
|
||||
icon_living = "nanotrasenrangedsmg"
|
||||
vision_range = 9
|
||||
rapid = 1
|
||||
ranged = 1
|
||||
retreat_distance = 3
|
||||
minimum_distance = 5
|
||||
casingtype = /obj/item/ammo_casing/c46x30mm
|
||||
projectilesound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
loot = list(/obj/item/weapon/gun/ballistic/automatic/wt550,
|
||||
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier)
|
||||
@@ -309,11 +309,11 @@
|
||||
|
||||
if(Target)
|
||||
--target_patience
|
||||
if (target_patience <= 0 || SStun || Discipline || attacked || docile) // Tired of chasing or something draws out attention
|
||||
if (target_patience <= 0 || SStun > world.time || Discipline || attacked || docile) // Tired of chasing or something draws out attention
|
||||
target_patience = 0
|
||||
Target = null
|
||||
|
||||
if(AIproc && SStun)
|
||||
if(AIproc && SStun > world.time)
|
||||
return
|
||||
|
||||
var/hungry = 0 // determines if the slime is hungry
|
||||
|
||||
@@ -394,11 +394,7 @@
|
||||
if(buckled)
|
||||
Feedstop(silent=1) //we unbuckle the slime from the mob it latched onto.
|
||||
|
||||
spawn(0)
|
||||
SStun = 1
|
||||
sleep(rand(20,60))
|
||||
SStun = 0
|
||||
|
||||
SStun = world.time + rand(20,60)
|
||||
spawn(0)
|
||||
canmove = 0
|
||||
if(user)
|
||||
|
||||
Reference in New Issue
Block a user