Ported hivebots over to simple_animal

Ported viscerators over to simple_animal 

Updated spawning grenades to match.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5180 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
Kortgstation@gmail.com
2012-11-24 17:02:12 +00:00
parent 1ba52ad43c
commit 95b109ff62
9 changed files with 116 additions and 295 deletions

View File

@@ -27,21 +27,13 @@
step(x, pick(NORTH,SOUTH,EAST,WEST))
// Spawn some hostile syndicate critters
if(istype(x, /obj/effect/critter))
var/obj/effect/critter/C = x
C.atkcarbon = 1
C.atksilicon = 1
C.atkmech = 0
C.atksynd = 0
C.aggressive = 1
del(src)
return
/obj/item/weapon/grenade/spawnergrenade/manhacks
name = "manhack delivery grenade"
spawner_type = /obj/effect/critter/manhack
spawner_type = /mob/living/simple_animal/hostile/viscerator
deliveryamt = 5
origin_tech = "materials=3;magnets=4;syndicate=4"

View File

@@ -125,35 +125,3 @@
atksilicon = 1
attacktext = "bites"
// We can maybe make these controllable via some console or something
/obj/effect/critter/manhack
name = "viscerator"
desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
icon_state = "viscerator"
pass_flags = PASSTABLE
health = 15
max_health = 15
aggressive = 1
opensdoors = 1
defensive = 1
wanderer = 1
atkcarbon = 1
atksilicon = 1
atkmech = 1
firevuln = 0 // immune to fire
brutevuln = 1
ventcrawl = 1
melee_damage_lower = 10
melee_damage_upper = 15
attacktext = "cuts"
attack_sound = 'sound/weapons/bladeslice.ogg'
chasestate = "viscerator_attack"
deathtext = "is smashed into pieces!"
Die()
..()
for(var/mob/O in viewers(src, null))
O.show_message("\red <b>[src]</b> is smashed into pieces!", 1)
del(src)

View File

@@ -1,250 +0,0 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/obj/item/projectile/hivebotbullet
damage = 5
damage_type = BRUTE
/obj/effect/critter/hivebot
name = "Hivebot"
desc = "A small robot"
icon = 'icons/mob/hivebot.dmi'
icon_state = "basic"
health = 10
max_health = 10
aggressive = 1
wanderer = 1
opensdoors = 1
atkcarbon = 1
atksilicon = 0
atkcritter = 1
atksame = 0
atkmech = 1
firevuln = 0.5
brutevuln = 1
seekrange = 8
armor = 5
melee_damage_lower = 2
melee_damage_upper = 3
angertext = "leaps at"
attacktext = "claws"
var/ranged = 0
var/rapid = 0
proc
Shoot(var/target, var/start, var/user, var/bullet = 0)
OpenFire(var/thing)//bluh ill rename this later or somethin
Die()
if (!src.alive) return
src.alive = 0
walk_to(src,0)
src.visible_message("<b>[src]</b> blows apart!")
var/turf/Ts = get_turf(src)
new /obj/effect/decal/cleanable/robot_debris(Ts)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del(src)
seek_target()
src.anchored = 0
var/T = null
for(var/mob/living/C in view(src.seekrange,src))//TODO: mess with this
if (src.target)
src.task = "chasing"
break
if((C.name == src.oldtarget_name) && (world.time < src.last_found + 100)) continue
if(istype(C, /mob/living/carbon/) && !src.atkcarbon) continue
if(istype(C, /mob/living/silicon/) && !src.atksilicon) continue
if(C.health < 0) continue
if(istype(C, /mob/living/carbon/) && src.atkcarbon)
if(C:mind)
if(C:mind:special_role == "H.I.V.E")
continue
src.attack = 1
if(istype(C, /mob/living/silicon/) && src.atksilicon)
if(C:mind)
if(C:mind:special_role == "H.I.V.E")
continue
src.attack = 1
if(src.attack)
T = C
break
if(!src.attack)
for(var/obj/effect/critter/C in view(src.seekrange,src))
if(istype(C, /obj/effect/critter) && !src.atkcritter) continue
if(C.health <= 0) continue
if(istype(C, /obj/effect/critter) && src.atkcritter)
if((istype(C, /obj/effect/critter/hivebot) && !src.atksame) || (C == src)) continue
T = C
break
for(var/obj/mecha/M in view(src.seekrange,src))
if(istype(M, /obj/mecha) && !src.atkmech) continue
if(M.health <= 0) continue
if(istype(M, /obj/mecha) && src.atkmech) src.attack = 1
if(src.attack)
T = M
break
if(src.attack)
src.target = T
src.oldtarget_name = T:name
if(src.ranged)
OpenFire(T)
return
src.task = "chasing"
return
OpenFire(var/thing)
src.target = thing
src.oldtarget_name = thing:name
for(var/mob/O in viewers(src, null))
O.show_message("\red <b>[src]</b> fires at [src.target]!", 1)
var/tturf = get_turf(target)
if(rapid)
spawn(1)
Shoot(tturf, src.loc, src)
spawn(4)
Shoot(tturf, src.loc, src)
spawn(6)
Shoot(tturf, src.loc, src)
else
Shoot(tturf, src.loc, src)
src.attack = 0
sleep(12)
seek_target()
src.task = "thinking"
return
Shoot(var/target, var/start, var/user, var/bullet = 0)
if(target == start)
return
var/obj/item/projectile/hivebotbullet/A = new /obj/item/projectile/hivebotbullet(user:loc)
playsound(user, 'sound/weapons/Gunshot.ogg', 100, 1)
if(!A) return
if (!istype(target, /turf))
del(A)
return
A.current = target
A.yo = target:y - start:y
A.xo = target:x - start:x
spawn( 0 )
A.process()
return
/obj/effect/critter/hivebot/range
name = "Hivebot"
desc = "A smallish robot, this one is armed!"
ranged = 1
/obj/effect/critter/hivebot/rapid
ranged = 1
rapid = 1
/obj/effect/critter/hivebot/strong
name = "Strong Hivebot"
desc = "A robot, this one is armed and looks tough!"
health = 50
armor = 10
ranged = 1
/obj/effect/critter/hivebot/borg
health = 20
atksilicon = 1
ranged = 1
rapid = 1
/obj/effect/critter/hivebot/tele//this still needs work
name = "Beacon"
desc = "Some odd beacon thing"
icon = 'icons/mob/hivebot.dmi'
icon_state = "def_radar-off"
health = 100
max_health = 100
aggressive = 0
wanderer = 0
opensdoors = 0
atkcarbon = 0
atksilicon = 0
atkcritter = 0
atksame = 0
atkmech = 0
firevuln = 0.5
brutevuln = 1
seekrange = 2
armor = 10
var/bot_type = "norm"
var/bot_amt = 10
var/spawn_delay = 600
var/turn_on = 0
var/auto_spawn = 1
proc
warpbots()
New()
..()
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, src.loc)
smoke.start()
for(var/mob/O in viewers(src, null))
O.show_message("\red <B>The [src] warps in!</B>", 1)
playsound(src.loc, 'sound/effects/EMPulse.ogg', 25, 1)
if(auto_spawn)
spawn(spawn_delay)
turn_on = 1
auto_spawn = 0
warpbots()
icon_state = "def_radar"
for(var/mob/O in viewers(src, null))
O.show_message("\red The [src] turns on!", 1)
while(bot_amt > 0)
bot_amt--
switch(bot_type)
if("norm")
new /obj/effect/critter/hivebot(get_turf(src))
if("range")
new /obj/effect/critter/hivebot/range(get_turf(src))
if("rapid")
new /obj/effect/critter/hivebot/rapid(get_turf(src))
spawn(100)
del(src)
return
process()
if((health < (max_health/2)) && (!turn_on))
if(prob(2))//Might be a bit low, will mess with it likely
turn_on = 1
if(turn_on == 1)
warpbots()
turn_on = 2
..()
/obj/effect/critter/hivebot/tele/massive
bot_type = "norm"
bot_amt = 30
auto_spawn = 0
/obj/effect/critter/hivebot/tele/ranged
bot_type = "range"
/obj/effect/critter/hivebot/tele/rapid
bot_type = "rapid"
spawn_delay = 800

View File

@@ -14,7 +14,6 @@
response_disarm = "gently pushes aside the"
response_harm = "hits the"
speed = -1
stop_automated_movement_when_pulled = 0
maxHealth = 25
health = 25

View File

@@ -10,7 +10,6 @@
response_disarm = "shoves"
response_harm = "hits the"
speed = -1
stop_automated_movement_when_pulled = 0
maxHealth = 80
health = 80

View File

@@ -0,0 +1,92 @@
/obj/item/projectile/hivebotbullet
damage = 10
damage_type = BRUTE
/mob/living/simple_animal/hostile/hivebot
name = "Hivebot"
desc = "A small robot"
icon = 'icons/mob/hivebot.dmi'
icon_state = "basic"
health = 15
maxHealth = 15
melee_damage_lower = 2
melee_damage_upper = 3
attacktext = "claws"
projectilesound = 'sound/weapons/Gunshot.ogg'
projectiletype = /obj/item/projectile/hivebotbullet
faction = "hivebot"
/mob/living/simple_animal/hostile/hivebot/range
name = "Hivebot"
desc = "A smallish robot, this one is armed!"
ranged = 1
/mob/living/simple_animal/hostile/hivebot/rapid
ranged = 1
rapid = 1
/mob/living/simple_animal/hostile/hivebot/strong
name = "Strong Hivebot"
desc = "A robot, this one is armed and looks tough!"
health = 80
ranged = 1
/mob/living/simple_animal/hostile/hivebot/Die()
..()
visible_message("<b>[src]</b> blows apart!")
new /obj/effect/decal/cleanable/robot_debris(src.loc)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
del src
return
/mob/living/simple_animal/hostile/hivebot/tele//this still needs work
name = "Beacon"
desc = "Some odd beacon thing"
icon = 'icons/mob/hivebot.dmi'
icon_state = "def_radar-off"
health = 200
maxHealth = 200
var/bot_type = "norm"
var/bot_amt = 10
var/spawn_delay = 600
var/turn_on = 0
var/auto_spawn = 1
proc
warpbots()
New()
..()
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
smoke.set_up(5, 0, src.loc)
smoke.start()
visible_message("\red <B>The [src] warps in!</B>")
playsound(src.loc, 'sound/effects/EMPulse.ogg', 25, 1)
warpbots()
icon_state = "def_radar"
visible_message("\red The [src] turns on!")
while(bot_amt > 0)
bot_amt--
switch(bot_type)
if("norm")
new /mob/living/simple_animal/hostile/hivebot(get_turf(src))
if("range")
new /mob/living/simple_animal/hostile/hivebot/range(get_turf(src))
if("rapid")
new /mob/living/simple_animal/hostile/hivebot/rapid(get_turf(src))
spawn(100)
del(src)
return
Life()
..()
if(stat == 0)
if(prob(2))//Might be a bit low, will mess with it likely
warpbots()

View File

@@ -8,6 +8,7 @@
var/projectiletype
var/projectilesound
var/casingtype
stop_automated_movement_when_pulled = 0
/mob/living/simple_animal/hostile/proc/FindTarget()

View File

@@ -130,3 +130,24 @@
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0)
return
/mob/living/simple_animal/hostile/viscerator
name = "viscerator"
desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
icon_state = "viscerator"
pass_flags = PASSTABLE
health = 15
maxHealth = 15
melee_damage_lower = 15
melee_damage_upper = 15
attacktext = "cuts"
attack_sound = 'sound/weapons/bladeslice.ogg'
faction = "syndicate"
/mob/living/simple_animal/hostile/viscerator/Die()
..()
visible_message("\red <b>[src]</b> is smashed into pieces!")
del src
return

View File

@@ -113,7 +113,6 @@
#define FILE_DIR "code/modules/clothing/under"
#define FILE_DIR "code/modules/clothing/under/jobs"
#define FILE_DIR "code/modules/critters"
#define FILE_DIR "code/modules/critters/hivebots"
#define FILE_DIR "code/modules/detectivework"
#define FILE_DIR "code/modules/flufftext"
#define FILE_DIR "code/modules/food"
@@ -944,7 +943,6 @@
#include "code\modules\critters\critter_AI.dm"
#include "code\modules\critters\critter_defenses.dm"
#include "code\modules\critters\critters.dm"
#include "code\modules\critters\hivebots\hivebot.dm"
#include "code\modules\detectivework\detective_work.dm"
#include "code\modules\detectivework\evidence.dm"
#include "code\modules\detectivework\footprints_and_rag.dm"
@@ -1132,6 +1130,7 @@
#include "code\modules\mob\living\simple_animal\hostile\bear.dm"
#include "code\modules\mob\living\simple_animal\hostile\carp.dm"
#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
#include "code\modules\mob\living\simple_animal\hostile\pirate.dm"
#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm"