New event species - Part 1 (#16037)
* [WIP] Lleill Species * 2nd Commit Main functions are now complete and tested * Renables accidentally disabled files * Added white portal variant * Added some glamour/whitespace props for mapping
@@ -1,4 +1,5 @@
|
||||
// More for our custom races
|
||||
#define IS_CHIMERA 12
|
||||
#define IS_SHADEKIN 13
|
||||
#define IS_ALRAUNE 14
|
||||
#define IS_ALRAUNE 14
|
||||
#define IS_LLEILL 15
|
||||
@@ -33,6 +33,7 @@
|
||||
#define SPECIES_ZORREN_HIGH "Zorren"
|
||||
#define SPECIES_CUSTOM "Custom Species"
|
||||
#define SPECIES_TAJARAN "Tajara"
|
||||
#define SPECIES_LLEILL "Lleill"
|
||||
//monkey species
|
||||
#define SPECIES_MONKEY_AKULA "Sobaka"
|
||||
#define SPECIES_MONKEY_NEVREAN "Sparra"
|
||||
|
||||
@@ -17,3 +17,4 @@
|
||||
#define LANGUAGE_MOUSE "Mouse"
|
||||
|
||||
#define LANGUAGE_SHADEKIN "Shadekin Empathy"
|
||||
#define LANGUAGE_LLEILL "Glamour Speak"
|
||||
|
||||
@@ -80,3 +80,28 @@
|
||||
|
||||
/obj/structure/prop/rock/ice/small/alt
|
||||
icon_state = "icesmall2"
|
||||
|
||||
// glamour things for whitespace
|
||||
/obj/structure/prop/rock/glamour
|
||||
name = "glamour"
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "pillar_1"
|
||||
|
||||
/obj/structure/prop/rock/glamour/double
|
||||
icon_state = "pillar_3"
|
||||
|
||||
/obj/structure/prop/rock/glamour/triple
|
||||
icon_state = "pillar_2"
|
||||
|
||||
/obj/structure/prop/rock/glamour/small
|
||||
icon_state = "gems_1"
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/rock/glamour/small/alt1
|
||||
icon_state = "gems_2"
|
||||
|
||||
/obj/structure/prop/rock/glamour/small/alt2
|
||||
icon_state = "gems_3"
|
||||
|
||||
/obj/structure/prop/rock/glamour/small/alt3
|
||||
icon_state = "gems_4"
|
||||
@@ -263,3 +263,14 @@ var/list/shoreline_icon_cache = list()
|
||||
to_chat(L, "<span class='warning'>You get drenched in blood from entering \the [src]!</span>")
|
||||
AM.water_act(5)
|
||||
..()
|
||||
|
||||
/turf/simulated/floor/water/glamour
|
||||
name = "glamour"
|
||||
desc = "A body of glamour. It seems shallow enough to walk through, if needed."
|
||||
icon = 'icons/turf/flooring/glamour.dmi'
|
||||
icon_state = "water"
|
||||
water_icon = 'icons/turf/flooring/glamour.dmi'
|
||||
water_state = "water"
|
||||
under_state = "glamour"
|
||||
reagent_type = "water"
|
||||
|
||||
|
||||
@@ -171,6 +171,7 @@
|
||||
sprite_sheets = list(
|
||||
SPECIES_HUMAN = 'icons/inventory/suit/mob_vr.dmi',
|
||||
SPECIES_TAJ = 'icons/inventory/suit/mob_vr_tajaran.dmi',
|
||||
SPECIES_LLEILL = 'icons/inventory/suit/mob_vr_tajaran.dmi',
|
||||
SPECIES_SKRELL = 'icons/inventory/suit/mob_vr_skrell.dmi',
|
||||
SPECIES_UNATHI = 'icons/inventory/suit/mob_vr_unathi.dmi',
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_vr_unathi.dmi',
|
||||
@@ -201,13 +202,15 @@
|
||||
SPECIES_NEVREAN = 'icons/inventory/suit/item_vr.dmi',
|
||||
SPECIES_RAPALA = 'icons/inventory/suit/item_vr.dmi',
|
||||
SPECIES_ALRAUNE = 'icons/inventory/suit/item_vr.dmi',
|
||||
SPECIES_ZADDAT = 'icons/inventory/suit/item_vr.dmi'
|
||||
SPECIES_ZADDAT = 'icons/inventory/suit/item_vr.dmi',
|
||||
SPECIES_LLEILL = 'icons/inventory/suit/item_vr.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/responseteam
|
||||
sprite_sheets = list(
|
||||
SPECIES_HUMAN = 'icons/inventory/head/mob_vr.dmi',
|
||||
SPECIES_TAJ = 'icons/inventory/head/mob_vr_tajaran.dmi',
|
||||
SPECIES_LLEILL = 'icons/inventory/suit/mob_vr_tajaran.dmi',
|
||||
SPECIES_SKRELL = 'icons/inventory/head/mob_vr_skrell.dmi',
|
||||
SPECIES_UNATHI = 'icons/inventory/head/mob_vr_unathi.dmi',
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/mob_vr_unathi.dmi',
|
||||
@@ -238,5 +241,6 @@
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/item_vr.dmi',
|
||||
SPECIES_RAPALA = 'icons/inventory/head/item_vr.dmi',
|
||||
SPECIES_ALRAUNE = 'icons/inventory/head/item_vr.dmi',
|
||||
SPECIES_ZADDAT = 'icons/inventory/head/item_vr.dmi'
|
||||
SPECIES_ZADDAT = 'icons/inventory/head/item_vr.dmi',
|
||||
SPECIES_LLEILL = 'icons/inventory/suit/item_vr.dmi'
|
||||
)
|
||||
|
||||
@@ -143,6 +143,21 @@
|
||||
/datum/language/echosong/scramble(var/input, var/list/known_languages)
|
||||
return stars(input)
|
||||
|
||||
/datum/language/lleill
|
||||
name = LANGUAGE_LLEILL
|
||||
desc = "An ancient, gutteral language involving a lot of spitting."
|
||||
speech_verb = "speaks"
|
||||
ask_verb = "ponders"
|
||||
exclaim_verb = "calls"
|
||||
colour = "echosong"
|
||||
key = "L"
|
||||
syllables = list(
|
||||
"llyn", "bren", "gwyn", "gwyr", "ddys", "dath", "llio", "cym", "ddrai", "ffyr", "lle", "dy", "eto", "uno", "dydno", "llego", "bryth", "ffair",
|
||||
"ynys", "ed", "fore", "oe", "hen", "wladd", "ty", "nha", "dwy", "mae", "dros", "pob", "ia", "wyll", "gwdd", "fi"
|
||||
)
|
||||
machine_understands = FALSE
|
||||
flags = WHITELISTED
|
||||
|
||||
/datum/language/echosong/broadcast(var/mob/living/speaker, var/message, var/speaker_mask)
|
||||
log_say("(INAUDIBLE) [message]", speaker)
|
||||
speaker.say_signlang(format_message(message), pick(signlang_verb), pick(signlang_verb_understood), src, 2)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/can_defib = 1 //Horrible damage (like beheadings) will prevent defibbing organics.
|
||||
var/active_regen = FALSE //Used for the regenerate proc in human_powers.dm
|
||||
var/active_regen_delay = 300
|
||||
var/list/teleporters = list() //Used for lleill abilities
|
||||
|
||||
/mob/living/carbon/human/Initialize(mapload, var/new_species = null)
|
||||
if(!dna)
|
||||
|
||||
@@ -31,3 +31,6 @@
|
||||
|
||||
/mob/living/carbon/human/altevian/New(var/new_loc)
|
||||
..(new_loc, SPECIES_ALTEVIAN)
|
||||
|
||||
/mob/living/carbon/human/lleill/New(var/new_loc)
|
||||
..(new_loc, SPECIES_LLEILL)
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
/datum/species/lleill
|
||||
|
||||
name = SPECIES_LLEILL
|
||||
name_plural = "Lleill"
|
||||
icobase = 'icons/mob/human_races/r_lleill.dmi'
|
||||
deform = 'icons/mob/human_races/r_lleill.dmi'
|
||||
color_mult = 1
|
||||
tail = "tail"
|
||||
icobase_tail = 1
|
||||
blurb = "A species that appears to originate somewhere in redspace. Their forms are not consistent, \
|
||||
they do not care for consistency, and are working under a constant never-ending drive to improve themselves \
|
||||
and the world around them. With little care for whether the world itself wants to change." //PLACEHOLDER
|
||||
|
||||
blood_color = "#FFFFFF"
|
||||
blood_name = "glamour"
|
||||
flesh_color = "#FFFFFF"
|
||||
reagent_tag = IS_LLEILL
|
||||
|
||||
num_alternate_languages = 3
|
||||
species_language = LANGUAGE_LLEILL
|
||||
language = LANGUAGE_LLEILL
|
||||
name_language = LANGUAGE_LLEILL
|
||||
|
||||
flags = NO_SCAN | NO_MINOR_CUT | NO_INFECT | NO_HALLUCINATION
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_UNDERWEAR
|
||||
|
||||
max_age = 200
|
||||
|
||||
economic_modifier = 15
|
||||
|
||||
digi_allowed = TRUE
|
||||
|
||||
//Specific abilities
|
||||
|
||||
darksight = 10 //Can see in dark
|
||||
|
||||
burn_mod = 0.25 //Very resistant to fire
|
||||
pain_mod = 0.25 //Whilst not resistant to brute or stunning, they are quite resistant to pain, making them tanky in their own way.
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
warning_high_pressure = 300
|
||||
hazard_high_pressure = 10000 //Can be killed by pressure but you're going to need a hell of a lot
|
||||
|
||||
cold_level_1 = -1 //Safe in space
|
||||
cold_level_2 = -1
|
||||
cold_level_3 = -1
|
||||
|
||||
heat_level_1 = 1500 //Very resiliant to heat
|
||||
heat_level_2 = 2500
|
||||
heat_level_3 = 5000
|
||||
|
||||
can_space_freemove = TRUE //Have no issue moving through space.
|
||||
can_zero_g_move = TRUE
|
||||
|
||||
chem_strength_alcohol = 0 //Can't get drunk
|
||||
|
||||
oxy_mod = 0.25 //Suffocates very slowly, but does ultimately need to breathe, will outpace heal most oxygen damage.
|
||||
poison_type = null //Not harmed by phoron.
|
||||
water_breather = TRUE
|
||||
|
||||
var/list/valid_transform_species = list(
|
||||
"Human", "Unathi", "Tajara", "Skrell",
|
||||
"Diona", "Teshari", "Monkey","Sergal",
|
||||
"Akula","Nevrean","Zorren",
|
||||
"Fennec", "Vulpkanin", "Vasilissan",
|
||||
"Rapala", "Neaera", "Stok", "Farwa", "Sobaka",
|
||||
"Wolpin", "Saru", "Sparra", "Lleill")
|
||||
|
||||
// Looks like a lot but the majority of these are just to change their appearance.
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/lleill_select_colour,
|
||||
/mob/living/carbon/human/proc/lleill_select_shape,
|
||||
/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_invisibility,
|
||||
/mob/living/carbon/human/proc/lleill_transmute,
|
||||
/mob/living/carbon/human/proc/lleill_rings)
|
||||
|
||||
//organs, going with just the basics for now
|
||||
|
||||
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/lleill),
|
||||
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)
|
||||
)
|
||||
|
||||
base_species = SPECIES_LLEILL
|
||||
|
||||
// Shapeshifters have some behaviour that doesn't play well with this species so I have taken the main parts needed for here.
|
||||
|
||||
/datum/species/lleill/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H)
|
||||
return valid_transform_species
|
||||
|
||||
/datum/species/lleill/get_icobase(var/mob/living/carbon/human/H, var/get_deform)
|
||||
if(!H) return ..(null, get_deform)
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.type == src.type) return ..(H, get_deform)
|
||||
return S.get_icobase(H,get_deform)
|
||||
|
||||
/datum/species/lleill/get_race_key(var/mob/living/carbon/human/H)
|
||||
return "[..()]-[wrapped_species_by_ref["\ref[H]"]]"
|
||||
|
||||
/datum/species/lleill/get_bodytype(var/mob/living/carbon/human/H)
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!H || !S) return ..()
|
||||
if(S.type == src.type) return ..(H)
|
||||
return S.get_bodytype(H)
|
||||
|
||||
/datum/species/lleill/get_blood_mask(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_blood_mask(H)
|
||||
|
||||
/datum/species/lleill/get_damage_mask(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_damage_mask(H)
|
||||
|
||||
/datum/species/lleill/get_damage_overlays(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_damage_overlays(H)
|
||||
|
||||
/datum/species/lleill/get_tail(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_tail(H)
|
||||
|
||||
/datum/species/lleill/get_tail_animation(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_tail_animation(H)
|
||||
|
||||
/datum/species/lleill/get_tail_hair(var/mob/living/carbon/human/H)
|
||||
if(!H) return ..()
|
||||
var/datum/species/S = GLOB.all_species[wrapped_species_by_ref["\ref[H]"]]
|
||||
if(!S || S.name == src.name)
|
||||
return ..()
|
||||
return S?.get_tail_hair(H)
|
||||
@@ -0,0 +1,179 @@
|
||||
/datum/power/lleill
|
||||
|
||||
// Simple ability to become invisible. Does not phase you out of the world, you can still interact with things and can not pass through walls.
|
||||
// Essentially the same as traitor cloaking, using the same proc for it.
|
||||
|
||||
/datum/power/lleill/invisibility
|
||||
name = "Invisibility"
|
||||
desc = "Change your appearance to match your surroundings, becoming completely invisible to the naked eye."
|
||||
verbpath = /mob/living/carbon/human/proc/lleill_invisibility
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_invisibility()
|
||||
set name = "Invisibility"
|
||||
set desc = "Change your appearance to match your surroundings, becoming completely invisible to the naked eye."
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You can't go invisible when weakened like this.</span>")
|
||||
return
|
||||
|
||||
if(!cloaked)
|
||||
cloak()
|
||||
to_chat(src, "<span class='warning'>Your fur shimmers and shifts around you, hiding you from the naked eye.</span>")
|
||||
else
|
||||
uncloak()
|
||||
to_chat(src, "<span class='warning'>The brustling of your fur settles down and you become visible once again.</span>")
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_select_shape()
|
||||
|
||||
set name = "Select Body Shape"
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 50
|
||||
|
||||
var/new_species = null
|
||||
new_species = tgui_input_list(usr, "Please select a species to emulate.", "Shapeshifter Body", species.get_valid_shapeshifter_forms(src))
|
||||
|
||||
if(!new_species || !GLOB.all_species[new_species] || wrapped_species_by_ref["\ref[src]"] == new_species)
|
||||
return
|
||||
lleill_change_shape(new_species)
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_change_shape(var/new_species = null)
|
||||
if(!new_species)
|
||||
return
|
||||
|
||||
wrapped_species_by_ref["\ref[src]"] = new_species
|
||||
dna.base_species = new_species
|
||||
species.base_species = new_species
|
||||
visible_message("<b>\The [src]</b> shifts and contorts, taking the form of \a [new_species]!")
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_select_colour()
|
||||
|
||||
set name = "Select Body Colour"
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 50
|
||||
|
||||
var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", rgb(r_skin, g_skin, b_skin)) as null|color
|
||||
if(!new_skin)
|
||||
return
|
||||
lleill_set_colour(new_skin)
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_set_colour(var/new_skin)
|
||||
|
||||
r_skin = hex2num(copytext(new_skin, 2, 4))
|
||||
g_skin = hex2num(copytext(new_skin, 4, 6))
|
||||
b_skin = hex2num(copytext(new_skin, 6, 8))
|
||||
r_synth = r_skin
|
||||
g_synth = g_skin
|
||||
b_synth = b_skin
|
||||
|
||||
for(var/obj/item/organ/external/E in organs)
|
||||
E.sync_colour_to_human(src)
|
||||
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_transmute()
|
||||
set name = "Transmute Object"
|
||||
set desc = "Convert an object into a piece of glamour."
|
||||
set category = "Abilities"
|
||||
|
||||
var/list/transmute_list = list(
|
||||
/obj/item/weapon/potion_material/glamour_transparent,
|
||||
/obj/item/weapon/potion_material/glamour_shrinking,
|
||||
/obj/item/weapon/potion_material/glamour_twinkling,
|
||||
/obj/item/weapon/potion_material/glamour_shard,
|
||||
/obj/item/capture_crystal/glamour,
|
||||
/obj/item/glamour_face,
|
||||
/obj/item/device/universal_translator/glamour
|
||||
)
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You can't go do that when weakened like this.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/I = get_active_hand()
|
||||
if(!I)
|
||||
to_chat(src, "<span class='warning'>You have no item in your active hand.</span>")
|
||||
return
|
||||
|
||||
var/obj/item/transmute_product = tgui_input_list(src, "Choose an glamour to transmute the item into:", "Transmutation", transmute_list)
|
||||
if(!get_active_hand(I))
|
||||
to_chat(src, "<span class='warning'>The item is no longer in your hands.</span>")
|
||||
return
|
||||
else
|
||||
visible_message("<b>\The [src]</b> begins to change the form of \the [I].")
|
||||
if(!do_after(usr, 10 SECONDS, I, exclusive = TASK_USER_EXCLUSIVE))
|
||||
visible_message("<b>\The [src]</b> leaves \the [I] in its original form.")
|
||||
return 0
|
||||
visible_message("<b>\The [src]</b> transmutes \the [I] into a \the [transmute_product.name].")
|
||||
drop_item(I)
|
||||
qdel(I)
|
||||
var/spawnloc = get_turf(usr)
|
||||
var/obj/item/N = new transmute_product(spawnloc)
|
||||
put_in_active_hand(N)
|
||||
|
||||
/mob/living/carbon/human/proc/lleill_rings()
|
||||
set name = "Place/Use Rings"
|
||||
set desc = "Place or teleport to a glamour ring."
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You can't go do that when weakened like this.</span>")
|
||||
return
|
||||
if(buckled)
|
||||
to_chat(src,"<span class='warning'>You can't do that when restrained.</span>")
|
||||
|
||||
var/r_action = tgui_alert(src, "What would you like to do with your rings?", "Actions", list("Spawn New Ring", "Teleport to Ring", "Cancel"))
|
||||
if(r_action == "Cancel")
|
||||
return
|
||||
if(r_action == "Spawn New Ring")
|
||||
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
|
||||
src.visible_message("<b>\The [src]</b> begins to form white rings on the ground.")
|
||||
return 0
|
||||
to_chat(src, "<span class='warning'>You place a new glamour ring at your feet.</span>")
|
||||
var/spawnloc = get_turf(src)
|
||||
var/obj/structure/glamour_ring/R = new(spawnloc)
|
||||
src.teleporters |= R
|
||||
if(r_action == "Teleport to Ring")
|
||||
if(!src.teleporters.len)
|
||||
to_chat(src, "<span class='warning'>You need to place rings to teleport to them.</span>")
|
||||
return
|
||||
else
|
||||
var/obj/structure/glamour_ring/R = tgui_input_list(src, "Where do you wish to teleport?", "Teleport", src.teleporters)
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/spk
|
||||
spk = new(src)
|
||||
|
||||
var/T = get_turf(src)
|
||||
spk.set_up(5, 0, src)
|
||||
spk.attach(src)
|
||||
playsound(T, "sparks", 50, 1)
|
||||
anim(T,src,'icons/mob/mob.dmi',,"phaseout",,src.dir)
|
||||
|
||||
var/S = get_turf(R)
|
||||
src.forceMove(S)
|
||||
|
||||
spk.start()
|
||||
playsound(S, 'sound/effects/phasein.ogg', 25, 1)
|
||||
playsound(S, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
anim(S,src,'icons/mob/mob.dmi',,"phasein",,src.dir)
|
||||
spk.set_up(5, 0, src)
|
||||
spk.attach(src)
|
||||
|
||||
//Would be fun to eat people standing on your ring...
|
||||
if(can_be_drop_pred && vore_selected)
|
||||
var/list/target_list = src.living_mobs(0)
|
||||
if(target_list.len)
|
||||
for(var/mob/living/M in target_list)
|
||||
if(M.devourable && M.can_be_drop_prey)
|
||||
M.forceMove(vore_selected)
|
||||
to_chat(M,"<span class='vwarning'>In a bright flash of white light, you suddenly find yourself trapped in \the [src]'s [vore_selected.name]!</span>")
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
//Transparent Glamour (invisibility potion)
|
||||
|
||||
/obj/item/weapon/potion_material/glamour_transparent
|
||||
name = "transparent glamour"
|
||||
desc = "A shard of hardened white crystal that is clearly translucent."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "transparent"
|
||||
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/invisibility
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/potion/invisibility
|
||||
name = "transparent potion"
|
||||
desc = "A small white potion, the clear liquid inside can barely be seen at all."
|
||||
prefill = list("transparent glamour" = 1)
|
||||
|
||||
/datum/reagent/glamour_transparent
|
||||
name = "Clear Glamour"
|
||||
id = "transparent glamour"
|
||||
description = "This material is from somewhere else, it can barely be seen by the naked eye."
|
||||
taste_description = "nothingness"
|
||||
reagent_state = LIQUID
|
||||
color = "#ffffff"
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/glamour_transparent/affect_blood(var/mob/living/carbon/target, var/removed)
|
||||
if(!target.cloaked)
|
||||
target.visible_message("<b>\The [target]</b> vanishes from sight.")
|
||||
target.cloak()
|
||||
target.bloodstr.clear_reagents() //instantly clears reagents afterwards
|
||||
target.ingested.clear_reagents()
|
||||
target.touching.clear_reagents()
|
||||
spawn(600)
|
||||
if(target.cloaked)
|
||||
target.uncloak()
|
||||
target.visible_message("<b>\The [target]</b> appears as if from thin air.")
|
||||
|
||||
//Shrinking Glamour (scaling potion)
|
||||
|
||||
/obj/item/weapon/potion_material/glamour_shrinking
|
||||
name = "shrinking glamour"
|
||||
desc = "A soft clump of white material that seems to shrink at your touch."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "shrinking"
|
||||
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/scaling
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/potion/scaling
|
||||
name = "scaling potion"
|
||||
desc = "A small white potion, the clear liquid inside can barely be seen at all."
|
||||
prefill = list("scaling glamour" = 1)
|
||||
|
||||
/datum/reagent/glamour_scaling
|
||||
name = "Scaling Glamour"
|
||||
id = "scaling glamour"
|
||||
description = "This material is from somewhere else, it appears to change volumes readily at a glance."
|
||||
taste_description = "difficult to discern"
|
||||
reagent_state = LIQUID
|
||||
color = "#ffffff"
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/glamour_scaling/affect_blood(var/mob/living/carbon/target, var/removed)
|
||||
if(!(/mob/living/proc/set_size in target.verbs))
|
||||
to_chat(target, "<span class='warning'>You feel as though you could change size at any moment.</span>")
|
||||
target.verbs |= /mob/living/proc/set_size
|
||||
target.bloodstr.clear_reagents() //instantly clears reagents afterwards
|
||||
target.ingested.clear_reagents()
|
||||
target.touching.clear_reagents()
|
||||
|
||||
//Twinkling Glamour (Sparkling potion - Gives darksight)
|
||||
|
||||
/obj/item/weapon/potion_material/glamour_twinkling
|
||||
name = "twinkling glamour"
|
||||
desc = "A sheet of white material that twinkles on its own accord."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "twinkling"
|
||||
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/darksight
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/potion/darksight
|
||||
name = "twinling potion"
|
||||
desc = "A small white potion, the thin white liquid inside twinkles brightly."
|
||||
prefill = list("twinkling glamour" = 1)
|
||||
|
||||
/datum/reagent/glamour_twinkling
|
||||
name = "Twinkling Glamour"
|
||||
id = "twinkling glamour"
|
||||
description = "This material is from somewhere else, it appears to be twinkling."
|
||||
taste_description = "bright"
|
||||
reagent_state = LIQUID
|
||||
color = "#ffffff"
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/glamour_twinkling/affect_blood(var/mob/living/carbon/human/target, var/removed)
|
||||
if(target.species.darksight < 10)
|
||||
to_chat(target, "<span class='warning'>You can suddenly see much better than before.</span>")
|
||||
target.species.darksight = 10
|
||||
if(target.disabilities & NEARSIGHTED)
|
||||
target.disabilities &= ~NEARSIGHTED
|
||||
to_chat(target, "<span class='warning'>Everything is much less blurry.</span>")
|
||||
target.bloodstr.clear_reagents() //instantly clears reagents afterwards
|
||||
target.ingested.clear_reagents()
|
||||
target.touching.clear_reagents()
|
||||
|
||||
//Glamour Cell (variant of capture crystal)
|
||||
|
||||
/obj/item/capture_crystal/glamour
|
||||
name = "glamour cell"
|
||||
desc = "A large but light round ball of glamour that glows from somewhere within."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
|
||||
/obj/item/capture_crystal/glamour/animate_action(atom/thing)
|
||||
var/image/coolanimation = image('icons/obj/glamour.dmi', null, "animation")
|
||||
coolanimation.plane = PLANE_LIGHTING_ABOVE
|
||||
thing.overlays += coolanimation
|
||||
sleep(14)
|
||||
thing.overlays -= coolanimation
|
||||
|
||||
//Face of Glamour (creates a clone of a target)
|
||||
|
||||
/obj/item/glamour_face
|
||||
name = "face of glamour"
|
||||
desc = "A piece of glamour that is formed vaguely into the shape of a face."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "face"
|
||||
var/mob/living/homunculus = 0
|
||||
|
||||
/obj/item/glamour_face/attack_self(var/mob/user)
|
||||
if(!homunculus)
|
||||
var/list/targets = list()
|
||||
for(var/mob/living/carbon/human/M in mob_list)
|
||||
if(M.z != user.z || get_dist(user,M) > 10)
|
||||
continue
|
||||
if(istype(M) && M.resleeve_lock && M.ckey != M.resleeve_lock)
|
||||
continue
|
||||
targets |= M
|
||||
|
||||
if(!targets)
|
||||
to_chat(user, "<span class='warning'>There are no appropriate targets in range.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/chosen_target = tgui_input_list(user, "Which target do you wish to create a homunculus of?", "homunculus", targets)
|
||||
|
||||
var/spawnloc = get_turf(user)
|
||||
var/mob/living/simple_mob/homunculus/H = new(spawnloc)
|
||||
H.name = chosen_target.name
|
||||
H.desc = chosen_target.desc
|
||||
H.icon = chosen_target.icon
|
||||
H.icon_state = chosen_target.icon_state
|
||||
H.copy_overlays(chosen_target, TRUE)
|
||||
H.resize(chosen_target.size_multiplier, ignore_prefs = TRUE)
|
||||
homunculus = H
|
||||
H.owner = src
|
||||
return
|
||||
if(homunculus)
|
||||
var/mob/living/simple_mob/homunculus/H = homunculus
|
||||
var/h_action = tgui_alert(user, "What would you like to do with your homunculus?", "Actions", list("Recall", "Speak Through", "Cancel"))
|
||||
if(h_action == "Cancel")
|
||||
return
|
||||
if(h_action == "Recall")
|
||||
H.visible_message("<b>\The [H]</b> returns to the face.")
|
||||
qdel(H)
|
||||
homunculus = 0
|
||||
return
|
||||
if(h_action == "Speak Through")
|
||||
var/words_to_say = tgui_input_text(user, "What should the homunculus say:", "Speak Through")
|
||||
H.say(words_to_say)
|
||||
return
|
||||
|
||||
|
||||
//Speaking Glamour (universal translator)
|
||||
|
||||
/obj/item/device/universal_translator/glamour
|
||||
name = "speaking glamour"
|
||||
desc = "A shard of glamour that translates all known language for the user."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "translator"
|
||||
|
||||
//Teleporter ring
|
||||
|
||||
/obj/structure/glamour_ring
|
||||
name = "glamour ring"
|
||||
desc = "A ring of glowing white, oddly reflective material."
|
||||
icon = 'icons/obj/glamour.dmi'
|
||||
icon_state = "ring"
|
||||
density = 0
|
||||
anchored = 1
|
||||
|
||||
var/connected_mob
|
||||
var/area_name
|
||||
|
||||
/obj/structure/glamour_ring/Initialize()
|
||||
. = ..()
|
||||
var/area/A = get_area(src)
|
||||
area_name = A.name
|
||||
name = "[area_name] glamour ring"
|
||||
|
||||
//Glamour Floor
|
||||
//Glamour Wall
|
||||
@@ -1060,7 +1060,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
apply_layer(tail_layer)
|
||||
return
|
||||
|
||||
var/species_tail = species.get_tail(src) // Species tail icon_state prefix.
|
||||
var/species_tail = species?.get_tail(src) // Species tail icon_state prefix.
|
||||
|
||||
//This one is actually not that bad I guess.
|
||||
if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/mob/living/simple_mob/homunculus
|
||||
name = "homunculus"
|
||||
desc = "A strange misshapen humanoid creature made purely from glamour!"
|
||||
|
||||
icon_dead = "homunculus"
|
||||
icon_living = "homunculus"
|
||||
icon_state = "homunculus"
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
|
||||
var/owner
|
||||
|
||||
/mob/living/simple_mob/homunculus/death()
|
||||
if(owner)
|
||||
var/obj/item/glamour_face/O = owner
|
||||
O.homunculus = 0
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/homunculus/update_icon()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/homunculus/update_icons()
|
||||
return
|
||||
|
||||
@@ -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) //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) //This lets all races use
|
||||
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
|
||||
|
||||
// Species-unique ears
|
||||
@@ -30,6 +30,17 @@
|
||||
do_colouration = 1
|
||||
extra_overlay = "shadekin-round-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/lleill
|
||||
name = "Lleill Ears, colorable"
|
||||
desc = ""
|
||||
icon = 'icons/mob/vore/ears_32x64.dmi'
|
||||
icon_state = "lleill"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "lleill-antlers"
|
||||
species_allowed = list(SPECIES_LLEILL)
|
||||
|
||||
|
||||
// Ears avaliable to anyone
|
||||
|
||||
/datum/sprite_accessory/ears/alien_slug
|
||||
|
||||
@@ -1058,3 +1058,12 @@
|
||||
extra_overlay2 = "zorgoia_fluff_top"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/lleill
|
||||
name = "Lleill tail"
|
||||
desc = ""
|
||||
icon = 'icons/mob/species/lleill/tail.dmi'
|
||||
icon_state = "tail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "tail_marking"
|
||||
|
||||
@@ -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) //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) //This lets all races use
|
||||
|
||||
var/list/lower_layer_dirs = list(SOUTH)
|
||||
var/icon_loaf = null
|
||||
|
||||
@@ -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) //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) //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) //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) //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) //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) //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_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)
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_none
|
||||
name = "None"
|
||||
|
||||
@@ -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) //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) //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
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
if(portal_type == "Weird Green")
|
||||
portal_icon_selection = "type-b-portal"
|
||||
if(portal_type == "Pulsing")
|
||||
var/portal_subtype = tgui_alert(user, "Which subtype would you prefer?", "Subtype Selection", list("Blue","Red","Blue/Red Mix", "Yellow"))
|
||||
var/portal_subtype = tgui_alert(user, "Which subtype would you prefer?", "Subtype Selection", list("Blue","Red","Blue/Red Mix", "Yellow", "White"))
|
||||
if(portal_subtype == "Blue")
|
||||
portal_icon_selection = "type-c-blue-portal"
|
||||
if(portal_subtype == "Red")
|
||||
@@ -102,6 +102,8 @@
|
||||
portal_icon_selection = "type-c-mix-portal"
|
||||
if(portal_subtype == "Yellow")
|
||||
portal_icon_selection = "type-c-yellow-portal"
|
||||
if(portal_subtype == "White")
|
||||
portal_icon_selection = "type-c-white-portal"
|
||||
return portal_icon_selection
|
||||
|
||||
/obj/structure/portal_event/proc/teleport(atom/movable/M as mob|obj)
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/obj/item/organ/external/head/lleill
|
||||
eye_icon_location = 'icons/mob/human_face_vr.dmi'
|
||||
eye_icon = "eyes_lleill"
|
||||
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 395 B |
|
Before Width: | Height: | Size: 428 KiB After Width: | Height: | Size: 429 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 2.1 KiB |
@@ -2969,6 +2969,9 @@
|
||||
#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\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"
|
||||
#include "code\modules\mob\living\carbon\human\species\outsider\event.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\outsider\replicant.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm"
|
||||
@@ -3206,6 +3209,7 @@
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\worm.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\glamour\homunculus.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid_vr.dm"
|
||||
@@ -3493,6 +3497,7 @@
|
||||
#include "code\modules\organs\internal\robotic\robotic.dm"
|
||||
#include "code\modules\organs\subtypes\diona.dm"
|
||||
#include "code\modules\organs\subtypes\indestructible.dm"
|
||||
#include "code\modules\organs\subtypes\lleill.dm"
|
||||
#include "code\modules\organs\subtypes\machine.dm"
|
||||
#include "code\modules\organs\subtypes\nano.dm"
|
||||
#include "code\modules\organs\subtypes\replicant.dm"
|
||||
|
||||