diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index 0ee697760b25..de7a68ec4eeb 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -1401,7 +1401,7 @@ /obj/effect/turf_decal/industrial/warning/corner{ dir = 1 }, -/mob/living/simple_animal/hostile/hivebot/range, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plasteel, /area/ruin/space/has_grav/onehalf) "qC" = ( @@ -1606,7 +1606,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "zS" = ( -/mob/living/simple_animal/hostile/hivebot/range, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plasteel/airless, /area/ruin/space/has_grav/onehalf) "Af" = ( @@ -1969,7 +1969,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/hivebot/range, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/wood/airless, /area/ruin/space/has_grav/onehalf) "OW" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm index 83c587268b34..51879d823e60 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_tradepost.dmm @@ -50,7 +50,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/wasteplanet/tradepost/barracks) "aM" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plating/asteroid/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) "aQ" = ( @@ -90,7 +90,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/structure/foamedmetal/iron, /turf/open/floor/pod, /area/ruin/wasteplanet/tradepost/center) @@ -116,7 +116,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ dir = 1 }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ dir = 1 }, @@ -382,7 +382,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 6 }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/item/trash/plate, /obj/effect/turf_decal/spline/fancy/opaque/black/corner{ @@ -394,7 +394,7 @@ /turf/open/floor/pod, /area/ruin/wasteplanet/tradepost/center) "ew" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /turf/open/floor/plating/asteroid/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) "ez" = ( @@ -608,7 +608,7 @@ /obj/effect/decal/cleanable/blood/tracks, /obj/item/paper_bin, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/item/trash/plate, /obj/item/ammo_casing/spent, /turf/open/floor/pod, @@ -851,7 +851,7 @@ /obj/effect/decal/cleanable/oil/streak{ icon_state = "streak2" }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ dir = 4 }, @@ -897,7 +897,7 @@ /area/overmap_encounter/planetoid/cave/explored) "kr" = ( /obj/effect/decal/cleanable/dirt/dust, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/concrete/pavement/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) "ks" = ( @@ -1575,7 +1575,7 @@ "rN" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/holopad/secure, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/corner/opaque/yellow/full, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, @@ -2354,7 +2354,7 @@ /obj/effect/decal/cleanable/oil/streak{ icon_state = "streak2" }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/pod, /area/ruin/wasteplanet/tradepost/center) "zO" = ( @@ -2502,7 +2502,7 @@ /turf/open/floor/pod/dark, /area/ruin/wasteplanet/tradepost/center) "BN" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /turf/open/floor/plating/asteroid/wasteplanet/lit, /area/overmap_encounter/planetoid/wasteplanet/explored) "Cb" = ( @@ -2949,7 +2949,7 @@ /turf/open/floor/plasteel/tech, /area/ruin/wasteplanet/tradepost/barracks) "FK" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/item/ammo_casing/spent, /turf/open/floor/concrete/pavement/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) @@ -3229,7 +3229,7 @@ /turf/open/floor/wood/walnut, /area/ruin/wasteplanet/tradepost/center) "IM" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/concrete/pavement/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) "IN" = ( @@ -3579,7 +3579,7 @@ /area/overmap_encounter/planetoid/cave/explored) "LW" = ( /obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/item/ammo_casing/spent, /turf/open/floor/concrete/pavement/wasteplanet, /area/overmap_encounter/planetoid/cave/explored) @@ -3988,7 +3988,7 @@ /turf/open/floor/pod, /area/ruin/wasteplanet/tradepost/center) "Qn" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /turf/open/floor/plating/wasteplanet/rust, /area/overmap_encounter/planetoid/wasteplanet/explored) "QB" = ( @@ -4694,7 +4694,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ dir = 8 }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/structure/door_assembly/door_assembly_com, /turf/open/floor/pod, /area/ruin/wasteplanet/tradepost/center) diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm index b97069f886ba..49f58d1b67b5 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm @@ -93,7 +93,7 @@ /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet/wasteplanet_radiation) "gx" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plating/asteroid/wasteplanet, /area/ruin/wasteplanet/wasteplanet_radiation) "gM" = ( @@ -684,7 +684,7 @@ /turf/open/floor/plating/asteroid/wasteplanet, /area/ruin/wasteplanet/wasteplanet_radiation) "Mh" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plating/asteroid/wasteplanet, /area/ruin/wasteplanet/wasteplanet_radiation) "Mq" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm index e3e0c20ef75f..227e2b7d4890 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm @@ -159,7 +159,7 @@ /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) "bB" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plating/wasteplanet/rust, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) "bD" = ( @@ -289,7 +289,7 @@ /turf/open/floor/plasteel/dark/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "cP" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/effect/decal/cleanable/blood/old, /obj/effect/mob_spawn/human/corpse/charredskeleton, /obj/item/wrench/combat, @@ -331,7 +331,7 @@ "dw" = ( /obj/effect/turf_decal/industrial/hatch/orange, /obj/structure/closet/crate/large, -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plasteel/dark/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) "dI" = ( @@ -939,7 +939,7 @@ /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) "kP" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/structure/railing{ dir = 4 }, @@ -1367,7 +1367,7 @@ /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) "pt" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/structure/sign/warning/docking{ pixel_x = 32 }, @@ -1606,7 +1606,7 @@ /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "sf" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plating/asteroid/wasteplanet, /area/ruin/wasteplanet) "sm" = ( @@ -2402,7 +2402,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) "CV" = ( @@ -2966,7 +2966,7 @@ /turf/open/floor/plasteel/dark/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "KG" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /obj/structure/catwalk/over, /turf/open/floor/plating/wasteplanet/lit, /area/ruin/wasteplanet) @@ -3148,7 +3148,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/mob/living/simple_animal/hostile/hivebot, /obj/machinery/light/directional/west, /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) @@ -3367,7 +3367,7 @@ /turf/open/floor/plasteel/dark/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) "QS" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plating/wasteplanet/lit, /area/ruin/wasteplanet) "Ri" = ( @@ -3945,7 +3945,7 @@ /turf/open/floor/plasteel/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "Yp" = ( -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/mob/living/simple_animal/hostile/hivebot/strong, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark/wasteplanet, /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) @@ -4007,7 +4007,7 @@ /area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) "YW" = ( /obj/effect/turf_decal/industrial/hatch/orange, -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/mob/living/simple_animal/hostile/hivebot/ranged, /turf/open/floor/plating/wasteplanet/lit, /area/ruin/wasteplanet) "Za" = ( diff --git a/code/datums/mapgen/planetary/WasteGenerator.dm b/code/datums/mapgen/planetary/WasteGenerator.dm index a4f9a1fcae71..15690125c005 100644 --- a/code/datums/mapgen/planetary/WasteGenerator.dm +++ b/code/datums/mapgen/planetary/WasteGenerator.dm @@ -138,9 +138,9 @@ mob_spawn_list = list( //hivebots, not too difficult - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 70, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 40, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 30, + /mob/living/simple_animal/hostile/hivebot/strong = 20, + /mob/living/simple_animal/hostile/hivebot/ranged = 40, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 30, //bots, are hostile /mob/living/simple_animal/bot/firebot/rockplanet = 15, /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3, @@ -253,9 +253,9 @@ /obj/effect/spawner/minefield = 2 ) mob_spawn_list = list( //nor organics, more biased towards hivebots though - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 50, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 50, + /mob/living/simple_animal/hostile/hivebot/strong = 20, + /mob/living/simple_animal/hostile/hivebot/ranged = 50, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 50, /mob/living/simple_animal/bot/firebot/rockplanet = 15, /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3, /mob/living/simple_animal/hostile/abandoned_minebot = 15, @@ -320,9 +320,9 @@ /obj/effect/spawner/random/anomaly/waste/cave = 1 ) mob_spawn_list = list( - /mob/living/simple_animal/hostile/hivebot/strong/rockplanet = 70, - /mob/living/simple_animal/hostile/hivebot/range/rockplanet = 40, - /mob/living/simple_animal/hostile/hivebot/rapid/rockplanet = 30, + /mob/living/simple_animal/hostile/hivebot/strong = 20, + /mob/living/simple_animal/hostile/hivebot/ranged = 40, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 30, /mob/living/simple_animal/bot/firebot/rockplanet = 15, /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3, /mob/living/simple_animal/hostile/abandoned_minebot = 15, @@ -403,9 +403,9 @@ /obj/effect/spawner/random/mine = 8, ) mob_spawn_list = list( //nor organics, more biased towards hivebots though - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 50, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 50, + /mob/living/simple_animal/hostile/hivebot/strong = 20, + /mob/living/simple_animal/hostile/hivebot/ranged = 50, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 50, /mob/living/simple_animal/bot/firebot/rockplanet = 15, /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3, /mob/living/simple_animal/hostile/abandoned_minebot = 15, @@ -430,9 +430,11 @@ /obj/structure/foamedmetal = 100, ) mob_spawn_list = list( //Whoops! All hivebots! - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 50, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 50 + /mob/living/simple_animal/hostile/hivebot/strong = 20, + /mob/living/simple_animal/hostile/hivebot/ranged = 40, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 20, + /mob/living/simple_animal/hostile/hivebot = 20, + /mob/living/simple_animal/hostile/hivebot/defender = 10 ) mob_spawn_chance = 30 feature_spawn_list = list( @@ -467,9 +469,9 @@ /obj/effect/spawner/random/waste/salvageable = 40, ) mob_spawn_list = list( - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 50, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 50, + /mob/living/simple_animal/hostile/hivebot/strong = 80, + /mob/living/simple_animal/hostile/hivebot/ranged = 50, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 50, /mob/living/simple_animal/bot/firebot/rockplanet = 15, /mob/living/simple_animal/bot/secbot/ed209/rockplanet = 3, /mob/living/simple_animal/hostile/abandoned_minebot = 15, diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 6dcff82cb7c4..e4d4c090ca4e 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -1,26 +1,26 @@ -/obj/projectile/hivebotbullet - damage = 10 - damage_type = BRUTE - /mob/living/simple_animal/hostile/hivebot name = "hivebot" - desc = "A small robot." + desc = "A human-sized automaton clad in the scrap of a dead world. Exposed circuitry sparks subtly as it analyzes the area around it." icon = 'icons/mob/hivebot.dmi' icon_state = "basic" icon_living = "basic" icon_dead = "basic" gender = NEUTER mob_biotypes = MOB_ROBOTIC - health = 15 - maxHealth = 15 + health = 35 + maxHealth = 35 healable = 0 - melee_damage_lower = 2 - melee_damage_upper = 3 + melee_damage_lower = 8 + melee_damage_upper = 12 + attack_verb_continuous = "claws" attack_verb_simple = "claw" attack_sound = 'sound/weapons/bladeslice.ogg' + casingtype = /obj/item/ammo_casing/c10mm projectilesound = 'sound/weapons/gun/pistol/shot.ogg' - projectiletype = /obj/projectile/hivebotbullet + + armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 100, "fire" = 50, "acid" = 0) + faction = list("hivebot") check_friendly_fire = 1 atmos_requirements = IMMUNE_ATMOS_REQS @@ -36,6 +36,11 @@ minbodytemp = 0 maxbodytemp = 600 loot = list(/obj/effect/decal/cleanable/robot_debris) + + //yeah so it turns out that /simple_animal/hostile gets upset when you call say because say contains a sleep. so we have to do this on subtypes. + var/list/aggro_blurb = list("INFILTRATOR WITHIN AO!!", "TERMINATE HOSTILE!!", "DEFEND TERMINUS!!", "CODE 7-34!!") + var/aggro_blurb_chance = 10 + var/alert_light footstep_type = FOOTSTEP_MOB_CLAW @@ -48,8 +53,9 @@ . = ..() a_intent_change(INTENT_HARM) update_icons() - if(prob(5)) - say(pick("INTRUDER DETECTED!", "CODE 7-34.", "101010!!"), forced = type) + if(prob(aggro_blurb_chance)) + say("[pick(aggro_blurb)]", forced = type) + /mob/living/simple_animal/hostile/hivebot/LoseAggro() . = ..() @@ -72,9 +78,9 @@ new /obj/effect/spawner/random/waste/hivebot(loc) ..(TRUE) -/mob/living/simple_animal/hostile/hivebot/range - name = "hivebot" - desc = "A smallish robot, this one is armed!" +/mob/living/simple_animal/hostile/hivebot/ranged + name = "combat hivebot" + desc = "A human-sized automaton clad in the scrap of a dead world. A weapon pivots around on its top, searching for a target to engage." icon_state = "ranged" icon_living = "ranged" icon_dead = "ranged" @@ -82,40 +88,61 @@ retreat_distance = 5 minimum_distance = 5 -/mob/living/simple_animal/hostile/hivebot/range/rockplanet - faction = list("mining", "hivebot") - -/mob/living/simple_animal/hostile/hivebot/rapid - icon_state = "ranged" - icon_living = "ranged" - icon_dead = "ranged" +/mob/living/simple_animal/hostile/hivebot/ranged/rapid ranged = TRUE rapid = 3 - retreat_distance = 5 - minimum_distance = 5 - -/mob/living/simple_animal/hostile/hivebot/rapid/rockplanet - faction = list("mining", "hivebot") + casingtype = /obj/item/ammo_casing/c57x39mm + projectilesound = 'sound/weapons/gun/smg/sidewinder.ogg' /mob/living/simple_animal/hostile/hivebot/strong - name = "strong hivebot" + name = "heavy hivebot" + desc = "A towering scrap-clad monolith. Hatred radiates out from the sensors that adorn it, beams of subtle light coming from within its sparking core." + armor = list("melee" = 30, "bullet" = 40, "laser" = 20, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 100, "fire" = 50, "acid" = 0) icon_state = "strong" icon_living = "strong" icon_dead = "strong" - desc = "A robot, this one is armed and looks tough!" health = 80 maxHealth = 80 ranged = TRUE + casingtype = /obj/item/ammo_casing/mm712x82 + projectilesound = 'sound/weapons/gun/rifle/hydra.ogg' + melee_damage_lower = 12 + melee_damage_upper = 20 + move_to_delay = 7 + +/mob/living/simple_animal/hostile/hivebot/defender //slave to the system + name = "core hivebot" + desc = "A massive, alien tower of metal and circuitry. Eyes adorn its body, each one casting a ray of electronic light in myriad directions. Slaved to its whim is a scrapped turret mounting, angrily glancing at the world around it." + armor = list("melee" = 40, "bullet" = 60, "laser" = 30, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 100, "fire" = 50, "acid" = 0) + icon_state = "strong" + icon_living = "strong" + icon_dead = "strong" + health = 120 + maxHealth = 120 + ranged = TRUE -/mob/living/simple_animal/hostile/hivebot/strong/rockplanet - faction = list("mining", "hivebot") + casingtype = /obj/item/ammo_casing/mm712x82 + projectilesound = 'sound/weapons/gun/rifle/hydra.ogg' + rapid = 3 + + retreat_distance = 3 + minimum_distance = 5 + + melee_damage_lower = 15 + melee_damage_upper = 28 + + move_to_delay = 15 + +/mob/living/simple_animal/hostile/hivebot/defender/Initialize(mapload) + . = ..() + transform *= 1.3 /mob/living/simple_animal/hostile/hivebot/mechanic name = "hivebot mechanic" icon_state = "strong" icon_living = "strong" icon_dead = "strong" - desc = "A robot built for base upkeep, intended for use inside hivebot colonies." + desc = "A tidy yet discordant machine of scrap, adorned with analyzers, waldos, and touching eyes." health = 60 maxHealth = 60 ranged = TRUE @@ -172,43 +199,3 @@ return new /obj/structure/foamedmetal(H.loc) playsound(get_turf(H), 'sound/effects/extinguish.ogg', 50, TRUE, -1) - - -/mob/living/simple_animal/hostile/hivebot/wasteplanet - name = "hivebot" - desc = "A smallish robot, this one is armed!" - icon_state = "basic" - icon_living = "basic" - icon_dead = "basic" - ranged = FALSE - faction = list("mining", "hivebot") - health = 30 - maxHealth = 30 - healable = 0 - melee_damage_lower = 5 - melee_damage_upper = 15 - - -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged - ranged = TRUE - icon_state = "ranged" - icon_living = "ranged" - icon_dead = "ranged" - ranged = TRUE - retreat_distance = 5 - minimum_distance = 5 - -/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid - rapid = 3 - -/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong - name = "strong hivebot" - icon_state = "strong" - icon_living = "strong" - icon_dead = "strong" - desc = "A robot, this one is armed and looks tough!" - health = 80 - maxHealth = 80 - ranged = TRUE - retreat_distance = 5 - minimum_distance = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index beb44db426de..c51d1aca1963 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -18,8 +18,10 @@ var/projectiletype //set ONLY it and NULLIFY casingtype var, if we have ONLY projectile var/projectilesound var/casingtype //set ONLY it and NULLIFY projectiletype, if we have projectile IN CASING - var/move_to_delay = 3 //delay for the automated movement. + ///delay for the automated movement. + var/move_to_delay = 3 var/list/friends = list() + var/list/emote_taunt = list() var/taunt_chance = 0 @@ -369,9 +371,10 @@ /mob/living/simple_animal/hostile/proc/Aggro() vision_range = aggro_vision_range - if(target && emote_taunt.len && prob(taunt_chance)) - manual_emote("[pick(emote_taunt)] at [target].") - taunt_chance = max(taunt_chance-7,2) + if(target) + if(emote_taunt.len && prob(taunt_chance)) + manual_emote("[pick(emote_taunt)] at [target].") + taunt_chance = max(taunt_chance-7,2) /mob/living/simple_animal/hostile/proc/LoseAggro() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e90d00a38a42..a1a0886a2362 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -86,7 +86,6 @@ ///Set to 1 to allow breaking of crates,lockers,racks,tables; 2 for walls; 3 for Rwalls. var/environment_smash = ENVIRONMENT_SMASH_NONE - ///Hot simple_animal baby making vars. var/list/childtype = null var/next_scan_time = 0 diff --git a/code/modules/mob_spawner/hivebot.dm b/code/modules/mob_spawner/hivebot.dm index 2b36075d2225..0bade41cbb8c 100644 --- a/code/modules/mob_spawner/hivebot.dm +++ b/code/modules/mob_spawner/hivebot.dm @@ -1,6 +1,6 @@ /obj/structure/spawner/hivebot name = "hivebot fabricator" - desc = "An active fabricator, creating hivebots out of resources from below the surface." + desc = "An active fabrication plant, electrical tendrils reaching into the ground searching for scrap metals, a hunger permeating the world around it." icon = 'icons/obj/machines/bsm.dmi' icon_state = "bsm_on" @@ -8,13 +8,14 @@ faction = list("mining") max_integrity = 250 mob_types = list( - /mob/living/simple_animal/hostile/hivebot/wasteplanet = 40, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged = 40, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid = 10, - /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 5, - /mob/living/simple_animal/hostile/hivebot/mechanic = 5 + /mob/living/simple_animal/hostile/hivebot = 40, + /mob/living/simple_animal/hostile/hivebot/ranged = 40, + /mob/living/simple_animal/hostile/hivebot/ranged/rapid = 10, + /mob/living/simple_animal/hostile/hivebot/strong = 5, + /mob/living/simple_animal/hostile/hivebot/mechanic = 5, + /mob/living/simple_animal/hostile/hivebot/defender = 1, ) - spawn_text = "crawls out of" + spawn_text = "emerges from within" spawn_sound = list('sound/effects/suitstep2.ogg') resistance_flags = FIRE_PROOF | LAVA_PROOF var/obj/effect/light_emitter/hivespawner/emitted_light @@ -34,7 +35,7 @@ /obj/structure/spawner/hivebot/proc/destroy_effect() playsound(loc,'sound/effects/explosionfar.ogg', 200, TRUE) - visible_message("[src] begins to rattle and shake, sparks flying off of it!") + visible_message(span_boldannounce("[src] begins to rattle and shake, sparks flying off of it!")) /obj/structure/spawner/hivebot/proc/drop_loot() diff --git a/tools/UpdatePaths/Scripts/3709_hivebots.txt b/tools/UpdatePaths/Scripts/3709_hivebots.txt new file mode 100644 index 000000000000..8fd5d3b7a055 --- /dev/null +++ b/tools/UpdatePaths/Scripts/3709_hivebots.txt @@ -0,0 +1,5 @@ + /mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid : /mob/living/simple_animal/hostile/hivebot/ranged +/mob/living/simple_animal/hostile/hivebot/range : /mob/living/simple_animal/hostile/hivebot/ranged +/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong : /mob/living/simple_animal/hostile/hivebot/strong +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged : /mob/living/simple_animal/hostile/hivebot/ranged +/mob/living/simple_animal/hostile/hivebot/wasteplanet : /mob/living/simple_animal/hostile/hivebot