Merge branch 'master' of https://github.com/PolarisSS13/Polaris into sync2018

# Conflicts:
#	code/game/objects/structures/signs.dm
#	code/modules/mob/living/carbon/human/human.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/organs/organ_icon.dm
#	maps/southern_cross/southern_cross-1.dmm
#	maps/southern_cross/southern_cross-3.dmm
#	maps/southern_cross/southern_cross-6.dmm
#	vorestation.dme
This commit is contained in:
Arokha Sieyes
2017-12-26 23:07:58 -05:00
72 changed files with 16321 additions and 15298 deletions
+31 -40
View File
@@ -699,49 +699,40 @@
///Returns a number between -1 to 2
/mob/living/carbon/human/eyecheck()
var/obj/item/organ/I = internal_organs_by_name[O_EYES]
if(!I || I.status & (ORGAN_CUT_AWAY|ORGAN_DESTROYED))
return 2
var/obj/item/organ/internal/eyes/I
var/number = 0
if(istype(src.head, /obj/item/clothing/head/welding))
if(!src.head:up)
number += 2
if(istype(back, /obj/item/weapon/rig))
var/obj/item/weapon/rig/O = back
if(O.helmet && O.helmet == head && (O.helmet.body_parts_covered & EYES))
number += 2
if(istype(src.head, /obj/item/clothing/head/helmet/space))
number += 2
if(istype(src.head, /obj/item/clothing/head/helmet/space/emergency))
number -= 2
if(istype(src.glasses, /obj/item/clothing/glasses/thermal))
var/obj/item/clothing/glasses/thermal/T = src.glasses
if(T.active)
number -= 1
if(istype(src.glasses, /obj/item/clothing/glasses/night))
var/obj/item/clothing/glasses/night/N = src.glasses
if(N.active)
number -= 1
if(istype(src.glasses, /obj/item/clothing/glasses/sunglasses))
if(istype(src.glasses, /obj/item/clothing/glasses/sunglasses/sechud/aviator))
var/obj/item/clothing/glasses/sunglasses/sechud/aviator/S = src.glasses
if(!S.on)
number += 1
else
number += 1
if(istype(src.glasses, /obj/item/clothing/glasses/welding))
var/obj/item/clothing/glasses/welding/W = src.glasses
if(!W.up)
number += 2
//VOREStation Add - Omnihud Handling
if(istype(src.glasses, /obj/item/clothing/glasses/omnihud))
var/obj/item/clothing/glasses/omnihud/omn = src.glasses
number += omn.flash_prot
omn.flashed()
//VOREStation Add End
if(internal_organs_by_name[O_EYES]) // Eyes are fucked, not a 'weak point'.
I = internal_organs_by_name[O_EYES]
if(I.is_broken())
return FLASH_PROTECTION_MAJOR
else // They can't be flashed if they don't have eyes.
return FLASH_PROTECTION_MAJOR
var/number = get_equipment_flash_protection()
number = I.get_total_protection(number)
I.additional_flash_effects(number)
return number
#define add_clothing_protection(A) \
var/obj/item/clothing/C = A; \
flash_protection += C.flash_protection; \
/mob/living/carbon/human/proc/get_equipment_flash_protection()
var/flash_protection = 0
if(istype(src.head, /obj/item/clothing/head))
add_clothing_protection(head)
if(istype(src.glasses, /obj/item/clothing/glasses))
add_clothing_protection(glasses)
if(istype(src.wear_mask, /obj/item/clothing/mask))
add_clothing_protection(wear_mask)
if(istype(back,/obj/item/weapon/rig))
add_clothing_protection(back)
return flash_protection
#undef add_clothing_protection
//Used by various things that knock people out by applying blunt trauma to the head.
//Checks that the species has a "head" (brain containing organ) and that hit_zone refers to it.
/mob/living/carbon/human/proc/headcheck(var/target_zone, var/brain_tag = "brain")
@@ -23,6 +23,8 @@
var/g_skin = 0
var/b_skin = 0
var/skin_state = SKIN_NORMAL
//Synth colors
var/synth_color = 0 //Lets normally uncolorable synth parts be colorable.
var/r_synth //Used with synth_color to color synth parts that normaly can't be colored.
+12 -5
View File
@@ -975,7 +975,7 @@
if(paralysis || sleeping)
blinded = 1
stat = UNCONSCIOUS
set_stat(UNCONSCIOUS)
animate_tail_reset()
adjustHalLoss(-3)
@@ -990,7 +990,7 @@
emote("snore")
//CONSCIOUS
else
stat = CONSCIOUS
set_stat(CONSCIOUS)
//Periodically double-check embedded_flag
if(embedded_flag && !(life_tick % 10))
@@ -1078,6 +1078,11 @@
return 1
/mob/living/carbon/human/proc/set_stat(var/new_stat)
stat = new_stat
if(stat)
update_skin(1)
/mob/living/carbon/human/handle_regular_hud_updates()
if(hud_updateflag) // update our mob's hud overlays, AKA what others see flaoting above our head
handle_hud_list()
@@ -1209,8 +1214,9 @@
healths.icon_state = "health_numb"
else
// Generate a by-limb health display.
healths.icon_state = "blank"
healths.overlays = null
var/mutable_appearance/healths_ma = new(healths)
healths_ma.icon_state = "blank"
healths_ma.overlays = null
var/no_damage = 1
var/trauma_val = 0 // Used in calculating softcrit/hardcrit indicators.
@@ -1238,7 +1244,8 @@
else if(no_damage)
health_images += image('icons/mob/screen1_health.dmi',"fullhealth")
healths.overlays += health_images
healths_ma.overlays += health_images
healths.appearance = healths_ma
if(nutrition_icon)
switch(nutrition)
@@ -158,6 +158,9 @@
var/spawn_flags = 0 // Flags that specify who can spawn as this species
var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
var/obj/effect/decal/cleanable/blood/tracks/move_trail = /obj/effect/decal/cleanable/blood/tracks/footprints // What marks are left when walking
var/list/skin_overlays = list()
var/has_floating_eyes = 0 // Whether the eyes can be shown above other icons
var/water_movement = 0 // How much faster or slower the species is in water
var/snow_movement = 0 // How much faster or slower the species is on snow
@@ -364,4 +367,32 @@
// Called when lying down on a water tile.
/datum/species/proc/can_breathe_water()
return FALSE
return FALSE
// Impliments different trails for species depending on if they're wearing shoes.
/datum/species/proc/get_move_trail(var/mob/living/carbon/human/H)
if( H.shoes || ( H.wear_suit && (H.wear_suit.body_parts_covered & FEET) ) )
return /obj/effect/decal/cleanable/blood/tracks/footprints
else
return move_trail
/datum/species/proc/update_skin(var/mob/living/carbon/human/H)
return
/datum/species/proc/get_eyes(var/mob/living/carbon/human/H)
return
/datum/species/proc/can_overcome_gravity(var/mob/living/carbon/human/H)
return FALSE
// Used for any extra behaviour when falling and to see if a species will fall at all.
/datum/species/proc/can_fall(var/mob/living/carbon/human/H)
return TRUE
// Used to find a special target for falling on, such as pouncing on someone from above.
/datum/species/proc/find_fall_target_special(src, landing)
return FALSE
// Used to override normal fall behaviour. Use only when the species does fall down a level.
/datum/species/proc/fall_impact_special(var/mob/living/carbon/human/H, var/atom/A)
return FALSE
@@ -223,4 +223,67 @@ var/list/wrapped_species_by_ref = list()
/mob/living/carbon/human/proc/shapeshifter_set_facial_color(var/new_fhair)
change_facial_hair_color(hex2num(copytext(new_fhair, 2, 4)), hex2num(copytext(new_fhair, 4, 6)), hex2num(copytext(new_fhair, 6, 8)))
change_facial_hair_color(hex2num(copytext(new_fhair, 2, 4)), hex2num(copytext(new_fhair, 4, 6)), hex2num(copytext(new_fhair, 6, 8)))
// Replaces limbs and copies wounds
/mob/living/carbon/human/proc/shapeshifter_change_species(var/new_species)
if(!species)
return
dna.species = new_species
var/list/limb_exists = list(
BP_TORSO = 0,
BP_GROIN = 0,
BP_HEAD = 0,
BP_L_ARM = 0,
BP_R_ARM = 0,
BP_L_LEG = 0,
BP_R_LEG = 0,
BP_L_HAND = 0,
BP_R_HAND = 0,
BP_L_FOOT = 0,
BP_R_FOOT = 0
)
var/list/wounds_by_limb = list(
BP_TORSO = new/list(),
BP_GROIN = new/list(),
BP_HEAD = new/list(),
BP_L_ARM = new/list(),
BP_R_ARM = new/list(),
BP_L_LEG = new/list(),
BP_R_LEG = new/list(),
BP_L_HAND = new/list(),
BP_R_HAND = new/list(),
BP_L_FOOT = new/list(),
BP_R_FOOT = new/list()
)
// Copy damage values
for(var/limb in organs_by_name)
var/obj/item/organ/external/O = organs_by_name[limb]
limb_exists[O.organ_tag] = 1
wounds_by_limb[O.organ_tag] = O.wounds
species = all_species[new_species]
species.create_organs(src)
// species.handle_post_spawn(src)
for(var/limb in organs_by_name)
var/obj/item/organ/external/O = organs_by_name[limb]
if(limb_exists[O.organ_tag])
O.species = all_species[new_species]
O.wounds = wounds_by_limb[O.organ_tag]
// sync the organ's damage with its wounds
O.update_damages()
O.owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called
else
organs.Remove(O)
organs_by_name.Remove(O)
spawn(0)
regenerate_icons()
if(species && mind)
apply_traits()
return
@@ -26,6 +26,8 @@
tail_hair = "feathers"
reagent_tag = IS_TESHARI
move_trail = /obj/effect/decal/cleanable/blood/tracks/paw
icobase = 'icons/mob/human_races/r_seromi.dmi'
deform = 'icons/mob/human_races/r_seromi.dmi'
damage_overlays = 'icons/mob/human_races/masks/dam_seromi.dmi'
@@ -86,6 +86,8 @@
//reagent_tag = IS_UNATHI //VOREStation Edit
move_trail = /obj/effect/decal/cleanable/blood/tracks/claw
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest/unathi),
BP_GROIN = list("path" = /obj/item/organ/external/groin/unathi),
@@ -193,6 +195,7 @@
//reagent_tag = IS_TAJARA //VOREStation Removal
//heat_discomfort_level = 292 //VOREStation Removal
move_trail = /obj/effect/decal/cleanable/blood/tracks/paw
heat_discomfort_strings = list(
"Your fur prickles in the heat.",
"You feel uncomfortably warm.",
@@ -1,3 +1,8 @@
// ### Wooo, inheritance. Basically copying everything I don't need to edit from prometheans, because they mostly work already.
// ### Any and all of this is open to change for balance or whatever.
// ###
// ###
// Species definition follows.
/datum/species/shapeshifter/promethean/avatar
name = "Virtual Reality Avatar"
@@ -26,6 +31,7 @@
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
/mob/living/carbon/human/proc/shapeshifter_select_gender,
/mob/living/carbon/human/proc/regenerate,
/mob/living/carbon/human/proc/shapeshifter_change_opacity,
/mob/living/carbon/human/proc/exit_vr
)
@@ -36,6 +42,23 @@
/datum/species/shapeshifter/promethean/avatar/handle_environment_special(var/mob/living/carbon/human/H)
return
/mob/living/carbon/human/proc/shapeshifter_change_opacity()
set name = "Toggle Opacity"
set category = "Abilities"
if(stat || world.time < last_special)
return
last_special = world.time + 10
if(src.icon_state == "promethean")
icon_state = lowertext(src.species.get_bodytype(src))
shapeshifter_change_species("Virtual Reality [src.species.get_bodytype(src)]")
else
icon_state = "promethean"
shapeshifter_change_species("Virtual Reality Avatar")
// enter_vr is called on the original mob, and puts the mind into the supplied vr mob
/mob/living/carbon/human/proc/enter_vr(var/mob/living/carbon/human/avatar) // Avatar is currently a human, because we have preexisting setup code for appearance manipulation, etc.
@@ -86,4 +109,4 @@
if(istype(vr_holder.loc, /obj/machinery/vr_sleeper))
var/obj/machinery/vr_sleeper/V = vr_holder.loc
V.go_out()
V.go_out()
@@ -0,0 +1,121 @@
// Species for the opaque appearance
// Due to sprite construction, they have to have separate limb lists
/datum/species/shapeshifter/promethean/avatar/human
name = "Virtual Reality Human"
icobase = 'icons/mob/human_races/r_human.dmi'
deform = 'icons/mob/human_races/r_def_human.dmi'
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
/datum/species/shapeshifter/promethean/avatar/unathi
name = "Virtual Reality 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'
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest/unathi),
BP_GROIN = list("path" = /obj/item/organ/external/groin/unathi),
BP_HEAD = list("path" = /obj/item/organ/external/head/unathi),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
/datum/species/shapeshifter/promethean/avatar/tajaran
name = "Virtual Reality Tajara"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
tail = "tajtail"
tail_animation = 'icons/mob/species/tajaran/tail.dmi'
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
/datum/species/shapeshifter/promethean/avatar/skrell
name = "Virtual Reality Skrell"
icobase = 'icons/mob/human_races/r_skrell.dmi'
deform = 'icons/mob/human_races/r_def_skrell.dmi'
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/skrell),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
/datum/species/shapeshifter/promethean/avatar/teshari
name = "Virtual Reality Teshari"
icobase = 'icons/mob/human_races/r_seromi.dmi'
deform = 'icons/mob/human_races/r_seromi.dmi'
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/seromi),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand/seromi),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right/seromi),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot/seromi),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right/seromi)
)
/datum/species/shapeshifter/promethean/avatar/diona
name = "Virtual Reality Diona"
icobase = 'icons/mob/human_races/r_diona.dmi'
deform = 'icons/mob/human_races/r_def_plant.dmi'
appearance_flags = 0
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/diona/chest),
BP_GROIN = list("path" = /obj/item/organ/external/diona/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/no_eyes/diona),
BP_L_ARM = list("path" = /obj/item/organ/external/diona/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/diona/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/diona/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/diona/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/diona/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/diona/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/diona/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/diona/foot/right)
)
@@ -107,36 +107,37 @@ Please contact me on #coderbus IRC. ~Carn x
//Human Overlays Indexes/////////
#define MUTATIONS_LAYER 1
#define DAMAGE_LAYER 2
#define SURGERY_LEVEL 3 //bs12 specific.
#define UNDERWEAR_LAYER 4
#define SHOES_LAYER_ALT 5
#define UNIFORM_LAYER 6
#define ID_LAYER 7
#define SHOES_LAYER 8
#define GLOVES_LAYER 9
#define BELT_LAYER 10
#define SUIT_LAYER 11
#define TAIL_LAYER 12 //bs12 specific. //In a perfect world the parts of the tail that show between legs would be on a new layer. Until then, sprite's been tweaked
#define GLASSES_LAYER 13
#define BELT_LAYER_ALT 14
#define SUIT_STORE_LAYER 15
#define BACK_LAYER 16
#define HAIR_LAYER 17 //TODO: make part of head layer?
#define EARS_LAYER 18
#define FACEMASK_LAYER 19
#define HEAD_LAYER 20
#define COLLAR_LAYER 21
#define HANDCUFF_LAYER 22
#define LEGCUFF_LAYER 23
#define L_HAND_LAYER 24
#define R_HAND_LAYER 25
#define MODIFIER_EFFECTS_LAYER 26
#define FIRE_LAYER 27 //If you're on fire
#define WATER_LAYER 28 //If you're submerged in water.
#define TARGETED_LAYER 29 //BS12: Layer for the target overlay from weapon targeting system
#define WING_LAYER 30 //VOREStation edit. Simply move this up a number if things are added.
#define TOTAL_LAYERS 31 //VOREStation edit. Add it to the number polaris has but +1 to accomidate the wing_layer.
#define SKIN_LAYER 2
#define DAMAGE_LAYER 3
#define SURGERY_LEVEL 4 //bs12 specific.
#define UNDERWEAR_LAYER 5
#define SHOES_LAYER_ALT 6
#define UNIFORM_LAYER 7
#define ID_LAYER 8
#define SHOES_LAYER 9
#define GLOVES_LAYER 10
#define BELT_LAYER 11
#define SUIT_LAYER 12
#define TAIL_LAYER 13 //bs12 specific. //In a perfect world the parts of the tail that show between legs would be on a new layer. Until then, sprite's been tweaked
#define GLASSES_LAYER 14
#define BELT_LAYER_ALT 15
#define SUIT_STORE_LAYER 16
#define BACK_LAYER 17
#define HAIR_LAYER 18 //TODO: make part of head layer?
#define EARS_LAYER 19
#define FACEMASK_LAYER 20
#define HEAD_LAYER 21
#define COLLAR_LAYER 22
#define HANDCUFF_LAYER 23
#define LEGCUFF_LAYER 24
#define L_HAND_LAYER 25
#define R_HAND_LAYER 26
#define MODIFIER_EFFECTS_LAYER 27
#define FIRE_LAYER 28 //If you're on fire
#define WATER_LAYER 29 //If you're submerged in water.
#define TARGETED_LAYER 30 //BS12: Layer for the target overlay from weapon targeting system
#define WING_LAYER 31 //VOREStation edit. Simply move this up a number if things are added.
#define TOTAL_LAYERS 31 //VOREStation edit.
//////////////////////////////////
/mob/living/carbon/human
@@ -159,6 +160,8 @@ Please contact me on #coderbus IRC. ~Carn x
else if(istype(entry, /list))
for(var/inner_entry in entry)
overlays += inner_entry
if(species && species.has_floating_eyes)
overlays |= species.get_eyes(src)
if(lying && !species.prone_icon) //Only rotate them if we're not drawing a specific icon for being prone.
var/matrix/M = matrix()
@@ -268,6 +271,7 @@ var/global/list/damage_icon_parts = list()
icon_key += "[rgb(part.s_col[1],part.s_col[2],part.s_col[3])]"
if(part.body_hair && part.h_col && part.h_col.len >= 3)
icon_key += "[rgb(part.h_col[1],part.h_col[2],part.h_col[3])]"
icon_key += "[part.s_col_blend]"
else
icon_key += "#000000"
for(var/M in part.markings)
@@ -299,7 +303,7 @@ var/global/list/damage_icon_parts = list()
var/icon/temp = part.get_icon(skeleton)
//That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST
//And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part)
if(part.icon_position&(LEFT|RIGHT))
if(part.icon_position & (LEFT | RIGHT))
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
@@ -313,6 +317,8 @@ var/global/list/damage_icon_parts = list()
if(part.icon_position & RIGHT)
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
base_icon.Blend(temp2, ICON_UNDERLAY)
else if(part.icon_position & UNDER)
base_icon.Blend(temp, ICON_UNDERLAY)
else
base_icon.Blend(temp, ICON_OVERLAY)
@@ -343,6 +349,10 @@ var/global/list/damage_icon_parts = list()
update_tail_showing(0)
update_wing_showing(0) //VOREStation edit
/mob/living/carbon/human/proc/update_skin(var/update_icons=1)
overlays_standing[SKIN_LAYER] = species.update_skin(src)
if(update_icons) update_icons()
//UNDERWEAR OVERLAY
/mob/living/carbon/human/proc/update_underwear(var/update_icons=1)
overlays_standing[UNDERWEAR_LAYER] = null
@@ -458,6 +468,7 @@ var/global/list/damage_icon_parts = list()
if(transforming || QDELETED(src)) return
update_mutations(0)
update_skin(0)
update_body(0)
update_underwear(0)
update_hair(0)
+2
View File
@@ -15,6 +15,7 @@ var/list/department_radio_keys = list(
":u" = "Supply", ".u" = "Supply",
":v" = "Service", ".v" = "Service",
":p" = "AI Private", ".p" = "AI Private",
":y" = "Explorer", ".y" = "Explorer",
":R" = "right ear", ".R" = "right ear",
":L" = "left ear", ".L" = "left ear",
@@ -31,6 +32,7 @@ var/list/department_radio_keys = list(
":U" = "Supply", ".U" = "Supply",
":V" = "Service", ".V" = "Service",
":P" = "AI Private", ".P" = "AI Private",
":Y" = "Explorer", ".Y" = "Explorer",
//kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
@@ -193,7 +193,7 @@
wrapped = null
return
src.loc << "<span class='danger'>You drop \the [wrapped].</span>"
to_chat(src.loc, "<span class='danger'>You drop \the [wrapped].</span>")
wrapped.loc = get_turf(src)
wrapped = null
//update_icon()
@@ -202,11 +202,14 @@
if(wrapped) //The force of the wrapped obj gets set to zero during the attack() and afterattack().
force_holder = wrapped.force
wrapped.force = 0.0
wrapped.attack(M,user)
M.attackby(wrapped, user) //attackby reportedly gets procced by being clicked on, at least according to Anewbe.
if(QDELETED(wrapped) || wrapped.loc != src.loc)
if(QDELETED(wrapped) || wrapped.loc != src.loc) //qdel check here so it doesn't duplicate/spawn ghost items
wrapped = null
return 1
else
wrapped.attack(M,user)
M.attackby(wrapped, user) //attackby reportedly gets procced by being clicked on, at least according to Anewbe.
if(QDELETED(wrapped) || wrapped.loc != src.loc)
wrapped = null
return 1
return 0
/obj/item/weapon/gripper/afterattack(var/atom/target, var/mob/living/user, proximity, params)
@@ -256,12 +259,12 @@
//We can grab the item, finally.
if(grab)
user << "You collect \the [I]."
to_chat(user, "You collect \the [I].")
I.loc = src
wrapped = I
return
else
user << "<span class='danger'>Your gripper cannot hold \the [target].</span>"
to_chat(user, "<span class='danger'>Your gripper cannot hold \the [target].</span>")
else if(istype(target,/obj/machinery/power/apc))
var/obj/machinery/power/apc/A = target
@@ -342,15 +345,15 @@
if(!istype(D))
return
D << "<span class='danger'>You begin decompiling [M].</span>"
to_chat(D, "<span class='danger'>You begin decompiling [M].</span>")
if(!do_after(D,50))
D << "<span class='danger'>You need to remain still while decompiling such a large object.</span>"
to_chat(D, "<span class='danger'>You need to remain still while decompiling such a large object.</span>")
return
if(!M || !D) return
D << "<span class='danger'>You carefully and thoroughly decompile [M], storing as much of its resources as you can within yourself.</span>"
to_chat(D, "<span class='danger'>You carefully and thoroughly decompile [M], storing as much of its resources as you can within yourself.</span>")
qdel(M)
new/obj/effect/decal/cleanable/blood/oil(get_turf(src))
@@ -423,16 +426,16 @@
grabbed_something = 1
if(grabbed_something)
user << "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].</span>"
to_chat(user, "<span class='notice'>You deploy your decompiler and clear out the contents of \the [T].</span>")
else
user << "<span class='danger'>Nothing on \the [T] is useful to you.</span>"
to_chat(user, "<span class='danger'>Nothing on \the [T] is useful to you.</span>")
return
//PRETTIER TOOL LIST.
/mob/living/silicon/robot/drone/installed_modules()
if(weapon_lock)
src << "<span class='danger'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</span>"
to_chat(src, "<span class='danger'>Weapon lock active, unable to use modules! Count:[weaponlock_time]</span>")
return
if(!module)