diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm
index ae87b1c624e..1d6ecb049d5 100644
--- a/code/__defines/mobs_vr.dm
+++ b/code/__defines/mobs_vr.dm
@@ -36,6 +36,7 @@
#define SPECIES_CUSTOM "Custom Species"
#define SPECIES_TAJARAN "Tajara"
#define SPECIES_LLEILL "Lleill"
+#define SPECIES_HANNER "Hanner"
//monkey species
#define SPECIES_MONKEY_AKULA "Sobaka"
#define SPECIES_MONKEY_NEVREAN "Sparra"
diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm
index 5f8c18a0af3..1d52205ed0e 100644
--- a/code/game/objects/random/maintenance.dm
+++ b/code/game/objects/random/maintenance.dm
@@ -116,7 +116,8 @@ something, make sure it's not in one of the other lists.*/
prob(1);/obj/item/pizzavoucher,
prob(5);/obj/item/weapon/material/fishing_net/butterfly_net,
prob(2);/obj/item/weapon/cracker,
- prob(5);/obj/random/mega_nukies
+ prob(5);/obj/random/mega_nukies,
+ prob(1);/obj/random/potion_ingredient/plus
/* VOREStation Edit End */
)
diff --git a/code/game/objects/random/misc_vr.dm b/code/game/objects/random/misc_vr.dm
index b1781eb66ef..f8554a4f4ff 100644
--- a/code/game/objects/random/misc_vr.dm
+++ b/code/game/objects/random/misc_vr.dm
@@ -298,6 +298,41 @@
prob(1);/obj/item/weapon/potion_material/folded_dark
)
+/obj/random/potion_ingredient/plus
+ name = "random better potion ingredient"
+ desc = "A random potion."
+ icon_state = "ingredient_plus"
+ spawn_nothing_percentage = 0
+
+/obj/random/potion_ingredient/plus/item_to_spawn()
+ return pick(prob(20);/obj/item/weapon/potion_material/blood_ruby,
+ prob(4);/obj/item/weapon/potion_material/ruby_eye,
+ prob(20);/obj/item/weapon/potion_material/golden_scale,
+ prob(20);/obj/item/weapon/potion_material/frozen_dew,
+ prob(20);/obj/item/weapon/potion_material/living_coral,
+ prob(8);/obj/item/weapon/potion_material/rare_horn,
+ prob(10);/obj/item/weapon/potion_material/moldy_bread,
+ prob(10);/obj/item/weapon/potion_material/glowing_gem,
+ prob(10);/obj/item/weapon/potion_material/giant_toe,
+ prob(4);/obj/item/weapon/potion_material/flesh_of_the_stars,
+ prob(4);/obj/item/weapon/potion_material/spinning_poppy,
+ prob(4);/obj/item/weapon/potion_material/salt_mage,
+ prob(20);/obj/item/weapon/potion_material/golden_grapes,
+ prob(10);/obj/item/weapon/potion_material/fairy_house,
+ prob(10);/obj/item/weapon/potion_material/thorny_bulb,
+ prob(10);/obj/item/weapon/potion_material/ancient_egg,
+ prob(10);/obj/item/weapon/potion_material/crown_stem,
+ prob(4);/obj/item/weapon/potion_material/red_ingot,
+ prob(4);/obj/item/weapon/potion_material/soft_diamond,
+ prob(4);/obj/item/weapon/potion_material/solid_mist,
+ prob(2);/obj/item/weapon/potion_material/spider_leg,
+ prob(2);/obj/item/weapon/potion_material/folded_dark,
+ prob(1);/obj/item/weapon/potion_material/glamour_transparent,
+ prob(1);/obj/item/weapon/potion_material/glamour_shrinking,
+ prob(1);/obj/item/weapon/potion_material/glamour_twinkling,
+ prob(1);/obj/item/weapon/potion_material/glamour_shard
+ )
+
/obj/random/potion_base
name = "random potion base"
desc = "A random potion base."
diff --git a/code/modules/mob/living/carbon/human/human_species_vr.dm b/code/modules/mob/living/carbon/human/human_species_vr.dm
index dd3134420a6..d1d5bdab118 100644
--- a/code/modules/mob/living/carbon/human/human_species_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_species_vr.dm
@@ -34,3 +34,6 @@
/mob/living/carbon/human/lleill/New(var/new_loc)
..(new_loc, SPECIES_LLEILL)
+
+/mob/living/carbon/human/hanner/New(var/new_loc)
+ ..(new_loc, SPECIES_HANNER)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/lleill/hanner.dm b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
new file mode 100644
index 00000000000..40d0f89cd20
--- /dev/null
+++ b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
@@ -0,0 +1,98 @@
+/datum/species/shapeshifter/hanner
+
+ name = SPECIES_HANNER
+ name_plural = "Hanner"
+ blurb = "Hanner are a sub-species of almost any other sapient species, \
+ they are the offspring of one Lleill and any other non-lleill species. They are natural born fleshy \
+ shapeshifters, able to take the appearance of almost any humanoid form. Hanner also have some limited \
+ transmutation and energy sharing abilities not unlike they lleill, but considerably more limited. Unlike \
+ other shapeshifter species, such as proteans or prometheans, Hanner have a typical humanoid set of organs and can not regenerate."
+
+ flags = NO_SCAN
+ color_mult = 1
+ appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
+ spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
+ health_hud_intensity = 2
+ num_alternate_languages = 3
+ language = LANGUAGE_LLEILL
+ species_language = LANGUAGE_LLEILL
+ secondary_langs = list(LANGUAGE_LLEILL, LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen.
+
+ min_age = 18
+ max_age = 200
+
+ //Specific abilities
+
+ burn_mod = 0.8 //Slightly resistant to fire
+ pain_mod = 0.8 //Whilst not resistant to brute or stunning, they are slightly resistant to pain.
+
+ hazard_high_pressure = HAZARD_HIGH_PRESSURE + 700 // Dangerously high pressure.
+ warning_high_pressure = WARNING_HIGH_PRESSURE + 700 // High pressure warning.
+ warning_low_pressure = 100 // Low pressure warning.
+ hazard_low_pressure = 50 // Dangerously low pressure.
+
+ minimum_breath_pressure = 0 //Doesn't gasp and lungs shouldn't pop
+
+ cold_level_1 = 150 //Adapt well to temperature changes
+ cold_level_2 = 100
+ cold_level_3 = 50
+
+ heat_level_1 = 500 //quite resiliant to heat
+ heat_level_2 = 600
+ heat_level_3 = 700
+
+ chem_strength_alcohol = 0.8 //Handle alcohol slightly better
+
+ metabolic_rate = 0.4 //Major downside of the Hanner, they metabolise drugs much slower, meaning that they are difficult to treat with medicine alone.
+ bloodloss_rate = 1.2 //They bleed out faster too
+
+ lleill_energy = 100
+ lleill_energy_max = 100
+
+ genders = list(MALE, FEMALE, NEUTER, PLURAL)
+
+ has_organ = list(
+ O_HEART = /obj/item/organ/internal/heart,
+ O_LUNGS = /obj/item/organ/internal/lungs,
+ O_VOICE = /obj/item/organ/internal/voicebox,
+ O_LIVER = /obj/item/organ/internal/liver,
+ O_KIDNEYS = /obj/item/organ/internal/kidneys,
+ O_BRAIN = /obj/item/organ/internal/brain,
+ O_APPENDIX = /obj/item/organ/internal/appendix,
+ O_SPLEEN = /obj/item/organ/internal/spleen,
+ O_EYES = /obj/item/organ/internal/eyes,
+ O_STOMACH = /obj/item/organ/internal/stomach,
+ O_INTESTINE = /obj/item/organ/internal/intestine
+ )
+
+ has_limbs = list(
+ BP_TORSO = list("path" = /obj/item/organ/external/chest),
+ BP_GROIN = list("path" = /obj/item/organ/external/groin),
+ BP_HEAD = list("path" = /obj/item/organ/external/head),
+ BP_L_ARM = list("path" = /obj/item/organ/external/arm),
+ BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
+ BP_L_LEG = list("path" = /obj/item/organ/external/leg),
+ BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
+ BP_L_HAND = list("path" = /obj/item/organ/external/hand),
+ BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
+ BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
+ BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
+ )
+
+ inherent_verbs = list(
+ /mob/living/carbon/human/proc/shapeshifter_select_shape,
+ /mob/living/carbon/human/proc/shapeshifter_select_colour,
+ /mob/living/carbon/human/proc/shapeshifter_select_hair,
+ /mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
+ /mob/living/carbon/human/proc/shapeshifter_select_gender,
+ /mob/living/carbon/human/proc/shapeshifter_select_wings,
+ /mob/living/carbon/human/proc/shapeshifter_select_tail,
+ /mob/living/carbon/human/proc/shapeshifter_select_ears,
+ /mob/living/proc/set_size,
+ /mob/living/carbon/human/proc/lleill_contact,
+ /mob/living/carbon/human/proc/lleill_alchemy,
+ /mob/living/carbon/human/proc/lleill_beast_form
+ )
+
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
+
diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
index 5ead8ebb51d..b03c32d00f9 100644
--- a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
+++ b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
@@ -33,9 +33,6 @@
//Specific abilities
- var/lleill_energy = 200
- var/lleill_energy_max = 200
-
var/ring_cooldown = 0
darksight = 10 //Can see in dark
@@ -90,7 +87,8 @@
/mob/living/carbon/human/proc/lleill_transmute,
/mob/living/carbon/human/proc/lleill_rings,
/mob/living/carbon/human/proc/lleill_contact,
- /mob/living/carbon/human/proc/lleill_alchemy)
+ /mob/living/carbon/human/proc/lleill_alchemy,
+ /mob/living/carbon/human/proc/lleill_beast_form)
//organs, going with just the basics for now
diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill_abilities.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill_abilities.dm
index c2f816e9dab..833f19b0182 100644
--- a/code/modules/mob/living/carbon/human/species/lleill/lleill_abilities.dm
+++ b/code/modules/mob/living/carbon/human/species/lleill/lleill_abilities.dm
@@ -15,25 +15,19 @@
var/energy_cost = 75
- var/datum/species/lleill/LL = species
-
- if(!istype(LL))
- to_chat(src, "Only a lleill can use that!")
- return
-
if(stat)
to_chat(src, "You can't go invisible when weakened like this.")
return
if(!cloaked)
- if(LL.lleill_energy < energy_cost)
+ if(species.lleill_energy < energy_cost)
to_chat(src, "You do not have enough energy to do that!")
return
cloak()
block_hud = 1
hud_updateflag = 1
to_chat(src, "Your fur shimmers and shifts around you, hiding you from the naked eye.")
- LL.lleill_energy -= energy_cost
+ species.lleill_energy -= energy_cost
else
uncloak()
block_hud = 0
@@ -115,13 +109,7 @@
var/energy_cost = 50
- var/datum/species/lleill/LL = species
-
- if(!istype(LL))
- to_chat(src, "Only a lleill can use that!")
- return
-
- if(LL.lleill_energy < energy_cost)
+ if(species.lleill_energy < energy_cost)
to_chat(src, "You do not have enough energy to do that!")
return
@@ -155,7 +143,7 @@
var/spawnloc = get_turf(usr)
var/obj/item/N = new transmute_product(spawnloc)
put_in_active_hand(N)
- LL.lleill_energy -= energy_cost
+ species.lleill_energy -= energy_cost
/mob/living/carbon/human/proc/lleill_rings()
set name = "Place/Use Rings"
@@ -166,22 +154,17 @@
var/energy_cost_spawn = (25 * energy_cost_multi)
var/energy_cost_tele = 50
- var/datum/species/lleill/LL = species
-
- if(!istype(LL))
- to_chat(src, "Only a lleill can use that!")
- return
if(stat)
to_chat(src, "You can't go do that when weakened like this.")
return
if(buckled)
to_chat(src,"You can't do that when restrained.")
- var/r_action = tgui_alert(src, "What would you like to do with your rings? You currently have [LL.lleill_energy] energy remaining.", "Actions", list("Spawn New Ring ([energy_cost_spawn])", "Teleport to Ring ([energy_cost_tele])", "Cancel"))
+ var/r_action = tgui_alert(src, "What would you like to do with your rings? You currently have [species.lleill_energy] energy remaining.", "Actions", list("Spawn New Ring ([energy_cost_spawn])", "Teleport to Ring ([energy_cost_tele])", "Cancel"))
if(!r_action || r_action == "Cancel")
return
if(findtext(r_action,"Spawn New Ring"))
- if(LL.lleill_energy < energy_cost_spawn)
+ if(species.lleill_energy < energy_cost_spawn)
to_chat(src, "You do not have enough energy to do that!")
return
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
@@ -192,9 +175,9 @@
var/obj/structure/glamour_ring/R = new(spawnloc)
R.connected_mob = src
src.teleporters |= R
- LL.lleill_energy -= energy_cost_spawn
+ species.lleill_energy -= energy_cost_spawn
if(findtext(r_action,"Teleport to Ring"))
- if(LL.lleill_energy < energy_cost_tele)
+ if(species.lleill_energy < energy_cost_tele)
to_chat(src, "You do not have enough energy to do that!")
return
if(!src.teleporters.len)
@@ -214,7 +197,7 @@
var/S = get_turf(R)
src.forceMove(S)
- LL.lleill_energy -= energy_cost_tele
+ species.lleill_energy -= energy_cost_tele
spk.start()
playsound(S, 'sound/effects/phasein.ogg', 25, 1)
@@ -238,7 +221,6 @@
set category = "Abilities"
if(!ishuman(src))
return //If you're not a human you don't have permission to do this.
- var/datum/species/lleill/LL = species
var/list/contact_options = list(
"Kiss (lips)",
@@ -252,9 +234,6 @@
"Custom"
)
- if(!istype(LL))
- to_chat(src, "Only a lleill can use that!")
- return
if(stat)
to_chat(src, "You can't go do that when weakened like this.")
return
@@ -313,7 +292,7 @@
else
src.visible_message("\The [src] and \the [chosen_target] break contact before energy has been transferred.")
src.visible_message("\The [src] and \the [chosen_target] complete their contact.")
- LL.lleill_energy = LL.lleill_energy_max
+ species.lleill_energy = species.lleill_energy_max
nutrition += (chosen_target.nutrition / 2)
to_chat(src, "You feel revitalised.")
chosen_target.tiredness += 70
@@ -329,13 +308,8 @@
var/energy_cost = 25
- var/datum/species/lleill/LL = species
- if(!istype(LL))
- to_chat(src, "Only a lleill can use that!")
- return
-
- if(LL.lleill_energy < energy_cost)
+ if(species.lleill_energy < energy_cost)
to_chat(src, "You do not have enough energy to do that!")
return
@@ -367,4 +341,147 @@
var/spawnloc = get_turf(usr)
var/obj/item/N = new transmute_product(spawnloc)
put_in_active_hand(N)
- LL.lleill_energy -= energy_cost
+ species.lleill_energy -= energy_cost
+
+/mob/living/carbon/human/proc/lleill_beast_form()
+ set name = "Beast Form (100)"
+ set desc = "Take the form of a non-humanoid creature."
+ set category = "Abilities"
+ if(!ishuman(src))
+ return //If you're not a human you don't have permission to do this.
+
+ var/energy_cost = 100
+
+ if(species.lleill_energy < energy_cost)
+ to_chat(src, "You do not have enough energy to do that!")
+ return
+
+ var/list/beast_options = list("Rabbit" = /mob/living/simple_mob/vore/rabbit,
+ "Red Panda" = /mob/living/simple_mob/vore/redpanda,
+ "Fennec" = /mob/living/simple_mob/vore/fennec,
+ "Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
+ "Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
+ "Wolf" = /mob/living/simple_mob/vore/wolf,
+ "Panther" = /mob/living/simple_mob/vore/aggressive/panther,
+ "Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
+ "Otie" = /mob/living/simple_mob/vore/otie,
+ "Squirrel" = /mob/living/simple_mob/vore/squirrel,
+ "Raptor" = /mob/living/simple_mob/vore/raptor,
+ "Giant Bat" = /mob/living/simple_mob/vore/bat,
+ "Horse" = /mob/living/simple_mob/vore/horse,
+ "Horse (Big)" = /mob/living/simple_mob/vore/horse/big,
+ "Kelpie" = /mob/living/simple_mob/vore/horse/kelpie
+ )
+
+ var/chosen_beast = tgui_input_list(src, "Which form would you like to take?", "Choose Beast Form", beast_options)
+
+ if(!chosen_beast)
+ return
+
+ if(species.lleill_energy < energy_cost)
+ to_chat(src, "You do not have enough energy to do that!")
+ return
+
+ var/mob/living/M = src
+ log_debug("polymorph start")
+ if(!istype(M))
+ log_debug("polymorph istype")
+ return
+
+ visible_message("\The [src] begins significantly shifting their form.")
+ if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
+ visible_message("\The [src] ceases shifting their form.")
+ return 0
+
+
+
+ log_debug("polymorph else")
+ if(M.stat == DEAD) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
+ log_debug("polymorph dead")
+ return
+
+ var/image/coolanimation = image('icons/obj/glamour.dmi', null, "animation")
+ coolanimation.plane = PLANE_LIGHTING_ABOVE
+ src.overlays += coolanimation
+ spawn(14)
+ src.overlays -= coolanimation
+
+ log_debug("polymorph not dead")
+ var/mob/living/new_mob = spawn_beast_mob(beast_options[chosen_beast])
+ new_mob.faction = M.faction
+
+ if(new_mob && isliving(new_mob))
+ species.lleill_energy -= energy_cost
+ log_debug("polymorph new_mob")
+ for(var/obj/belly/B as anything in new_mob.vore_organs)
+ log_debug("polymorph new_mob belly")
+ new_mob.vore_organs -= B
+ qdel(B)
+ new_mob.vore_organs = list()
+ new_mob.name = M.name
+ new_mob.real_name = M.real_name
+ new_mob.verbs |= /mob/living/proc/revert_beast_form
+ for(var/lang in M.languages)
+ new_mob.languages |= lang
+ M.copy_vore_prefs_to_mob(new_mob)
+ new_mob.vore_selected = M.vore_selected
+ if(ishuman(M))
+ log_debug("polymorph ishuman part2")
+ var/mob/living/carbon/human/H = M
+ if(ishuman(new_mob))
+ log_debug("polymorph ishuman(newmob)")
+ var/mob/living/carbon/human/N = new_mob
+ N.gender = H.gender
+ N.identifying_gender = H.identifying_gender
+ else
+ log_debug("polymorph gender else")
+ new_mob.gender = H.gender
+ else
+ log_debug("polymorph gender else 2")
+ new_mob.gender = M.gender
+ if(ishuman(new_mob))
+ var/mob/living/carbon/human/N = new_mob
+ N.identifying_gender = M.gender
+
+ for(var/obj/belly/B as anything in M.vore_organs)
+ B.loc = new_mob
+ B.forceMove(new_mob)
+ B.owner = new_mob
+ M.vore_organs -= B
+ new_mob.vore_organs += B
+
+ new_mob.ckey = M.ckey
+ if(M.ai_holder && new_mob.ai_holder)
+ var/datum/ai_holder/old_AI = M.ai_holder
+ old_AI.set_stance(STANCE_SLEEP)
+ var/datum/ai_holder/new_AI = new_mob.ai_holder
+ new_AI.hostile = old_AI.hostile
+ new_AI.retaliate = old_AI.retaliate
+ M.loc = new_mob
+ M.forceMove(new_mob)
+ new_mob.tf_mob_holder = M
+ new_mob.visible_message("\The [src] has transformed into \the [new_mob]!")
+
+
+/mob/living/carbon/human/proc/spawn_beast_mob(var/chosen_beast)
+ log_debug("polymorph proc spawn mob")
+ var/tf_type = chosen_beast
+ log_debug("polymorph [tf_type]")
+ if(!ispath(tf_type))
+ log_debug("polymorph tf_type fail")
+ return
+ log_debug("polymorph tf_type pass")
+ var/new_mob = new tf_type(get_turf(src))
+ return new_mob
+
+/mob/living/proc/revert_beast_form()
+ set name = "Revert Beast Form"
+ set desc = "Return to your humanoid form."
+ set category = "Abilities"
+
+ visible_message("\The [src] begins significantly shifting their form.")
+ if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
+ visible_message("\The [src] ceases shifting their form.")
+ return 0
+ visible_message("\The [src] has reverted to their original form.")
+ revert_mob_tf()
diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm
index f6bf1a7a88b..0cdd2713362 100644
--- a/code/modules/mob/living/carbon/human/species/species_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/species_vr.dm
@@ -45,6 +45,11 @@
var/list/food_preference = list() //RS edit
var/food_preference_bonus = 0
+
+ // For Lleill and Hanner
+ var/lleill_energy = 200
+ var/lleill_energy_max = 200
+
/datum/species/unathi
vore_belly_default_variant = "L"
diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
index afb8652050a..67cfbed5eb1 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
@@ -9,7 +9,7 @@
name = "You should not see this..."
icon = 'icons/mob/vore/ears_vr.dmi'
do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
// Species-unique ears
@@ -38,7 +38,7 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "lleill-antlers"
- species_allowed = list(SPECIES_LLEILL)
+ species_allowed = list(SPECIES_LLEILL, SPECIES_HANNER)
/datum/sprite_accessory/ears/lleill/curled
name = "Lleill Ears Curled, colorable"
diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
index e38e7a501db..3b6dd83b6cb 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
@@ -13,7 +13,7 @@
var/mob_offset_x = 0
var/mob_offset_y = 0
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
var/list/lower_layer_dirs = list(SOUTH)
var/icon_loaf = null
diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm
index ac03b0692d4..51a87583843 100644
--- a/code/modules/mob/new_player/sprite_accessories_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_vr.dm
@@ -6,7 +6,7 @@
/datum/sprite_accessory/hair
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use the default hairstyles.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the default hairstyles.
/datum/sprite_accessory/hair/astolfo
name = "Astolfo"
@@ -485,20 +485,20 @@
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face_or_vr.dmi'
color_blend_mode = ICON_MULTIPLY
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use the facial hair styles.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the facial hair styles.
/datum/sprite_accessory/facial_hair/shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This needed to be manually defined, apparantly.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This needed to be manually defined, apparantly.
/datum/sprite_accessory/facial_hair/neck_fluff
name = "Neck Fluff"
icon = 'icons/mob/human_face_or_vr.dmi'
icon_state = "facial_neckfluff"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL)
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER)
/datum/sprite_accessory/facial_hair/vulp_none
name = "None"
diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
index 2ee4d148d74..61195e04879 100644
--- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
@@ -9,7 +9,7 @@
name = "You should not see this..."
icon = 'icons/mob/vore/wings_vr.dmi'
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/wing_offset = 0
var/multi_dir = FALSE // Does it use different sprites at different layers? _front will be added for sprites on low layer, _back to high layer
diff --git a/vorestation.dme b/vorestation.dme
index 097e8d717d1..99fbc8e8d50 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2964,6 +2964,7 @@
#include "code\modules\mob\living\carbon\human\species\species_shapeshift.dm"
#include "code\modules\mob\living\carbon\human\species\species_shapeshift_vr.dm"
#include "code\modules\mob\living\carbon\human\species\species_vr.dm"
+#include "code\modules\mob\living\carbon\human\species\lleill\hanner.dm"
#include "code\modules\mob\living\carbon\human\species\lleill\lleill.dm"
#include "code\modules\mob\living\carbon\human\species\lleill\lleill_abilities.dm"
#include "code\modules\mob\living\carbon\human\species\lleill\lleill_items.dm"