diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 9f91108522..efb6ac1e75 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -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" diff --git a/code/modules/critters/critters.dm b/code/modules/critters/critters.dm index a518b4729e..03027ec104 100644 --- a/code/modules/critters/critters.dm +++ b/code/modules/critters/critters.dm @@ -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 [src] is smashed into pieces!", 1) - del(src) diff --git a/code/modules/critters/hivebots/hivebot.dm b/code/modules/critters/hivebots/hivebot.dm deleted file mode 100644 index 91c07264b3..0000000000 --- a/code/modules/critters/hivebots/hivebot.dm +++ /dev/null @@ -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("[src] 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 [src] 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 The [src] warps in!", 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 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 18fde334b2..2f53a5a2e1 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -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 diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 954bd4730b..ecc0e8882e 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -10,7 +10,6 @@ response_disarm = "shoves" response_harm = "hits the" speed = -1 - stop_automated_movement_when_pulled = 0 maxHealth = 80 health = 80 diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm new file mode 100644 index 0000000000..8208a5b2c0 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -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("[src] 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 The [src] warps in!") + 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() + diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 43ac5d9a43..613b3ff910 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -8,6 +8,7 @@ var/projectiletype var/projectilesound var/casingtype + stop_automated_movement_when_pulled = 0 /mob/living/simple_animal/hostile/proc/FindTarget() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index cfa6d2ba0b..2103b651b2 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -129,4 +129,25 @@ speed = 0 /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 [src] is smashed into pieces!") + del src return \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index b4832ab84d..73be7396df 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -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"