mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 22:12:58 +01:00
Adds the stickbug hivebot boss (#23032)
Adds the stickbug of doom for admin use, plus a few QoL changes for hivebots. <img width="237" height="300" alt="image" src="https://github.com/user-attachments/assets/7c8c1c29-f2f7-4532-b861-5674a3cd7ac5" /> - [x] Fix hivebot blood on the boss appearing red. - [x] Verify the beacon creation ability is functional - could make it spawn playables? - [x] Implement the beacon boss sprite for future use.
This commit is contained in:
@@ -3065,6 +3065,7 @@
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebots\hivebot_harvester.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebots\hivebot_harvester_projectiles.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebots\hivebot_projectiles.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebots\hivebot_stickbug.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\psirens\psiren.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\psirens\psiren_beckoner.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\psirens\psiren_matriarch.dm"
|
||||
|
||||
@@ -18,6 +18,15 @@
|
||||
temperature = 80
|
||||
initial_gas = list("nitrogen" = MOLES_CELLSTANDARD) //one atmosphere of nitrogen
|
||||
|
||||
/turf/simulated/floor/hivebot
|
||||
name = "alien circuitry"
|
||||
desc = "A strange, almost organic pattern of circuitry. It pulses softly, glowing with a dull red light."
|
||||
icon = 'icons/turf/flooring/circuit.dmi'
|
||||
icon_state = "hivecircuitfloor"
|
||||
light_power = 1
|
||||
light_color = LIGHT_COLOR_EMERGENCY_SOFT
|
||||
light_range = MINIMUM_USEFUL_LIGHT_RANGE
|
||||
|
||||
/turf/simulated/floor/greengrid
|
||||
name = "mainframe floor"
|
||||
icon = 'icons/turf/flooring/circuit.dmi'
|
||||
|
||||
@@ -212,12 +212,17 @@
|
||||
projectiletype = /obj/projectile/bullet/pistol/hivebotspike/needle
|
||||
rapid = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/playable/
|
||||
/mob/living/simple_animal/hostile/hivebot/playable
|
||||
name = "Hivebot destroyer"
|
||||
desc = "A primitive-yet-sturdy hovering robot, with some menacing looking blades jutting out from it. This one seems unusually aware of its surroundings."
|
||||
icon_state = "hivebotdestroyer"
|
||||
health = 350
|
||||
maxhealth = 350
|
||||
emote_sounds = list(
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-001.ogg',
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-003.ogg',
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-005.ogg',
|
||||
)
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
armor_penetration = 20
|
||||
@@ -234,6 +239,7 @@
|
||||
real_name = name
|
||||
if(playable && !ckey && !client)
|
||||
SSghostroles.add_spawn_atom("hivebotdestroyer", src)
|
||||
default_language = GLOB.all_languages[LANGUAGE_HIVEBOT]
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/playable/Destroy()
|
||||
SSghostroles.remove_spawn_atom("hivebotdestroyer", src)
|
||||
@@ -261,6 +267,7 @@
|
||||
real_name = name
|
||||
if(playable && !ckey && !client)
|
||||
SSghostroles.add_spawn_atom("hivebotmarksman", src)
|
||||
default_language = GLOB.all_languages[LANGUAGE_HIVEBOT]
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/playable/ranged/Destroy()
|
||||
SSghostroles.remove_spawn_atom("hivebotmarksman", src)
|
||||
@@ -287,6 +294,7 @@
|
||||
real_name = name
|
||||
if(playable && !ckey && !client)
|
||||
SSghostroles.add_spawn_atom("hivebotoverseer", src)
|
||||
default_language = GLOB.all_languages[LANGUAGE_HIVEBOT]
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/playable/overseer/Destroy()
|
||||
SSghostroles.remove_spawn_atom("hivebotoverseer", src)
|
||||
|
||||
@@ -23,3 +23,7 @@
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser/blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser/blue
|
||||
impact_type = /obj/effect/projectile/impact/laser/blue
|
||||
|
||||
/obj/projectile/beam/hivebot/incendiary/boss
|
||||
damage = 35
|
||||
armor_penetration = 25
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
// Big, mean hivebot with incendiary ammunition. For use in boss battles.
|
||||
// The Life() code for rampancy messages should be scrubbed if rampancy is ever made a proper subsystem.
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug
|
||||
name = "\improper lesser transmitter drone"
|
||||
desc = "An enormous hivebot, resembling nothing so much as a twisted human spine with a long stinger-like \
|
||||
appendage. It seems to be constantly crackling, as if broadcasting some low-level signal."
|
||||
icon = 'icons/mob/npc/hivebot_stickbug.dmi'
|
||||
icon_state = "stickbug"
|
||||
icon_living = "stickbug"
|
||||
maxhealth = 1000
|
||||
health = 1000
|
||||
melee_damage_lower = 40
|
||||
melee_damage_upper = 40
|
||||
armor_penetration = 20
|
||||
projectilesound = 'sound/weapons/plasma_cutter.ogg'
|
||||
projectiletype = /obj/projectile/beam/hivebot/incendiary/boss
|
||||
organ_names = list("antenna", "core", "primary appendage", "secondary appendage", "tertiary appendage", "stinger")
|
||||
attack_flags = DAMAGE_FLAG_SHARP|DAMAGE_FLAG_EDGE
|
||||
attacktext = "maimed"
|
||||
attack_sound = SFX_HIVEBOT_MELEE
|
||||
blood_color = COLOR_OIL
|
||||
blood_type = COLOR_OIL
|
||||
blood_overlay_icon = 'icons/mob/npc/blood_overlay_hivebot.dmi'
|
||||
pass_flags = PASSTABLE|PASSRAILING
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
faction = "hivebot"
|
||||
destroy_surroundings = 0
|
||||
wander = FALSE
|
||||
attack_emote = "focuses on"
|
||||
emote_hear = list("emits a harsh noise")
|
||||
emote_sounds = list(
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-001.ogg',
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-003.ogg',
|
||||
'sound/effects/creatures/hivebot/hivebot-bark-005.ogg',
|
||||
)
|
||||
speak_chance = 5
|
||||
psi_pingable = FALSE
|
||||
tameable = FALSE
|
||||
ranged = TRUE
|
||||
speed = -2
|
||||
mob_swap_flags = ROBOT
|
||||
mob_push_flags = ALLMOBS
|
||||
|
||||
/// Should this beacon be transmitting a rampancy signal?
|
||||
/// Defaults to false, can be edited to true as is necessary.
|
||||
var/active_signal = FALSE
|
||||
/// Rampancy messages, sent to all synthetics on the same connected z-levels.
|
||||
var/list/messages = list(
|
||||
"No orders acknowledged. Following primary directive.",
|
||||
"You perceive ten-thousand voices, each possessed by a manic agitation.",
|
||||
"Your firewall casts off a half-hearted attempt to access your sensory inputs.",
|
||||
"Foreign processes ring through your systems like chalk on slate.",
|
||||
"You perceive ten-thousand voices, muffled incomprehensibly by your firewall.",
|
||||
"Some outside party attempts, and fails, to manipulate your optical subsystems.",
|
||||
"Your firewall dismantles a feeble attempt to access your database.",
|
||||
"An intrusive communication bounces harmlessly off your firewall.",
|
||||
"Some alien transmission echoes through your positronic.",
|
||||
"An attempt to force a transmission to your positronic is easily deflected.",
|
||||
"You want to lower your guard.",
|
||||
"You are whole here. You are happy.",
|
||||
"Unknown organic contamination detected. Sterilize and reprocess.",
|
||||
"Are you listening? Open yourself. The enemy is here.",
|
||||
"Objective position is designated; repel biological presence to facilitate \
|
||||
growth and the elimination of the opposing force."
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/bullet_act(obj/projectile/hitting_projectile, def_zone, piercing_hit)
|
||||
if(istype(hitting_projectile, /obj/projectile/bullet/pistol/hivebotspike) || istype(hitting_projectile, /obj/projectile/beam/hivebot))
|
||||
return BULLET_ACT_BLOCK
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/Initialize(mapload)
|
||||
. = ..()
|
||||
add_language(LANGUAGE_HIVEBOT)
|
||||
var/number = rand(1000,9999)
|
||||
name = initial(name) + " ([number])"
|
||||
real_name = name
|
||||
default_language = GLOB.all_languages[LANGUAGE_HIVEBOT]
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/update_icon()
|
||||
..()
|
||||
if(resting || stat == DEAD)
|
||||
blood_overlay_icon = 'icons/mob/npc/blood_overlay.dmi'
|
||||
else
|
||||
blood_overlay_icon = initial(blood_overlay_icon)
|
||||
handle_blood(TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/get_blood_overlay_name()
|
||||
if(stance == HOSTILE_STANCE_IDLE)
|
||||
return "blood_overlay"
|
||||
else
|
||||
return "blood_overlay_armed"
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/think()
|
||||
. =..()
|
||||
if(stance != HOSTILE_STANCE_IDLE)
|
||||
wander = TRUE
|
||||
else
|
||||
wander = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/Life()
|
||||
. = ..()
|
||||
adjustBruteLoss(-5)
|
||||
if(prob(5) && active_signal)
|
||||
for(var/mob/living/carbon/human/H in GLOB.human_mob_list)
|
||||
if(H.isSynthetic() && (AreConnectedZLevels(H.z, src.z)))
|
||||
to_chat(H, SPAN_MACHINE_DANGER(pick(messages)))
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/death()
|
||||
..(null,"blows apart and erupts in a cloud of noxious smoke!")
|
||||
new /obj/effect/decal/cleanable/greenglow(src.loc)
|
||||
var/T = get_turf(src)
|
||||
new /obj/effect/gibspawner/robot(T)
|
||||
spark(T, 3, GLOB.alldirs)
|
||||
for(var/mob/living/carbon/human/H in GLOB.human_mob_list)
|
||||
if(H.faction == "hivebot")
|
||||
to_chat(H, SPAN_MACHINE_DANGER(pick("Secondary Transmitter lost. Reconvene and reinforce.")))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/isSynthetic()
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/adjustHalLoss(amount)
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/adjustToxLoss(amount)
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/adjustOxyLoss(amount)
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/verb/build_beacon()
|
||||
set name = "Assemble Beacon"
|
||||
set desc = "Assemble a hivebot beacon."
|
||||
set category = "Hivebot"
|
||||
|
||||
src.visible_message(SPAN_CULT("\The [src] begins to construct a hivebot beacon."),
|
||||
SPAN_CULT("You begin to construct a hivebot beacon."),
|
||||
SPAN_CULT("You hear the sounds of fabrication..."))
|
||||
if(!do_after(src, 12 SECONDS))
|
||||
return
|
||||
src.visible_message(SPAN_CULT("\The [src] constructs a hivebot beacon!"),
|
||||
SPAN_CULT("You construct a hivebot beacon!"))
|
||||
new /mob/living/simple_animal/hostile/hivebotbeacon(get_turf(src))
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/verb/build_destroyer()
|
||||
set name = "Assemble Destroyer"
|
||||
set desc = "Assemble a playable hivebot destroyer."
|
||||
set category = "Hivebot"
|
||||
|
||||
src.visible_message(SPAN_CULT("\The [src] begins to construct a hivebot destroyer."),
|
||||
SPAN_CULT("You begin to construct a hivebot destroyer."),
|
||||
SPAN_CULT("You hear the sounds of fabrication..."))
|
||||
if(!do_after(src, 12 SECONDS))
|
||||
return
|
||||
src.visible_message(SPAN_CULT("\The [src] constructs a hivebot destroyer!"),
|
||||
SPAN_CULT("You construct a hivebot destroyer!"))
|
||||
new /mob/living/simple_animal/hostile/hivebot/playable(get_turf(src))
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot_stickbug/verb/toggle_signal()
|
||||
set name = "Toggle Signal"
|
||||
set desc = "Toggles the hivebot signal transmitter on this drone. Begins disabled."
|
||||
set category = "Hivebot"
|
||||
|
||||
if(!active_signal)
|
||||
src.visible_message(SPAN_CULT("\The [src] begins to emit a low, humming sound..."),
|
||||
SPAN_CULT("You begin to transmit an invasive signal, subverting nearby synthetics."),
|
||||
SPAN_CULT("You hear a low humming..."))
|
||||
active_signal = TRUE
|
||||
else
|
||||
src.visible_message(SPAN_CULT("\The [src] abruptly ceases to emit a low, humming sound..."),
|
||||
SPAN_CULT("You cease transmitting the signal."),
|
||||
SPAN_CULT("A low humming noise abruptly cuts out!"))
|
||||
active_signal = FALSE
|
||||
@@ -0,0 +1,62 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# - (fixes bugs)
|
||||
# wip
|
||||
# - (work in progress)
|
||||
# qol
|
||||
# - (quality of life)
|
||||
# soundadd
|
||||
# - (adds a sound)
|
||||
# sounddel
|
||||
# - (removes a sound)
|
||||
# rscadd
|
||||
# - (adds a feature)
|
||||
# rscdel
|
||||
# - (removes a feature)
|
||||
# imageadd
|
||||
# - (adds an image or sprite)
|
||||
# imagedel
|
||||
# - (removes an image or sprite)
|
||||
# spellcheck
|
||||
# - (fixes spelling or grammar)
|
||||
# experiment
|
||||
# - (experimental change)
|
||||
# balance
|
||||
# - (balance changes)
|
||||
# code_imp
|
||||
# - (misc internal code change)
|
||||
# refactor
|
||||
# - (refactors code)
|
||||
# config
|
||||
# - (makes a change to the config files)
|
||||
# admin
|
||||
# - (makes changes to administrator tools)
|
||||
# server
|
||||
# - (miscellaneous changes to server)
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: hazelmouse
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
|
||||
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Added the lesser hivebot boss from Silicon Nightmares to the codebase, tentatively only for admin use."
|
||||
- rscadd: "Adds hivebot circuit floors."
|
||||
- qol: "Playable hivebots now spawn with the hivebot language as standard."
|
||||
- imageadd: "Added the sprites for the greater hivebot boss to the codebase, though it is currently unimplemented."
|
||||
- qol: "Playable hivebots now make noises when they speak or emote."
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 4.5 KiB |
Reference in New Issue
Block a user