lJZUk)rqoNae`NchilViE`=
z8S)_?39(g=)1h7gKLS|x(um(-LLD8fj11su0_;IM}cBYHGgPD
z7u`C&1gn~C4+x6Q@5lh)|9MgLrB9SISn5b`$Q`6hqZ7%gU?*E}t_pV%{07sHc1fUd
zGDM-9_$~R`#Zj#ec2&ZB>&{@s<7|w3|S;FB9grrUEGc~H%NHEjF$deo1q}JaX
z$>sS$CeZ7Juz_uJo)gF2y(oGh!!D3lzn9A;y&xPqUZLMA8x3T*kTdC~vf)?MiS(Bo
zb<50>7nX&GnHA3Zu9FzNPUP-(%iCinV>|YSRs^e^>Aq4B@u{RCC~RRz!07uwQg7zp
zX8xNVWNHMdrUB`q5CcNgpwkFECK^;Ira+ru^w&5Iv6#=dz9v;ee?{kSBtKTW@5P_J
zEcxMPU)~%tc+{@aH%qo3(tp2zTuF?B#HzU_gU6W3D+Td4{Y>bOwt232w*tq|%NaL_
zL=ge=^4ZxxjZmkqdVT*c2x9Ii&(sN(k|5=04{a8{>LV=cLD&axn|fkVr^HFudNO6;
Q$Z{bh_%Q9p{`m9%0})tlaR2}S
From 9a5c5e619f8894672a63d522d700ad4efb31568c Mon Sep 17 00:00:00 2001
From: Athena148 <140056159+Athena148@users.noreply.github.com>
Date: Fri, 30 Aug 2024 21:25:21 -0400
Subject: [PATCH 04/35] Backspaces the PKA Damage Modkit from code (#6695)
## About The Pull Request
Removes the Proto Kinetic Accelerator damage modkit from the codebase.
## Why It's Good For The Game
PKA's have been a long standing issue, being able to deal upwards of
60-80 damage in one hit if you use full damage modkits on your PKA. This
is completely ludicrous if you're in an area where they can be used,
such as vacuum, the outside of Rift (NSB Atlas map) and a few other
areas. This is a TEMPORARY SOLUTION until Silicons reworks PKA's.
## Changelog
:cl:
del: Removes the PKA Damage Modkit.
/:cl:
---
.../mining/ore_redemption_machine/equipment_vendor.dm | 1 -
.../projectiles/guns/energy/kinetic_accelerator.dm | 11 -----------
2 files changed, 12 deletions(-)
diff --git a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
index 5b9693b6ccb0..16bacb7da61e 100644
--- a/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
+++ b/code/modules/mining/ore_redemption_machine/equipment_vendor.dm
@@ -73,7 +73,6 @@
new /datum/data/mining_equipment("KA Super Chassis", /obj/item/ka_modkit/chassis_mod, 250),
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/ka_modkit/chassis_mod/orange, 300),
new /datum/data/mining_equipment("KA Range Increase", /obj/item/ka_modkit/range, 1000),
- new /datum/data/mining_equipment("KA Damage Increase", /obj/item/ka_modkit/damage, 1000),
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/ka_modkit/cooldown, 1200),
new /datum/data/mining_equipment("KA Capacity Increase", /obj/item/ka_modkit/capacity, 1500),
new /datum/data/mining_equipment("KA Holster", /obj/item/clothing/accessory/holster/waist/kinetic_accelerator, 350),
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index c20f29e8e20c..b8101a537ae8 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -363,17 +363,6 @@
/obj/item/ka_modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier * WORLD_ICON_SIZE
-
-//Damage
-/obj/item/ka_modkit/damage
- name = "damage increase"
- desc = "Increases the damage of kinetic accelerator when installed."
- modifier = 10
-
-/obj/item/ka_modkit/damage/modify_projectile(obj/projectile/kinetic/K)
- K.damage += modifier
-
-
//Cooldown
/obj/item/ka_modkit/cooldown
name = "cooldown decrease"
From e697b2924d2056ea1b1596a522a53342a334c9f2 Mon Sep 17 00:00:00 2001
From: Athena148 <140056159+Athena148@users.noreply.github.com>
Date: Fri, 30 Aug 2024 21:27:27 -0400
Subject: [PATCH 05/35] The Enigmatic Salvagers (#6692)
## About The Pull Request
Adds a unique, event only Hivebot faction named the 'Enigmatic
Salvagers.'
The Enigmatic Salvagers are a special type of Hivebot faction that comb
through the Galaxy, searching for old Abductor ships, worlds and
installations to salvage and then modify themselves with the parts.
Legend has it that they're controlled by a shadowy Artificial
Intelligence that exists far beyond habitable space. Why are they
salvaging Abductor technology? What is the goal of this Artificial
Intelligence, and why is it puppeting a Hivebot army for its purposes?
Maybe we'll find out.
## Why It's Good For The Game
Adds a new event/admin spawn only Hivebot faction. Should be fun for all
parties.
## Changelog
:cl:
add: Adds the 'Enigmatic Salvagers'
soundadd: Adds new Hivebot/mechanical sounds
imageadd: Adds sprites for the Enigmatic Salvagers
/:cl:
---------
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
---
citadel.dme | 1 +
code/game/objects/structures/loot_piles.dm | 3 +
.../mechanical/hivebot/enigma_hivebot.dm | 603 ++++++++++++++++++
.../projectiles/projectile/beam/beams.dm | 12 +
icons/mob/124x124_enigma.dmi | Bin 0 -> 640 bytes
icons/mob/enigma.dmi | Bin 0 -> 25816 bytes
sound/enigma/enigma_hit.ogg | Bin 0 -> 32075 bytes
sound/enigma/enigma_hit2.ogg | Bin 0 -> 39089 bytes
sound/enigma/enigma_move.ogg | Bin 0 -> 29038 bytes
sound/enigma/enigma_move2.ogg | Bin 0 -> 17164 bytes
10 files changed, 619 insertions(+)
create mode 100644 code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/enigma_hivebot.dm
create mode 100644 icons/mob/124x124_enigma.dmi
create mode 100644 icons/mob/enigma.dmi
create mode 100644 sound/enigma/enigma_hit.ogg
create mode 100644 sound/enigma/enigma_hit2.ogg
create mode 100644 sound/enigma/enigma_move.ogg
create mode 100644 sound/enigma/enigma_move2.ogg
diff --git a/citadel.dme b/citadel.dme
index af1a0eb72209..b29ecb2e6910 100644
--- a/citadel.dme
+++ b/citadel.dme
@@ -3854,6 +3854,7 @@
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\cyber_horror\cyber_horror.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\enigma_hivebot.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm"
#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage_vr.dm"
diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm
index a18bd0046e62..95978d8a76fa 100644
--- a/code/game/objects/structures/loot_piles.dm
+++ b/code/game/objects/structures/loot_piles.dm
@@ -809,6 +809,9 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
/obj/structure/loot_pile/mecha/gygax/dark
icon_state = "darkgygax-broken"
+/obj/structure/loot_pile/mecha/mimir
+ icon_state = "mimir_wreck"
+
// Todo: Better loot.
/obj/structure/loot_pile/mecha/gygax/dark/adv
icon_state = "darkgygax_adv-broken"
diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/enigma_hivebot.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/enigma_hivebot.dm
new file mode 100644
index 000000000000..a495df25563b
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/enigma_hivebot.dm
@@ -0,0 +1,603 @@
+// This is the dedicated file for Enigma Hivebots.
+// Enigma hivebots are usually significantly tougher than baseline Hivebots, and are modified with salvaged abductor parts.
+// These Hivebots are often meant for Event purposes, and carry a different faction than baseline Hivebots. Use these carefully!
+
+// Code Stuff
+/mob/living/simple_mob/mechanical/hivebot/enigma/death()
+ ..()
+ visible_message(SPAN_WARNING("\The [src] demateralizes in a flash of energy!"))
+ new /obj/effect/debris/cleanable/blood/gibs/robot(src.loc)
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ qdel(src)
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/director/handle_special()
+ for(var/mob/living/L in range(16, src))
+ if(L == src)
+ continue // Don't buff ourselves.
+ if(IIsAlly(L) && L.isSynthetic()) // Don't buff enemies.
+ L.add_modifier(/datum/modifier/aura/hivebot_commander_buff/enigma, null, src)
+
+/datum/modifier/aura/hivebot_commander_buff/enigma
+ name = "Strategicals"
+ on_created_text = "Signal established with commander. Optimizating combat performance..."
+ on_expired_text = "Lost signal to commander. Optimization halting."
+ stacks = MODIFIER_STACK_FORBID
+ aura_max_distance = 12
+ mob_overlay_state = "signal_blue"
+
+ disable_duration_percent = 0.7
+ outgoing_melee_damage_percent = 1.3
+ attack_speed_percent = 1.3
+ accuracy = 30
+ slowdown = -1
+ evasion = 30
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/archaeologist/handle_special()
+ if(last_resupply + resupply_cooldown > world.time)
+ return // On cooldown.
+
+ for(var/mob/living/simple_mob/SM in hearers(resupply_range, src))
+ if(SM == src)
+ continue // We don't use charges buuuuut in case that changes in the future...
+ if(IIsAlly(SM)) // Don't resupply enemies.
+ if(!isnull(SM.special_attack_charges) && SM.special_attack_charges < initial(SM.special_attack_charges))
+ SM.special_attack_charges += 1
+ to_chat(SM, SPAN_NOTICE("\The [src] has resupplied you, and you can use your special ability one additional time."))
+ to_chat(src, SPAN_NOTICE("You have resupplied \the [SM]."))
+ last_resupply = world.time
+ break // Only one resupply per pulse.
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/custodian/apply_melee_effects(atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ if(L.mob_size <= MOB_MEDIUM)
+ visible_message(SPAN_DANGER("\The [src] sends \the [L] flying with their hydraulic fists!"))
+ playsound(src, 'sound/enigma/enigma_hit2.ogg', 50, 1)
+ var/throw_dir = get_dir(src, L)
+ var/throw_dist = L.incapacitated(INCAPACITATION_DISABLED) ? 4 : 1
+ L.throw_at_old(get_edge_target_turf(L, throw_dir), throw_dist, 1, src)
+ else
+ to_chat(L, SPAN_WARNING( "\The [src] punches you with incredible force, but you remain in place."))
+
+// Melee
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/custodian
+ name = "custodian"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A strangely shaped humanoid synthetic, standing taller than the average Human. Its armor seems reinforced against common energy and laser weapons, however likely less so against ballistics. Power seems to course through its arms, probably best to not let it hit you... A odd elaborate golden 'E' is etched into the side of its chassis."
+ icon_state = "custodian"
+ icon_living = "custodian"
+ maxHealth = 500
+ health = 500
+ armor_legacy_mob = list(
+ "melee" = 20,
+ "bullet" = 0,
+ "laser" = 50,
+ "energy" = 50,
+ "bomb" = 100,
+ "bio" = 100,
+ "rad" = 100
+ )
+ legacy_melee_damage_lower = 40
+ legacy_melee_damage_upper = 40
+ movement_cooldown = 4
+ icon_scale_x = 1.4
+ icon_scale_y = 1.4
+ faction = "enigma"
+ attack_sound = 'sound/enigma/enigma_hit2.ogg'
+ movement_sound = 'sound/enigma/enigma_move2.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/hivebot
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/custodian/Initialize(mapload)
+ var/shield_type = /obj/item/shield_projector/rectangle{
+ shield_health = 150;
+ max_shield_health = 150;
+ shield_regen_delay = 10 SECONDS;
+ shield_regen_amount = 10;
+ size_x = 1;
+ size_y = 1;
+ always_on = TRUE;
+ }
+ var/obj/item/shield_projector/shield_projector = new shield_type(src)
+ shield_projector.create_shields()
+ return ..()
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/disassembler
+ name = "disassembler"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A small drone, decorated in hues of pink and purple material. Two sets of claws comprise its front legs and back legs, and thhere seems to be some sort of golden 'E' symbol which marks the under-chassis. It appears to move quite fast and fit into small spaces."
+ icon_state = "disassembler"
+ icon_living = "disassembler"
+ maxHealth = 200
+ health = 200
+ armor_legacy_mob = list(
+ "melee" = 10,
+ "bullet" = 0,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 20
+ legacy_melee_damage_upper = 20
+ base_attack_cooldown = 6
+ movement_cooldown = 1
+ faction = "enigma"
+ attack_sound = 'sound/enigma/enigma_hit.ogg'
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/hivebot
+
+// Support
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/director
+ name = "research director"
+ icon = 'icons/mob/124x124_enigma.dmi'
+ desc = "A towering machine which stands well above the average person. Its makeup is entirely alien, and its hull seems to shiver and move constantly. Contained within a dome shaped head appears to be some sort of impossibly advanced neural center. It looks to be directing the machines around it, as if it's some sort of Prophet."
+ icon_state = "research_director"
+ icon_living = "research_director"
+ maxHealth = 600
+ health = 600
+ armor_legacy_mob = list(
+ "melee" = 30,
+ "bullet" = 20,
+ "laser" = 50,
+ "energy" = 50,
+ "bomb" = 70,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 25
+ legacy_melee_damage_upper = 25
+ movement_cooldown = 5
+ base_pixel_x = 1.5
+ base_pixel_y = 1.5
+ faction = "enigma"
+ attack_sound = 'sound/weapons/slash.ogg'
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/event
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/archaeologist
+ name = "xeno archaeologist"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A humanoid synthetic, standing at around the height of the average Human. This one seems off however, and if one were to look closer it has a number of archaeological tools integrated seemlessly into its chassis. A hum of energy from its advanced sensor package follows it where-ever it goes, ready to scan and dig."
+ icon_state = "archaeologist"
+ icon_living = "archaeologist"
+ maxHealth = 150
+ health = 150
+ armor_legacy_mob = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 10
+ legacy_melee_damage_upper = 10
+ movement_cooldown = 2
+ faction = "enigma"
+ attack_sound = 'sound/items/drill_hit.ogg'
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/event
+ var/resupply_range = 5
+ var/resupply_cooldown = 4 SECONDS
+ var/last_resupply = null
+
+// Ranged
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/atomizer
+ name = "atomizer"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A floating orb which utilizes some sort of advanced anti-gravity technology. It's decorated in gold plating, and seems to be coursing with barely contained energy. On the side of its chassis is a odd golden 'E' shape."
+ icon_state = "atomizer"
+ icon_living = "atomizer"
+ maxHealth = 350
+ health = 350
+ armor_legacy_mob = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 40,
+ "energy" = 40,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 0
+ legacy_melee_damage_upper = 0
+ movement_cooldown = 6
+ faction = "enigma"
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/kiting
+ projectiletype = /obj/projectile/beam/cyan/hivebot
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/atomizer/Initialize(mapload)
+ var/shield_type = /obj/item/shield_projector/rectangle{
+ shield_health = 150;
+ max_shield_health = 150;
+ shield_regen_delay = 10 SECONDS;
+ shield_regen_amount = 10;
+ size_x = 1;
+ size_y = 1;
+ always_on = TRUE;
+ }
+ var/obj/item/shield_projector/shield_projector = new shield_type(src)
+ shield_projector.create_shields()
+ return ..()
+
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/sweeper
+ name = "sweeper"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A towering mechanical construct, radiating with power. Its gauntlet contains some sort of inbuild shield projector which it uses to advance without sustaining harm, while some sort of shoulder mounted armament can be seen on its back, pointing at anything it intends to obliterate. A odd golden 'E' symbol can be seen on its breast-plate."
+ icon_state = "sweeper"
+ icon_living = "sweeper"
+ maxHealth = 400
+ health = 400
+ armor_legacy_mob = list(
+ "melee" = 20,
+ "bullet" = 30,
+ "laser" = 50,
+ "energy" = 50,
+ "bomb" = 40,
+ "bio" = 100,
+ "rad" = 100
+ )
+ legacy_melee_damage_lower = 20
+ legacy_melee_damage_upper = 20
+ movement_cooldown = 6
+ faction = "enigma"
+ attack_sound = 'sound/enigma/enigma_hit2.ogg'
+ movement_sound = 'sound/enigma/enigma_move2.ogg'
+ icon_scale_x = 1.1
+ icon_scale_y = 1.1
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/kiting
+ projectiletype = /obj/projectile/arc/fragmentation/mortar
+ base_attack_cooldown = 30
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/sweeper/Initialize(mapload)
+ var/shield_type = /obj/item/shield_projector/rectangle{
+ shield_health = 250;
+ max_shield_health = 250;
+ shield_regen_delay = 5 SECONDS;
+ shield_regen_amount = 10;
+ size_x = 1;
+ size_y = 1;
+ always_on = TRUE;
+ }
+ var/obj/item/shield_projector/shield_projector = new shield_type(src)
+ shield_projector.create_shields()
+ return ..()
+
+
+
+// Troopers
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/trooper/basic
+ name = "trooper"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A small robotic unit with a humanoid form. It carries gold markings on its head and face plate, along with shouldering some sort of alien energy weapon."
+ icon_living = "trooper"
+ icon_state = "trooper"
+ maxHealth = 250
+ health = 250
+ armor_legacy_mob = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 20,
+ "energy" = 20,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 5
+ legacy_melee_damage_upper = 5
+ movement_cooldown = 2
+ faction = "enigma"
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/hivebot
+ projectiletype = /obj/projectile/beam/weak
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/trooper/marksman
+ name = "marksman trooper"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "A slightly taller robotic unit with a humanoid form. It has dark green markings on its faceplate, and seems to carry some sort of advanced energy sniper."
+ icon_state = "marksman"
+ icon_living = "marksman"
+ maxHealth = 200
+ health = 200
+ armor_legacy_mob = list(
+ "melee" = 0,
+ "bullet" = 0,
+ "laser" = 50,
+ "energy" = 50,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 5
+ legacy_melee_damage_upper = 5
+ movement_cooldown = 4
+ faction = "enigma"
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/sniper
+ projectiletype = /obj/projectile/beam/xray
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/trooper/magnetic
+ name = "magnetic trooper"
+ icon = 'icons/mob/enigma.dmi'
+ desc = "Another mechanical construct, this one looks more advanced than the others. Equipped with a extensively modified Ion weapon sporting abductor technology, better steer any machinery clear of this. It sports blue markings."
+ icon_state = "magnetic"
+ icon_living = "magnetic"
+ maxHealth = 300
+ health = 300
+ armor_legacy_mob = list(
+ "melee" = 0,
+ "bullet" = 20,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 0,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ legacy_melee_damage_lower = 0
+ legacy_melee_damage_upper = 0
+ movement_cooldown = 2
+ faction = "enigma"
+ movement_sound = 'sound/enigma/enigma_move.ogg'
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/kiting
+ projectiletype = /obj/projectile/ion
+ base_attack_cooldown = 25
+// Boss
+
+
+// VERY POWERFUL! Uses ripped Advanced Dark Gygax code.
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir
+ name = "Mimir"
+ desc = "A heavy exosuit, entirely made up of salvaged Abductor technology and materials. It's one of a kind, and extremely dangerous. Attempting to take it on is thought to be utter suicide due to its wide range of armaments."
+ icon = 'icons/mob/enigma.dmi'
+ movement_sound = 'sound/enigma/enigma_move2.ogg'
+ attack_sound = 'sound/enigma/enigma_hit2.ogg'
+ icon_state = "mimir"
+ icon_living = "mimir"
+ faction = "enigma"
+ icon_scale_x = 1.3
+ icon_scale_y = 1.3
+ movement_cooldown = 3
+ maxHealth = 1000
+ health = 1000
+ armor_legacy_mob = list(
+ "melee" = 50,
+ "bullet" = 50,
+ "laser" = 70,
+ "energy" = 70,
+ "bomb" = 50,
+ "bio" = 100,
+ "rad" = 100
+ )
+
+ special_attack_min_range = 1
+ special_attack_max_range = 7
+ special_attack_cooldown = 10 SECONDS
+ projectiletype = /obj/projectile/beam/cyan/hivebot
+ ai_holder_type = /datum/ai_holder/polaris/simple_mob/intentional/adv_dark_gygax
+ var/obj/effect/overlay/energy_ball/energy_ball = null
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/Initialize(mapload)
+ var/shield_type = /obj/item/shield_projector/rectangle{
+ shield_health = 500;
+ max_shield_health = 500;
+ shield_regen_delay = 5 SECONDS;
+ shield_regen_amount = 30;
+ size_x = 1;
+ size_y = 1;
+ always_on = TRUE;
+ }
+ var/obj/item/shield_projector/shield_projector = new shield_type(src)
+ shield_projector.create_shields()
+ return ..()
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/Destroy()
+ if(energy_ball)
+ energy_ball.stop_orbit()
+ qdel(energy_ball)
+ return ..()
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/do_special_attack(atom/A)
+ . = TRUE // So we don't fire a bolt as well.
+ switch(a_intent)
+ if(INTENT_DISARM) // Side gun
+ electric_defense(A)
+ if(INTENT_HARM) // Rockets
+ launch_rockets(A)
+ if(INTENT_GRAB) // Micro-singulo
+ launch_microsingularity(A)
+
+#define ELECTRIC_ZAP_POWER 20000
+
+// Charges a tesla shot, while emitting a dangerous electric field. The exosuit is immune to electric damage while this is ongoing.
+// It also briefly blinds anyone looking directly at the mech without flash protection.
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/proc/electric_defense(atom/target)
+ set waitfor = FALSE
+
+ // Temporary immunity to shock to avoid killing themselves with their own attack.
+ var/old_shock_resist = shock_resist
+ shock_resist = 1
+
+ // Make the energy ball. This is purely visual since the tesla ball is hyper-deadly.
+ energy_ball = new(loc)
+ energy_ball.adjust_scale(0.5)
+ energy_ball.orbit(src, 32, TRUE, 1 SECOND)
+
+ visible_message(SPAN_WARNING( "\The [src] creates \an [energy_ball] around itself!"))
+
+ playsound(src.loc, 'sound/effects/lightning_chargeup.ogg', 100, 1, extrarange = 30)
+
+ // Shock nearby things that aren't ourselves.
+ for(var/i = 1 to 10)
+ energy_ball.adjust_scale(0.5 + (i/10))
+ energy_ball.set_light(i/2, i/2, "#0000FF")
+ for(var/thing in range(3, src))
+ // This is stupid because mechs are stupid and not mobs.
+ if(isliving(thing))
+ var/mob/living/L = thing
+
+ if(L == src)
+ continue
+ if(L.stat)
+ continue // Otherwise it can get pretty laggy if there's loads of corpses around.
+ L.inflict_shock_damage(i * 2)
+ if(L && L.has_polaris_AI()) // Some mobs delete themselves when dying.
+ L.ai_holder.react_to_attack_polaris(src)
+
+ else if(istype(thing, /obj/vehicle/sealed/mecha))
+ var/obj/vehicle/sealed/mecha/M = thing
+ M.take_damage_legacy(i * 2, "energy") // Mechs don't have a concept for siemens so energy armor check is the best alternative.
+
+ sleep(1 SECOND)
+
+ // Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficent eye protection.
+ visible_message(SPAN_WARNING( "\The [energy_ball] explodes in a flash of light, sending a shock everywhere!"))
+ playsound(src.loc, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30)
+ tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE)
+ for(var/mob/living/L in viewers(src))
+ if(L == src)
+ continue
+ var/dir_towards_us = get_dir(L, src)
+ if(L.dir && L.dir & dir_towards_us)
+ to_chat(L, SPAN_DANGER("The flash of light blinds you briefly."))
+ L.flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = TRUE)
+
+ // Get rid of our energy ball.
+ energy_ball.stop_orbit()
+ qdel(energy_ball)
+
+ sleep(1 SECOND)
+ // Resist resistance to old value.
+ shock_resist = old_shock_resist // Not using initial() in case the value gets modified by an admin or something.
+
+#undef ELECTRIC_ZAP_POWER
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/proc/launch_rockets(atom/target)
+ set waitfor = FALSE
+
+ // Telegraph our next move.
+ Beam(target, icon_state = "sat_beam", time = 3.5 SECONDS, maxdistance = INFINITY)
+ visible_message(SPAN_WARNING( "\The [src] deploys a missile rack!"))
+ playsound(src, 'sound/effects/turret/move1.wav', 50, 1)
+ sleep(0.5 SECONDS)
+
+ for(var/i = 1 to 3)
+ if(target) // Might get deleted in the meantime.
+ var/turf/T = get_turf(target)
+ if(T)
+ visible_message(SPAN_WARNING( "\The [src] fires a rocket into the air!"))
+ playsound(src, 'sound/weapons/rpg.ogg', 70, 1)
+ face_atom(T)
+ var/obj/projectile/arc/explosive_rocket/rocket = new(loc)
+ rocket.old_style_target(T, src)
+ rocket.fire()
+ sleep(1 SECOND)
+
+ visible_message(SPAN_WARNING( "\The [src] retracts the missile rack."))
+ playsound(src, 'sound/effects/turret/move2.wav', 50, 1)
+
+// Arcing rocket projectile that produces a weak explosion when it lands.
+// Shouldn't punch holes in the floor, but will still hurt.
+/obj/projectile/arc/explosive_rocket
+ name = "rocket"
+ icon_state = "mortar"
+
+/obj/projectile/arc/explosive_rocket/on_impact(turf/T)
+ new /obj/effect/explosion(T) // Weak explosions don't produce this on their own, apparently.
+ explosion(T, 0, 0, 2, adminlog = FALSE)
+
+/mob/living/simple_mob/mechanical/hivebot/enigma/mimir/proc/launch_microsingularity(atom/target)
+ var/turf/T = get_turf(target)
+ visible_message(SPAN_WARNING( "\The [src] fires an energetic sphere into the air!"))
+ playsound(src, 'sound/weapons/Laser.ogg', 50, 1)
+ face_atom(T)
+ var/obj/projectile/arc/microsingulo/sphere = new(loc)
+ sphere.old_style_target(T, src)
+ sphere.fire()
+
+/obj/projectile/arc/microsingulo
+ name = "micro singularity"
+ icon_state = "bluespace"
+
+/obj/projectile/arc/microsingulo/on_impact(turf/T)
+ new /obj/effect/temporary_effect/pulse/microsingulo(T)
+
+
+/obj/effect/temporary_effect/pulse/microsingulo
+ name = "micro singularity"
+ desc = "It's sucking everything in!"
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "bhole3"
+ light_range = 4
+ light_power = 5
+ light_color = "#2ECCFA"
+ pulses_remaining = 10
+ pulse_delay = 2 SECONDS
+
+/obj/effect/temporary_effect/pulse/microsingulo/on_pulse()
+ for(var/atom/A in range(pull_radius, src))
+ A.singularity_pull(src, pull_strength)
+// Used to control the mob's positioning based on which special attack it has done.
+// Note that the intent will not change again until the next special attack is about to happen.
+
+// Changes the mob's intent, which controls which special attack is used.
+// INTENT_DISARM causes Electric Defense, INTENT_GRAB causes Micro-Singularity, and INTENT_HARM causes Missile Barrage.
+/datum/ai_holder/polaris/simple_mob/intentional/adv_dark_gygax/pre_special_attack(atom/A)
+ if(isliving(A))
+ var/mob/living/target = A
+
+ // If we're surrounded, Electric Defense will quickly fix that.
+ var/tally = 0
+ var/list/potential_targets = list_targets() // Returns list of mobs and certain objects like mechs and turrets.
+ for(var/atom/movable/AM in potential_targets)
+ if(get_dist(holder, AM) > electric_defense_radius)
+ continue
+ if(!can_attack(AM))
+ continue
+ tally++
+
+ // Should we shock them?
+ if(tally >= electric_defense_threshold || get_dist(target, holder) <= electric_defense_radius)
+ holder.a_intent = INTENT_DISARM
+ return
+
+ // Otherwise they're a fair distance away and we're not getting mobbed up close.
+ // See if we should use missiles or microsingulo.
+ tally = 0 // Let's recycle the var.
+ for(var/atom/movable/AM in potential_targets)
+ if(get_dist(target, AM) > microsingulo_radius) // Deliberately tests distance between target and nearby targets and not the holder.
+ continue
+ if(!can_attack(AM))
+ continue
+ if(AM.anchored) // Microsingulo doesn't do anything to anchored things.
+ tally--
+ else
+ tally++
+
+ // Lots of people means minisingulo would be more useful.
+ if(tally >= microsingulo_threshold)
+ holder.a_intent = INTENT_GRAB
+ else // Otherwise use rockets.
+ holder.a_intent = INTENT_HARM
+
+ else
+ if(get_dist(holder, A) >= rocket_explosive_radius + 1)
+ holder.a_intent = INTENT_HARM // Fire rockets if it's an obj/turf.
+ else
+ holder.a_intent = INTENT_DISARM // Electricity might not work but it's safe up close.
diff --git a/code/modules/projectiles/projectile/beam/beams.dm b/code/modules/projectiles/projectile/beam/beams.dm
index 47ed59a70088..b90a9342d3a7 100644
--- a/code/modules/projectiles/projectile/beam/beams.dm
+++ b/code/modules/projectiles/projectile/beam/beams.dm
@@ -115,6 +115,18 @@
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
+/obj/projectile/beam/weak
+ name = "weak cyan beam"
+ icon_state = "cyan"
+ fire_sound = 'sound/weapons/Taser.ogg'
+ damage = 20
+ light_color = "#74b1c2"
+
+ muzzle_type = /obj/effect/projectile/muzzle/laser_omni
+ tracer_type = /obj/effect/projectile/tracer/laser_omni
+ impact_type = /obj/effect/projectile/impact/laser_omni
+
+
/obj/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
diff --git a/icons/mob/124x124_enigma.dmi b/icons/mob/124x124_enigma.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..475110c4fdf02c8f296a82653049406d64ae34ef
GIT binary patch
literal 640
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
Wk|>;O8vLme;Gvd*X1Tg;$o~L(Cl=HI
literal 0
HcmV?d00001
diff --git a/sound/enigma/enigma_hit.ogg b/sound/enigma/enigma_hit.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..91f1a6a61d9ec35f95c8324e6f90bd12b742a6bd
GIT binary patch
literal 32075
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