diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm
index a0a4c927d3d9..d4771aa218f4 100644
--- a/code/__DEFINES/xeno.dm
+++ b/code/__DEFINES/xeno.dm
@@ -645,7 +645,8 @@
#define XENO_CASTE_QUEEN "Queen"
#define XENO_CASTE_PREDALIEN "Predalien"
#define XENO_CASTE_HELLHOUND "Hellhound"
-#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND)
+#define XENO_CASTE_PALATINE "Palatine"
+#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_PALATINE)
#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND)
diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm
index 8deadbeba32e..a347291a1894 100644
--- a/code/game/jobs/role_authority.dm
+++ b/code/game/jobs/role_authority.dm
@@ -809,6 +809,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
M = /mob/living/carbon/xenomorph/predalien
if(XENO_CASTE_HELLHOUND)
M = /mob/living/carbon/xenomorph/hellhound
+ if(XENO_CASTE_PALATINE)
+ M = /mob/living/carbon/xenomorph/palatine
return M
diff --git a/code/modules/admin/player_panel/actions/transform.dm b/code/modules/admin/player_panel/actions/transform.dm
index 91a62b1a1d02..3d3704f02c92 100644
--- a/code/modules/admin/player_panel/actions/transform.dm
+++ b/code/modules/admin/player_panel/actions/transform.dm
@@ -137,9 +137,14 @@ GLOBAL_LIST_INIT(pp_transformables, list(
color = "purple"
),
list(
- name = XENO_CASTE_PREDALIEN,
- key = /mob/living/carbon/xenomorph/predalien,
- color = "purple"
+ name = XENO_CASTE_PALATINE,
+ key = /mob/living/carbon/xenomorph/palatine,
+ color = "purple"
+ ),
+ list(
+ name = XENO_CASTE_PREDALIEN,
+ key = /mob/living/carbon/xenomorph/predalien,
+ color = "purple"
)
),
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
index 00a7ceaba97e..0ad58b6b26f6 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
@@ -233,7 +233,7 @@
/**
* Any additional effects to apply to the target
* is called if and only if we actually hit a human target
- */
+*/
/datum/action/xeno_action/activable/pounce/proc/additional_effects(mob/living/L)
return
@@ -442,6 +442,8 @@
/datum/action/xeno_action/activable/xeno_spit/queen_macro //so it doesn't screw other macros up
ability_primacy = XENO_PRIMARY_ACTION_3
+/datum/action/xeno_action/activable/xeno_spit/palatine_macro
+ ability_primacy = XENO_NOT_PRIMARY_ACTION
/datum/action/xeno_action/activable/bombard
name = "Bombard"
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_abilities.dm
new file mode 100644
index 000000000000..cf17a5de106c
--- /dev/null
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_abilities.dm
@@ -0,0 +1,48 @@
+/datum/action/xeno_action/onclick/palatine_roar
+ name = "Roar"
+ action_icon_state = "screech_empower"
+ ability_name = "roar"
+ action_type = XENO_ACTION_CLICK
+ ability_primacy = XENO_PRIMARY_ACTION_1
+ xeno_cooldown = 60 SECONDS
+ plasma_cost = 50
+
+ var/roar_type = "piercing"
+ var/screech_sound_effect = "sound/voice/alien_distantroar_3.ogg"
+ var/bonus_damage_scale = 2.5
+ var/bonus_speed_scale = 0.05
+
+/datum/action/xeno_action/onclick/palatine_change_roar
+ name = "Change Roar"
+ icon_file = 'icons/mob/hud/actions_palatine.dmi'
+ action_icon_state = "screech_shift"
+ ability_name = "change roar"
+ action_type = XENO_ACTION_CLICK
+ ability_primacy = XENO_NOT_PRIMARY_ACTION
+ plasma_cost = 0
+
+/datum/action/xeno_action/onclick/palatine_change_roar/use_ability(atom/A)
+ var/mob/living/carbon/xenomorph/X = owner
+ var/action_icon_result
+
+ if(!X.check_state(1))
+ return
+
+ var/datum/action/xeno_action/onclick/palatine_roar/PR = get_xeno_action_by_type(X, /datum/action/xeno_action/onclick/palatine_roar)
+ if (!istype(PR))
+ return
+
+ if (PR.roar_type == "piercing")
+ action_icon_result = "screech_disrupt"
+ PR.roar_type = "thundering"
+ PR.screech_sound_effect = "sound/voice/4_xeno_roars.ogg"
+ to_chat(X, SPAN_XENOWARNING("You will now disrupt dangers to the hive!"))
+
+ else
+ action_icon_result = "screech_empower"
+ PR.roar_type = "piercing"
+ PR.screech_sound_effect = "sound/voice/alien_distantroar_3.ogg"
+ to_chat(X, SPAN_XENOWARNING("You will now empower your allies with rage!"))
+
+ PR.button.overlays.Cut()
+ PR.button.overlays += image('icons/mob/hud/actions_palatine.dmi', button, action_icon_result)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_powers.dm
new file mode 100644
index 000000000000..ed291474cb24
--- /dev/null
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/palatine/palatine_powers.dm
@@ -0,0 +1,53 @@
+/datum/action/xeno_action/onclick/palatine_roar/use_ability(atom/target)
+ var/mob/living/carbon/xenomorph/xeno = owner
+
+ if (!action_cooldown_check())
+ return
+
+ if (!xeno.check_state())
+ return
+
+ if(!check_and_use_plasma_owner())
+ return
+
+ if(roar_type == "piercing")
+ var/datum/behavior_delegate/palatine_base/behavior = xeno.behavior_delegate
+ if(!istype(behavior))
+ to_chat(xeno, SPAN_ALERTWARNING("Something went wrong with your behavior delegate! Inform forest2001 or a coder!"))
+ return FALSE
+ if(behavior.thirst < 3)
+ to_chat(xeno, SPAN_WARNING("You have not slain enough in the name of the Queen Mother to unleash this power!"))
+ return FALSE
+ xeno.visible_message(SPAN_XENOHIGHDANGER("[xeno] emits a piercing screech!"))
+ xeno.create_shriekwave(color = "#9600d1")
+
+ for(var/mob/living/carbon/carbon in view(7, xeno))
+ if(isxeno(carbon) && xeno.can_not_harm(carbon))
+ new /datum/effects/xeno_buff(carbon, xeno, ttl = (0.5 SECONDS * behavior.thirst + 3 SECONDS), bonus_damage = bonus_damage_scale * behavior.thirst, bonus_speed = (bonus_speed_scale * behavior.thirst))
+
+ for(var/mob/M in view(xeno))
+ if(M && M.client)
+ shake_camera(M, 10, 1)
+ behavior.thirst = max(0, behavior.thirst - 3)
+ to_chat(xeno, SPAN_XENOMINORWARNING("Your bloodlust cools as you unleash your rage."))
+
+ else
+ xeno.visible_message(SPAN_XENOHIGHDANGER("[xeno] emits a thundering roar!"))
+ xeno.create_shriekwave(color = "#925608")
+
+ for(var/mob/living/carbon/carbon in view(7, xeno))
+ if(ishuman(carbon))
+ var/mob/living/carbon/human/human = carbon
+ human.disable_special_items()
+
+ var/obj/item/clothing/gloves/yautja/hunter/YG = locate(/obj/item/clothing/gloves/yautja/hunter) in human
+ if(isyautja(human) && YG)
+ if(YG.cloaked)
+ YG.decloak(human)
+
+ YG.cloak_timer = xeno_cooldown * 0.1
+ playsound(xeno.loc, screech_sound_effect, 75, 0, status = 0)
+ apply_cooldown()
+
+ . = ..()
+ return
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm
index d3865872f0ab..47267c4b91ff 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm
@@ -131,6 +131,9 @@
var/max_distance = 7
var/windup = 8
+/datum/action/xeno_action/activable/prae_abduct/palatine_macro
+ ability_primacy = XENO_NOT_PRIMARY_ACTION
+
/datum/action/xeno_action/activable/oppressor_punch
name = "Dislocate"
action_icon_state = "punch"
@@ -307,6 +310,8 @@
var/curr_effect_type = WARDEN_HEAL_HP
+/datum/action/xeno_action/activable/warden_heal/palatine_macro
+ ability_primacy = XENO_PRIMARY_ACTION_4
/datum/action/xeno_action/onclick/prae_switch_heal_type
name = "Toggle Aid Type"
@@ -360,3 +365,6 @@
var/max_distance = 7
var/windup = 6
var/retrieve_cost = 100
+
+/datum/action/xeno_action/activable/prae_retrieve/palatine_macro
+ ability_primacy = XENO_PRIMARY_ACTION_3
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_abilities.dm
index aa98f063b8d5..db9d4432e46f 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_abilities.dm
@@ -12,7 +12,8 @@
/datum/action/xeno_action/onclick/predalien_roar
name = "Roar"
- action_icon_state = "screech"
+ icon_file = 'icons/mob/hud/actions_palatine.dmi'
+ action_icon_state = "screech_disrupt"
ability_name = "roar"
action_type = XENO_ACTION_CLICK
ability_primacy = XENO_PRIMARY_ACTION_2
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/mutated_flight.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/mutated_flight.dm
new file mode 100644
index 000000000000..30dd717bc89b
--- /dev/null
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/mutated_flight.dm
@@ -0,0 +1,53 @@
+/datum/action/xeno_action/activable/flight
+ name = "Flight"
+ action_icon_state = "flight"
+ plasma_cost = 200
+ xeno_cooldown = 1 MINUTES
+ var/max_distance = 5
+ var/speed = 5
+
+/datum/action/xeno_action/activable/flight/can_use_action()
+ . = ..()
+ if(!.)
+ return FALSE
+
+/datum/action/xeno_action/activable/flight/use_ability(atom/target)
+ if(!..())
+ return FALSE
+ var/mob/living/carbon/xenomorph/xeno = owner
+ if(isstorage(target.loc) || xeno.contains(target) || istype(target, /atom/movable/screen)) return FALSE
+
+ if(!xeno.check_plasma(plasma_cost))
+ to_chat(owner, SPAN_XENOWARNING("You have insufficient plasma to do this."))
+ return FALSE
+ if(target.z != xeno.z)
+ to_chat(owner, SPAN_XENOWARNING("Not even you can fly that far!"))
+ return FALSE
+ apply_cooldown()
+
+ use_plasma_owner()
+ playsound(owner, 'sound/effects/wingflap.ogg')
+ owner.visible_message(SPAN_DANGER("\The [src] spreads their wings and leaps into the air!"), \
+ SPAN_DANGER("You spread your wings and leap into the air!"), null, 5, CHAT_TYPE_XENO_COMBAT)
+
+ var/turf/t_turf = get_turf(target)
+ var/obj/effect/warning/hover/warning = new(t_turf)
+ calculate_warning_turf(warning, owner, t_turf)
+
+ //has sleep
+
+ RegisterSignal(owner, COMSIG_CLIENT_MOB_MOVE, PROC_REF(disable_flying_movement))
+ owner.throw_atom(t_turf, max_distance, speed, launch_type = HIGH_LAUNCH)
+ UnregisterSignal(owner, COMSIG_CLIENT_MOB_MOVE)
+ qdel(warning)
+
+/datum/action/xeno_action/activable/flight/proc/disable_flying_movement(mob/living/carbon/human/user)
+ SIGNAL_HANDLER
+ return COMPONENT_OVERRIDE_MOVE
+
+/datum/action/xeno_action/activable/flight/proc/calculate_warning_turf(obj/effect/warning/warning, mob/living/user, turf/t_turf)
+ var/t_dist = get_dist(user, t_turf)
+ if(!(t_dist > max_distance))
+ return
+ var/list/turf/path = getline2(user, t_turf, FALSE)
+ warning.forceMove(path[max_distance])
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Palatine.dm b/code/modules/mob/living/carbon/xenomorph/castes/Palatine.dm
new file mode 100644
index 000000000000..0cce09d3f194
--- /dev/null
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Palatine.dm
@@ -0,0 +1,93 @@
+/datum/caste_datum/palatine
+ caste_type = XENO_CASTE_PALATINE
+ tier = 3
+
+ melee_damage_lower = XENO_DAMAGE_TIER_7
+ melee_damage_upper = XENO_DAMAGE_TIER_8
+ melee_vehicle_damage = XENO_DAMAGE_TIER_9
+ max_health = XENO_HEALTH_IMMORTAL
+ plasma_gain = XENO_PLASMA_GAIN_TIER_8
+ plasma_max = XENO_PLASMA_TIER_10
+ xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_6
+ armor_deflection = XENO_ARMOR_TIER_5
+ evasion = XENO_EVASION_NONE
+ speed = XENO_SPEED_TIER_5
+
+ evolution_allowed = FALSE
+ deevolves_to = list()
+ caste_desc = "The guard of the Queen Mother"
+ spit_types = list(/datum/ammo/xeno/toxin/queen, /datum/ammo/xeno/acid/spatter)
+ acid_level = 3
+
+ aura_strength = 3
+ spit_delay = 20
+
+ tackle_min = 2
+ tackle_max = 5
+ tackle_chance = 45
+
+ behavior_delegate_type = /datum/behavior_delegate/palatine_base
+ minimum_evolve_time = 0
+ royal_caste = TRUE
+
+/mob/living/carbon/xenomorph/palatine
+ caste_type = XENO_CASTE_PALATINE
+ name = XENO_CASTE_PALATINE
+ desc = "What god did you anger..."
+ icon_size = 64
+ icon_state = "Normal Palatine Walking"
+ plasma_types = list(PLASMA_ROYAL,PLASMA_CHITIN,PLASMA_PHEROMONE,PLASMA_NEUROTOXIN)
+ pixel_x = -16
+ old_x = -16
+ mob_size = MOB_SIZE_BIG
+ drag_delay = 6 //pulling a big dead xeno is hard
+ tier = 3
+ mutation_type = "Normal"
+ counts_for_slots = FALSE
+ claw_type = CLAW_TYPE_VERY_SHARP
+
+ base_actions = list(
+ /datum/action/xeno_action/onclick/xeno_resting,
+ /datum/action/xeno_action/onclick/regurgitate,
+ /datum/action/xeno_action/watch_xeno,
+ /datum/action/xeno_action/activable/tail_stab,
+ /datum/action/xeno_action/activable/corrosive_acid/strong,
+ /datum/action/xeno_action/activable/xeno_spit/palatine_macro,
+ /datum/action/xeno_action/onclick/shift_spits,
+ /datum/action/xeno_action/activable/spray_acid/base_prae_spray_acid,
+ /datum/action/xeno_action/onclick/palatine_roar,//Mac1
+ /datum/action/xeno_action/onclick/palatine_change_roar,
+ /datum/action/xeno_action/activable/prae_abduct/palatine_macro,//Mac2
+ /datum/action/xeno_action/activable/prae_retrieve,//Mac3
+ /datum/action/xeno_action/activable/warden_heal,//Mac4
+ /datum/action/xeno_action/onclick/prae_switch_heal_type,//Mac5
+ /datum/action/xeno_action/onclick/emit_pheromones,
+ )
+
+ icon_xeno = 'icons/mob/xenos/palatine.dmi'
+ icon_xenonid = 'icons/mob/xenos/palatine.dmi'
+
+/datum/behavior_delegate/palatine_base
+ name = "Base Palatine Behavior Delegate"
+
+ var/thirst = 0
+ var/max_thirst = 10
+
+/datum/behavior_delegate/palatine_base/append_to_stat()
+ . = list()
+ . += "Bloodthirst: [thirst]/[max_thirst]"
+
+/datum/behavior_delegate/palatine_base/on_kill_mob(mob/M)
+ . = ..()
+
+ thirst = min(thirst + 1, max_thirst)
+
+/datum/behavior_delegate/palatine_base/melee_attack_modify_damage(original_damage, mob/living/carbon/target)
+ if(!iscarbonsizehuman(target))
+ return
+
+ var/size = target.mob_size
+ var/multiplier = thirst - size
+
+
+ return original_damage + (2.5 * multiplier)
diff --git a/code/modules/mob/living/carbon/xenomorph/say.dm b/code/modules/mob/living/carbon/xenomorph/say.dm
index a2413b766505..f244bd3daf4f 100644
--- a/code/modules/mob/living/carbon/xenomorph/say.dm
+++ b/code/modules/mob/living/carbon/xenomorph/say.dm
@@ -138,6 +138,8 @@
ghostrend = SPAN_XENOQUEEN("Hivemind, [src.name][track] hisses, '[message]'")
else if(istype(X) && IS_XENO_LEADER(X))
ghostrend = SPAN_XENOLEADER("Hivemind, Leader [src.name][track] hisses, '[message]'")
+ else if(istype(X, /mob/living/carbon/xenomorph/palatine))
+ ghostrend = SPAN_XENOLEADER("Hivemind, [src.name][track] hisses, '[message]'")
else
ghostrend = SPAN_XENO("Hivemind, [src.name][track] hisses, '[message]'")
S.show_message(ghostrend, SHOW_MESSAGE_AUDIBLE)
@@ -150,6 +152,8 @@
rendered = SPAN_XENOQUEEN("Hivemind, [src.name][overwatch_insert] hisses, '[message]'")
else if(istype(X) && IS_XENO_LEADER(X))
rendered = SPAN_XENOLEADER("Hivemind, Leader [src.name][overwatch_insert] hisses, '[message]'")
+ else if(istype(X, /mob/living/carbon/xenomorph/palatine))
+ rendered = SPAN_XENOLEADER("Hivemind, [src.name][overwatch_insert] hisses, '[message]'")
else
rendered = SPAN_XENO("Hivemind, [src.name][overwatch_insert] hisses, '[message]'")
diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
index 810c8f58666b..de386c30c06a 100644
--- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
+++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
@@ -616,7 +616,7 @@
// Every caste is manually defined here so you get
var/list/xeno_counts = list(
// Yes, Queen is technically considered to be tier 0
- list(XENO_CASTE_LARVA = 0, "Queen" = 0),
+ list(XENO_CASTE_LARVA = 0, XENO_CASTE_QUEEN = 0),
list(XENO_CASTE_DRONE = 0, XENO_CASTE_RUNNER = 0, XENO_CASTE_SENTINEL = 0, XENO_CASTE_DEFENDER = 0),
list(XENO_CASTE_HIVELORD = 0, XENO_CASTE_BURROWER = 0, XENO_CASTE_CARRIER = 0, XENO_CASTE_LURKER = 0, XENO_CASTE_SPITTER = 0, XENO_CASTE_WARRIOR = 0),
list(XENO_CASTE_BOILER = 0, XENO_CASTE_CRUSHER = 0, XENO_CASTE_PRAETORIAN = 0, XENO_CASTE_RAVAGER = 0)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 6dda93e4d9c2..a535526aa5b9 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -171,6 +171,8 @@
new_xeno = new /mob/living/carbon/xenomorph/crusher(loc)
if(XENO_CASTE_PRAETORIAN)
new_xeno = new /mob/living/carbon/xenomorph/praetorian(loc)
+ if(XENO_CASTE_PALATINE)
+ new_xeno = new /mob/living/carbon/xenomorph/palatine(loc)
if(XENO_CASTE_QUEEN)
new_xeno = new /mob/living/carbon/xenomorph/queen(loc)
if(XENO_CASTE_HELLHOUND)
diff --git a/colonialmarines.dme b/colonialmarines.dme
index 6728b6849445..943164fd97bf 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -1966,11 +1966,14 @@
#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_abilities.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_macros.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\lurker\lurker_powers.dm"
+#include "code\modules\mob\living\carbon\xenomorph\abilities\palatine\palatine_abilities.dm"
+#include "code\modules\mob\living\carbon\xenomorph\abilities\palatine\palatine_powers.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_abilities.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_macros.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\praetorian\praetorian_powers.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\predalien\predalien_abilities.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\predalien\predalien_powers.dm"
+#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\mutated_flight.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_abilities.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_macros.dm"
#include "code\modules\mob\living\carbon\xenomorph\abilities\queen\queen_powers.dm"
@@ -2001,6 +2004,7 @@
#include "code\modules\mob\living\carbon\xenomorph\castes\Larva.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\lesser_drone.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Lurker.dm"
+#include "code\modules\mob\living\carbon\xenomorph\castes\Palatine.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Praetorian.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Predalien.dm"
#include "code\modules\mob\living\carbon\xenomorph\castes\Queen.dm"
diff --git a/icons/mob/hud/actions_palatine.dmi b/icons/mob/hud/actions_palatine.dmi
new file mode 100644
index 000000000000..11a599af24b5
Binary files /dev/null and b/icons/mob/hud/actions_palatine.dmi differ
diff --git a/icons/mob/hud/actions_xeno.dmi b/icons/mob/hud/actions_xeno.dmi
index 6a48235a4f3b..9e39236b9421 100644
Binary files a/icons/mob/hud/actions_xeno.dmi and b/icons/mob/hud/actions_xeno.dmi differ
diff --git a/icons/mob/hud/hud.dmi b/icons/mob/hud/hud.dmi
index c9e4c0c6c23d..23ebd7e36d34 100644
Binary files a/icons/mob/hud/hud.dmi and b/icons/mob/hud/hud.dmi differ
diff --git a/icons/mob/xenos/palatine.dmi b/icons/mob/xenos/palatine.dmi
new file mode 100644
index 000000000000..4448227b62eb
Binary files /dev/null and b/icons/mob/xenos/palatine.dmi differ
diff --git a/icons/mob/xenos/wounds.dmi b/icons/mob/xenos/wounds.dmi
index bf7d573b73a9..0fb5081a9118 100644
Binary files a/icons/mob/xenos/wounds.dmi and b/icons/mob/xenos/wounds.dmi differ
diff --git a/sound/effects/wingflap.ogg b/sound/effects/wingflap.ogg
new file mode 100644
index 000000000000..2a63afa616f3
Binary files /dev/null and b/sound/effects/wingflap.ogg differ