Vox event icons, turfs and props. (#9020)
* Vox event icons, turfs and props. * Ported vox prosthetics from Bay. * Added icons for the vox simplemobs. * Vox now apply default colours and markings in set_species().
@@ -25,6 +25,7 @@
|
||||
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
|
||||
var/species = SPECIES_HUMAN //defaults to generic-ass humans
|
||||
var/random_species = FALSE //flip to TRUE to randomize species from the list below
|
||||
var/corpse_outfit /// Set to an outfit to equip on spawn.
|
||||
var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
|
||||
// var/random_appearance = FALSE //TODO: make this work
|
||||
// var/cause_of_death = null //TODO: set up a cause-of-death system. needs to support both damage types and actual wound types, so a body can have been bitten/stabbed/clawed/shot/burned/lasered/etc. to death
|
||||
@@ -92,6 +93,9 @@
|
||||
M.set_id_info(W)
|
||||
M.equip_to_slot_or_del(W, slot_wear_id)
|
||||
|
||||
if(corpse_outfit)
|
||||
var/decl/hierarchy/outfit/outfit = GET_DECL(corpse_outfit)
|
||||
outfit.equip(M)
|
||||
|
||||
|
||||
// I'll work on making a list of corpses people request for maps, or that I think will be commonly used. Syndicate operatives for example.
|
||||
|
||||
@@ -1105,12 +1105,7 @@
|
||||
if(species.icon_scale_x != 1 || species.icon_scale_y != 1)
|
||||
update_transform()
|
||||
|
||||
if(species.base_color && default_colour)
|
||||
//Apply colour.
|
||||
r_skin = hex2num(copytext(species.base_color,2,4))
|
||||
g_skin = hex2num(copytext(species.base_color,4,6))
|
||||
b_skin = hex2num(copytext(species.base_color,6,8))
|
||||
else
|
||||
if(!default_colour || !species.apply_default_colours(src))
|
||||
r_skin = 0
|
||||
g_skin = 0
|
||||
b_skin = 0
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
experience."
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/vox)
|
||||
|
||||
|
||||
slowdown = -0.5
|
||||
|
||||
speech_sounds = list('sound/voice/shriek1.ogg')
|
||||
@@ -171,3 +170,41 @@
|
||||
SPAN_NOTICE("\The [src]'s scaling bristles roughly."),
|
||||
self_message = SPAN_NOTICE("You bristle your scaling and deflate your internal bladders, restoring mobility but leaving yourself vulnerable to low pressure.")
|
||||
)
|
||||
|
||||
/datum/species/vox/apply_default_colours(var/mob/living/carbon/human/H)
|
||||
if(!H.h_style)
|
||||
H.h_style = "Short Vox Quills"
|
||||
var/hair_color = "#594219"
|
||||
H.r_hair = hex2num(copytext(hair_color,2,4))
|
||||
H.g_hair = hex2num(copytext(hair_color,4,6))
|
||||
H.b_hair = hex2num(copytext(hair_color,6,8))
|
||||
var/skin_color = "#526D29"
|
||||
H.r_skin = hex2num(copytext(skin_color,2,4))
|
||||
H.g_skin = hex2num(copytext(skin_color,4,6))
|
||||
H.b_skin = hex2num(copytext(skin_color,6,8))
|
||||
var/scutes_color = "#BC7D3E"
|
||||
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
|
||||
head.markings = list(
|
||||
"Vox Beak" = list(
|
||||
"color" = scutes_color,
|
||||
"datum" = body_marking_styles_list["Vox Beak"]
|
||||
)
|
||||
)
|
||||
for(var/bp in list(BP_L_ARM, BP_L_HAND, BP_R_ARM, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))
|
||||
var/obj/item/organ/external/limb = H.get_organ(bp)
|
||||
if(limb)
|
||||
LAZYINITLIST(limb.markings)
|
||||
limb.markings["Vox Scutes"] = list(
|
||||
"color" = scutes_color,
|
||||
"datum" = body_marking_styles_list["Vox Scutes"]
|
||||
)
|
||||
var/claw_color = "#A0A654"
|
||||
for(var/bp in list(BP_L_HAND, BP_R_HAND, BP_L_FOOT, BP_R_FOOT, BP_TORSO))
|
||||
var/obj/item/organ/external/limb = H.get_organ(bp)
|
||||
if(limb)
|
||||
LAZYINITLIST(limb.markings)
|
||||
limb.markings["Vox Claws"] = list(
|
||||
"color" = claw_color,
|
||||
"datum" = body_marking_styles_list["Vox Claws"]
|
||||
)
|
||||
return TRUE
|
||||
|
||||
@@ -537,3 +537,12 @@
|
||||
|
||||
/datum/species/proc/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary)
|
||||
return FALSE
|
||||
|
||||
/datum/species/proc/apply_default_colours(var/mob/living/carbon/human/H)
|
||||
if(base_color)
|
||||
//Apply colour.
|
||||
H.r_skin = hex2num(copytext(base_color,2,4))
|
||||
H.g_skin = hex2num(copytext(base_color,4,6))
|
||||
H.b_skin = hex2num(copytext(base_color,6,8))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -472,6 +472,18 @@ var/global/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
species_alternates = list(SPECIES_HUMAN = "Morgan Trading Co")
|
||||
suggested_species = SPECIES_TESHARI
|
||||
|
||||
|
||||
/datum/robolimb/vox
|
||||
company = "Arkmade"
|
||||
icon = 'icons/mob/human_races/cyberlimbs/vox/primalis.dmi'
|
||||
unavailable_to_build = TRUE
|
||||
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_TAJ, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
|
||||
suggested_species = SPECIES_VOX
|
||||
|
||||
/datum/robolimb/vox/crap
|
||||
company = "Improvised"
|
||||
icon = 'icons/mob/human_races/cyberlimbs/vox/improvised.dmi'
|
||||
|
||||
/obj/item/disk/limb
|
||||
name = "Limb Blueprints"
|
||||
desc = "A disk containing the blueprints for prosthetics."
|
||||
|
||||
BIN
icons/mob/ascent.dmi
Normal file
|
After Width: | Height: | Size: 182 B |
BIN
icons/mob/human_races/cyberlimbs/vox/improvised.dmi
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
icons/mob/human_races/cyberlimbs/vox/improvised.dmi.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/mob/human_races/cyberlimbs/vox/primalis.dmi
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
icons/mob/human_races/cyberlimbs/vox/primalis.dmi.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
maps/submaps/space_submaps/vox_derelict/icons/plating_vox.dmi
Normal file
|
After Width: | Height: | Size: 366 B |
BIN
maps/submaps/space_submaps/vox_derelict/icons/tiles_vox.dmi
Normal file
|
After Width: | Height: | Size: 743 B |
BIN
maps/submaps/space_submaps/vox_derelict/icons/vox_conduit.dmi
Normal file
|
After Width: | Height: | Size: 763 B |
BIN
maps/submaps/space_submaps/vox_derelict/icons/vox_large.dmi
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
maps/submaps/space_submaps/vox_derelict/icons/vox_machines.dmi
Normal file
|
After Width: | Height: | Size: 196 B |
BIN
maps/submaps/space_submaps/vox_derelict/icons/vox_mobs.dmi
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
200
maps/submaps/space_submaps/vox_derelict/vox_derelict.dm
Normal file
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
|
||||
/obj/effect/overmap/visitable/event_vox_derelict
|
||||
name = "vox derelict"
|
||||
desc = "A sundered fragment of a much larger vessel. LADAR paints a partial vox silhouette."
|
||||
scanner_desc = "A sundered fragment of a much larger vessel. LADAR paints a partial vox silhouette."
|
||||
icon_state = "object"
|
||||
in_space = 1
|
||||
start_x = 7
|
||||
start_y = 4
|
||||
|
||||
/datum/map_template/space/vox_derelict
|
||||
name = "Vox Derelict"
|
||||
desc = "A sheared-off chunk of a derelict vox vessel."
|
||||
mappath = 'maps/submaps/space_submaps/vox_derelict/vox_derelict.dmm'
|
||||
cost = INFINITY
|
||||
|
||||
/area/vox_derelict/hallway/e
|
||||
name = "Vox Derelict - Starboard Arm"
|
||||
|
||||
/area/vox_derelict/hallway/n
|
||||
name = "Vox Derelict - Fore Arm"
|
||||
|
||||
/area/vox_derelict/hallway/w
|
||||
name = "Vox Derelict - Port Arm"
|
||||
|
||||
/area/vox_derelict/hallway/s
|
||||
name = "Vox Derelict - Aft Arm"
|
||||
|
||||
/area/vox_derelict/hallway/se
|
||||
name = "Vox Derelict - Aft Starboard Arm"
|
||||
|
||||
/area/vox_derelict/hallway/ne
|
||||
name = "Vox Derelict - Fore Starboard Arm"
|
||||
|
||||
/area/vox_derelict/hallway/sw
|
||||
name = "Vox Derelict - Aft Port Arm"
|
||||
|
||||
/area/vox_derelict/hallway/nw
|
||||
name = "Vox Derelict - Fore Port Arm"
|
||||
|
||||
/area/vox_derelict/fluid_processing
|
||||
name = "Vox Derelict - Fluid Process"
|
||||
|
||||
/area/vox_derelict/grove_one
|
||||
name = "Vox Derelict - Primary Auxillary Grove"
|
||||
|
||||
/area/vox_derelict/grove_two
|
||||
name = "Vox Derelict - Secondary Auxillary Grove"
|
||||
|
||||
/area/vox_derelict/grove_three
|
||||
name = "Vox Derelict - Tertiary Auxillary Grove"
|
||||
|
||||
/area/vox_derelict/storage
|
||||
name = "Vox Derelict - Storage Nook"
|
||||
|
||||
/area/vox_derelict/mass_reclamation
|
||||
name = "Vox Derelict - Mass Reclamation"
|
||||
|
||||
/area/vox_derelict/core
|
||||
name = "Vox Derelict - Apex Core"
|
||||
|
||||
/obj/effect/shuttle_landmark/automatic/vox_derelict
|
||||
*/
|
||||
|
||||
/decl/flooring/vox_tiles
|
||||
name = "vox tiling"
|
||||
desc = "Tight-fitting plates of some blue-green vox composite."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/tiles_vox.dmi'
|
||||
icon_base = "floor"
|
||||
has_base_range = 4
|
||||
|
||||
/turf/simulated/floor/vox
|
||||
name = "vox plating"
|
||||
desc = "It quivers uneasily, and feels like hard leather."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/plating_vox.dmi'
|
||||
icon_state = "plating"
|
||||
base_name = "vox plating"
|
||||
base_desc = "It quivers uneasily, and feels like hard leather."
|
||||
base_icon = 'maps/submaps/space_submaps/vox_derelict/icons/plating_vox.dmi'
|
||||
oxygen = 0
|
||||
nitrogen = MOLES_O2STANDARD + MOLES_N2STANDARD
|
||||
|
||||
/turf/simulated/floor/vox/tiled
|
||||
name = "vox tiling"
|
||||
desc = "Tight-fitting plates of some blue-green vox composite."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/tiles_vox.dmi'
|
||||
icon_state = "floor1"
|
||||
initial_flooring = /decl/flooring/vox_tiles
|
||||
|
||||
/obj/structure/vox/apex_body
|
||||
name = "vox biocomputer"
|
||||
desc = "An enormous spiralling mass of metal and leathery vox biomatter. Whatever life must have once resided in this monstrous shell has fled it."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/vox_large.dmi'
|
||||
icon_state = "apex"
|
||||
pixel_x = -48
|
||||
pixel_y = 64
|
||||
|
||||
/obj/structure/vox/apex_pool
|
||||
name = "vox reclamation pool"
|
||||
desc = "A wide, shallow pool of inky liquid, stirred by invisible motion below the surface."
|
||||
pixel_x = -48
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/vox_large.dmi'
|
||||
icon_state = "pit"
|
||||
|
||||
/obj/structure/vox_conduit
|
||||
name = "ark conduit"
|
||||
desc = "Some kind of energy conduit, ribbed and ridged and occasionally twitching."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/vox_conduit.dmi'
|
||||
icon_state = "conduit"
|
||||
layer = TURF_LAYER+0.01
|
||||
plane = TURF_PLANE
|
||||
|
||||
/obj/structure/vox_light
|
||||
name = "ark light"
|
||||
desc = "A dim, steady light set into the hull, gleaming like deep sea bioluminescence."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/vox_conduit.dmi'
|
||||
icon_state = "light"
|
||||
layer = TURF_LAYER+0.01
|
||||
plane = TURF_PLANE
|
||||
|
||||
/obj/structure/vox_light/Initialize()
|
||||
. = ..()
|
||||
set_light(8, 0.3, COLOR_CYAN)
|
||||
|
||||
/obj/effect/landmark/corpse/vox
|
||||
species = SPECIES_VOX
|
||||
|
||||
/obj/effect/landmark/corpse/vox/worker
|
||||
name = "Vox Worker"
|
||||
corpse_outfit = /decl/hierarchy/outfit/vox/survivor
|
||||
|
||||
/obj/effect/landmark/corpse/vox/raider
|
||||
name = "Vox Raider"
|
||||
corpse_outfit = /decl/hierarchy/outfit/vox/raider
|
||||
|
||||
/decl/mob_organ_names/vox_drone
|
||||
hit_zones = list(
|
||||
"chassis",
|
||||
"crown",
|
||||
"tail",
|
||||
"left claw",
|
||||
"right claw",
|
||||
"left motivator",
|
||||
"right motivator"
|
||||
)
|
||||
|
||||
/datum/ai_holder/simple_mob/vox_drone
|
||||
pointblank = TRUE
|
||||
conserve_ammo = TRUE
|
||||
firing_lanes = TRUE
|
||||
can_flee = FALSE
|
||||
|
||||
/datum/say_list/vox_drone
|
||||
|
||||
/mob/living/simple_mob/mechanical/ark_adjunct
|
||||
name = "vox worker drone"
|
||||
desc = "Some kind of vox-made drone, all clicking bioalloy and glowing magenta lights."
|
||||
icon = 'maps/submaps/space_submaps/vox_derelict/icons/vox_mobs.dmi'
|
||||
icon_state = "improvised"
|
||||
icon_living = "improvised"
|
||||
icon_dead = "improvised_dead"
|
||||
faction = "vox_ark"
|
||||
maxHealth = 3 LASERS_TO_KILL
|
||||
health = 3 LASERS_TO_KILL
|
||||
water_resist = 1
|
||||
movement_sound = 'sound/effects/servostep.ogg'
|
||||
attacktext = list("slashed")
|
||||
organ_names = /decl/mob_organ_names/vox_drone
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/vox_drone
|
||||
say_list_type = /datum/say_list/vox_drone
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 8
|
||||
attack_armor_pen = 5
|
||||
|
||||
/mob/living/simple_mob/mechanical/ark_adjunct/soldier
|
||||
name = "vox soldier drone"
|
||||
icon_state = "arkmade"
|
||||
icon_living = "arkmade"
|
||||
icon_dead = "arkmade_dead"
|
||||
maxHealth = 6 LASERS_TO_KILL
|
||||
health = 6 LASERS_TO_KILL
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 25
|
||||
attack_armor_pen = 25
|
||||
|
||||
// VOX PROPS: todo proper icons
|
||||
/obj/machinery/portable_atmospherics/hydroponics/vox
|
||||
name = "biofoundry growth vat"
|
||||
color = COLOR_GREEN_GRAY
|
||||
|
||||
/obj/structure/table/vox
|
||||
color = COLOR_GREEN_GRAY
|
||||
|
||||
/obj/structure/rack/vox
|
||||
color = COLOR_GREEN_GRAY
|
||||
|
||||
/obj/machinery/door/airlock/vox
|
||||
name = "vox bulkhead orifice"
|
||||
color = COLOR_GREEN_GRAY
|
||||
@@ -3341,6 +3341,7 @@
|
||||
#include "maps\submaps\engine_submaps\engine_areas.dm"
|
||||
#include "maps\submaps\engine_submaps\southern_cross\_engine_submaps.dm"
|
||||
#include "maps\submaps\space_submaps\space.dm"
|
||||
#include "maps\submaps\space_submaps\vox_derelict\vox_derelict.dm"
|
||||
#include "maps\submaps\surface_submaps\mountains\mountains.dm"
|
||||
#include "maps\submaps\surface_submaps\mountains\mountains_areas.dm"
|
||||
#include "maps\submaps\surface_submaps\plains\plains.dm"
|
||||
|
||||