diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 42257c51a4d..d0bbaea8b6b 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -49,7 +49,7 @@
if(15)
new /obj/item/nullrod/armblade(src)
if(16)
- new /obj/item/guardiancreator(src)
+ new /obj/item/guardiancreator/hive(src)
if(17)
if(prob(50))
new /obj/item/disk/design_disk/modkit_disc/mob_and_turf_aoe(src)
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index eea2a411d30..dbb8ff45980 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -19,9 +19,9 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
response_harm_continuous = "punches"
response_harm_simple = "punch"
icon = 'icons/mob/guardian.dmi'
- icon_state = "magicOrange"
- icon_living = "magicOrange"
- icon_dead = "magicOrange"
+ icon_state = "magicbase"
+ icon_living = "magicbase"
+ icon_dead = "magicbase"
speed = 0
a_intent = INTENT_HARM
stop_automated_movement = 1
@@ -44,21 +44,25 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
AIStatus = AI_OFF
hud_type = /datum/hud/guardian
dextrous_hud_type = /datum/hud/dextrous/guardian //if we're set to dextrous, account for it.
+ var/mutable_appearance/cooloverlay
+ var/guardiancolor = "#ffffff"
+ var/recolorentiresprite
+ var/theme
var/list/guardian_overlays[GUARDIAN_TOTAL_LAYERS]
var/reset = 0 //if the summoner has reset the guardian already
var/cooldown = 0
var/mob/living/summoner
var/range = 10 //how far from the user the spirit can be
var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
- var/datum/guardianname/namedatum = new/datum/guardianname()
var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!"
var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!"
var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP"
+ var/hive_fluff_string = "The mass seems to be an anomaly, it shouldn't exist... Submit a bug report!"
/mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme)
GLOB.parasites += src
- setthemename(theme)
+ updatetheme(theme)
. = ..()
@@ -81,43 +85,52 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
GLOB.parasites -= src
return ..()
-/mob/living/simple_animal/hostile/guardian/proc/setthemename(pickedtheme) //set the guardian's theme to something cool!
- if(!pickedtheme)
- pickedtheme = pick("magic", "tech", "carp")
- var/list/possible_names = list()
- switch(pickedtheme)
+/mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme
+ if(!theme)
+ theme = pick("magic", "tech", "carp", "hive")
+ switch(theme)//should make it easier to create new stand designs in the future if anyone likes that
if("magic")
- for(var/type in (subtypesof(/datum/guardianname/magic) - namedatum.type))
- possible_names += new type
+ name = "Guardian Spirit"
+ real_name = "Guardian Spirit"
+ bubble_icon = "guardian"
+ icon_state = "magicbase"
+ icon_living = "magicbase"
+ icon_dead = "magicbase"
if("tech")
- for(var/type in (subtypesof(/datum/guardianname/tech) - namedatum.type))
- possible_names += new type
+ name = "Holoparasite"
+ real_name = "Holoparasite"
+ bubble_icon = "holo"
+ icon_state = "techbase"
+ icon_living = "techbase"
+ icon_dead = "techbase"
if("carp")
- for(var/type in (subtypesof(/datum/guardianname/carp) - namedatum.type))
- possible_names += new type
- namedatum = pick(possible_names)
- updatetheme(pickedtheme)
-
-/mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme to whatever its datum is; proc for adminfuckery
- name = "[namedatum.prefixname] [namedatum.suffixcolour]"
- real_name = "[name]"
- icon_living = "[namedatum.parasiteicon]"
- icon_state = "[namedatum.parasiteicon]"
- icon_dead = "[namedatum.parasiteicon]"
- bubble_icon = "[namedatum.bubbleicon]"
-
- if (namedatum.stainself)
- add_atom_colour(namedatum.colour, FIXED_COLOUR_PRIORITY)
-
- //Special case holocarp, because #snowflake code
- if(theme == "carp")
- speak_emote = list("gnashes")
- desc = "A mysterious fish that stands by its charge, ever vigilant."
-
- attack_verb_continuous = "bites"
- attack_verb_simple = "bite"
- attack_sound = 'sound/weapons/bite.ogg'
-
+ name = "Holocarp"
+ real_name = "Holocarp"
+ bubble_icon = "holo"
+ icon_state = "holocarp"
+ icon_living = "holocarp"
+ icon_dead = "holocarp"
+ speak_emote = list("gnashes")
+ desc = "A mysterious fish that stands by its charge, ever vigilant."
+ attack_verb_continuous = "bites"
+ attack_verb_simple = "bite"
+ attack_sound = 'sound/weapons/bite.ogg'
+ recolorentiresprite = TRUE
+ if("hive")
+ name = "Hivelord"
+ real_name = "Hivelord"
+ bubble_icon = "guardian"
+ icon_state = "hivebase"
+ icon_living = "hivebase"
+ icon_dead = "hivebase"
+ speak_emote = list("telepathically cries")
+ desc = "A truly alien creature, it is a mass of unknown organic material, standing by its' owner's side."
+ attack_verb_continuous = "lashes out at"
+ attack_verb_simple = "lash out at"
+ attack_sound = 'sound/weapons/pierce.ogg'
+ if(!recolorentiresprite) //we want this to proc before stand logs in, so the overlay isnt gone for some reason
+ cooloverlay = mutable_appearance(icon, theme)
+ add_overlay(cooloverlay)
/mob/living/simple_animal/hostile/guardian/Login() //if we have a mind, set its name to ours when it logs in
..()
@@ -126,10 +139,37 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(!summoner)
to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.")
return
- to_chat(src, "You are [real_name], bound to serve [summoner.real_name].")
+ to_chat(src, "You are a [real_name], bound to serve [summoner.real_name].")
to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with [summoner.p_them()] privately there.")
to_chat(src, "While personally invincible, you will die if [summoner.real_name] does, and any damage dealt to you will have a portion passed on to [summoner.p_them()] as you feed upon [summoner.p_them()] to sustain yourself.")
to_chat(src, playstyle_string)
+ guardiancustomize()
+
+/mob/living/simple_animal/hostile/guardian/proc/guardiancustomize()
+ guardianrecolor()
+ guardianrename()
+
+/mob/living/simple_animal/hostile/guardian/proc/guardianrecolor()
+ guardiancolor = input(src,"What would you like your color to be?","Choose Your Color","#ffffff") as color|null
+ if(!guardiancolor) //redo proc until we get a color
+ to_chat(src, "Not a valid color, please try again.")
+ guardianrecolor()
+ return
+ if(!recolorentiresprite)
+ cooloverlay.color = guardiancolor
+ cut_overlay(cooloverlay) //we need to get our new color
+ add_overlay(cooloverlay)
+ else
+ add_atom_colour(guardiancolor, FIXED_COLOUR_PRIORITY)
+
+/mob/living/simple_animal/hostile/guardian/proc/guardianrename()
+ var/new_name = sanitize_name(reject_bad_text(stripped_input(src, "What would you like your name to be?", "Choose Your Name", real_name, MAX_NAME_LEN)))
+ if(!new_name) //redo proc until we get a good name
+ to_chat(src, "Not a valid name, please try again.")
+ guardianrename()
+ return
+ visible_message("Your new name [new_name] anchors itself in your mind.")
+ fully_replace_character_name(null, new_name)
/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies
. = ..()
@@ -359,7 +399,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
return
var/preliminary_message = "[input]" //apply basic color/bolding
- var/my_message = "[src]: [preliminary_message]" //add source, color source with the guardian's color
+ var/my_message = "[src]: [preliminary_message]" //add source, color source with the guardian's color
to_chat(summoner, my_message)
var/list/guardians = summoner.hasparasites()
@@ -386,7 +426,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/list/guardians = hasparasites()
for(var/para in guardians)
var/mob/living/simple_animal/hostile/guardian/G = para
- to_chat(G, "[src]: [preliminary_message]" )
+ to_chat(G, "[src]: [preliminary_message]" )
for(var/M in GLOB.dead_mob_list)
var/link = FOLLOW_LINK(M, src)
to_chat(M, "[link] [my_message]")
@@ -417,27 +457,31 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(guardians.len)
var/mob/living/simple_animal/hostile/guardian/G = input(src, "Pick the guardian you wish to reset", "Guardian Reset") as null|anything in sortNames(guardians)
if(G)
- to_chat(src, "You attempt to reset [G.real_name]'s personality...")
+ to_chat(src, "You attempt to reset [G.real_name]'s personality...")
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100)
if(LAZYLEN(candidates))
var/mob/dead/observer/C = pick(candidates)
to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.")
- to_chat(src, "Your [G.real_name] has been successfully reset.")
+ to_chat(src, "Your [G.real_name] has been successfully reset.")
message_admins("[key_name_admin(C)] has taken control of ([ADMIN_LOOKUPFLW(G)])")
G.ghostize(0)
- G.setthemename(G.namedatum.theme) //give it a new color, to show it's a new person
+ G.guardiancustomize() //give it a new color, to show it's a new person
G.key = C.key
G.reset = 1
- switch(G.namedatum.theme)
+ switch(G.theme)
if("tech")
- to_chat(src, "[G.real_name] is now online!")
+ to_chat(src, "[G.real_name] is now online!")
if("magic")
- to_chat(src, "[G.real_name] has been summoned!")
+ to_chat(src, "[G.real_name] has been summoned!")
+ if("carp")
+ to_chat(src, "[G.real_name] has been caught!")
+ if("hive")
+ to_chat(src, "[G.real_name] has been created from the core!")
guardians -= G
if(!guardians.len)
verbs -= /mob/living/proc/guardian_reset
else
- to_chat(src, "There were no ghosts willing to take control of [G.real_name]. Looks like you're stuck with it for now.")
+ to_chat(src, "There were no ghosts willing to take control of [G.real_name]. Looks like you're stuck with it for now.")
else
to_chat(src, "You decide not to reset [guardians.len > 1 ? "any of your guardians":"your guardian"].")
else
@@ -554,6 +598,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
used = FALSE
return
var/mob/living/simple_animal/hostile/guardian/G = new pickedtype(user, theme)
+ G.name = mob_name
G.summoner = user
G.key = key
G.mind.enslave_mind_to_creator(user)
@@ -561,13 +606,16 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
switch(theme)
if("tech")
to_chat(user, "[G.tech_fluff_string]")
- to_chat(user, "[G.real_name] is now online!")
+ to_chat(user, "[G.real_name] is now online!")
if("magic")
to_chat(user, "[G.magic_fluff_string]")
- to_chat(user, "[G.real_name] has been summoned!")
+ to_chat(user, "[G.real_name] has been summoned!")
if("carp")
to_chat(user, "[G.carp_fluff_string]")
- to_chat(user, "[G.real_name] has been caught!")
+ to_chat(user, "[G.real_name] has been caught!")
+ if("hive")
+ to_chat(user, "[G.hive_fluff_string]")
+ to_chat(user, "[G.real_name] has been created from the core!")
user.verbs += /mob/living/proc/guardian_comm
user.verbs += /mob/living/proc/guardian_recall
user.verbs += /mob/living/proc/guardian_reset
@@ -596,6 +644,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
/obj/item/guardiancreator/tech/choose/traitor
possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support", "Gravitokinetic")
+ allowling = FALSE
/obj/item/guardiancreator/tech/choose
random = FALSE
@@ -680,8 +729,21 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up."
ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message."
allowmultiple = TRUE
- allowling = TRUE
- random = TRUE
/obj/item/guardiancreator/carp/choose
random = FALSE
+
+/obj/item/guardiancreator/hive
+ name = "mysterious core"
+ desc = "All that remains of a hivelord. It has a mysterious aura around it..."
+ icon = 'icons/obj/surgery.dmi'
+ icon_state = "roro core 2"
+ theme = "hive"
+ mob_name = "Hivelord"
+ use_message = "You place the core near your heart..."
+ used_message = "This core seems to have decayed and doesn't work anymore..."
+ failure_message = "You couldn't gather any mass with the core, maybe try again later."
+ ling_failure = "Even the dark energies seem to not want to be near your horrific body."
+
+/obj/item/guardiancreator/hive/choose
+ random = FALSE
diff --git a/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm b/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm
deleted file mode 100644
index f2e1b57255a..00000000000
--- a/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm
+++ /dev/null
@@ -1,161 +0,0 @@
-
-/datum/guardianname
- var/prefixname = "Default" //the prefix the guardian uses for its name
- var/suffixcolour = "Name" //the suffix the guardian uses for its name
- var/parasiteicon = "techbase" //the icon of the guardian
- var/bubbleicon = "holo" //the speechbubble icon of the guardian
- var/theme = "tech" //what the actual theme of the guardian is
- var/colour = "#C3C3C3" //what color the guardian's name is in chat and what color is used for effects from the guardian
- var/stainself = 0 //whether to use the color var to literally dye ourself our chosen colour, for lazy spriting
-
-/datum/guardianname/carp
- bubbleicon = "guardian"
- theme = "carp"
- parasiteicon = "holocarp"
- stainself = 1
-
-/datum/guardianname/carp/New()
- prefixname = pick(GLOB.carp_names)
-
-/datum/guardianname/carp/sand
- suffixcolour = "Sand"
- colour = "#C2B280"
-
-/datum/guardianname/carp/seashell
- suffixcolour = "Seashell"
- colour = "#FFF5EE"
-
-/datum/guardianname/carp/coral
- suffixcolour = "Coral"
- colour = "#FF7F50"
-
-/datum/guardianname/carp/salmon
- suffixcolour = "Salmon"
- colour = "#FA8072"
-
-/datum/guardianname/carp/sunset
- suffixcolour = "Sunset"
- colour = "#FAD6A5"
-
-/datum/guardianname/carp/riptide
- suffixcolour = "Riptide"
- colour = "#89D9C8"
-
-/datum/guardianname/carp/seagreen
- suffixcolour = "Sea Green"
- colour = "#2E8B57"
-
-/datum/guardianname/carp/ultramarine
- suffixcolour = "Ultramarine"
- colour = "#3F00FF"
-
-/datum/guardianname/carp/cerulean
- suffixcolour = "Cerulean"
- colour = "#007BA7"
-
-/datum/guardianname/carp/aqua
- suffixcolour = "Aqua"
- colour = "#00FFFF"
-
-/datum/guardianname/carp/paleaqua
- suffixcolour = "Pale Aqua"
- colour = "#BCD4E6"
-
-/datum/guardianname/carp/hookergreen
- suffixcolour = "Hooker Green"
- colour = "#49796B"
-
-/datum/guardianname/magic
- bubbleicon = "guardian"
- theme = "magic"
-
-/datum/guardianname/magic/New()
- prefixname = pick("Aries", "Leo", "Sagittarius", "Taurus", "Virgo", "Capricorn", "Gemini", "Libra", "Aquarius", "Cancer", "Scorpio", "Pisces", "Ophiuchus")
-
-/datum/guardianname/magic/red
- suffixcolour = "Red"
- parasiteicon = "magicRed"
- colour = "#E32114"
-
-/datum/guardianname/magic/pink
- suffixcolour = "Pink"
- parasiteicon = "magicPink"
- colour = "#FB5F9B"
-
-/datum/guardianname/magic/orange
- suffixcolour = "Orange"
- parasiteicon = "magicOrange"
- colour = "#F3CF24"
-
-/datum/guardianname/magic/green
- suffixcolour = "Green"
- parasiteicon = "magicGreen"
- colour = "#A4E836"
-
-/datum/guardianname/magic/blue
- suffixcolour = "Blue"
- parasiteicon = "magicBlue"
- colour = "#78C4DB"
-
-/datum/guardianname/tech/New()
- prefixname = pick("Gallium", "Indium", "Thallium", "Bismuth", "Aluminium", "Mercury", "Iron", "Silver", "Zinc", "Titanium", "Chromium", "Nickel", "Platinum", "Tellurium", "Palladium", "Rhodium", "Cobalt", "Osmium", "Tungsten", "Iridium")
-
-/datum/guardianname/tech/rose
- suffixcolour = "Rose"
- parasiteicon = "techRose"
- colour = "#F62C6B"
-
-/datum/guardianname/tech/peony
- suffixcolour = "Peony"
- parasiteicon = "techPeony"
- colour = "#E54750"
-
-/datum/guardianname/tech/lily
- suffixcolour = "Lily"
- parasiteicon = "techLily"
- colour = "#F6562C"
-
-/datum/guardianname/tech/daisy
- suffixcolour = "Daisy"
- parasiteicon = "techDaisy"
- colour = "#ECCD39"
-
-/datum/guardianname/tech/zinnia
- suffixcolour = "Zinnia"
- parasiteicon = "techZinnia"
- colour = "#89F62C"
-
-/datum/guardianname/tech/ivy
- suffixcolour = "Ivy"
- parasiteicon = "techIvy"
- colour = "#5DF62C"
-
-/datum/guardianname/tech/iris
- suffixcolour = "Iris"
- parasiteicon = "techIris"
- colour = "#2CF6B8"
-
-/datum/guardianname/tech/petunia
- suffixcolour = "Petunia"
- parasiteicon = "techPetunia"
- colour = "#51A9D4"
-
-/datum/guardianname/tech/violet
- suffixcolour = "Violet"
- parasiteicon = "techViolet"
- colour = "#8A347C"
-
-/datum/guardianname/tech/lotus
- suffixcolour = "Lotus"
- parasiteicon = "techLotus"
- colour = "#463546"
-
-/datum/guardianname/tech/lilac
- suffixcolour = "Lilac"
- parasiteicon = "techLilac"
- colour = "#C7A0F6"
-
-/datum/guardianname/tech/orchid
- suffixcolour = "Orchid"
- parasiteicon = "techOrchid"
- colour = "#F62CF5"
diff --git a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
index 026fc1b1c04..44c2ab2e8e1 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/assassin.dm
@@ -10,7 +10,7 @@
magic_fluff_string = "..And draw the Space Ninja, a lethal, invisible assassin."
tech_fluff_string = "Boot sequence complete. Assassin modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's an assassin carp! Just when you thought it was safe to go back to the water... which is unhelpful, because we're in space."
-
+ hive_fluff_string = "The mass seems to be able to attack with stealth causing massive damage."
toggle_button_type = /obj/screen/guardian/ToggleMode/Assassin
var/toggle = FALSE
var/stealthcooldown = 160
diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
index 01e16cb5027..12463e0bc6c 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
@@ -11,6 +11,7 @@
magic_fluff_string = "..And draw the Hunter, an alien master of rapid assault."
tech_fluff_string = "Boot sequence complete. Charge modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's a charger carp, that likes running at people. But it doesn't have any legs..."
+ hive_fluff_string = "The mass seems to have primal senses, rapidly assaulting its' enemies."
var/charging = 0
var/obj/screen/alert/chargealert
diff --git a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
index 7a164f1d6a0..182f45703c0 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/dextrous.dm
@@ -7,6 +7,7 @@
magic_fluff_string = "..And draw the Drone, a dextrous master of construction and repair."
tech_fluff_string = "Boot sequence complete. Dextrous combat modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! You caught one! It can hold stuff in its fins, sort of."
+ hive_fluff_string = "The mass seems to be able to... hold stuff?"
dextrous = TRUE
held_items = list(null, null)
var/obj/item/internal_storage //what we're storing within ourself
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index 840f247a5fb..f1e38dabbb4 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -14,6 +14,7 @@
magic_fluff_string = "..And draw the Scientist, master of explosive death."
tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's an explosive carp! Boom goes the fishy."
+ hive_fluff_string = "The mass seems to generate explosive energy, destroying everything in its' path."
var/bomb_cooldown = 0
var/static/list/boom_signals = list(COMSIG_PARENT_ATTACKBY, COMSIG_ATOM_BUMPED, COMSIG_ATOM_ATTACK_HAND)
@@ -71,6 +72,6 @@
UNREGISTER_BOMB_SIGNALS(A)
/mob/living/simple_animal/hostile/guardian/bomb/proc/display_examine(datum/source, mob/user, text)
- text += "It glows with a strange light!"
+ text += "It glows with a strange light!"
#undef UNREGISTER_BOMB_SIGNALS
diff --git a/code/modules/mob/living/simple_animal/guardian/types/fire.dm b/code/modules/mob/living/simple_animal/guardian/types/fire.dm
index 386c8300528..641e9664e94 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/fire.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/fire.dm
@@ -12,6 +12,7 @@
magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!"
tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! You caught one! OH GOD, EVERYTHING'S ON FIRE. Except you and the fish."
+ hive_fluff_string = "The mass seems to generate lots of energy, causing everything except its' owner to burn to ash."
/mob/living/simple_animal/hostile/guardian/fire/Life()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
index 02f194500cc..768c50e73ee 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
@@ -7,6 +7,7 @@
magic_fluff_string = "..And draw the Singularity, an anomalous force of terror."
tech_fluff_string = "Boot sequence complete. Gravitokinetic modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's a gravitokinetic carp! Now do you understand the gravity of the situation?"
+ hive_fluff_string = "The mass seems to be extremely heavy, and able to relay the heaviness to others."
var/list/gravito_targets = list()
var/gravity_power_range = 10 //how close the stand must stay to the target to keep the heavy gravity
diff --git a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm
index bf626644c6f..62eb1a54300 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/lightning.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/lightning.dm
@@ -16,6 +16,7 @@
magic_fluff_string = "..And draw the Tesla, a shocking, lethal source of power."
tech_fluff_string = "Boot sequence complete. Lightning modules active. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one! It's a lightning carp! Everyone else goes zap zap."
+ hive_fluff_string = "The mass seems to cause lots of thunder strikes around itself."
var/datum/beam/summonerchain
var/list/enemychains = list()
var/successfulshocks = 0
diff --git a/code/modules/mob/living/simple_animal/guardian/types/protector.dm b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
index f736d7784fc..b90e99de0e2 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/protector.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/protector.dm
@@ -8,6 +8,7 @@
magic_fluff_string = "..And draw the Guardian, a stalwart protector that never leaves the side of its charge."
tech_fluff_string = "Boot sequence complete. Protector modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! You caught one! Wait, no... it caught you! The fisher has become the fishy."
+ hive_fluff_string = "The mass seems to be extremely resistant to damage and have a special connection with the owner."
toggle_button_type = /obj/screen/guardian/ToggleMode
var/toggle = FALSE
@@ -25,8 +26,8 @@
. = ..()
if(. > 0 && toggle)
var/image/I = new('icons/effects/effects.dmi', src, "shield-flash", MOB_LAYER+0.01, dir = pick(GLOB.cardinals))
- if(namedatum)
- I.color = namedatum.colour
+ if(guardiancolor)
+ I.color = guardiancolor
flick_overlay_view(I, src, 5)
/mob/living/simple_animal/hostile/guardian/protector/ToggleMode()
@@ -43,8 +44,8 @@
toggle = FALSE
else
var/mutable_appearance/shield_overlay = mutable_appearance('icons/effects/effects.dmi', "shield-grey")
- if(namedatum)
- shield_overlay.color = namedatum.colour
+ if(guardiancolor)
+ shield_overlay.color = guardiancolor
add_overlay(shield_overlay)
melee_damage_lower = 2
melee_damage_upper = 2
@@ -63,7 +64,7 @@
visible_message("\The [src] jumps back to its user.")
Recall(TRUE)
else
- to_chat(summoner, "You moved out of range, and were pulled back! You can only move [range] meters from [real_name]!")
+ to_chat(summoner, "You moved out of range, and were pulled back! You can only move [range] meters from [real_name]!")
summoner.visible_message("\The [summoner] jumps back to [summoner.p_their()] protector.")
new /obj/effect/temp_visual/guardian/phase/out(get_turf(summoner))
summoner.forceMove(get_turf(src))
diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
index a24da3d3d9b..996b21e8eb4 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
@@ -22,6 +22,7 @@
magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat."
tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! Caught one, it's a ranged carp. This fishy can watch people pee in the ocean."
+ hive_fluff_string = "The mass seems to be able to create more mass and also hide at will."
see_invisible = SEE_INVISIBLE_LIVING
see_in_dark = 8
toggle_button_type = /obj/screen/guardian/ToggleMode
@@ -57,8 +58,8 @@
. = ..()
if(istype(., /obj/projectile))
var/obj/projectile/P = .
- if(namedatum)
- P.color = namedatum.colour
+ if(guardiancolor)
+ P.color = guardiancolor
/mob/living/simple_animal/hostile/guardian/ranged/ToggleLight()
var/msg
diff --git a/code/modules/mob/living/simple_animal/guardian/types/standard.dm b/code/modules/mob/living/simple_animal/guardian/types/standard.dm
index 27c528c1ae1..357c593695b 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/standard.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/standard.dm
@@ -9,6 +9,7 @@
magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated."
tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online."
carp_fluff_string = "CARP CARP CARP! You caught one! It's really boring and standard. Better punch some walls to ease the tension."
+ hive_fluff_string = "The mass seems to have immense strength and increased agility."
var/battlecry = "AT"
/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry()
diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm
index 291ae7491c3..4cc09b47598 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/support.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm
@@ -11,6 +11,7 @@
magic_fluff_string = "..And draw the CMO, a potent force of life... and death."
carp_fluff_string = "CARP CARP CARP! You caught a support carp. It's a kleptocarp!"
tech_fluff_string = "Boot sequence complete. Support modules active. Holoparasite swarm online."
+ hive_fluff_string = "The mass seems to have regenerative powers, while also possessing strength."
toggle_button_type = /obj/screen/guardian/ToggleMode
var/obj/structure/receiving_pad/beacon
var/beacon_cooldown = 0
@@ -36,8 +37,8 @@
C.adjustOxyLoss(-5)
C.adjustToxLoss(-5)
var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(C))
- if(namedatum)
- H.color = namedatum.colour
+ if(guardiancolor)
+ H.color = guardiancolor
if(C == summoner)
update_health_hud()
med_hud_set_health()
@@ -100,8 +101,8 @@
/obj/structure/receiving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G)
. = ..()
- if(G.namedatum)
- add_atom_colour(G.namedatum.colour, FIXED_COLOUR_PRIORITY)
+ if(G.guardiancolor)
+ add_atom_colour(G.guardiancolor, FIXED_COLOUR_PRIORITY)
/obj/structure/receiving_pad/proc/disappear()
visible_message("[src] vanishes!")
diff --git a/icons/mob/guardian.dmi b/icons/mob/guardian.dmi
index 3737e47f6ee..cce3aa7f01c 100644
Binary files a/icons/mob/guardian.dmi and b/icons/mob/guardian.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index e2cb3028833..eec2cb65503 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2260,7 +2260,6 @@
#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm"
#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm"
#include "code\modules\mob\living\simple_animal\guardian\guardian.dm"
-#include "code\modules\mob\living\simple_animal\guardian\guardiannaming.dm"
#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm"
#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm"
#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm"