mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-21 02:58:45 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-03-15
# Conflicts: # README.md # code/__defines/mobs.dm # code/__defines/subsystems.dm # code/_helpers/global_lists.dm # code/controllers/subsystems/garbage.dm # code/controllers/subsystems/overlays.dm # code/datums/datacore.dm # code/datums/supplypacks/munitions.dm # code/game/machinery/suit_storage_unit.dm # code/game/objects/items/devices/communicator/UI.dm # code/game/objects/items/weapons/id cards/station_ids.dm # code/game/objects/random/random.dm # code/game/turfs/simulated/floor.dm # code/game/turfs/simulated/floor_icon.dm # code/modules/awaymissions/gateway.dm # code/modules/client/preferences.dm # code/modules/ext_scripts/python.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/life.dm # code/modules/mob/living/carbon/human/species/station/station.dm # code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm # code/modules/mob/living/carbon/human/update_icons.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/living/simple_animal/animals/bear.dm # code/modules/mob/mob_helpers.dm # code/modules/mob/new_player/new_player.dm # code/modules/mob/new_player/preferences_setup.dm # code/modules/mob/new_player/sprite_accessories.dm # code/modules/organs/organ_external.dm # code/modules/organs/organ_icon.dm # code/modules/organs/robolimbs.dm # code/modules/reagents/reagent_containers/glass.dm # code/modules/reagents/reagent_containers/syringes.dm # html/changelogs/.all_changelog.yml # maps/southern_cross/southern_cross-1.dmm # maps/southern_cross/southern_cross-3.dmm # maps/southern_cross/southern_cross-4.dmm # maps/southern_cross/southern_cross-6.dmm # vorestation.dme
This commit is contained in:
@@ -1001,11 +1001,6 @@
|
||||
//strip their stuff and stick it in the crate
|
||||
for(var/obj/item/I in M)
|
||||
M.drop_from_inventory(I, locker)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_icons_layers() //Cheaper
|
||||
else
|
||||
M.update_icons()
|
||||
|
||||
//so they black out before warping
|
||||
M.Paralyse(5)
|
||||
@@ -1188,10 +1183,8 @@
|
||||
usr << "This can only be used on instances of type /mob/living/carbon/human"
|
||||
return
|
||||
var/block=text2num(href_list["block"])
|
||||
//testing("togmutate([href_list["block"]] -> [block])")
|
||||
usr.client.cmd_admin_toggle_block(H,block)
|
||||
show_player_panel(H)
|
||||
//H.regenerate_icons()
|
||||
|
||||
else if(href_list["adminplayeropts"])
|
||||
var/mob/M = locate(href_list["adminplayeropts"])
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
H.name = H.get_visible_name()
|
||||
// usr.regenerate_icons() //So the name is updated properly
|
||||
|
||||
usr.loc = O.loc // Appear where the object you were controlling is -- TLE
|
||||
usr.client.eye = usr
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access
|
||||
var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access.
|
||||
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
|
||||
var/species = "Human"
|
||||
var/species = SPECIES_HUMAN
|
||||
delete_me = TRUE
|
||||
|
||||
/obj/effect/landmark/corpse/initialize()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/machinery/gateway
|
||||
name = "gateway"
|
||||
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities."
|
||||
desc = "A mysterious gateway built by unknown hands. It allows for faster than light travel to far-flung locations and even alternate realities." //VOREStation Edit
|
||||
icon = 'icons/obj/machines/gateway.dmi'
|
||||
icon_state = "off"
|
||||
density = 1
|
||||
@@ -252,10 +252,12 @@ obj/machinery/gateway/centerstation/process()
|
||||
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
|
||||
return
|
||||
else
|
||||
// VOREStation Add
|
||||
stationgate = locate(/obj/machinery/gateway/centerstation)
|
||||
if(!stationgate)
|
||||
user << "<span class='notice'>Error: Recalibration failed. No destination found... That can't be good.</span>"
|
||||
return
|
||||
// VOREStation Add End
|
||||
else
|
||||
user << "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>"
|
||||
calibrated = 1
|
||||
|
||||
@@ -104,8 +104,8 @@
|
||||
// Note that the current station being used will be pruned from this list upon being instantiated
|
||||
destination_names = list(
|
||||
"NSS Exodus in Nyx",
|
||||
//"NCS Northern Star in Vir",
|
||||
"NLS Southern Cross in Vir",
|
||||
"NCS Northern Star in Vir",
|
||||
//"NLS Southern Cross in Vir",
|
||||
"NAS Vir Central Command",
|
||||
"a dockyard orbiting Sif",
|
||||
"an asteroid orbiting Kara",
|
||||
@@ -235,6 +235,19 @@
|
||||
motto = ""
|
||||
|
||||
ship_prefixes = list("WTV" = "freight")
|
||||
ship_names = list(
|
||||
"Comet",
|
||||
"Aurora",
|
||||
"Supernova",
|
||||
"Nebula",
|
||||
"Galaxy",
|
||||
"Starburst",
|
||||
"Constellation",
|
||||
"Pulsar",
|
||||
"Quark",
|
||||
"Void",
|
||||
"Asteroid"
|
||||
)
|
||||
destination_names = list()
|
||||
|
||||
/datum/lore/organization/tsc/bishop
|
||||
|
||||
@@ -152,7 +152,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
||||
if(pref.species)
|
||||
S = all_species[pref.species]
|
||||
else
|
||||
S = all_species["Human"]
|
||||
S = all_species[SPECIES_HUMAN]
|
||||
var/list/possible_genders = S.genders
|
||||
if(!pref.organ_data || pref.organ_data[BP_TORSO] != "cyborg")
|
||||
return possible_genders
|
||||
|
||||
@@ -69,7 +69,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
|
||||
if(!pref.species || !(pref.species in playable_species))
|
||||
pref.species = "Human"
|
||||
pref.species = SPECIES_HUMAN
|
||||
pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair))
|
||||
pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair))
|
||||
pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair))
|
||||
@@ -591,7 +591,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
pref.rlimb_data[second_limb] = null
|
||||
|
||||
if("Prosthesis")
|
||||
var/tmp_species = pref.species ? pref.species : "Human"
|
||||
var/tmp_species = pref.species ? pref.species : SPECIES_HUMAN
|
||||
var/list/usable_manufacturers = list()
|
||||
for(var/company in chargen_robolimbs)
|
||||
var/datum/robolimb/M = chargen_robolimbs[company]
|
||||
@@ -734,7 +734,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
|
||||
/datum/category_item/player_setup_item/general/body/proc/SetSpecies(mob/user)
|
||||
if(!pref.species_preview || !(pref.species_preview in all_species))
|
||||
pref.species_preview = "Human"
|
||||
pref.species_preview = SPECIES_HUMAN
|
||||
var/datum/species/current_species = all_species[pref.species_preview]
|
||||
var/dat = "<body>"
|
||||
dat += "<center><h2>[current_species.name] \[<a href='?src=\ref[src];show_species=1'>change</a>\]</h2></center><hr/>"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Alien clothing.
|
||||
/datum/gear/suit/zhan_furs
|
||||
display_name = "Zhan-Khazan furs (Tajara)"
|
||||
display_name = "Zhan-Khazan furs (Tajaran)"
|
||||
path = /obj/item/clothing/suit/tajaran/furs
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/head/zhan_scarf
|
||||
display_name = "Zhan headscarf"
|
||||
path = /obj/item/clothing/head/tajaran/scarf
|
||||
whitelisted = "Tajara"
|
||||
whitelisted = SPECIES_TAJ
|
||||
|
||||
/datum/gear/suit/unathi_mantle
|
||||
display_name = "hide mantle (Unathi)"
|
||||
@@ -19,7 +19,7 @@
|
||||
display_name = "headtail chain selection (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/chain
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/chains/New()
|
||||
..()
|
||||
@@ -33,7 +33,7 @@
|
||||
display_name = "headtail band selection (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/band
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/bands/New()
|
||||
..()
|
||||
@@ -47,7 +47,7 @@
|
||||
display_name = "short headtail cloth (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/cloth_male/black
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/cloth/short/New()
|
||||
..()
|
||||
@@ -61,7 +61,7 @@
|
||||
display_name = "long headtail cloth (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/cloth_female/black
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/cloth/long/New()
|
||||
..()
|
||||
@@ -75,7 +75,7 @@
|
||||
display_name = "Colored bands (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/colored/band
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/colored/band/New()
|
||||
..()
|
||||
@@ -85,7 +85,7 @@
|
||||
display_name = "Colored chain (Skrell)"
|
||||
path = /obj/item/clothing/ears/skrell/colored/chain
|
||||
sort_category = "Xenowear"
|
||||
whitelisted = "Skrell"
|
||||
whitelisted = SPECIES_SKRELL
|
||||
|
||||
/datum/gear/ears/skrell/colored/chain/New()
|
||||
..()
|
||||
@@ -94,7 +94,7 @@
|
||||
/datum/gear/uniform/smock
|
||||
display_name = "smock selection (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/smock
|
||||
whitelisted = "Teshari"
|
||||
whitelisted = SPECIES_TESHARI
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/smock/New()
|
||||
@@ -108,7 +108,7 @@
|
||||
/datum/gear/uniform/undercoat
|
||||
display_name = "undercoat selection (Teshari)"
|
||||
path = /obj/item/clothing/under/seromi/undercoat
|
||||
whitelisted = "Teshari"
|
||||
whitelisted = SPECIES_TESHARI
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/uniform/undercoat/New()
|
||||
@@ -122,7 +122,7 @@
|
||||
/datum/gear/suit/cloak
|
||||
display_name = "cloak selection (Teshari)"
|
||||
path = /obj/item/clothing/suit/storage/seromi/cloak
|
||||
whitelisted = "Teshari"
|
||||
whitelisted = SPECIES_TESHARI
|
||||
sort_category = "Xenowear"
|
||||
|
||||
/datum/gear/suit/cloak/New()
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
||||
|
||||
/datum/trait/modifier/mental/tajaraphobe
|
||||
name = "Tajara-phobic"
|
||||
name = "Tajaran-phobic"
|
||||
desc = "Boilerplate racism for cats goes here."
|
||||
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ datum/preferences
|
||||
var/r_eyes = 0 //Eye color
|
||||
var/g_eyes = 0 //Eye color
|
||||
var/b_eyes = 0 //Eye color
|
||||
var/species = "Human" //Species datum to use.
|
||||
var/species = SPECIES_HUMAN //Species datum to use.
|
||||
var/species_preview //Used for the species selection window.
|
||||
var/list/alternate_languages = list() //Secondary language(s)
|
||||
var/list/language_prefixes = list() //Kanguage prefix keys
|
||||
@@ -293,11 +293,10 @@ datum/preferences
|
||||
|
||||
if(icon_updates)
|
||||
character.force_update_limbs()
|
||||
character.update_mutations(0)
|
||||
character.update_underwear(0)
|
||||
character.update_hair(0)
|
||||
character.update_eyes(0)
|
||||
character.update_icons_all()
|
||||
character.update_icons_body()
|
||||
character.update_mutations()
|
||||
character.update_underwear()
|
||||
character.update_hair()
|
||||
|
||||
/datum/preferences/proc/open_load_dialog(mob/user)
|
||||
var/dat = "<body>"
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
*/
|
||||
var/list/sprite_sheets_refit = null
|
||||
var/ear_protection = 0
|
||||
var/blood_sprite_state
|
||||
|
||||
//Updates the icons of the mob wearing the clothing item, if any.
|
||||
/obj/item/clothing/proc/update_clothing_icon()
|
||||
@@ -83,16 +84,14 @@
|
||||
|
||||
//Set species_restricted list
|
||||
switch(target_species)
|
||||
if("Human", "Skrell") //humanoid bodytypes
|
||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell/humans can wear each other's suits
|
||||
if(SPECIES_HUMAN, SPECIES_SKRELL) //humanoid bodytypes
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell/humans can wear each other's suits
|
||||
else
|
||||
species_restricted = list(target_species)
|
||||
|
||||
//Set icon
|
||||
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
||||
icon_override = sprite_sheets_refit[target_species]
|
||||
else
|
||||
icon_override = initial(icon_override)
|
||||
sprite_sheets[target_species] = sprite_sheets_refit[target_species]
|
||||
|
||||
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
||||
icon = sprite_sheets_obj[target_species]
|
||||
@@ -105,17 +104,15 @@
|
||||
|
||||
//Set species_restricted list
|
||||
switch(target_species)
|
||||
if("Skrell")
|
||||
species_restricted = list("Human", "Skrell", "Promethean") //skrell helmets fit humans too
|
||||
if(SPECIES_SKRELL)
|
||||
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_PROMETHEAN) //skrell helmets fit humans too
|
||||
|
||||
else
|
||||
species_restricted = list(target_species)
|
||||
|
||||
//Set icon
|
||||
if (sprite_sheets_refit && (target_species in sprite_sheets_refit))
|
||||
icon_override = sprite_sheets_refit[target_species]
|
||||
else
|
||||
icon_override = initial(icon_override)
|
||||
sprite_sheets[target_species] = sprite_sheets_refit[target_species]
|
||||
|
||||
if (sprite_sheets_obj && (target_species in sprite_sheets_obj))
|
||||
icon = sprite_sheets_obj[target_species]
|
||||
@@ -130,7 +127,7 @@
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_EARS
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/ears.dmi')
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/ears.dmi')
|
||||
|
||||
/obj/item/clothing/ears/attack_hand(mob/user as mob)
|
||||
if (!user) return
|
||||
@@ -197,6 +194,7 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon = 'icons/obj/clothing/gloves.dmi'
|
||||
siemens_coefficient = 0.9
|
||||
blood_sprite_state = "bloodyhands"
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
|
||||
@@ -210,8 +208,8 @@
|
||||
slot_flags = SLOT_GLOVES
|
||||
attack_verb = list("challenged")
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/gloves.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/gloves.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/gloves.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/gloves/update_clothing_icon()
|
||||
@@ -244,8 +242,8 @@
|
||||
name = "modified [name]"
|
||||
desc = "[desc]<br>They have had the fingertips cut off of them."
|
||||
if("exclude" in species_restricted)
|
||||
species_restricted -= "Unathi"
|
||||
species_restricted -= "Tajara"
|
||||
species_restricted -= SPECIES_UNATHI
|
||||
species_restricted -= SPECIES_TAJ
|
||||
return
|
||||
*/
|
||||
|
||||
@@ -300,7 +298,7 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
icon = 'icons/obj/clothing/rings.dmi'
|
||||
gender = NEUTER
|
||||
species_restricted = list("exclude", "Diona")
|
||||
species_restricted = list("exclude", SPECIES_DIONA)
|
||||
siemens_coefficient = 1
|
||||
glove_level = 1
|
||||
fingerprint_chance = 100
|
||||
@@ -318,15 +316,17 @@
|
||||
body_parts_covered = HEAD
|
||||
slot_flags = SLOT_HEAD
|
||||
w_class = ITEMSIZE_SMALL
|
||||
blood_sprite_state = "helmetblood"
|
||||
|
||||
var/light_overlay = "helmet_light"
|
||||
var/light_applied
|
||||
var/brightness_on
|
||||
var/on = 0
|
||||
var/image/helmet_light
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/head.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/attack_self(mob/user)
|
||||
@@ -386,29 +386,29 @@
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/head/update_icon(var/mob/user)
|
||||
|
||||
overlays.Cut()
|
||||
var/mob/living/carbon/human/H
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
if(ishuman(user))
|
||||
H = user
|
||||
|
||||
if(on)
|
||||
|
||||
// Generate object icon.
|
||||
if(!light_overlay_cache["[light_overlay]_icon"])
|
||||
light_overlay_cache["[light_overlay]_icon"] = image("icon" = 'icons/obj/light_overlays.dmi', "icon_state" = "[light_overlay]")
|
||||
overlays |= light_overlay_cache["[light_overlay]_icon"]
|
||||
light_overlay_cache["[light_overlay]_icon"] = image(icon = 'icons/obj/light_overlays.dmi', icon_state = "[light_overlay]")
|
||||
helmet_light = light_overlay_cache["[light_overlay]_icon"]
|
||||
add_overlay(helmet_light)
|
||||
|
||||
// Generate and cache the on-mob icon, which is used in update_inv_head().
|
||||
var/cache_key = "[light_overlay][H ? "_[H.species.get_bodytype(H)]" : ""]"
|
||||
var/body_type = (H && H.species.get_bodytype(H))
|
||||
var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? "_[body_type]" : ""]"
|
||||
if(!light_overlay_cache[cache_key])
|
||||
var/use_icon = 'icons/mob/light_overlays.dmi'
|
||||
if(H && sprite_sheets[H.species.get_bodytype(H)])
|
||||
use_icon = sprite_sheets[H.species.get_bodytype(H)]
|
||||
light_overlay_cache[cache_key] = image("icon" = use_icon, "icon_state" = "[light_overlay]")
|
||||
var/use_icon = LAZYACCESS(sprite_sheets,body_type) || 'icons/mob/light_overlays.dmi'
|
||||
light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]")
|
||||
|
||||
if(H)
|
||||
H.update_inv_head()
|
||||
else if(helmet_light)
|
||||
cut_overlay(helmet_light)
|
||||
helmet_light = null
|
||||
|
||||
user.update_inv_head() //Will redraw the helmet with the light on the mob
|
||||
|
||||
/obj/item/clothing/head/update_clothing_icon()
|
||||
if (ismob(src.loc))
|
||||
@@ -427,11 +427,12 @@
|
||||
body_parts_covered = HEAD
|
||||
slot_flags = SLOT_MASK
|
||||
body_parts_covered = FACE|EYES
|
||||
blood_sprite_state = "maskblood"
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/masks.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/masks.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/mask.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/mask.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/masks.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/masks.dmi',
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/mask.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/mask.dmi'
|
||||
)
|
||||
|
||||
var/voicechange = 0
|
||||
@@ -460,6 +461,7 @@
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = FEET
|
||||
slot_flags = SLOT_FEET
|
||||
blood_sprite_state = "shoeblood"
|
||||
|
||||
var/can_hold_knife = 0
|
||||
var/obj/item/holding
|
||||
@@ -475,10 +477,10 @@
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
force = 2
|
||||
var/overshoes = 0
|
||||
species_restricted = list("exclude","Teshari", "Vox")
|
||||
species_restricted = list("exclude",SPECIES_TESHARI, SPECIES_VOX)
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/shoes.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/shoes.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/shoes.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/shoes/proc/draw_knife()
|
||||
@@ -581,9 +583,10 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
preserve_item = 1
|
||||
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/suit.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
|
||||
)
|
||||
|
||||
valid_accessory_slots = list("over", "armband")
|
||||
@@ -609,6 +612,7 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
show_messages = 1
|
||||
blood_sprite_state = "uniformblood"
|
||||
|
||||
var/has_sensor = 1 //For the crew computer 2 = unable to change mode
|
||||
var/sensor_mode = 0
|
||||
@@ -621,8 +625,8 @@
|
||||
var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||
var/rolled_sleeves = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/uniform.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/uniform.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/uniform.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi'
|
||||
)
|
||||
|
||||
//convenience var for defining the icon state for the overlay used when the clothing is worn.
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/obj/item/clothing/apply_accessories(var/image/standing)
|
||||
if(LAZYLEN(accessories))
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
standing.add_overlay(A.get_mob_overlay())
|
||||
|
||||
/obj/item/clothing/apply_blood(var/image/standing)
|
||||
if(blood_DNA && blood_sprite_state && ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state)
|
||||
bloodsies.color = blood_color
|
||||
standing.add_overlay(bloodsies)
|
||||
|
||||
//UNIFORM: Always appends "_s" to iconstate, stupidly.
|
||||
/obj/item/clothing/under/get_worn_icon_state(var/slot_name)
|
||||
var/state2use = ..()
|
||||
state2use += "_s"
|
||||
return state2use
|
||||
|
||||
//HELMET: May have a lighting overlay
|
||||
/obj/item/clothing/head/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
|
||||
var/image/standing = ..()
|
||||
if(on && slot_name == slot_head_str)
|
||||
var/cache_key = "[light_overlay][LAZYACCESS(sprite_sheets,body_type) ? "_[body_type]" : ""]"
|
||||
if(standing && light_overlay_cache[cache_key])
|
||||
standing.add_overlay(light_overlay_cache[cache_key])
|
||||
return standing
|
||||
|
||||
//SUIT: Blood state is slightly different
|
||||
/obj/item/clothing/suit/apply_blood(var/image/standing)
|
||||
if(blood_DNA && blood_sprite_state && ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = "[blood_overlay_type]blood")
|
||||
bloodsies.color = blood_color
|
||||
standing.add_overlay(bloodsies)
|
||||
@@ -46,7 +46,7 @@
|
||||
icon = 'icons/obj/clothing/ears.dmi'
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
species_restricted = list("Skrell")
|
||||
species_restricted = list(SPECIES_SKRELL)
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain
|
||||
name = "Gold headtail chains"
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
desc = "an ultra rare hat. It commands a certain respect."
|
||||
icon_state = "petehat"
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/head.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
|
||||
@@ -153,8 +153,8 @@
|
||||
icon_state = "swathelm"
|
||||
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
|
||||
sprite_sheets = list(
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||
)
|
||||
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
body_parts_covered = 0 //Hack to allow vox to eat while wearing this mask.
|
||||
item_flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | PHORONGUARD
|
||||
phoronproof = 1
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
filtered_gases = list("oxygen", "sleeping_agent")
|
||||
|
||||
/obj/item/clothing/mask/gas/syndicate
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
icon_state = "boots-vox"
|
||||
item_flags = PHORONGUARD
|
||||
phoronproof = 1
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
|
||||
action_button_name = "Toggle the magclaws"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "Smoothly contoured and polished to a shine. Still looks like a fishbowl."
|
||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 50, bomb = 50, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
species_restricted = list("Skrell","Human")
|
||||
species_restricted = list(SPECIES_SKRELL,SPECIES_HUMAN)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/skrell/white
|
||||
icon_state = "skrell_helmet_white"
|
||||
@@ -19,7 +19,7 @@
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
species_restricted = list("Skrell","Human")
|
||||
species_restricted = list(SPECIES_SKRELL,SPECIES_HUMAN)
|
||||
|
||||
/obj/item/clothing/suit/space/skrell/white
|
||||
icon_state = "skrell_suit_white"
|
||||
@@ -39,7 +39,7 @@
|
||||
siemens_coefficient = 0.2
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/vox
|
||||
armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 100, rad = 50)
|
||||
@@ -47,7 +47,7 @@
|
||||
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT | PHORONGUARD
|
||||
flags_inv = 0
|
||||
phoronproof = 1
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/vox/pressure
|
||||
name = "alien helmet"
|
||||
|
||||
@@ -180,6 +180,15 @@
|
||||
spark_system = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rig/get_worn_icon_file(var/body_type,var/slot_name,var/default_icon,var/inhands)
|
||||
if(!inhands && slot_name == slot_back_str)
|
||||
if(icon_override)
|
||||
return icon_override
|
||||
else if(mob_icon)
|
||||
return mob_icon
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rig/proc/suit_is_deployed()
|
||||
if(!istype(wearer) || src.loc != wearer || wearer.back != src)
|
||||
return 0
|
||||
@@ -331,7 +340,6 @@
|
||||
piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT)
|
||||
else
|
||||
piece.item_flags |= (STOPPRESSUREDAMAGE|AIRTIGHT)
|
||||
update_icon(1)
|
||||
|
||||
/obj/item/weapon/rig/ui_action_click()
|
||||
toggle_cooling(usr)
|
||||
@@ -599,7 +607,7 @@
|
||||
// update_inv_wear_suit(), handle species checks here.
|
||||
if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype(wearer)])
|
||||
species_icon = sprite_sheets[wearer.species.get_bodytype(wearer)]
|
||||
mob_icon = image("icon" = species_icon, "icon_state" = "[icon_state]")
|
||||
mob_icon = icon(icon = species_icon, icon_state = "[icon_state]")
|
||||
|
||||
if(installed_modules.len)
|
||||
for(var/obj/item/rig_module/module in installed_modules)
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
cold_protection = HEAD|FACE|EYES
|
||||
brightness_on = 4
|
||||
sprite_sheets = list(
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/helmet.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
species_restricted = null
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
resilience = 0.2
|
||||
can_breach = 1
|
||||
sprite_sheets = list(
|
||||
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
|
||||
)
|
||||
supporting_limbs = list()
|
||||
var/obj/item/weapon/material/knife/tacknife
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
siemens_coefficient = 0.2
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/breacher
|
||||
species_restricted = list("Unathi")
|
||||
species_restricted = list(SPECIES_UNATHI)
|
||||
force = 5
|
||||
|
||||
/obj/item/clothing/suit/space/rig/breacher
|
||||
species_restricted = list("Unathi")
|
||||
species_restricted = list(SPECIES_UNATHI)
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/breacher
|
||||
species_restricted = list("Unathi")
|
||||
species_restricted = list(SPECIES_UNATHI)
|
||||
|
||||
/*
|
||||
* VOX
|
||||
@@ -62,27 +62,27 @@
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/vox
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/vox
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
phoronproof = 1
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/vox
|
||||
name = "talons"
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/shoes.dmi'
|
||||
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi'
|
||||
)
|
||||
phoronproof = 1
|
||||
|
||||
/obj/item/clothing/suit/space/rig/vox
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
phoronproof = 1
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/vox
|
||||
siemens_coefficient = 0
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/gloves.dmi'
|
||||
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi'
|
||||
)
|
||||
phoronproof = 1
|
||||
|
||||
|
||||
@@ -19,10 +19,11 @@
|
||||
light_overlay = "helmet_light_dual"
|
||||
camera_networks = list(NETWORK_SECURITY)
|
||||
|
||||
//Internal Affairs suit
|
||||
/obj/item/weapon/rig/internalaffairs
|
||||
name = "augmented tie"
|
||||
suit_type = "augmented suit"
|
||||
desc = "Prepare for paperwork."
|
||||
desc = "The last suit you'll ever wear."
|
||||
icon_state = "internalaffairs_rig"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
@@ -30,7 +31,13 @@
|
||||
offline_slowdown = 0
|
||||
offline_vision_restriction = 0
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/secure/briefcase)
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/briefcase,
|
||||
/obj/item/weapon/storage/secure/briefcase
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -55,10 +62,11 @@
|
||||
helm_type = null
|
||||
boot_type = null
|
||||
|
||||
//Mining suit
|
||||
/obj/item/weapon/rig/industrial
|
||||
name = "industrial suit control module"
|
||||
suit_type = "industrial hardsuit"
|
||||
desc = "A heavy, powerful rig used by construction crews and mining corporations."
|
||||
desc = "A heavy, powerful hardsuit used by construction crews and mining corporations."
|
||||
icon_state = "engineering_rig"
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 50)
|
||||
slowdown = 1
|
||||
@@ -69,7 +77,15 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/industrial
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/bag/ore,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/weapon/rcd
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -84,10 +100,11 @@
|
||||
/obj/item/rig_module/vision/material,
|
||||
/obj/item/rig_module/maneuvering_jets) //VOREStation Edit - Added maneuvering jets
|
||||
|
||||
//Engineering suit
|
||||
/obj/item/weapon/rig/eva
|
||||
name = "EVA suit control module"
|
||||
suit_type = "EVA hardsuit"
|
||||
desc = "A light rig for repairs and maintenance to the outside of habitats and vessels."
|
||||
desc = "A light hardsuit for repairs and maintenance to the outside of habitats and vessels."
|
||||
icon_state = "eva_rig"
|
||||
armor = list(melee = 30, bullet = 10, laser = 20,energy = 25, bomb = 20, bio = 100, rad = 100)
|
||||
slowdown = 0
|
||||
@@ -98,7 +115,14 @@
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/eva
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/eva
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd)
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/briefcase/inflatable,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/weapon/rcd
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -135,7 +159,14 @@
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ce
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/ce
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/briefcase/inflatable,
|
||||
/obj/item/device/t_scanner,
|
||||
/obj/item/weapon/rcd
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -157,6 +188,7 @@
|
||||
/obj/item/rig_module/vision/meson
|
||||
)
|
||||
|
||||
//Research Director's suit. Just add red crowbar.
|
||||
/obj/item/weapon/rig/hazmat
|
||||
|
||||
name = "AMI control module"
|
||||
@@ -170,7 +202,23 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazmat
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/device/healthanalyzer,/obj/item/device/measuring_tape,/obj/item/device/ano_scanner,/obj/item/device/depth_scanner,/obj/item/device/core_sampler,/obj/item/device/gps,/obj/item/device/beacon_locator,/obj/item/device/radio/beacon,/obj/item/weapon/pickaxe/hand,/obj/item/weapon/storage/bag/fossils)
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/stack/flag,
|
||||
/obj/item/weapon/storage/excavation,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/device/measuring_tape,
|
||||
/obj/item/device/ano_scanner,
|
||||
/obj/item/device/depth_scanner,
|
||||
/obj/item/device/core_sampler,
|
||||
/obj/item/device/gps,
|
||||
/obj/item/device/beacon_locator,
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/weapon/pickaxe/hand,
|
||||
/obj/item/weapon/storage/bag/fossils)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -185,6 +233,7 @@
|
||||
/obj/item/rig_module/device/anomaly_scanner
|
||||
)
|
||||
|
||||
//Paramedic suit
|
||||
/obj/item/weapon/rig/medical
|
||||
|
||||
name = "rescue suit control module"
|
||||
@@ -198,7 +247,15 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/medical
|
||||
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/roller )
|
||||
allowed = list(
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/firstaid,
|
||||
/obj/item/device/healthanalyzer,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/roller
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
@@ -215,6 +272,7 @@
|
||||
/obj/item/rig_module/vision/medhud
|
||||
)
|
||||
|
||||
//Security suit
|
||||
/obj/item/weapon/rig/hazard
|
||||
name = "hazard hardsuit control module"
|
||||
suit_type = "hazard hardsuit"
|
||||
@@ -228,7 +286,13 @@
|
||||
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/hazard
|
||||
|
||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
||||
allowed = list(
|
||||
/obj/item/weapon/gun,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/melee/baton
|
||||
)
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.9
|
||||
species_restricted = list("exclude","Diona")
|
||||
species_restricted = list("exclude",SPECIES_DIONA)
|
||||
preserve_item = 1
|
||||
phoronproof = 1
|
||||
flash_protection = FLASH_PROTECTION_MAJOR
|
||||
@@ -62,7 +62,7 @@
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.9
|
||||
species_restricted = list("exclude","Diona")
|
||||
species_restricted = list("exclude",SPECIES_DIONA)
|
||||
preserve_item = 1
|
||||
phoronproof = 1
|
||||
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
//Species-specific stuff.
|
||||
species_restricted = list("Human", "Promethean")
|
||||
sprite_sheets_refit = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/helmet.dmi'
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi'
|
||||
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
||||
)
|
||||
sprite_sheets_obj = list(
|
||||
"Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi',
|
||||
"Tajara" = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
||||
"Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi',
|
||||
"Teshari" = 'icons/obj/clothing/species/seromi/hats.dmi'
|
||||
SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/hats.dmi',
|
||||
SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
||||
SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/hats.dmi',
|
||||
SPECIES_TESHARI = 'icons/obj/clothing/species/seromi/hats.dmi'
|
||||
)
|
||||
|
||||
light_overlay = "helmet_light"
|
||||
@@ -38,18 +38,18 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
|
||||
species_restricted = list("Human", "Skrell", "Promethean")
|
||||
species_restricted = list("Human", SPECIES_SKRELL, "Promethean")
|
||||
sprite_sheets_refit = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
"Skrell" = 'icons/mob/species/skrell/suit.dmi'
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/suit.dmi',
|
||||
SPECIES_TAJ = 'icons/mob/species/tajaran/suit.dmi',
|
||||
SPECIES_SKRELL = 'icons/mob/species/skrell/suit.dmi'
|
||||
//Teshari have a general sprite sheet defined in modules/clothing/clothing.dm
|
||||
)
|
||||
sprite_sheets_obj = list(
|
||||
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
|
||||
"Tajara" = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
||||
"Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi',
|
||||
"Teshari" = 'icons/obj/clothing/species/seromi/suits.dmi'
|
||||
SPECIES_UNATHI = 'icons/obj/clothing/species/unathi/suits.dmi',
|
||||
SPECIES_TAJ = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
||||
SPECIES_SKRELL = 'icons/obj/clothing/species/skrell/suits.dmi',
|
||||
SPECIES_TESHARI = 'icons/obj/clothing/species/seromi/suits.dmi'
|
||||
)
|
||||
|
||||
//Breach thresholds, should ideally be inherited by most (if not all) voidsuits.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_override = 'icons/mob/species/seromi/teshari_cloak.dmi'
|
||||
icon_state = "tesh_cloak_bo"
|
||||
item_state = "tesh_cloak_bo"
|
||||
species_restricted = list("Teshari")
|
||||
species_restricted = list(SPECIES_TESHARI)
|
||||
body_parts_covered = UPPER_TORSO|ARMS
|
||||
|
||||
/obj/item/clothing/suit/storage/seromi/cloak/black_orange
|
||||
|
||||
@@ -6,5 +6,5 @@
|
||||
icon_state = "vox-scrap"
|
||||
icon_state = "vox-scrap"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
siemens_coefficient = 1 //Its literally metal
|
||||
@@ -265,6 +265,15 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/straight_jacket/equipped(var/mob/living/user,var/slot)
|
||||
. = ..()
|
||||
if(slot == slot_wear_suit)
|
||||
user.drop_l_hand()
|
||||
user.drop_r_hand()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.drop_from_inventory(H.handcuffed)
|
||||
|
||||
/obj/item/clothing/suit/ianshirt
|
||||
name = "worn shirt"
|
||||
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in."
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/concealed_holster = 0
|
||||
var/mob/living/carbon/human/wearer = null //To check if the wearer changes, so species spritesheets change properly.
|
||||
|
||||
sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
|
||||
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too!
|
||||
|
||||
/obj/item/clothing/accessory/Destroy()
|
||||
on_removed()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/clothing/under/seromi
|
||||
icon = 'icons/obj/clothing/species/seromi/uniform.dmi'
|
||||
icon_state = "seromi_grey"
|
||||
species_restricted = list("Teshari")
|
||||
species_restricted = list(SPECIES_TESHARI)
|
||||
|
||||
/obj/item/clothing/under/seromi/smock
|
||||
name = "small grey smock"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/clothing/under/vox
|
||||
has_sensor = 0
|
||||
species_restricted = list("Vox")
|
||||
species_restricted = list(SPECIES_VOX)
|
||||
valid_accessory_slots = list("vox")
|
||||
restricted_accessory_slots = list("vox")
|
||||
phoronproof = 1
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
var/datum/supply_order/O = new /datum/supply_order()
|
||||
O.ordernum = supply_controller.ordernum
|
||||
O.object = supply_controller.supply_packs[pick(supply_controller.supply_packs)]
|
||||
O.orderedby = random_name(pick(MALE,FEMALE), species = "Human")
|
||||
O.orderedby = random_name(pick(MALE,FEMALE), species = SPECIES_HUMAN)
|
||||
supply_controller.shoppinglist += O
|
||||
@@ -2,7 +2,7 @@
|
||||
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
||||
if (config.use_irc_bot)
|
||||
if (config.use_node_bot)
|
||||
shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[msg]\"")
|
||||
shell("node bridge.js -h \"[config.irc_bot_host]\" -p \"[config.irc_bot_port]\" -c \"[channel]\" -m \"[escape_shell_arg(msg)]\"")
|
||||
else
|
||||
if (config.irc_bot_host)
|
||||
if(config.irc_bot_export)
|
||||
@@ -17,10 +17,10 @@
|
||||
nudge_lib = "lib/nudge.so"
|
||||
|
||||
spawn(0)
|
||||
call(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[msg]")
|
||||
call(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[escape_shell_arg(msg)]")
|
||||
else
|
||||
spawn(0)
|
||||
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [msg]")
|
||||
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [escape_shell_arg(msg)]")
|
||||
return
|
||||
|
||||
/proc/send2mainirc(var/msg)
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
// Ported from /vg/.
|
||||
/proc/escape_shell_arg(var/arg)
|
||||
// RCE prevention
|
||||
// - Encloses arg in single quotes
|
||||
// - Escapes single quotes
|
||||
// Also escapes %, ! on windows
|
||||
if(world.system_type == MS_WINDOWS)
|
||||
arg = replacetext(arg, "^", "^^") // Escape char
|
||||
arg = replacetext(arg, "%", "%%") // %PATH% -> %%PATH%%
|
||||
arg = replacetext(arg, "!", "^!") // !PATH!, delayed variable expansion on Windows
|
||||
arg = replacetext(arg, "\"", "^\"")
|
||||
arg = "\"[arg]\""
|
||||
else
|
||||
arg = replacetext(arg, "\\", "\\\\'") // Escape char
|
||||
arg = replacetext(arg, "'", "\\'") // No breaking out of the single quotes.
|
||||
arg = "'[arg]'"
|
||||
return arg
|
||||
|
||||
/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
|
||||
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
||||
if(scriptsprefix) script = "scripts/" + script
|
||||
if(scriptsprefix)
|
||||
script = "scripts/" + script
|
||||
|
||||
if(world.system_type == MS_WINDOWS)
|
||||
script = replacetext(script, "/", "\\")
|
||||
|
||||
var/command = config.python_path + " " + script + " " + args
|
||||
|
||||
return shell(command)
|
||||
return shell(command)
|
||||
@@ -30,7 +30,7 @@
|
||||
"_____ used ____ to create their newest invention, _____!",
|
||||
"Scientists are not allowed to make Gatling _____.",
|
||||
"It's not a party until the ____ arrive.",
|
||||
"No matter how many Tajara you have, _____ is never acceptable.",
|
||||
"No matter how many Tajaran you have, _____ is never acceptable.",
|
||||
"No, the AI's first law is NOT to serve _____.",
|
||||
"The robots are not disposal bins for your _____.",
|
||||
"You can never have too many _____ on shift.",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"Being in a cult",
|
||||
"Racially biased lawsets",
|
||||
"An Unathi who WON'T STOP FIGHTING",
|
||||
"Tajara fetishists",
|
||||
"Tajaran fetishists",
|
||||
"Bald thirty-year-olds",
|
||||
"A Chief Engineer who can't setup the engine",
|
||||
"Being sucked out into space",
|
||||
|
||||
@@ -247,7 +247,6 @@
|
||||
var/mob/M = obj.loc
|
||||
if(ismob(M))
|
||||
M.remove_from_mob(obj)
|
||||
M.update_icons_layers() //so their overlays update
|
||||
|
||||
if(!silent)
|
||||
var/obj/oldobj = obj
|
||||
|
||||
@@ -104,8 +104,8 @@
|
||||
base_icon = 'icons/turf/flooring/asteroid.dmi'
|
||||
initial_flooring = null
|
||||
|
||||
/turf/simulated/floor/holofloor/desert/New()
|
||||
..()
|
||||
/turf/simulated/floor/holofloor/desert/initialize()
|
||||
. = ..()
|
||||
if(prob(10))
|
||||
add_overlay("asteroid[rand(0,9)]")
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
|
||||
/datum/lore/codex/page/tajaran
|
||||
name = "Tajaran"
|
||||
keywords = list("Tajara")
|
||||
data = "The Tajara are a race of humanoid mammalian aliens from Meralar, the fourth planet of the Rarkajar star system. Thickly furred and protected \
|
||||
keywords = list("Tajaran")
|
||||
data = "The Tajaran are a race of humanoid mammalian aliens from Meralar, the fourth planet of the Rarkajar star system. Thickly furred and protected \
|
||||
from cold, they thrive on their subarctic planet, where the only terran temperate areas spread across the equator and tropical belt. \
|
||||
With their own share of bloody wars and great technological advances, the Tajaran are a proud kind. They fiercely believe they belong \
|
||||
among the stars and consider themselves a rightful interstellar nation, even if the humans helped them to actually achieve superluminal \
|
||||
|
||||
@@ -96,7 +96,7 @@ var/global/use_preloader = FALSE
|
||||
var/zcrd = text2num(dmmRegex.group[5]) + z_offset - 1
|
||||
|
||||
var/zexpansion = zcrd > world.maxz
|
||||
if(zexpansion)
|
||||
if(zexpansion && !measureOnly)
|
||||
if(cropMap)
|
||||
continue
|
||||
else
|
||||
@@ -385,6 +385,8 @@ var/global/use_preloader = FALSE
|
||||
/dmm_suite/proc/readlist(text as text, delimiter=",", keys_only_string = FALSE)
|
||||
|
||||
var/list/to_return = list()
|
||||
if(text == "")
|
||||
return to_return // Fast bail-out
|
||||
|
||||
var/position
|
||||
var/old_position = 1
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
resource_field += mine_turf
|
||||
|
||||
if(!resource_field.len)
|
||||
system_error("resources depleted")
|
||||
system_error("Resources depleted.")
|
||||
|
||||
/obj/machinery/mining/drill/proc/use_cell_power()
|
||||
if(!cell) return 0
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
var/obj/item/stack/material/S = new stacktype (get_turf(machine.output))
|
||||
S.amount = machine.stack_storage[href_list["release_stack"]]
|
||||
machine.stack_storage[href_list["release_stack"]] = 0
|
||||
S.update_icon()
|
||||
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
@@ -128,6 +129,7 @@
|
||||
var/obj/item/stack/material/S = new stacktype (get_turf(output))
|
||||
S.amount = stack_amt
|
||||
stack_storage[sheet] -= stack_amt
|
||||
S.update_icon()
|
||||
|
||||
console.updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -108,6 +108,7 @@ var/global/list/ore_data = list()
|
||||
/ore/diamond
|
||||
name = "diamond"
|
||||
display_name = "diamond"
|
||||
alloy = 1
|
||||
compresses_to = "diamond"
|
||||
result_amount = 5
|
||||
spread_chance = 10
|
||||
|
||||
@@ -61,3 +61,66 @@
|
||||
|
||||
outgoing_melee_damage_percent = 0.5 //50% less outgoing melee damage.
|
||||
attack_speed_percent = 1.2 //20% slower attack speed.
|
||||
|
||||
//////////////////////
|
||||
//Surgical Modifiers// As of writing, limited to the 'Frankenstein' modifier.
|
||||
//////////////////////
|
||||
|
||||
/datum/modifier/franken_sickness
|
||||
name = "surgically attached brain"
|
||||
desc = "You feel weak, as your central nervous system is still recovering from being repaired."
|
||||
|
||||
on_created_text = "<span class='warning'><font size='3'>You feel... off, and your head hurts.</font></span>"
|
||||
on_expired_text = "<span class='notice'><font size='3'>You feel some strength returning to you.</font></span>"
|
||||
|
||||
max_health_percent = 0.9 // -10% max health.
|
||||
incoming_damage_percent = 1.1 // 10% more incoming damage.
|
||||
incoming_hal_damage_percent = 1.5 // 50% more halloss damage, stacking on the previous 1.1 widespread.
|
||||
outgoing_melee_damage_percent = 0.9 // 10% less melee damage.
|
||||
disable_duration_percent = 1.25 // Stuns last 25% longer.
|
||||
incoming_healing_percent = 0.9 // -10% to all healing
|
||||
slowdown = 0.5 // Slower, by a smidge.
|
||||
evasion = -5 // 5% easier to hit.
|
||||
accuracy_dispersion = 1 // Inaccurate trait level of tile dispersion.
|
||||
|
||||
stacks = MODIFIER_STACK_ALLOWED //You have somehow had the surgery done twice. Your brain is very, very fucked, but I won't say no.
|
||||
|
||||
/datum/modifier/franken_sickness/can_apply(var/mob/living/L)
|
||||
if(!ishuman(L))
|
||||
return FALSE
|
||||
if(L.isSynthetic()) //Nonhumans and Machines cannot be Frankensteined, at this time.
|
||||
return FALSE
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/modifier/franken_sickness/tick()
|
||||
if(holder.stat != DEAD)
|
||||
if(istype(holder, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/F = holder
|
||||
if(F.can_defib)
|
||||
F.can_defib = 0
|
||||
|
||||
/datum/modifier/franken_sickness/on_expire() //Not permanent, but its child is.
|
||||
holder.add_modifier(/datum/modifier/franken_recovery, 0)
|
||||
|
||||
/datum/modifier/franken_recovery //When Franken_Sickness expires, this will be permanently applied in its place.
|
||||
name = "neural recovery"
|
||||
desc = "You feel out of touch, as your central nervous system is still recovering from being repaired."
|
||||
|
||||
on_created_text = "<span class='warning'><font size='3'>You feel... off. Everything is fuzzy.</font></span>"
|
||||
on_expired_text = "<span class='notice'><font size='3'>You feel your senses returning to you.</font></span>"
|
||||
|
||||
incoming_hal_damage_percent = 1.5 // 50% more halloss damage.
|
||||
disable_duration_percent = 1.25 // Stuns last 25% longer.
|
||||
evasion = -5 // 5% easier to hit.
|
||||
accuracy_dispersion = 1 // Inaccurate trait level of tile dispersion.
|
||||
|
||||
stacks = MODIFIER_STACK_ALLOWED
|
||||
|
||||
/datum/modifier/franken_recovery/can_apply(var/mob/living/L)
|
||||
if(!ishuman(L))
|
||||
return FALSE
|
||||
if(L.isSynthetic()) //Nonhumans and Machines cannot be Frankensteined, at this time.
|
||||
return FALSE
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -103,8 +103,7 @@
|
||||
if (ishuman(body))
|
||||
var/mob/living/carbon/human/H = body
|
||||
icon = H.icon
|
||||
LAZYCLEARLIST(H.list_huds)
|
||||
H.update_icons()
|
||||
underlays = H.underlays
|
||||
overlays = H.overlays
|
||||
else
|
||||
icon = body.icon
|
||||
|
||||
@@ -9,8 +9,8 @@ var/list/holder_mob_icon_cache = list()
|
||||
show_messages = 1
|
||||
|
||||
sprite_sheets = list(
|
||||
"Teshari" = 'icons/mob/species/seromi/head.dmi',
|
||||
"Vox" = 'icons/mob/species/vox/head.dmi'
|
||||
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
|
||||
SPECIES_VOX = 'icons/mob/species/vox/head.dmi'
|
||||
)
|
||||
|
||||
origin_tech = null
|
||||
@@ -83,8 +83,6 @@ var/list/holder_mob_icon_cache = list()
|
||||
H.update_inv_l_hand()
|
||||
else if(H.r_hand == src)
|
||||
H.update_inv_r_hand()
|
||||
else
|
||||
H.regenerate_icons()
|
||||
|
||||
//Mob specific holders.
|
||||
/obj/item/weapon/holder/diona
|
||||
|
||||
@@ -138,7 +138,6 @@ var/list/slot_equipment_priority = list( \
|
||||
remove_from_mob(W, target)
|
||||
if(!(W && W.loc))
|
||||
return 1 // self destroying objects (tk, grabs)
|
||||
update_icons_layers()
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -180,7 +179,7 @@ var/list/slot_equipment_priority = list( \
|
||||
|
||||
/mob/proc/get_inventory_slot(obj/item/I)
|
||||
var/slot = 0
|
||||
for(var/s in slot_back to slot_tie) //kind of worries me
|
||||
for(var/s in 1 to SLOT_TOTAL)
|
||||
if(get_equipped_item(s) == I)
|
||||
slot = s
|
||||
break
|
||||
|
||||
@@ -63,6 +63,20 @@
|
||||
"ka","aasi","far","wa","baq","ara","qara","zir","saam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
|
||||
"hal","ket","jurl","mah","tul","cresh","azu","ragh","mro","mra","mrro","mrra")
|
||||
|
||||
/datum/language/tajaranakhani
|
||||
name = LANGUAGE_AKHANI
|
||||
desc = "The language of the sea-faring Njarir'Akhan Tajaran. Borrowing some elements from Siik, the language is distinctly more structured."
|
||||
speech_verb = "chatters"
|
||||
ask_verb = "mrowls"
|
||||
exclaim_verb = "wails"
|
||||
colour = "akhani"
|
||||
key = "h"
|
||||
flags = WHITELISTED
|
||||
syllables = list("mrr","rr","marr","tar","ahk","ket","hal","kah","dra","nal","kra","vah","dar","hrar", "eh",
|
||||
"ara","ka","zar","mah","ner","zir","mur","hai","raz","ni","ri","nar","njar","jir","ri","ahn","kha","sir",
|
||||
"kar","yar","kzar","rha","hrar","err","fer","rir","rar","yarr","arr","ii'r","jar","kur","ran","rii","ii",
|
||||
"nai","ou","kah","oa","ama","uuk","bel","chi","ayt","kay","kas","akor","tam","yir","enai")
|
||||
|
||||
/datum/language/tajaran/get_random_name(var/gender)
|
||||
|
||||
var/new_name = ..(gender,1)
|
||||
|
||||
@@ -47,13 +47,13 @@
|
||||
autohiss_extra_map = list(
|
||||
"x" = list("ks", "kss", "ksss")
|
||||
)
|
||||
autohiss_exempt = list("Sinta'unathi")
|
||||
autohiss_exempt = list(LANGUAGE_UNATHI)
|
||||
|
||||
/datum/species/tajaran
|
||||
autohiss_basic_map = list(
|
||||
"r" = list("rr", "rrr", "rrrr")
|
||||
)
|
||||
autohiss_exempt = list("Siik")
|
||||
autohiss_exempt = list(LANGUAGE_SIIK,LANGUAGE_AKHANI)
|
||||
|
||||
|
||||
/datum/species/proc/handle_autohiss(message, datum/language/lang, mode)
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
/mob/living/bot/cleanbot/edCLN
|
||||
name = "ED-CLN Cleaning Robot"
|
||||
desc = "A large cleaning robot. It looks rather efficient."
|
||||
icon_state = "edCLN0"
|
||||
req_one_access = list(access_robotics, access_janitor)
|
||||
botcard_access = list(access_janitor, access_maint_tunnels)
|
||||
|
||||
locked = 0 // Start unlocked so roboticist can set them to patrol.
|
||||
wait_if_pulled = 0 // One big boi.
|
||||
min_target_dist = 0
|
||||
|
||||
patrol_speed = 3
|
||||
target_speed = 6
|
||||
|
||||
cleaning = 0
|
||||
blood = 0
|
||||
var/red_switch = 0
|
||||
var/blue_switch = 0
|
||||
var/green_switch = 0
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/update_icons()
|
||||
if(on && busy)
|
||||
icon_state = "edCLN"
|
||||
else
|
||||
icon_state = "edCLN[on]"
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/handleIdle()
|
||||
if(prob(10))
|
||||
custom_emote(2, "makes a less than thrilled beeping sound.")
|
||||
playsound(src.loc, 'sound/machines/synth_yes.ogg', 50, 0)
|
||||
|
||||
if(red_switch && !blue_switch && !green_switch && prob(10) || src.emagged)
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/T = loc
|
||||
T.add_blood()
|
||||
|
||||
if(!red_switch && blue_switch && !green_switch && prob(50) || src.emagged)
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/T = loc
|
||||
visible_message("<span class='notice'>\The [src] squirts a puddle of water on the floor!</span>")
|
||||
T.wet_floor()
|
||||
|
||||
if(!red_switch && !blue_switch && green_switch && prob(10) || src.emagged)
|
||||
if(istype(loc, /turf/simulated))
|
||||
var/turf/simulated/T = loc
|
||||
visible_message("<span class='warning'>\The [src] stomps on \the [T], breaking it!</span>")
|
||||
qdel(T)
|
||||
|
||||
if(red_switch && blue_switch && green_switch && prob(1))
|
||||
src.explode()
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/explode()
|
||||
on = 0
|
||||
visible_message("<span class='danger'>[src] blows apart!</span>")
|
||||
var/turf/Tsec = get_turf(src)
|
||||
|
||||
new /obj/item/weapon/secbot_assembly/ed209_assembly(Tsec)
|
||||
if(prob(50))
|
||||
new /obj/item/robot_parts/l_leg(Tsec)
|
||||
if(prob(50))
|
||||
new /obj/item/robot_parts/r_leg(Tsec)
|
||||
if(prob(50))
|
||||
if(prob(50))
|
||||
new /obj/item/weapon/reagent_containers/glass/bucket(Tsec)
|
||||
else
|
||||
new /obj/item/device/assembly/prox_sensor(Tsec)
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/attack_hand(var/mob/user)
|
||||
var/dat
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
|
||||
dat += "<TT><B>Automatic Station Cleaner v2.0</B></TT><BR><BR>"
|
||||
dat += "Status: <A href='?src=\ref[src];operation=start'>[on ? "On" : "Off"]</A><BR>"
|
||||
dat += "Behaviour controls are [locked ? "locked" : "unlocked"]<BR>"
|
||||
dat += "Maintenance panel is [open ? "opened" : "closed"]"
|
||||
if(!locked || issilicon(user))
|
||||
dat += "<BR>Cleans Blood: <A href='?src=\ref[src];operation=blood'>[blood ? "Yes" : "No"]</A><BR>"
|
||||
dat += "<BR>Patrol station: <A href='?src=\ref[src];operation=patrol'>[will_patrol ? "Yes" : "No"]</A><BR>"
|
||||
if(open && !locked)
|
||||
dat += "<BR>Red Switch: <A href='?src=\ref[src];operation=red_switch'>[red_switch ? "On" : "Off"]</A><BR>"
|
||||
dat += "<BR>Green Switch: <A href='?src=\ref[src];operation=green_switch'>[green_switch ? "On" : "Off"]</A><BR>"
|
||||
dat += "<BR>Blue Switch: <A href='?src=\ref[src];operation=blue_switch'>[blue_switch ? "On" : "Off"]</A>"
|
||||
|
||||
user << browse("<HEAD><TITLE>Cleaner v2.0 controls</TITLE></HEAD>[dat]", "window=autocleaner")
|
||||
onclose(user, "autocleaner")
|
||||
return
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/Topic(href, href_list)
|
||||
usr.set_machine(src)
|
||||
add_fingerprint(usr)
|
||||
switch(href_list["operation"])
|
||||
if("start")
|
||||
if(on)
|
||||
turn_off()
|
||||
else
|
||||
turn_on()
|
||||
if("blood")
|
||||
blood = !blood
|
||||
get_targets()
|
||||
if("patrol")
|
||||
will_patrol = !will_patrol
|
||||
patrol_path = null
|
||||
if("red_switch")
|
||||
red_switch = !red_switch
|
||||
to_chat(usr, "<span class='notice'>You flip the red switch [red_switch ? "on" : "off"].</span>")
|
||||
if("green_switch")
|
||||
green_switch = !blue_switch
|
||||
to_chat(usr, "<span class='notice'>You flip the green switch [green_switch ? "on" : "off"].</span>")
|
||||
if("blue_switch")
|
||||
blue_switch = !blue_switch
|
||||
to_chat(usr, "<span class='notice'>You flip the blue switch [blue_switch ? "on" : "off"].</span>")
|
||||
attack_hand(usr)
|
||||
|
||||
/mob/living/bot/cleanbot/edCLN/emag_act(var/remaining_uses, var/mob/user)
|
||||
. = ..()
|
||||
if(!emagged)
|
||||
if(user)
|
||||
to_chat(user, "<span class='notice'>The [src] buzzes and beeps.</span>")
|
||||
playsound(src.loc, 'sound/machines/buzzbeep.ogg', 50, 0)
|
||||
emagged = 1
|
||||
return 1
|
||||
|
||||
// Assembly
|
||||
|
||||
/obj/item/weapon/secbot_assembly/edCLN_assembly
|
||||
name = "ED-CLN assembly"
|
||||
desc = "Some sort of bizarre assembly."
|
||||
icon = 'icons/obj/aibots.dmi'
|
||||
icon_state = "ed209_frame"
|
||||
item_state = "buildpipe"
|
||||
created_name = "ED-CLN Security Robot"
|
||||
|
||||
/obj/item/weapon/secbot_assembly/edCLN_assembly/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
..()
|
||||
|
||||
if(istype(W, /obj/item/weapon/pen))
|
||||
var/t = sanitizeSafe(input(user, "Enter new robot name", name, created_name), MAX_NAME_LEN)
|
||||
if(!t)
|
||||
return
|
||||
if(!in_range(src, usr) && src.loc != usr)
|
||||
return
|
||||
created_name = t
|
||||
return
|
||||
|
||||
switch(build_step)
|
||||
if(0, 1)
|
||||
if(istype(W, /obj/item/robot_parts/l_leg) || istype(W, /obj/item/robot_parts/r_leg) || (istype(W, /obj/item/organ/external/leg) && ((W.name == "robotic right leg") || (W.name == "robotic left leg"))))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>")
|
||||
name = "legs/frame assembly"
|
||||
if(build_step == 1)
|
||||
icon_state = "ed209_leg"
|
||||
else
|
||||
icon_state = "ed209_legs"
|
||||
|
||||
if(2)
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/glass/bucket))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>")
|
||||
name = "bucket/legs/frame assembly"
|
||||
item_state = "edCLN_bucket"
|
||||
icon_state = "edCLN_bucket"
|
||||
|
||||
if(3)
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(WT.remove_fuel(0, user))
|
||||
build_step++
|
||||
name = "bucketed frame assembly"
|
||||
to_chat(user, "<span class='notice'>You welded the bucket to \the [src].</span>")
|
||||
if(4)
|
||||
if(isprox(W))
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>")
|
||||
name = "proximity bucket ED assembly"
|
||||
item_state = "edCLN_prox"
|
||||
icon_state = "edCLN_prox"
|
||||
|
||||
if(5)
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = W
|
||||
if (C.get_amount() < 1)
|
||||
to_chat(user, "<span class='warning'>You need one coil of wire to wire \the [src].</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You start to wire \the [src].</span>")
|
||||
if(do_after(user, 40))
|
||||
if(C.use(1))
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You wire the ED-CLN assembly.</span>")
|
||||
name = "wired ED-CLN assembly"
|
||||
return
|
||||
|
||||
if(6)
|
||||
if(istype(W, /obj/item/weapon/mop))
|
||||
name = "mop ED-CLN assembly"
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You add \the [W] to \the [src].</span>")
|
||||
item_state = "edCLN_mop"
|
||||
icon_state = "edCLN_mop"
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
|
||||
if(7)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
var/turf/T = get_turf(user)
|
||||
to_chat(user, "<span class='notice'>Attatching the mop to the frame...</span>")
|
||||
if(do_after(user, 40) && get_turf(user) == T)
|
||||
build_step++
|
||||
name = "mopped ED-CLN assembly"
|
||||
to_chat(user, "<span class='notice'>Mop attached.</span>")
|
||||
|
||||
if(8)
|
||||
if(istype(W, /obj/item/weapon/cell))
|
||||
build_step++
|
||||
to_chat(user, "<span class='notice'>You complete the ED-CLN.</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
new /mob/living/bot/cleanbot/edCLN(T,created_name)
|
||||
user.drop_item()
|
||||
qdel(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
@@ -23,7 +23,7 @@
|
||||
/mob/living/carbon/alien/diona/New()
|
||||
|
||||
..()
|
||||
species = all_species["Diona"]
|
||||
species = all_species[SPECIES_DIONA]
|
||||
add_language(LANGUAGE_ROOTGLOBAL)
|
||||
add_language(LANGUAGE_GALCOM)
|
||||
verbs += /mob/living/carbon/alien/diona/proc/merge
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
if(istype(C,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/D = C
|
||||
if(D.species && D.species.name == "Diona")
|
||||
if(D.species && D.species.name == SPECIES_DIONA)
|
||||
choices += C
|
||||
|
||||
var/mob/living/M = input(src,"Who do you wish to merge with?") in null|choices
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/carbon/alien/diona/confirm_evolution()
|
||||
|
||||
if(!is_alien_whitelisted(src, all_species["Diona"]))
|
||||
if(!is_alien_whitelisted(src, all_species[SPECIES_DIONA]))
|
||||
src << alert("You are currently not whitelisted to play as a full diona.")
|
||||
return null
|
||||
|
||||
@@ -16,4 +16,4 @@
|
||||
qdel(L)
|
||||
|
||||
src.visible_message("<font color='red'>[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.</font>","<font color='red'>You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.</font>")
|
||||
return "Diona"
|
||||
return SPECIES_DIONA
|
||||
@@ -1,8 +1,8 @@
|
||||
/mob/living/carbon/New()
|
||||
//setup reagent holders
|
||||
bloodstr = new/datum/reagents/metabolism(1000, src, CHEM_BLOOD)
|
||||
ingested = new/datum/reagents/metabolism(1000, src, CHEM_INGEST)
|
||||
touching = new/datum/reagents/metabolism(1000, src, CHEM_TOUCH)
|
||||
bloodstr = new/datum/reagents/metabolism/bloodstream(500, src)
|
||||
ingested = new/datum/reagents/metabolism/ingested(500, src)
|
||||
touching = new/datum/reagents/metabolism/touch(500, src)
|
||||
reagents = bloodstr
|
||||
if (!default_language && species_language)
|
||||
default_language = all_languages[species_language]
|
||||
@@ -278,23 +278,6 @@
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS //END
|
||||
|
||||
/mob/living/carbon/clean_blood()
|
||||
. = ..()
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H.gloves)
|
||||
if(H.gloves.clean_blood())
|
||||
H.update_inv_gloves(0)
|
||||
H.gloves.germ_level = 0
|
||||
else
|
||||
if(H.bloody_hands)
|
||||
H.bloody_hands = 0
|
||||
H.update_inv_gloves(0)
|
||||
H.germ_level = 0
|
||||
update_icons_layers(FALSE) //apply the now updated overlays to the mob
|
||||
update_icons_body()
|
||||
|
||||
|
||||
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
..()
|
||||
var/temp_inc = max(min(BODYTEMP_HEATING_MAX*(1-get_heat_protection()), exposed_temperature - bodytemperature), 0)
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
//Active emote/pose
|
||||
var/pose = null
|
||||
var/list/chem_effects = list()
|
||||
var/datum/reagents/metabolism/bloodstr = null
|
||||
var/datum/reagents/metabolism/ingested = null
|
||||
var/datum/reagents/metabolism/touching = null
|
||||
var/datum/reagents/metabolism/bloodstream/bloodstr = null
|
||||
var/datum/reagents/metabolism/ingested/ingested = null
|
||||
var/datum/reagents/metabolism/touch/touching = null
|
||||
|
||||
var/pulse = PULSE_NORM //current pulse level
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
icon = 'icons/effects/effects.dmi' //We have an ultra-complex update icons that overlays everything, don't load some stupid random male human
|
||||
icon_state = "nothing"
|
||||
|
||||
var/list/hud_list[TOTAL_HUDS]
|
||||
has_huds = TRUE //We do have HUDs (like health, wanted, status, not inventory slots)
|
||||
|
||||
var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us.
|
||||
var/obj/item/weapon/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call.
|
||||
var/last_push_time //For human_attackhand.dm, keeps track of the last use of disarm
|
||||
@@ -40,9 +41,8 @@
|
||||
|
||||
nutrition = rand(200,400)
|
||||
|
||||
make_hud_overlays()
|
||||
|
||||
human_mob_list |= src
|
||||
|
||||
..()
|
||||
|
||||
hide_underwear.Cut()
|
||||
@@ -53,19 +53,11 @@
|
||||
dna.ready_dna(src)
|
||||
dna.real_name = real_name
|
||||
sync_organ_dna()
|
||||
make_blood()
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
human_mob_list -= src
|
||||
for(var/organ in organs)
|
||||
qdel(organ)
|
||||
|
||||
LAZYCLEARLIST(list_layers)
|
||||
list_layers = null //Be free!
|
||||
LAZYCLEARLIST(list_body)
|
||||
list_body = null
|
||||
LAZYCLEARLIST(list_huds)
|
||||
list_huds = null
|
||||
qdel_null(nif) //VOREStation Add
|
||||
qdel_null_list(vore_organs) //VOREStation Add
|
||||
return ..()
|
||||
@@ -1034,7 +1026,7 @@
|
||||
if(!blood_DNA[M.dna.unique_enzymes])
|
||||
blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
|
||||
hand_blood_color = blood_color
|
||||
src.update_inv_gloves() //handles bloody hands overlays and updating
|
||||
update_bloodied()
|
||||
verbs += /mob/living/carbon/human/proc/bloody_doodle
|
||||
return 1 //we applied blood to the item
|
||||
|
||||
@@ -1044,14 +1036,30 @@
|
||||
return md5(dna.uni_identity)
|
||||
|
||||
/mob/living/carbon/human/clean_blood(var/washshoes)
|
||||
.=..()
|
||||
. = ..()
|
||||
|
||||
gunshot_residue = null
|
||||
if(washshoes && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len)
|
||||
feet_blood_color = null
|
||||
feet_blood_DNA.Cut()
|
||||
|
||||
//Always do hands (or whatever's on our hands)
|
||||
if(gloves)
|
||||
gloves.clean_blood()
|
||||
update_inv_gloves()
|
||||
gloves.germ_level = 0
|
||||
else
|
||||
bloody_hands = 0
|
||||
germ_level = 0
|
||||
|
||||
//Sometimes do shoes if asked (or feet if no shoes)
|
||||
if(washshoes && shoes)
|
||||
shoes.clean_blood()
|
||||
update_inv_shoes()
|
||||
shoes.germ_level = 0
|
||||
else if(washshoes && (feet_blood_color || LAZYLEN(feet_blood_DNA)))
|
||||
LAZYCLEARLIST(feet_blood_DNA)
|
||||
feet_blood_DNA = null
|
||||
update_inv_shoes(1)
|
||||
return 1
|
||||
feet_blood_color = null
|
||||
|
||||
update_bloodied()
|
||||
|
||||
/mob/living/carbon/human/get_visible_implants(var/class = 0)
|
||||
|
||||
@@ -1128,7 +1136,7 @@
|
||||
|
||||
if(!dna)
|
||||
if(!new_species)
|
||||
new_species = "Human"
|
||||
new_species = SPECIES_HUMAN
|
||||
else
|
||||
if(!new_species)
|
||||
new_species = dna.species
|
||||
@@ -1137,7 +1145,7 @@
|
||||
|
||||
// No more invisible screaming wheelchairs because of set_species() typos.
|
||||
if(!all_species[new_species])
|
||||
new_species = "Human"
|
||||
new_species = SPECIES_HUMAN
|
||||
|
||||
if(species)
|
||||
|
||||
@@ -1185,6 +1193,7 @@
|
||||
|
||||
spawn(0)
|
||||
if(regen_icons) regenerate_icons()
|
||||
make_blood()
|
||||
if(vessel.total_volume < species.blood_volume)
|
||||
vessel.maximum_volume = species.blood_volume
|
||||
vessel.add_reagent("blood", species.blood_volume - vessel.total_volume)
|
||||
@@ -1201,6 +1210,9 @@
|
||||
qdel(hud_used)
|
||||
hud_used = new /datum/hud(src)
|
||||
|
||||
//A slew of bits that may be affected by our species change
|
||||
regenerate_icons()
|
||||
|
||||
if(species)
|
||||
//if(mind) //VOREStation Removal
|
||||
//apply_traits() //VOREStation Removal
|
||||
@@ -1557,25 +1569,20 @@
|
||||
return species.fire_icon_state
|
||||
|
||||
// Called by job_controller. Makes drones start with a permit, might be useful for other people later too.
|
||||
/mob/living/carbon/human/equip_post_job()
|
||||
/mob/living/carbon/human/equip_post_job() //Drone Permit moved to equip_survival_gear()
|
||||
var/braintype = get_FBP_type()
|
||||
if(braintype == FBP_DRONE)
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/item/clothing/accessory/permit/drone/permit = new(T)
|
||||
permit.set_name(real_name)
|
||||
equip_to_slot_or_del(permit, slot_in_backpack)
|
||||
equip_to_appropriate_slot(permit) // If for some reason it can't find room, it'll still be on the floor.
|
||||
|
||||
/mob/living/carbon/human/proc/update_icon_special(var/mutable_appearance/ma, var/update_icons = TRUE) //For things such as teshari hiding and whatnot.
|
||||
/mob/living/carbon/human/proc/update_icon_special() //For things such as teshari hiding and whatnot.
|
||||
if(hiding) // Hiding? Carry on.
|
||||
if(stat == DEAD || paralysis || weakened || stunned) //stunned/knocked down by something that isn't the rest verb? Note: This was tried with INCAPACITATION_STUNNED, but that refused to work.
|
||||
hiding = FALSE //No hiding for you. Mob layer should be updated naturally, but it actually doesn't.
|
||||
else
|
||||
ma.layer = HIDING_LAYER
|
||||
|
||||
//Can put special species icon update proc calls here, if any are ever invented.
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
layer = HIDING_LAYER
|
||||
|
||||
/mob/living/carbon/human/proc/get_display_species()
|
||||
//Shows species in tooltip
|
||||
|
||||
@@ -103,8 +103,6 @@
|
||||
|
||||
can_be_antagged = TRUE
|
||||
|
||||
var/has_huds = TRUE //Do they have all the fancy life huds? Not for mannequins.
|
||||
|
||||
// Used by mobs in virtual reality to point back to the "real" mob the client belongs to.
|
||||
var/mob/living/carbon/human/vr_holder = null
|
||||
// Used by "real" mobs after they leave a VR session
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
return FBP_NONE
|
||||
|
||||
/mob/living/carbon/human/proc/make_hud_overlays()
|
||||
/mob/living/carbon/human/make_hud_overlays()
|
||||
hud_list[HEALTH_HUD] = gen_hud_image(ingame_hud_med, src, "100", plane = PLANE_CH_HEALTH)
|
||||
if(isSynthetic())
|
||||
hud_list[STATUS_HUD] = gen_hud_image(ingame_hud, src, "hudrobo", plane = PLANE_CH_STATUS)
|
||||
@@ -123,6 +123,7 @@
|
||||
hud_list[IMPTRACK_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_IMPTRACK)
|
||||
hud_list[SPECIALROLE_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_SPECIAL)
|
||||
hud_list[STATUS_HUD_OOC] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS_OOC)
|
||||
add_overlay(hud_list)
|
||||
|
||||
/mob/living/carbon/human/recalculate_vis()
|
||||
if(!vis_enabled || !plane_holder)
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
var/obj/item/organ/internal/eyes/eyes = internal_organs_by_name[O_EYES]
|
||||
if(eyes)
|
||||
eyes.update_colour()
|
||||
regenerate_icons()
|
||||
update_icons_body() //Body handles eyes
|
||||
update_eyes() //For floating eyes only
|
||||
|
||||
/mob/living/carbon/var/list/internal_organs = list()
|
||||
/mob/living/carbon/human/var/list/organs = list()
|
||||
|
||||
@@ -12,42 +12,42 @@
|
||||
|
||||
/mob/living/carbon/human/skrell/New(var/new_loc)
|
||||
h_style = "Skrell Short Tentacles"
|
||||
..(new_loc, "Skrell")
|
||||
..(new_loc, SPECIES_SKRELL)
|
||||
|
||||
/mob/living/carbon/human/tajaran/New(var/new_loc)
|
||||
h_style = "Tajaran Ears"
|
||||
..(new_loc, "Tajara")
|
||||
..(new_loc, SPECIES_TAJ)
|
||||
|
||||
/mob/living/carbon/human/unathi/New(var/new_loc)
|
||||
h_style = "Unathi Horns"
|
||||
..(new_loc, "Unathi")
|
||||
..(new_loc, SPECIES_UNATHI)
|
||||
|
||||
/mob/living/carbon/human/vox/New(var/new_loc)
|
||||
h_style = "Short Vox Quills"
|
||||
..(new_loc, "Vox")
|
||||
..(new_loc, SPECIES_VOX)
|
||||
|
||||
/mob/living/carbon/human/diona/New(var/new_loc)
|
||||
..(new_loc, "Diona")
|
||||
..(new_loc, SPECIES_DIONA)
|
||||
|
||||
/mob/living/carbon/human/teshari/New(var/new_loc)
|
||||
h_style = "Teshari Default"
|
||||
..(new_loc, "Teshari")
|
||||
..(new_loc, SPECIES_TESHARI)
|
||||
|
||||
/mob/living/carbon/human/promethean/New(var/new_loc)
|
||||
..(new_loc, "Promethean")
|
||||
..(new_loc, SPECIES_PROMETHEAN)
|
||||
|
||||
/mob/living/carbon/human/machine/New(var/new_loc)
|
||||
h_style = "blue IPC screen"
|
||||
..(new_loc, "Machine")
|
||||
|
||||
/mob/living/carbon/human/monkey/New(var/new_loc)
|
||||
..(new_loc, "Monkey")
|
||||
..(new_loc, SPECIES_MONKEY)
|
||||
|
||||
/mob/living/carbon/human/farwa/New(var/new_loc)
|
||||
..(new_loc, "Farwa")
|
||||
..(new_loc, SPECIES_MONKEY_TAJ)
|
||||
|
||||
/mob/living/carbon/human/neaera/New(var/new_loc)
|
||||
..(new_loc, "Neaera")
|
||||
..(new_loc, SPECIES_MONKEY_SKRELL)
|
||||
|
||||
/mob/living/carbon/human/stok/New(var/new_loc)
|
||||
..(new_loc, "Stok")
|
||||
..(new_loc, SPECIES_MONKEY_UNATHI)
|
||||
|
||||
@@ -152,12 +152,14 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
else if (W == wear_id)
|
||||
wear_id = null
|
||||
update_inv_wear_id()
|
||||
BITSET(hud_updateflag, ID_HUD)
|
||||
BITSET(hud_updateflag, WANTED_HUD)
|
||||
else if (W == r_store)
|
||||
r_store = null
|
||||
update_inv_pockets()
|
||||
//update_inv_pockets() //Doesn't do anything.
|
||||
else if (W == l_store)
|
||||
l_store = null
|
||||
update_inv_pockets()
|
||||
//update_inv_pockets() //Doesn't do anything.
|
||||
else if (W == s_store)
|
||||
s_store = null
|
||||
update_inv_s_store()
|
||||
@@ -195,8 +197,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
|
||||
|
||||
//This is an UNSAFE proc. Use mob_can_equip() before calling this one! Or rather use equip_to_slot_if_possible() or advanced_equip_to_slot_if_possible()
|
||||
//set redraw_mob to 0 if you don't wish the hud to be updated - if you're doing it manually in your own proc.
|
||||
/mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot, redraw_mob = 1)
|
||||
/mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot)
|
||||
|
||||
if(!slot)
|
||||
return
|
||||
@@ -213,39 +214,41 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
src.back = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += back
|
||||
update_inv_back(redraw_mob)
|
||||
update_inv_back()
|
||||
if(slot_wear_mask)
|
||||
src.wear_mask = W
|
||||
if(wear_mask.flags_inv & (BLOCKHAIR|BLOCKHEADHAIR))
|
||||
update_hair(redraw_mob) //rebuild hair
|
||||
update_inv_ears(0)
|
||||
update_hair() //rebuild hair
|
||||
update_inv_ears()
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += wear_mask
|
||||
update_inv_wear_mask(redraw_mob)
|
||||
update_inv_wear_mask()
|
||||
if(slot_handcuffed)
|
||||
src.handcuffed = W
|
||||
update_inv_handcuffed(redraw_mob)
|
||||
update_inv_handcuffed()
|
||||
if(slot_legcuffed)
|
||||
src.legcuffed = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_legcuffed(redraw_mob)
|
||||
update_inv_legcuffed()
|
||||
if(slot_l_hand)
|
||||
src.l_hand = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_l_hand(redraw_mob)
|
||||
update_inv_l_hand()
|
||||
if(slot_r_hand)
|
||||
src.r_hand = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_r_hand(redraw_mob)
|
||||
update_inv_r_hand()
|
||||
if(slot_belt)
|
||||
src.belt = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += belt
|
||||
update_inv_belt(redraw_mob)
|
||||
update_inv_belt()
|
||||
if(slot_wear_id)
|
||||
src.wear_id = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_wear_id(redraw_mob)
|
||||
update_inv_wear_id()
|
||||
BITSET(hud_updateflag, ID_HUD)
|
||||
BITSET(hud_updateflag, WANTED_HUD)
|
||||
if(slot_l_ear)
|
||||
src.l_ear = W
|
||||
if(l_ear.slot_flags & SLOT_TWOEARS)
|
||||
@@ -254,7 +257,7 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
src.r_ear = O
|
||||
O.hud_layerise()
|
||||
W.equipped(src, slot)
|
||||
update_inv_ears(redraw_mob)
|
||||
update_inv_ears()
|
||||
if(slot_r_ear)
|
||||
src.r_ear = W
|
||||
if(r_ear.slot_flags & SLOT_TWOEARS)
|
||||
@@ -263,54 +266,54 @@ This saves us from having to call add_fingerprint() any time something is put in
|
||||
src.l_ear = O
|
||||
O.hud_layerise()
|
||||
W.equipped(src, slot)
|
||||
update_inv_ears(redraw_mob)
|
||||
update_inv_ears()
|
||||
if(slot_glasses)
|
||||
src.glasses = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_glasses(redraw_mob)
|
||||
update_inv_glasses()
|
||||
if(slot_gloves)
|
||||
src.gloves = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += glasses
|
||||
update_inv_gloves(redraw_mob)
|
||||
update_inv_gloves()
|
||||
if(slot_head)
|
||||
src.head = W
|
||||
if(head.flags_inv & (BLOCKHAIR|BLOCKHEADHAIR|HIDEMASK))
|
||||
update_hair(redraw_mob) //rebuild hair
|
||||
update_hair() //rebuild hair
|
||||
update_inv_ears(0)
|
||||
update_inv_wear_mask(0)
|
||||
if(istype(W,/obj/item/clothing/head/kitty))
|
||||
W.update_icon(src)
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += head
|
||||
update_inv_head(redraw_mob)
|
||||
update_inv_head()
|
||||
if(slot_shoes)
|
||||
src.shoes = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += shoes
|
||||
update_inv_shoes(redraw_mob)
|
||||
update_inv_shoes()
|
||||
if(slot_wear_suit)
|
||||
src.wear_suit = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += wear_suit
|
||||
update_inv_wear_suit(redraw_mob)
|
||||
update_inv_wear_suit()
|
||||
if(slot_w_uniform)
|
||||
src.w_uniform = W
|
||||
W.equipped(src, slot)
|
||||
worn_clothing += w_uniform
|
||||
update_inv_w_uniform(redraw_mob)
|
||||
update_inv_w_uniform()
|
||||
if(slot_l_store)
|
||||
src.l_store = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_pockets(redraw_mob)
|
||||
//update_inv_pockets() //Doesn't do anything
|
||||
if(slot_r_store)
|
||||
src.r_store = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_pockets(redraw_mob)
|
||||
//update_inv_pockets() //Doesn't do anything
|
||||
if(slot_s_store)
|
||||
src.s_store = W
|
||||
W.equipped(src, slot)
|
||||
update_inv_s_store(redraw_mob)
|
||||
update_inv_s_store()
|
||||
if(slot_in_backpack)
|
||||
if(src.get_active_hand() == W)
|
||||
src.remove_from_mob(W)
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
Weaken(3)
|
||||
if(!lying)
|
||||
emote("collapse")
|
||||
if(prob(5) && prob(100 * RADIATION_SPEED_COEFFICIENT) && species.get_bodytype() == "Human") //apes go bald
|
||||
if(prob(5) && prob(100 * RADIATION_SPEED_COEFFICIENT) && species.get_bodytype() == SPECIES_HUMAN) //apes go bald
|
||||
if((h_style != "Bald" || f_style != "Shaved" ))
|
||||
src << "<span class='warning'>Your hair falls out.</span>"
|
||||
h_style = "Bald"
|
||||
@@ -319,14 +319,15 @@
|
||||
|
||||
/mob/living/carbon/human/get_breath_from_internal(volume_needed=BREATH_VOLUME)
|
||||
if(internal)
|
||||
|
||||
//Because rigs store their tanks out of reach of contents.Find(), a check has to be made to make
|
||||
//sure the rig is still worn, still online, and that its air supply still exists.
|
||||
var/obj/item/weapon/tank/rig_supply
|
||||
if(istype(back,/obj/item/weapon/rig))
|
||||
var/obj/item/weapon/rig/rig = back
|
||||
if(!rig.offline && (rig.air_supply && internal == rig.air_supply))
|
||||
rig_supply = rig.air_supply
|
||||
|
||||
if (!rig_supply && (!contents.Find(internal) || !((wear_mask && (wear_mask.item_flags & AIRTIGHT)) || (head && (head.item_flags & AIRTIGHT)))))
|
||||
if ((!rig_supply && !contents.Find(internal)) || !((wear_mask && (wear_mask.item_flags & AIRTIGHT)) || (head && (head.item_flags & AIRTIGHT))))
|
||||
internal = null
|
||||
|
||||
if(internal)
|
||||
@@ -1592,26 +1593,24 @@
|
||||
we only set those statuses and icons upon changes. Then those HUD items will simply add those pre-made images.
|
||||
This proc below is only called when those HUD elements need to change as determined by the mobs hud_updateflag.
|
||||
*/
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/handle_hud_list()
|
||||
if (BITTEST(hud_updateflag, HEALTH_HUD))
|
||||
var/image/holder = hud_list[HEALTH_HUD]
|
||||
var/image/holder = grab_hud(HEALTH_HUD)
|
||||
if(stat == DEAD)
|
||||
holder.icon_state = "-100" // X_X
|
||||
else
|
||||
holder.icon_state = RoundHealth((health-config.health_threshold_crit)/(getMaxHealth()-config.health_threshold_crit)*100)
|
||||
hud_list[HEALTH_HUD] = holder
|
||||
apply_hud(HEALTH_HUD, holder)
|
||||
|
||||
if (BITTEST(hud_updateflag, LIFE_HUD))
|
||||
var/image/holder = hud_list[LIFE_HUD]
|
||||
var/image/holder = grab_hud(LIFE_HUD)
|
||||
if(isSynthetic())
|
||||
holder.icon_state = "hudrobo"
|
||||
else if(stat == DEAD)
|
||||
holder.icon_state = "huddead"
|
||||
else
|
||||
holder.icon_state = "hudhealthy"
|
||||
hud_list[LIFE_HUD] = holder
|
||||
apply_hud(LIFE_HUD, holder)
|
||||
|
||||
if (BITTEST(hud_updateflag, STATUS_HUD))
|
||||
var/foundVirus = 0
|
||||
@@ -1620,8 +1619,8 @@
|
||||
foundVirus = 1
|
||||
break
|
||||
|
||||
var/image/holder = hud_list[STATUS_HUD]
|
||||
var/image/holder2 = hud_list[STATUS_HUD_OOC]
|
||||
var/image/holder = grab_hud(STATUS_HUD)
|
||||
var/image/holder2 = grab_hud(STATUS_HUD_OOC)
|
||||
if (isSynthetic())
|
||||
holder.icon_state = "hudrobo"
|
||||
else if(stat == DEAD)
|
||||
@@ -1643,11 +1642,11 @@
|
||||
else
|
||||
holder2.icon_state = "hudhealthy"
|
||||
|
||||
hud_list[STATUS_HUD] = holder
|
||||
hud_list[STATUS_HUD_OOC] = holder2
|
||||
apply_hud(STATUS_HUD, holder)
|
||||
apply_hud(STATUS_HUD_OOC, holder2)
|
||||
|
||||
if (BITTEST(hud_updateflag, ID_HUD))
|
||||
var/image/holder = hud_list[ID_HUD]
|
||||
var/image/holder = grab_hud(ID_HUD)
|
||||
if(wear_id)
|
||||
var/obj/item/weapon/card/id/I = wear_id.GetID()
|
||||
if(I)
|
||||
@@ -1657,11 +1656,10 @@
|
||||
else
|
||||
holder.icon_state = "hudunknown"
|
||||
|
||||
|
||||
hud_list[ID_HUD] = holder
|
||||
apply_hud(ID_HUD, holder)
|
||||
|
||||
if (BITTEST(hud_updateflag, WANTED_HUD))
|
||||
var/image/holder = hud_list[WANTED_HUD]
|
||||
var/image/holder = grab_hud(WANTED_HUD)
|
||||
holder.icon_state = "hudblank"
|
||||
var/perpname = name
|
||||
if(wear_id)
|
||||
@@ -1684,15 +1682,16 @@
|
||||
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Released"))
|
||||
holder.icon_state = "hudreleased"
|
||||
break
|
||||
hud_list[WANTED_HUD] = holder
|
||||
|
||||
apply_hud(WANTED_HUD, holder)
|
||||
|
||||
if ( BITTEST(hud_updateflag, IMPLOYAL_HUD) \
|
||||
|| BITTEST(hud_updateflag, IMPCHEM_HUD) \
|
||||
|| BITTEST(hud_updateflag, IMPTRACK_HUD))
|
||||
|
||||
var/image/holder1 = hud_list[IMPTRACK_HUD]
|
||||
var/image/holder2 = hud_list[IMPLOYAL_HUD]
|
||||
var/image/holder3 = hud_list[IMPCHEM_HUD]
|
||||
var/image/holder1 = grab_hud(IMPTRACK_HUD)
|
||||
var/image/holder2 = grab_hud(IMPLOYAL_HUD)
|
||||
var/image/holder3 = grab_hud(IMPCHEM_HUD)
|
||||
|
||||
holder1.icon_state = "hudblank"
|
||||
holder2.icon_state = "hudblank"
|
||||
@@ -1708,22 +1707,23 @@
|
||||
if(istype(I,/obj/item/weapon/implant/chem))
|
||||
holder3.icon_state = "hud_imp_chem"
|
||||
|
||||
hud_list[IMPTRACK_HUD] = holder1
|
||||
hud_list[IMPLOYAL_HUD] = holder2
|
||||
hud_list[IMPCHEM_HUD] = holder3
|
||||
apply_hud(IMPTRACK_HUD, holder1)
|
||||
apply_hud(IMPLOYAL_HUD, holder2)
|
||||
apply_hud(IMPCHEM_HUD, holder3)
|
||||
|
||||
if (BITTEST(hud_updateflag, SPECIALROLE_HUD))
|
||||
var/image/holder = hud_list[SPECIALROLE_HUD]
|
||||
var/image/holder = grab_hud(SPECIALROLE_HUD)
|
||||
holder.icon_state = "hudblank"
|
||||
if(mind && mind.special_role)
|
||||
if(hud_icon_reference[mind.special_role])
|
||||
holder.icon_state = hud_icon_reference[mind.special_role]
|
||||
else
|
||||
holder.icon_state = "hudsyndicate"
|
||||
hud_list[SPECIALROLE_HUD] = holder
|
||||
apply_hud(SPECIALROLE_HUD, holder)
|
||||
|
||||
attempt_vr(src,"handle_hud_list_vr",list()) //VOREStation Add - Custom HUDs.
|
||||
|
||||
hud_updateflag = 0
|
||||
update_icons_huds()
|
||||
|
||||
/mob/living/carbon/human/handle_stunned()
|
||||
if(!can_feel_pain())
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/shadow
|
||||
name = "Shadow"
|
||||
name = SPECIES_SHADOW
|
||||
name_plural = "shadows"
|
||||
|
||||
icobase = 'icons/mob/human_races/r_shadow.dmi'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/skeleton
|
||||
name = "Skeleton"
|
||||
name = SPECIES_SKELETON
|
||||
name_plural = "Skeletons"
|
||||
icobase = 'icons/mob/human_races/r_skeleton.dmi'
|
||||
primitive_form = "Monkey"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/vox
|
||||
name = "Vox"
|
||||
name = SPECIES_VOX
|
||||
name_plural = "Vox"
|
||||
icobase = 'icons/mob/human_races/r_vox.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
||||
|
||||
@@ -13,7 +13,7 @@ var/list/wrapped_species_by_ref = list()
|
||||
|
||||
var/list/valid_transform_species = list()
|
||||
var/monochromatic
|
||||
var/default_form = "Human"
|
||||
var/default_form = SPECIES_HUMAN
|
||||
|
||||
/datum/species/shapeshifter/get_valid_shapeshifter_forms(var/mob/living/carbon/human/H)
|
||||
return valid_transform_species
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/golem
|
||||
name = "Golem"
|
||||
name = SPECIES_GOLEM
|
||||
name_plural = "golems"
|
||||
|
||||
icobase = 'icons/mob/human_races/r_golem.dmi'
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
/datum/species/human/vatgrown
|
||||
name = "Vatborn"
|
||||
name = SPECIES_HUMAN_VATBORN
|
||||
name_plural = "Vatborn"
|
||||
blurb = "With cloning on the forefront of human scientific advancement, cheap mass production \
|
||||
of bodies is a very real and rather ethically grey industry. Vat-grown or Vatborn humans tend to be \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/monkey
|
||||
name = "Monkey"
|
||||
name = SPECIES_MONKEY
|
||||
name_plural = "Monkeys"
|
||||
blurb = "Ook."
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
blood_mask = 'icons/mob/human_races/masks/blood_monkey.dmi'
|
||||
language = null
|
||||
default_language = "Chimpanzee"
|
||||
greater_form = "Human"
|
||||
greater_form = SPECIES_HUMAN
|
||||
mob_size = MOB_SMALL
|
||||
has_fine_manipulation = 0
|
||||
show_ssd = null
|
||||
@@ -66,26 +66,26 @@
|
||||
return "[lowertext(name)] ([rand(100,999)])"
|
||||
|
||||
/datum/species/monkey/tajaran
|
||||
name = "Farwa"
|
||||
name = SPECIES_MONKEY_TAJ
|
||||
name_plural = "Farwa"
|
||||
|
||||
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
|
||||
|
||||
greater_form = "Tajaran"
|
||||
greater_form = SPECIES_TAJ
|
||||
default_language = "Farwa"
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#333333"
|
||||
tail = "farwatail"
|
||||
|
||||
/datum/species/monkey/skrell
|
||||
name = "Neaera"
|
||||
name = SPECIES_MONKEY_SKRELL
|
||||
name_plural = "Neaera"
|
||||
|
||||
icobase = 'icons/mob/human_races/monkeys/r_neaera.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_neaera.dmi'
|
||||
|
||||
greater_form = "Skrell"
|
||||
greater_form = SPECIES_SKRELL
|
||||
default_language = "Neaera"
|
||||
flesh_color = "#8CD7A3"
|
||||
blood_color = "#1D2CBF"
|
||||
@@ -93,14 +93,14 @@
|
||||
tail = null
|
||||
|
||||
/datum/species/monkey/unathi
|
||||
name = "Stok"
|
||||
name = SPECIES_MONKEY_UNATHI
|
||||
name_plural = "Stok"
|
||||
|
||||
icobase = 'icons/mob/human_races/monkeys/r_stok.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_stok.dmi'
|
||||
|
||||
tail = "stoktail"
|
||||
greater_form = "Unathi"
|
||||
greater_form = SPECIES_UNATHI
|
||||
default_language = "Stok"
|
||||
flesh_color = "#34AF10"
|
||||
base_color = "#066000"
|
||||
|
||||
@@ -3,7 +3,7 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
// Species definition follows.
|
||||
/datum/species/shapeshifter/promethean
|
||||
|
||||
name = "Promethean"
|
||||
name = SPECIES_PROMETHEAN
|
||||
name_plural = "Prometheans"
|
||||
blurb = "What has Science done?"
|
||||
show_ssd = "totally quiescent"
|
||||
@@ -88,7 +88,7 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
/mob/living/carbon/human/proc/regenerate
|
||||
)
|
||||
|
||||
valid_transform_species = list("Human", "Vatborn", "Unathi", "Tajara", "Skrell", "Diona", "Teshari", "Monkey")
|
||||
valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY)
|
||||
|
||||
var/heal_rate = 0.5 // Temp. Regen per tick.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/species/teshari
|
||||
name = "Teshari"
|
||||
name = SPECIES_TESHARI
|
||||
name_plural = "Tesharii"
|
||||
blurb = "A race of feathered raptors who developed alongside the Skrell, inhabiting \
|
||||
the polar tundral regions outside of Skrell territory. Extremely fragile, they developed \
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/species/human
|
||||
name = "Human"
|
||||
name = SPECIES_HUMAN
|
||||
name_plural = "Humans"
|
||||
primitive_form = "Monkey"
|
||||
primitive_form = SPECIES_MONKEY
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite)
|
||||
blurb = "Humanity originated in the Sol system, and over the last five centuries has spread \
|
||||
colonies across a wide swathe of space. They hold a wide range of forms and creeds.<br/><br/> \
|
||||
@@ -20,17 +20,17 @@
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR
|
||||
|
||||
/datum/species/human/get_bodytype(var/mob/living/carbon/human/H)
|
||||
return "Human"
|
||||
return SPECIES_HUMAN
|
||||
|
||||
/datum/species/unathi
|
||||
name = "Unathi"
|
||||
name = SPECIES_UNATHI
|
||||
name_plural = "Unathi"
|
||||
icobase = 'icons/mob/human_races/r_lizard.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_lizard.dmi'
|
||||
tail = "sogtail"
|
||||
tail_animation = 'icons/mob/species/unathi/tail.dmi'
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
|
||||
primitive_form = "Stok"
|
||||
primitive_form = SPECIES_MONKEY_UNATHI
|
||||
darksight = 3
|
||||
ambiguous_genders = TRUE
|
||||
//gluttonous = 1 //VOREStation Edit - Redundant
|
||||
@@ -131,7 +131,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
|
||||
|
||||
/datum/species/tajaran
|
||||
name = "Tajara"
|
||||
name = SPECIES_TAJ
|
||||
name_plural = "Tajaran"
|
||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
|
||||
@@ -147,7 +147,7 @@
|
||||
metabolic_rate = 1.1
|
||||
gluttonous = 1
|
||||
num_alternate_languages = 3
|
||||
secondary_langs = list(LANGUAGE_SIIK)
|
||||
secondary_langs = list(LANGUAGE_SIIK, LANGUAGE_AKHANI)
|
||||
name_language = LANGUAGE_SIIK
|
||||
species_language = LANGUAGE_SIIK
|
||||
health_hud_intensity = 2.5
|
||||
@@ -184,7 +184,7 @@
|
||||
breath_heat_level_2 = 430 //Default 450
|
||||
breath_heat_level_3 = 1000 //Default 1250
|
||||
*/
|
||||
primitive_form = "Farwa"
|
||||
primitive_form = SPECIES_MONKEY_TAJ
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
||||
@@ -217,11 +217,11 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
|
||||
|
||||
/datum/species/skrell
|
||||
name = "Skrell"
|
||||
name = SPECIES_SKRELL
|
||||
name_plural = "Skrell"
|
||||
icobase = 'icons/mob/human_races/r_skrell.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_skrell.dmi'
|
||||
primitive_form = "Neaera"
|
||||
primitive_form = SPECIES_MONKEY_SKRELL
|
||||
unarmed_types = list(/datum/unarmed_attack/punch)
|
||||
blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \
|
||||
the royals' or 'Light of the Crown'.<br/><br/>Skrell are a highly advanced and logical race who live under the rule \
|
||||
@@ -290,7 +290,7 @@
|
||||
return TRUE
|
||||
|
||||
/datum/species/diona
|
||||
name = "Diona"
|
||||
name = SPECIES_DIONA
|
||||
name_plural = "Dionaea"
|
||||
icobase = 'icons/mob/human_races/r_diona.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_plant.dmi'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// Species definition follows.
|
||||
/datum/species/shapeshifter/promethean/avatar
|
||||
|
||||
name = "Virtual Reality Avatar"
|
||||
name = SPECIES_VR
|
||||
name_plural = "Virtual Reality Avatars"
|
||||
blurb = "A 3-dimensional representation of some sort of animate object used to display the presence and actions of some-one or -thing using a virtual reality program."
|
||||
show_ssd = "eerily still"
|
||||
@@ -57,7 +57,7 @@
|
||||
shapeshifter_change_species("Virtual Reality [src.species.get_bodytype(src)]")
|
||||
else
|
||||
icon_state = "promethean"
|
||||
shapeshifter_change_species("Virtual Reality Avatar")
|
||||
shapeshifter_change_species(SPECIES_VR)
|
||||
|
||||
|
||||
// enter_vr is called on the original mob, and puts the mind into the supplied vr mob
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
)
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/tajaran
|
||||
name = "Virtual Reality Tajara"
|
||||
name = "Virtual Reality Tajaran"
|
||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
|
||||
tail = "tajtail"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
for(var/mob/living/carbon/human/Q in living_mob_list)
|
||||
if(self && ignore_self && self == Q)
|
||||
continue
|
||||
if(Q.species.name != "Xenomorph Queen")
|
||||
if(Q.species.name != SPECIES_XENO_QUEEN)
|
||||
continue
|
||||
if(!Q.key || !Q.client || Q.stat)
|
||||
continue
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//Stand-in until this is made more lore-friendly.
|
||||
/datum/species/xenos
|
||||
name = "Xenomorph"
|
||||
name = SPECIES_XENO
|
||||
name_plural = "Xenomorphs"
|
||||
|
||||
default_language = "Xenomorph"
|
||||
@@ -77,7 +77,7 @@
|
||||
)
|
||||
|
||||
/datum/species/xenos/get_bodytype()
|
||||
return "Xenomorph"
|
||||
return SPECIES_XENO
|
||||
|
||||
/datum/species/xenos/get_random_name()
|
||||
return "alien [caste_name] ([alien_number])"
|
||||
@@ -164,7 +164,7 @@
|
||||
*/
|
||||
|
||||
/datum/species/xenos/drone
|
||||
name = "Xenomorph Drone"
|
||||
name = SPECIES_XENO_DRONE
|
||||
caste_name = "drone"
|
||||
weeds_plasma_rate = 15
|
||||
slowdown = 1
|
||||
@@ -202,7 +202,7 @@
|
||||
..()
|
||||
|
||||
/datum/species/xenos/hunter
|
||||
name = "Xenomorph Hunter"
|
||||
name = SPECIES_XENO_HUNTER
|
||||
weeds_plasma_rate = 5
|
||||
caste_name = "hunter"
|
||||
slowdown = -2
|
||||
@@ -230,7 +230,7 @@
|
||||
)
|
||||
|
||||
/datum/species/xenos/sentinel
|
||||
name = "Xenomorph Sentinel"
|
||||
name = SPECIES_XENO_SENTINEL
|
||||
weeds_plasma_rate = 10
|
||||
caste_name = "sentinel"
|
||||
slowdown = 0
|
||||
@@ -261,7 +261,7 @@
|
||||
|
||||
/datum/species/xenos/queen
|
||||
|
||||
name = "Xenomorph Queen"
|
||||
name = SPECIES_XENO_QUEEN
|
||||
total_health = 250
|
||||
weeds_heal_rate = 5
|
||||
weeds_plasma_rate = 20
|
||||
|
||||
@@ -10,22 +10,22 @@ proc/create_new_xenomorph(var/alien_caste,var/target)
|
||||
/mob/living/carbon/human/xdrone/New(var/new_loc)
|
||||
h_style = "Bald"
|
||||
faction = "xeno"
|
||||
..(new_loc, "Xenomorph Drone")
|
||||
..(new_loc, SPECIES_XENO_DRONE)
|
||||
|
||||
/mob/living/carbon/human/xsentinel/New(var/new_loc)
|
||||
h_style = "Bald"
|
||||
faction = "xeno"
|
||||
..(new_loc, "Xenomorph Sentinel")
|
||||
..(new_loc, SPECIES_XENO_SENTINEL)
|
||||
|
||||
/mob/living/carbon/human/xhunter/New(var/new_loc)
|
||||
h_style = "Bald"
|
||||
faction = "xeno"
|
||||
..(new_loc, "Xenomorph Hunter")
|
||||
..(new_loc, SPECIES_XENO_HUNTER)
|
||||
|
||||
/mob/living/carbon/human/xqueen/New(var/new_loc)
|
||||
h_style = "Bald"
|
||||
faction = "xeno"
|
||||
..(new_loc, "Xenomorph Queen")
|
||||
..(new_loc, SPECIES_XENO_QUEEN)
|
||||
|
||||
// I feel like we should generalize/condense down all the various icon-rendering antag procs.
|
||||
/*----------------------------------------
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -159,12 +159,12 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/escape_buckle()
|
||||
setClickCooldown(100)
|
||||
if(!buckled) return
|
||||
|
||||
if(!restrained())
|
||||
..()
|
||||
else
|
||||
setClickCooldown(100)
|
||||
visible_message(
|
||||
"<span class='danger'>[usr] attempts to unbuckle themself!</span>",
|
||||
"<span class='warning'>You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)</span>"
|
||||
|
||||
@@ -72,16 +72,16 @@
|
||||
/mob/living/u_equip(obj/W as obj)
|
||||
if (W == r_hand)
|
||||
r_hand = null
|
||||
update_inv_r_hand(0)
|
||||
update_inv_r_hand()
|
||||
else if (W == l_hand)
|
||||
l_hand = null
|
||||
update_inv_l_hand(0)
|
||||
update_inv_l_hand()
|
||||
else if (W == back)
|
||||
back = null
|
||||
update_inv_back(0)
|
||||
update_inv_back()
|
||||
else if (W == wear_mask)
|
||||
wear_mask = null
|
||||
update_inv_wear_mask(0)
|
||||
update_inv_wear_mask()
|
||||
return
|
||||
|
||||
/mob/living/get_equipped_item(var/slot)
|
||||
|
||||
@@ -111,15 +111,11 @@
|
||||
/mob/living/proc/handle_stunned()
|
||||
if(stunned)
|
||||
AdjustStunned(-1)
|
||||
if(!stunned)
|
||||
update_icons()
|
||||
return stunned
|
||||
|
||||
/mob/living/proc/handle_weakened()
|
||||
if(weakened)
|
||||
weakened = max(weakened-1,0)
|
||||
if(!weakened)
|
||||
update_icons()
|
||||
return weakened
|
||||
|
||||
/mob/living/proc/handle_stuttering()
|
||||
@@ -145,8 +141,6 @@
|
||||
/mob/living/proc/handle_paralysed()
|
||||
if(paralysis)
|
||||
AdjustParalysis(-1)
|
||||
if(!paralysis)
|
||||
update_icons()
|
||||
return paralysis
|
||||
|
||||
/mob/living/proc/handle_disabilities()
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
/mob/living/New()
|
||||
..()
|
||||
|
||||
//Prime this list if we need it.
|
||||
if(has_huds)
|
||||
add_overlay(backplane,TRUE) //Strap this on here, to block HUDs from appearing in rightclick menus: http://www.byond.com/forum/?post=2336679
|
||||
hud_list = list()
|
||||
hud_list.len = TOTAL_HUDS
|
||||
make_hud_overlays()
|
||||
|
||||
//I'll just hang my coat up over here
|
||||
dsoverlay = image('icons/mob/darksight.dmi',global_hud.darksight) //This is a secret overlay! Go look at the file, you'll see.
|
||||
var/mutable_appearance/dsma = new(dsoverlay) //Changing like ten things, might as well.
|
||||
@@ -13,6 +20,8 @@
|
||||
/mob/living/Destroy()
|
||||
dsoverlay.loc = null //I'll take my coat with me
|
||||
dsoverlay = null
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob(src, TRUE)
|
||||
return ..()
|
||||
|
||||
//mob verbs are faster than object verbs. See mob/verb/examine.
|
||||
@@ -209,10 +218,10 @@ default behaviour is:
|
||||
/mob/living/verb/succumb()
|
||||
set hidden = 1
|
||||
if ((src.health < 0 && src.health > (5-src.getMaxHealth()))) // Health below Zero but above 5-away-from-death, as before, but variable
|
||||
src.adjustOxyLoss(src.health + src.getMaxHealth() * 2) // Deal 2x health in OxyLoss damage, as before but variable.
|
||||
src.health = src.getMaxHealth() - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss()
|
||||
src.death()
|
||||
to_chat(src, "<font color='blue'>You have given up life and succumbed to death.</font>")
|
||||
|
||||
else
|
||||
to_chat(src, "<font color='blue'>You are not injured enough to succumb to death!</font>")
|
||||
|
||||
/mob/living/proc/updatehealth()
|
||||
if(status_flags & GODMODE)
|
||||
@@ -900,6 +909,7 @@ default behaviour is:
|
||||
|
||||
resting = !resting
|
||||
to_chat(src, "<span class='notice'>You are now [resting ? "resting" : "getting up"]</span>")
|
||||
update_canmove()
|
||||
|
||||
/mob/living/proc/cannot_use_vents()
|
||||
if(mob_size > MOB_SMALL)
|
||||
@@ -1047,14 +1057,10 @@ default behaviour is:
|
||||
canmove = 0
|
||||
break
|
||||
|
||||
//Temporarily moved here from the various life() procs
|
||||
//I'm fixing stuff incrementally so this will likely find a better home.
|
||||
//It just makes sense for now. ~Carn
|
||||
if( update_icon ) //forces a full overlay update
|
||||
update_icon = 0
|
||||
regenerate_icons()
|
||||
else if( lying != lying_prev )
|
||||
update_icons()
|
||||
if(lying != lying_prev)
|
||||
lying_prev = lying
|
||||
update_transform()
|
||||
|
||||
return canmove
|
||||
|
||||
// Adds overlays for specific modifiers.
|
||||
@@ -1218,4 +1224,22 @@ default behaviour is:
|
||||
return UNDERWATER
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
//Add an entry to overlays, assuming it exists
|
||||
/mob/living/proc/apply_hud(cache_index, var/image/I)
|
||||
hud_list[cache_index] = I
|
||||
if((. = hud_list[cache_index]))
|
||||
//underlays += .
|
||||
add_overlay(.)
|
||||
|
||||
//Remove an entry from overlays, and from the list
|
||||
/mob/living/proc/grab_hud(cache_index)
|
||||
var/I = hud_list[cache_index]
|
||||
if(I)
|
||||
//underlays -= I
|
||||
cut_overlay(I)
|
||||
hud_list[cache_index] = null
|
||||
return I
|
||||
|
||||
/mob/living/proc/make_hud_overlays()
|
||||
return
|
||||
|
||||
@@ -56,3 +56,6 @@
|
||||
var/glow_color = "#FFFFFF" // The color they're glowing!
|
||||
|
||||
var/see_invisible_default = SEE_INVISIBLE_LIVING
|
||||
|
||||
var/list/hud_list //Holder for health hud, status hud, wanted hud, etc (not like inventory slots)
|
||||
var/has_huds = FALSE //Whether or not we should bother initializing the above list
|
||||
|
||||
@@ -150,6 +150,7 @@ var/list/ai_verbs_default = list(
|
||||
add_language(LANGUAGE_SOL_COMMON, 1)
|
||||
add_language(LANGUAGE_UNATHI, 1)
|
||||
add_language(LANGUAGE_SIIK, 1)
|
||||
add_language(LANGUAGE_AKHANI, 1)
|
||||
add_language(LANGUAGE_SKRELLIAN, 1)
|
||||
add_language(LANGUAGE_SKRELLIANFAR, 0)
|
||||
add_language(LANGUAGE_TRADEBAND, 1)
|
||||
@@ -586,8 +587,8 @@ var/list/ai_verbs_default = list(
|
||||
"female human",
|
||||
"male unathi",
|
||||
"female unathi",
|
||||
"male tajara",
|
||||
"female tajara",
|
||||
"male tajaran",
|
||||
"female tajaran",
|
||||
"male tesharii",
|
||||
"female tesharii",
|
||||
"male skrell",
|
||||
@@ -629,9 +630,9 @@ var/list/ai_verbs_default = list(
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holounam"))
|
||||
if("female unathi")
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holounaf"))
|
||||
if("male tajara")
|
||||
if("male tajaran")
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotajm"))
|
||||
if("female tajara")
|
||||
if("female tajaran")
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotajf"))
|
||||
if("male tesharii")
|
||||
holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotesm"))
|
||||
|
||||
@@ -473,16 +473,18 @@
|
||||
id = "translator"
|
||||
|
||||
toggle(mob/living/silicon/pai/user)
|
||||
// Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages
|
||||
// Sol Common, Tradeband, Terminus and Gutter are added with New() and are therefore the current default, always active languages
|
||||
user.translator_on = !user.translator_on
|
||||
if(user.translator_on)
|
||||
user.add_language(LANGUAGE_UNATHI)
|
||||
user.add_language(LANGUAGE_SIIK)
|
||||
user.add_language(LANGUAGE_AKHANI)
|
||||
user.add_language(LANGUAGE_SKRELLIAN)
|
||||
user.add_language(LANGUAGE_SCHECHI)
|
||||
else
|
||||
user.remove_language(LANGUAGE_UNATHI)
|
||||
user.remove_language(LANGUAGE_SIIK)
|
||||
user.remove_language(LANGUAGE_AKHANI)
|
||||
user.remove_language(LANGUAGE_SKRELLIAN)
|
||||
user.remove_language(LANGUAGE_SCHECHI)
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(response == "Analyze")
|
||||
if(loaded_item)
|
||||
var/confirm = alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze","Yes","No")
|
||||
if(confirm == "Yes") //This is pretty copypasta-y
|
||||
if(confirm == "Yes" && !QDELETED(loaded_item)) //This is pretty copypasta-y
|
||||
user << "You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down."
|
||||
flick("portable_analyzer_scan", src)
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
|
||||
@@ -23,7 +23,7 @@ var/global/list/robot_modules = list(
|
||||
var/hide_on_manifest = 0
|
||||
var/channels = list()
|
||||
var/networks = list()
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1)
|
||||
var/languages = list(LANGUAGE_SOL_COMMON = 1, LANGUAGE_TRADEBAND = 1, LANGUAGE_UNATHI = 0, LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, LANGUAGE_GUTTER = 0, LANGUAGE_SCHECHI = 0, LANGUAGE_SIGN = 0, LANGUAGE_TERMINUS = 1)
|
||||
var/sprites = list()
|
||||
var/can_be_pushed = 1
|
||||
var/no_slip = 0
|
||||
@@ -576,6 +576,7 @@ var/global/list/robot_modules = list(
|
||||
LANGUAGE_SOL_COMMON = 1,
|
||||
LANGUAGE_UNATHI = 1,
|
||||
LANGUAGE_SIIK = 1,
|
||||
LANGUAGE_AKHANI = 1,
|
||||
LANGUAGE_SKRELLIAN = 1,
|
||||
LANGUAGE_SKRELLIANFAR = 0,
|
||||
LANGUAGE_ROOTLOCAL = 0,
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
LANGUAGE_TRADEBAND = 1,
|
||||
LANGUAGE_UNATHI = 0,
|
||||
LANGUAGE_SIIK = 0,
|
||||
LANGUAGE_AKHANI = 0,
|
||||
LANGUAGE_SKRELLIAN = 0,
|
||||
LANGUAGE_SKRELLIANFAR = 0,
|
||||
LANGUAGE_ROOTLOCAL = 0,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/list/stating_laws = list()// Channels laws are currently being stated on
|
||||
var/obj/item/device/radio/common_radio
|
||||
|
||||
var/list/hud_list[10]
|
||||
has_huds = TRUE
|
||||
var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer
|
||||
|
||||
//Used in say.dm.
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
attacktext = list("slashed")
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
@@ -13,8 +13,12 @@
|
||||
speed = 8
|
||||
|
||||
harm_intent_damage = 8
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
attacktext = list("chomped")
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
@@ -48,7 +52,7 @@
|
||||
health = 160
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 8
|
||||
melee_damage_lower = 13
|
||||
melee_damage_upper = 25
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/strong/cult
|
||||
|
||||
@@ -17,8 +17,10 @@
|
||||
response_harm = "hits"
|
||||
|
||||
harm_intent_damage = 10
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 18
|
||||
attack_armor_pen = 5 //It's a horror from beyond, I ain't gotta explain 5 AP
|
||||
|
||||
attacktext = list("gripped")
|
||||
attack_sound = 'sound/hallucinations/growl1.ogg'
|
||||
@@ -67,8 +69,8 @@
|
||||
health = 100
|
||||
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 7
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 13
|
||||
melee_damage_upper = 28
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/strong/cult
|
||||
|
||||
@@ -63,8 +63,8 @@
|
||||
desc = "A robot. It looks fragile and weak"
|
||||
maxHealth = 1 LASERS_TO_KILL
|
||||
health = 1 LASERS_TO_KILL
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 3
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 8
|
||||
|
||||
// This one has a semi-weak ranged attack.
|
||||
/mob/living/simple_animal/hostile/hivebot/range
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
attack_armor_pen = 100 //It's a ghost/horror from beyond, I ain't gotta explain 100 AP
|
||||
attacktext = list("drained the life from")
|
||||
|
||||
minbodytemp = 0
|
||||
|
||||
@@ -21,8 +21,11 @@
|
||||
response_harm = "hits the"
|
||||
|
||||
harm_intent_damage = 10
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 3
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attack_sharp = 1
|
||||
|
||||
environment_smash = 1
|
||||
|
||||
attacktext = list("bites")
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
name = "space bear"
|
||||
desc = "RawrRawr!!"
|
||||
tt_desc = "Ursinae aetherius" //...bearspace? Maybe.
|
||||
icon_state = "bear"
|
||||
icon_living = "bear"
|
||||
icon_dead = "bear_dead"
|
||||
@@ -24,6 +23,8 @@
|
||||
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
//Space bears aren't affected by atmos.
|
||||
min_oxy = 0
|
||||
|
||||
@@ -68,8 +68,11 @@
|
||||
|
||||
minbodytemp = 175
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_lower = 22
|
||||
melee_damage_upper = 35
|
||||
attack_armor_pen = 35
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
response_help = "pets"
|
||||
|
||||
@@ -29,8 +29,11 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "punches"
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 18
|
||||
melee_damage_upper = 30
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
heat_damage_per_tick = 20
|
||||
cold_damage_per_tick = 20
|
||||
|
||||
@@ -70,8 +73,8 @@ Nurse Family
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
poison_per_bite = 7
|
||||
poison_type = "spidertoxin" // VOREStation edit, original is stoxin. (sleep toxins)
|
||||
|
||||
@@ -102,10 +105,11 @@ Nurse Family
|
||||
maxHealth = 320
|
||||
health = 320
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 25
|
||||
poison_per_bite = 10
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
attack_armor_pen = 25
|
||||
|
||||
poison_per_bite = 10
|
||||
egg_inject_chance = 10
|
||||
|
||||
pixel_x = -16
|
||||
@@ -129,8 +133,8 @@ Nurse Family
|
||||
cooperative = 1
|
||||
shoot_range = 5
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
poison_per_bite = 2
|
||||
poison_type = "psilocybin"
|
||||
|
||||
@@ -162,8 +166,8 @@ Nurse Family
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 25
|
||||
|
||||
poison_per_bite = 3
|
||||
poison_type = "chloralhydrate"
|
||||
@@ -222,9 +226,6 @@ Hunter Family
|
||||
health = 120
|
||||
move_to_delay = 4
|
||||
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
|
||||
poison_per_bite = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/lurker
|
||||
@@ -238,7 +239,7 @@ Hunter Family
|
||||
health = 100
|
||||
move_to_delay = 4
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 20
|
||||
|
||||
|
||||
@@ -289,8 +290,8 @@ Guard Family
|
||||
maxHealth = 210
|
||||
health = 210
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
|
||||
poison_chance = 20
|
||||
poison_per_bite = 5
|
||||
@@ -309,8 +310,8 @@ Guard Family
|
||||
maxHealth = 175
|
||||
health = 175
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 25
|
||||
|
||||
poison_chance = 30
|
||||
poison_per_bite = 1
|
||||
@@ -326,8 +327,8 @@ Guard Family
|
||||
health = 210
|
||||
taser_kill = 0 //It -is- the taser.
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 25
|
||||
|
||||
ranged = 1
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
@@ -349,8 +350,9 @@ Guard Family
|
||||
health = 225
|
||||
taser_kill = 0 //You will need more than a peashooter to kill the juggernaut.
|
||||
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 20
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 40
|
||||
attack_armor_pen = 15
|
||||
|
||||
poison_chance = 30
|
||||
poison_per_bite = 0.5
|
||||
@@ -380,9 +382,6 @@ Guard Family
|
||||
maxHealth = 175
|
||||
health = 175
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
|
||||
poison_per_bite = 5
|
||||
poison_type = "cryotoxin"
|
||||
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
speed = 1
|
||||
move_to_delay = 1
|
||||
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 8
|
||||
melee_damage_lower = 4
|
||||
melee_damage_upper = 12
|
||||
attack_sharp = 1 //Bleeds, but it shouldn't rip off a limb?
|
||||
|
||||
attacktext = list("gouged")
|
||||
cold_damage_per_tick = 0
|
||||
|
||||
@@ -15,7 +15,10 @@
|
||||
move_to_delay = 2
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 25
|
||||
melee_damage_upper = 35
|
||||
attack_armor_pen = 15
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
attacktext = list("mauled")
|
||||
cold_damage_per_tick = 0
|
||||
|
||||
@@ -14,8 +14,11 @@
|
||||
speed = 1
|
||||
move_to_delay = 1
|
||||
|
||||
melee_damage_lower = 3
|
||||
melee_damage_upper = 12
|
||||
melee_damage_lower = 12
|
||||
melee_damage_upper = 28
|
||||
attack_armor_pen = 5
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
|
||||
attacktext = list("gouged")
|
||||
cold_damage_per_tick = 0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user