Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit686
This commit is contained in:
@@ -71,6 +71,11 @@
|
||||
#define MUT_EXTRA 2
|
||||
#define MUT_OTHER 3
|
||||
|
||||
//species use_skintones defines
|
||||
#define NO_SKINTONES 0
|
||||
#define USE_SKINTONES 1
|
||||
#define USE_SKINTONES_GRAYSCALE_CUSTOM 2 //adds a "_g" suffix to limb overlays icon states if the skin_tone is a custom one.
|
||||
|
||||
//DNA - Because fuck you and your magic numbers being all over the codebase.
|
||||
#define DNA_BLOCK_SIZE 3
|
||||
|
||||
@@ -132,8 +137,9 @@
|
||||
#define NOGENITALS 21 //Cannot create, use, or otherwise have genitals
|
||||
#define MATRIXED 22 //if icon is color matrix'd
|
||||
#define SKINTONE 23 //uses skin tones
|
||||
#define HORNCOLOR 24
|
||||
#define WINGCOLOR 25
|
||||
#define CUSTOM_SKINTONE 24 //adds a "_g" suffix to bodypart overlays icon states if a custom skintone is used.
|
||||
#define HORNCOLOR 25
|
||||
#define WINGCOLOR 26
|
||||
|
||||
//organ slots
|
||||
#define ORGAN_SLOT_BRAIN "brain"
|
||||
|
||||
@@ -18,3 +18,4 @@
|
||||
#define DRINK_VERYGOOD 3
|
||||
#define DRINK_FANTASTIC 4
|
||||
#define FOOD_AMAZING 5
|
||||
#define RACE_DRINK 6
|
||||
@@ -139,6 +139,7 @@
|
||||
#define STYLE_PAW_TAURIC (1<<3)
|
||||
#define STYLE_HOOF_TAURIC (1<<4)
|
||||
#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC)
|
||||
#define STYLE_NO_ANTHRO_ICON (1<<5) //When digis fit the default sprite fine and need no copypasted states. This is the case of skirts and winter coats, for example.
|
||||
|
||||
//digitigrade legs settings.
|
||||
#define NOT_DIGITIGRADE 0
|
||||
|
||||
@@ -67,10 +67,15 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
|
||||
#define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) )
|
||||
#define isdwarf(A) (is_species(A, /datum/species/dwarf))
|
||||
#define isdullahan(A) (is_species(A, /datum/species/dullahan))
|
||||
#define isvampire(A) (is_species(A,/datum/species/vampire))
|
||||
#define isangel(A) (is_species(A, /datum/species/angel))
|
||||
#define isvampire(A) (is_species(A, /datum/species/vampire))
|
||||
#define ismush(A) (is_species(A, /datum/species/mush))
|
||||
#define isshadow(A) (is_species(A, /datum/species/shadow))
|
||||
#define isskeleton(A) (is_species(A, /datum/species/skeleton))
|
||||
|
||||
// Citadel specific species
|
||||
#define isipcperson(A) (is_species(A, /datum/species/ipc))
|
||||
#define issynthliz(A) (is_species(A, /datum/species/synthliz))
|
||||
#define ismammal(A) (is_species(A, /datum/species/mammal))
|
||||
#define isavian(A) (is_species(A, /datum/species/avian))
|
||||
#define isaquatic(A) (is_species(A, /datum/species/aquatic))
|
||||
|
||||
+20
-14
@@ -262,24 +262,30 @@
|
||||
if(!findname(.))
|
||||
break
|
||||
|
||||
/proc/random_skin_tone()
|
||||
return pick(GLOB.skin_tones)
|
||||
#define SKINTONE2HEX(skin_tone) GLOB.skin_tones[skin_tone] || skin_tone
|
||||
|
||||
/proc/random_skin_tone()
|
||||
return pick(GLOB.skin_tones - GLOB.nonstandard_skin_tones)
|
||||
|
||||
//ordered by amount of tan. Keep the nonstandard skin tones last.
|
||||
GLOBAL_LIST_INIT(skin_tones, list(
|
||||
"albino",
|
||||
"caucasian1",
|
||||
"caucasian2",
|
||||
"caucasian3",
|
||||
"latino",
|
||||
"mediterranean",
|
||||
"asian1",
|
||||
"asian2",
|
||||
"arab",
|
||||
"indian",
|
||||
"african1",
|
||||
"african2"
|
||||
"albino" = "#fff4e6",
|
||||
"caucasian1" = "#ffe0d1",
|
||||
"caucasian2" = "#fcccb3",
|
||||
"caucasian3" = "#e8b59b",
|
||||
"latino" = "#d9ae96",
|
||||
"mediterranean" = "#c79b8b",
|
||||
"asian1" = "#ffdeb3",
|
||||
"asian2" = "#e3ba84",
|
||||
"arab" = "#c4915e",
|
||||
"indian" = "#b87840",
|
||||
"african1" = "#754523",
|
||||
"african2" = "#471c18",
|
||||
"orange" = "#ffc905" //Spray tan overdose.
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(nonstandard_skin_tones, list("orange"))
|
||||
|
||||
GLOBAL_LIST_EMPTY(species_list)
|
||||
|
||||
/proc/age2agedescription(age)
|
||||
|
||||
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/clothing/head/that = 1,
|
||||
/obj/item/clothing/head/ushanka = 1,
|
||||
/obj/item/clothing/head/welding = 1,
|
||||
/obj/item/clothing/mask/gas = 15,
|
||||
/obj/effect/spawner/lootdrop/breathing_masks = 15,
|
||||
/obj/item/clothing/suit/hazardvest = 1,
|
||||
/obj/item/clothing/under/misc/vice_officer = 1,
|
||||
/obj/item/clothing/suit/hooded/flashsuit = 2,
|
||||
@@ -86,9 +86,8 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
|
||||
/obj/item/screwdriver = 3,
|
||||
/obj/item/tank/internals/emergency_oxygen = 2,
|
||||
/obj/item/vending_refill/cola = 1,
|
||||
/obj/item/weldingtool = 3,
|
||||
/obj/item/wirecutters = 1,
|
||||
/obj/item/wrench = 4,
|
||||
/obj/effect/spawner/lootdrop/welder_tools = 3,
|
||||
/obj/effect/spawner/lootdrop/low_tools = 5,
|
||||
/obj/item/relic = 3,
|
||||
/obj/item/weaponcrafting/receiver = 2,
|
||||
/obj/item/clothing/head/cone = 2,
|
||||
|
||||
@@ -473,3 +473,7 @@
|
||||
/datum/config_entry/number/body_size_slowdown_multiplier
|
||||
config_entry_value = 0.25
|
||||
min_val = 0.1 //To encourage folks to disable the slowdown through the above config instead.
|
||||
|
||||
//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones.
|
||||
/datum/config_entry/number/allow_custom_skintones
|
||||
config_entry_value = 1
|
||||
|
||||
@@ -39,6 +39,30 @@
|
||||
time = 10
|
||||
reqs = list(/obj/item/paper = 20)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/armwraps
|
||||
name = "armwraps"
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist
|
||||
time = 60
|
||||
tools = list(TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 4,
|
||||
/obj/item/stack/sheet/silk = 2,
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/armwrapsplusone
|
||||
name = "armwraps of mighty fists"
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist/magic
|
||||
time = 300
|
||||
tools = list(TOOL_WIRECUTTER, /obj/item/book/codex_gigas, /obj/item/clothing/head/wizard, /obj/item/clothing/suit/wizrobe)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/leather = 2,
|
||||
/obj/item/stack/sheet/durathread = 2,
|
||||
/datum/reagent/consumable/ethanol/sake = 100,
|
||||
/datum/reagent/consumable/ethanol/wizz_fizz = 100,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
/obj/item/stack/sheet/mineral/gold = 50)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
////////
|
||||
//Huds//
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ashen_arrow
|
||||
name = "Fire Hardened Arrow"
|
||||
name = "Ashen Arrow"
|
||||
result = /obj/item/ammo_casing/caseless/arrow/ash
|
||||
tools = list(TOOL_WELDER)
|
||||
time = 30
|
||||
|
||||
+9
-5
@@ -17,6 +17,7 @@
|
||||
var/mutation_index[DNA_MUTATION_BLOCKS] //List of which mutations this carbon has and its assigned block
|
||||
var/stability = 100
|
||||
var/scrambled = FALSE //Did we take something like mutagen? In that case we cant get our genes scanned to instantly cheese all the powers.
|
||||
var/skin_tone_override //because custom skin tones are not found in the skin_tones global list.
|
||||
|
||||
/datum/dna/New(mob/living/new_holder)
|
||||
if(istype(new_holder))
|
||||
@@ -45,6 +46,7 @@
|
||||
destination.dna.unique_enzymes = unique_enzymes
|
||||
destination.dna.uni_identity = uni_identity
|
||||
destination.dna.blood_type = blood_type
|
||||
destination.dna.skin_tone_override = skin_tone_override
|
||||
destination.set_species(species.type, icon_update=0)
|
||||
destination.dna.features = features.Copy()
|
||||
destination.dna.real_name = real_name
|
||||
@@ -66,6 +68,7 @@
|
||||
new_dna.mutation_index = mutation_index
|
||||
new_dna.uni_identity = uni_identity
|
||||
new_dna.blood_type = blood_type
|
||||
new_dna.skin_tone_override = skin_tone_override
|
||||
new_dna.features = features.Copy()
|
||||
new_dna.species = new species.type
|
||||
new_dna.real_name = real_name
|
||||
@@ -262,10 +265,11 @@
|
||||
return
|
||||
|
||||
/datum/dna/proc/is_same_as(datum/dna/D)
|
||||
if(uni_identity == D.uni_identity && mutation_index == D.mutation_index && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species)
|
||||
if(species.type == D.species.type && features == D.features && blood_type == D.blood_type)
|
||||
return 1
|
||||
return 0
|
||||
if(uni_identity != D.uni_identity || mutation_index != D.mutation_index || real_name != D.real_name || nameless != D.nameless || custom_species != D.custom_species)
|
||||
return FALSE
|
||||
if(species.type != D.species.type || features != D.features || blood_type != D.blood_type || skin_tone_override != D.skin_tone_override)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/dna/proc/update_instability(alert=TRUE)
|
||||
stability = 100
|
||||
@@ -430,7 +434,7 @@
|
||||
var/structure = dna.uni_identity
|
||||
hair_color = sanitize_hexcolor(getblock(structure, DNA_HAIR_COLOR_BLOCK))
|
||||
facial_hair_color = sanitize_hexcolor(getblock(structure, DNA_FACIAL_HAIR_COLOR_BLOCK))
|
||||
skin_tone = GLOB.skin_tones[deconstruct_block(getblock(structure, DNA_SKIN_TONE_BLOCK), GLOB.skin_tones.len)]
|
||||
skin_tone = dna.skin_tone_override || GLOB.skin_tones[deconstruct_block(getblock(structure, DNA_SKIN_TONE_BLOCK), GLOB.skin_tones.len)]
|
||||
eye_color = sanitize_hexcolor(getblock(structure, DNA_EYE_COLOR_BLOCK))
|
||||
facial_hair_style = GLOB.facial_hair_styles_list[deconstruct_block(getblock(structure, DNA_FACIAL_HAIR_STYLE_BLOCK), GLOB.facial_hair_styles_list.len)]
|
||||
hair_style = GLOB.hair_styles_list[deconstruct_block(getblock(structure, DNA_HAIR_STYLE_BLOCK), GLOB.hair_styles_list.len)]
|
||||
|
||||
+17
-12
@@ -168,24 +168,29 @@
|
||||
return FALSE
|
||||
add_to_streak("D",D)
|
||||
var/obj/item/I = null
|
||||
var/damage = (damage_roll(A,D)*0.5)
|
||||
var/damage = damage_roll(A,D)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
if(prob(65))
|
||||
if(CHECK_MOBILITY(D, MOBILITY_MOVE) || !restraining)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_MOVE) || !restraining)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
if(damage >= stunthreshold)
|
||||
I = D.get_active_held_item()
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s jaw with their hand!</span>", \
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
if(I && D.temporarilyRemoveItemFromInventory(I))
|
||||
A.put_in_hands(I)
|
||||
D.drop_all_held_items()
|
||||
D.Jitter(2)
|
||||
D.apply_damage(damage, BRUTE)
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] attempted to disarm [D]!</span>", \
|
||||
"<span class='userdanger'>[A] attempted to disarm [D]!</span>")
|
||||
playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
log_combat(A, D, "disarmed (CQC)", "[I ? " grabbing \the [I]" : ""]")
|
||||
D.Dizzy(damage)
|
||||
D.apply_damage(damage*2 + 20, STAMINA)
|
||||
D.apply_damage(damage*0.5, BRUTE)
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] strikes [D] in the chest!</span>", \
|
||||
"<span class='userdanger'>[A] strikes in chest!</span>")
|
||||
playsound(D, 'sound/weapons/cqchit1.ogg', 25, 1, -1)
|
||||
D.apply_damage(damage + 15, STAMINA)
|
||||
D.apply_damage(damage*0.5, BRUTE)
|
||||
log_combat(A, D, "disarmed (CQC)", "[I ? " grabbing \the [I]" : ""]")
|
||||
if(restraining && A.pulling == D)
|
||||
log_combat(A, D, "knocked out (Chokehold)(CQC)")
|
||||
D.visible_message("<span class='danger'>[A] puts [D] into a chokehold!</span>", \
|
||||
|
||||
@@ -98,13 +98,13 @@
|
||||
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/damage = damage_roll(A,D)
|
||||
var/damage = (damage_roll(A,D)*2 + 25)
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
return FALSE
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.apply_damage(damage + 25, STAMINA, affecting, armor_block)
|
||||
D.apply_damage(damage, STAMINA, affecting, armor_block)
|
||||
D.DefaultCombatKnockdown(80, override_hardstun = 1, override_stamdmg = 0)
|
||||
log_combat(A, D, "leg sweeped")
|
||||
return TRUE
|
||||
@@ -165,14 +165,15 @@
|
||||
return TRUE
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/damage = (damage_roll(A,D)*2)
|
||||
if(D.mobility_flags & MOBILITY_STAND)
|
||||
var/damage = damage_roll(A,D)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
D.visible_message("<span class='danger'>[A] reprimands [D]!</span>", \
|
||||
"<span class='userdanger'>You're slapped by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", COMBAT_MESSAGE_RANGE, A)
|
||||
to_chat(A, "<span class='danger'>You jab [D]!</span>")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
|
||||
D.apply_damage(damage + 5, STAMINA, affecting, armor_block)
|
||||
D.apply_damage(damage*2 + 15, STAMINA, affecting, armor_block)
|
||||
log_combat(A, D, "punched nonlethally")
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] reprimands [D]!</span>", \
|
||||
@@ -180,11 +181,12 @@
|
||||
to_chat(A, "<span class='danger'>You stomp [D]!</span>")
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
|
||||
D.apply_damage(damage + 10, STAMINA, affecting, armor_block)
|
||||
D.apply_damage(damage*2 + 20, STAMINA, affecting, armor_block)
|
||||
log_combat(A, D, "stomped nonlethally")
|
||||
if(prob(D.getStaminaLoss()))
|
||||
if(damage >= stunthreshold)
|
||||
D.visible_message("<span class='warning'>[D] sputters and recoils in pain!</span>", "<span class='userdanger'>You recoil in pain as you are jabbed in a nerve!</span>")
|
||||
D.drop_all_held_items()
|
||||
|
||||
return TRUE
|
||||
|
||||
//Krav Maga Gloves
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define REPULSE_PUNCH_COMBO "HDHD"
|
||||
#define SHOULDER_FLIP_COMBO "GHDGHH"
|
||||
#define REPULSE_PUNCH_COMBO "HDD"
|
||||
#define SHOULDER_FLIP_COMBO "DHDHG"
|
||||
#define FOOT_SMASH_COMBO "HH"
|
||||
#define SIDE_KICK_COMBO "skick"
|
||||
#define DEFT_SWITCH_COMBO "deft"
|
||||
@@ -37,7 +37,6 @@
|
||||
return FALSE
|
||||
|
||||
|
||||
//Repulse Punch - Slams the opponent far away from you.
|
||||
/datum/action/risingbassmove
|
||||
name = ""
|
||||
icon_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
@@ -89,7 +88,7 @@
|
||||
"<span class='userdanger'>[A] kicks you in the side, forcing you to step away!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
|
||||
D.DefaultCombatKnockdown(60)
|
||||
D.DefaultCombatKnockdown(60, override_hardstun = 1, override_stamdmg = damage)
|
||||
var/L = !checkfordensity(H,D) ? (!checkfordensity(K,D) ? D.loc : K) : H
|
||||
D.forceMove(L)
|
||||
log_combat(A, D, "side kicked (Rising Bass)")
|
||||
@@ -97,24 +96,25 @@
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
var/damage = (damage_roll(A,D) + 25)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
var/turf/H = get_step(A, get_dir(D,A))
|
||||
var/L = checkfordensity(H,D) ? H : A.loc
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] flips [D] over their shoulder, slamming them into the ground!</span>", \
|
||||
"<span class='userdanger'>[A] flips you over their shoulder, slamming you into the ground!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.emote("scream")
|
||||
D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
|
||||
D.apply_damage(damage, BRUTE, BODY_ZONE_HEAD)
|
||||
var/damage = damage_roll(A,D)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
var/turf/H = get_step(A, get_dir(D,A))
|
||||
var/L = checkfordensity(H,D) ? H : A.loc
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] flips [D] over their shoulder, slamming them into the ground!</span>", \
|
||||
"<span class='userdanger'>[A] flips you over their shoulder, slamming you into the ground!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.emote("scream")
|
||||
D.apply_damage(damage + 10, BRUTE, BODY_ZONE_CHEST)
|
||||
D.apply_damage(damage + 10, BRUTE, BODY_ZONE_HEAD)
|
||||
if(damage >= stunthreshold)
|
||||
D.Sleeping(60)
|
||||
D.DefaultCombatKnockdown(300)
|
||||
D.forceMove(L)
|
||||
log_combat(A, D, "shoulder flipped (Rising Bass)")
|
||||
return TRUE
|
||||
return FALSE
|
||||
D.DefaultCombatKnockdown(300, override_hardstun = 1, override_stamdmg = 50)
|
||||
D.forceMove(L)
|
||||
log_combat(A, D, "shoulder flipped (Rising Bass)")
|
||||
return TRUE
|
||||
|
||||
//Repulse Punch - Slams the opponent far away from you.
|
||||
/datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
var/damage = damage_roll(A,D)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND) && repulsecool < world.time)
|
||||
@@ -125,7 +125,8 @@
|
||||
var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A)))
|
||||
D.throw_at(F, 10, 1)
|
||||
D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
|
||||
D.DefaultCombatKnockdown(90)
|
||||
D.DefaultCombatKnockdown(90, override_hardstun = 1, override_stamdmg = damage*2)
|
||||
D.confused += min(damage, 20)
|
||||
log_combat(A, D, "repulse punched (Rising Bass)")
|
||||
repulsecool = world.time + 3 SECONDS
|
||||
return TRUE
|
||||
@@ -162,7 +163,23 @@
|
||||
add_to_streak("D",D)
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
return ..()
|
||||
var/damage = damage_roll(A,D)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND) && damage >= stunthreshold)
|
||||
D.visible_message("<span class='danger'>[A] trips [D]!</span>", \
|
||||
"<span class='userdanger'>You're tripped by [A]!</span>", "<span class='hear'>You hear something thump against the floor!</span>", COMBAT_MESSAGE_RANGE, A)
|
||||
to_chat(A, "<span class='danger'>You trip [D]!</span>")
|
||||
D.DefaultCombatKnockdown(10, override_hardstun = 0.01, override_stamdmg = damage)
|
||||
D.Dizzy(damage)
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] jabs [D] in the stomach!</span>", \
|
||||
"<span class='userdanger'>You're jabbed in the stomach by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", COMBAT_MESSAGE_RANGE, A)
|
||||
to_chat(A, "<span class='danger'>You jab [D] in the stomach!</span>")
|
||||
D.apply_damage(damage*2 + 10, STAMINA)
|
||||
D.disgust = min(damage, 20)
|
||||
playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_rising_bass/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
add_to_streak("H",D)
|
||||
@@ -203,9 +220,9 @@
|
||||
to_chat(usr, "<b><i>You retreat inward and recall the teachings of the Rising Bass...</i></b>")
|
||||
|
||||
to_chat(usr, "<span class='notice'>Side Kick</span>: Forces opponent to step to the side.")
|
||||
to_chat(usr, "<span class='notice'>Shoulder Flip</span>: Grab Harm Disarm Grab Harm Harm. Flips opponent over your shoulder and stuns.")
|
||||
to_chat(usr, "<span class='notice'>Repulse Punch</span>: Harm Disarm Harm Disarm. Slams the opponent far away from you.")
|
||||
to_chat(usr, "<span class='notice'>Foot Smash</span>: Harm Harm. Stuns opponent, minor damage.")
|
||||
to_chat(usr, "<span class='notice'>Shoulder Flip</span>: Disarm Harm Disarm Harm Grab. Flips opponent over your shoulder and stuns.")
|
||||
to_chat(usr, "<span class='notice'>Repulse Punch</span>: Harm Disarm Disarm. Slams the opponent far away from you.")
|
||||
to_chat(usr, "<span class='notice'>Foot Smash</span>: Harm Harm. Knocks opponent prone, minor damage.")
|
||||
to_chat(usr, "<span class='notice'>Deft Switch</span>: Switches the opponent's held item for your own. Most useful with nothing in your hand.")
|
||||
|
||||
/datum/martial_art/the_rising_bass/teach(mob/living/carbon/human/H, make_temporary = FALSE)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
///Gnashing Teeth: Harm Harm, consistent 20 force punch on every second harm punch, has a chance to crit
|
||||
///Gnashing Teeth: Harm Harm, high force punch on every second harm punch, has a chance to crit for near triple damage
|
||||
/datum/martial_art/the_sleeping_carp/proc/strongPunch(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
///this var is so that the strong punch is always aiming for the body part the user is targeting and not trying to apply to the chest before deviating
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
@@ -44,7 +44,7 @@
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1)
|
||||
log_combat(A, D, "strong punched (Sleeping Carp)")//so as to not double up on logging
|
||||
D.apply_damage((damage + 15) + crit_damage, BRUTE, affecting)
|
||||
return
|
||||
return TRUE
|
||||
|
||||
///Crashing Wave Kick: Harm Disarm combo, throws people seven tiles backwards
|
||||
/datum/martial_art/the_sleeping_carp/proc/launchKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
@@ -57,7 +57,7 @@
|
||||
D.throw_at(throw_target, 7, 14, A)
|
||||
D.apply_damage(damage, BRUTE, BODY_ZONE_CHEST)
|
||||
log_combat(A, D, "launchkicked (Sleeping Carp)")
|
||||
return
|
||||
return TRUE
|
||||
|
||||
///Keelhaul: Harm Grab combo, knocks people down, deals stamina damage while they're on the floor
|
||||
/datum/martial_art/the_sleeping_carp/proc/dropKick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
@@ -77,7 +77,7 @@
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the head!</span>", \
|
||||
"<span class='userdanger'>You are kicked in the head by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", COMBAT_MESSAGE_RANGE, A)
|
||||
log_combat(A, D, "dropkicked (Sleeping Carp)")
|
||||
return
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
add_to_streak("G",D)
|
||||
@@ -89,6 +89,7 @@
|
||||
/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
add_to_streak("H",D)
|
||||
var/damage = (damage_roll(A,D) + 5)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
@@ -99,6 +100,9 @@
|
||||
to_chat(A, "<span class='danger'>You [atk_verb] [D]!</span>")
|
||||
D.apply_damage(damage, BRUTE, affecting)
|
||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, TRUE, -1)
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND) && damage >= stunthreshold)
|
||||
to_chat(D, "<span class='danger'>You stumble and fall!</span>")
|
||||
D.DefaultCombatKnockdown(10, override_hardstun = 0.01, override_stamdmg = damage)
|
||||
log_combat(A, D, "punched (Sleeping Carp)")
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -23,6 +23,11 @@
|
||||
mood_change = 4
|
||||
timeout = 2 MINUTES
|
||||
|
||||
/datum/mood_event/race_drink
|
||||
description = "<span class='nicegreen'>That drink was made for me!</span>\n"
|
||||
mood_change = 6
|
||||
timeout = 5 MINUTES
|
||||
|
||||
/datum/mood_event/amazingtaste
|
||||
description = "<span class='nicegreen'>Amazing taste!</span>\n"
|
||||
mood_change = 50 //Is this not really high..?
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
/obj/item/stack/tile/fakespace/loaded = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/stack/tile/fakepit/loaded = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/restraints/handcuffs/fake = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/hug = ARCADE_WEIGHT_TRICK,
|
||||
|
||||
/obj/item/grenade/chem_grenade/glitter/pink = ARCADE_WEIGHT_TRICK,
|
||||
/obj/item/grenade/chem_grenade/glitter/blue = ARCADE_WEIGHT_TRICK,
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(ishuman(source_mob))
|
||||
var/mob/living/carbon/human/H = source_mob
|
||||
if(H.dna.species.use_skintones)
|
||||
body_coloring = "#[skintone2hex(H.skin_tone)]"
|
||||
body_coloring = SKINTONE2HEX(H.skin_tone)
|
||||
else
|
||||
body_coloring = "#[H.dna.features["mcolor"]]"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
H.set_species(gib_mob_species)
|
||||
dna_to_add = temp_mob.get_blood_dna_list()
|
||||
if(H.dna.species.use_skintones)
|
||||
body_coloring = "#[skintone2hex(H.skin_tone)]"
|
||||
body_coloring = SKINTONE2HEX(H.skin_tone)
|
||||
else
|
||||
body_coloring = "#[H.dna.features["mcolor"]]"
|
||||
else
|
||||
|
||||
@@ -264,7 +264,6 @@
|
||||
LAZYSET(loot, M, our_chance)
|
||||
return ..()
|
||||
|
||||
|
||||
// Tech storage circuit board spawners
|
||||
// For these, make sure that lootcount equals the number of list items
|
||||
|
||||
@@ -526,6 +525,105 @@
|
||||
/obj/item/clothing/shoes/sneakers/noslip = 10
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/low_tools
|
||||
name = "random basic tool(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/screwdriver = 1,
|
||||
/obj/item/wrench = 1,
|
||||
/obj/item/weldingtool/mini = 1,
|
||||
/obj/item/crowbar = 1,
|
||||
/obj/item/wirecutters = 1,
|
||||
/obj/item/analyzer = 1,
|
||||
/obj/item/t_scanner = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/high_tools
|
||||
name = "random adv tool(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/screwdriver/power = 1,
|
||||
/obj/item/weldingtool/experimental = 1,
|
||||
/obj/item/crowbar/power = 1,
|
||||
/obj/item/analyzer = 1,
|
||||
/obj/item/multitool = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/welder_tools
|
||||
name = "random safe welder tool(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/weldingtool = 1,
|
||||
/obj/item/weldingtool/mini = 1,
|
||||
/obj/item/weldingtool/hugetank = 1,
|
||||
/obj/item/weldingtool/largetank = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/tool_box
|
||||
name = "random safe tool box(es) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/storage/toolbox/mechanical = 1,
|
||||
/obj/item/storage/toolbox/mechanical/old = 1,
|
||||
/obj/item/storage/toolbox/emergency = 1,
|
||||
/obj/item/storage/toolbox/emergency/old = 1,
|
||||
/obj/item/storage/toolbox/electrical = 1,
|
||||
/obj/item/storage/toolbox/syndicate = 1,
|
||||
/obj/item/storage/toolbox/artistic = 1,
|
||||
/obj/item/storage/toolbox/gold_fake = 1,
|
||||
/obj/item/storage/toolbox/rubber = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/healing_kits
|
||||
name = "random safe medical kit(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/storage/firstaid/regular = 1,
|
||||
/obj/item/storage/firstaid/ancient = 1,
|
||||
/obj/item/storage/firstaid/fire = 1,
|
||||
/obj/item/storage/firstaid/toxin = 1,
|
||||
/obj/item/storage/firstaid/radbgone = 1,
|
||||
/obj/item/storage/firstaid/o2 = 1,
|
||||
/obj/item/storage/firstaid/brute = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/breathing_tanks
|
||||
name = "random internal tank(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/tank/internals/oxygen = 1,
|
||||
/obj/item/tank/internals/oxygen/yellow = 1,
|
||||
/obj/item/tank/internals/oxygen/red = 1,
|
||||
/obj/item/tank/internals/air = 1,
|
||||
/obj/item/tank/internals/plasmaman = 1,
|
||||
/obj/item/tank/internals/plasmaman/belt = 1,
|
||||
/obj/item/tank/internals/emergency_oxygen = 1,
|
||||
/obj/item/tank/internals/emergency_oxygen/engi = 1,
|
||||
/obj/item/tank/internals/emergency_oxygen/double = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/breathing_masks
|
||||
name = "random internal mask(s) spawner"
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/item/clothing/mask/gas = 2,
|
||||
/obj/item/clothing/mask/gas/glass = 4,
|
||||
/obj/item/clothing/mask/breath = 5,
|
||||
/obj/item/clothing/mask/breath/medical = 1
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/welder_tools/no_turf
|
||||
spawn_on_turf = FALSE
|
||||
|
||||
/obj/effect/spawner/lootdrop/low_tools/no_turf
|
||||
spawn_on_turf = FALSE
|
||||
|
||||
/obj/effect/spawner/lootdrop/breathing_tanks/no_turf
|
||||
spawn_on_turf = FALSE
|
||||
|
||||
/obj/effect/spawner/lootdrop/breathing_masks/no_turf
|
||||
spawn_on_turf = FALSE
|
||||
|
||||
/obj/effect/spawner/lootdrop/coin/no_turf
|
||||
spawn_on_turf = FALSE
|
||||
|
||||
|
||||
@@ -19,9 +19,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
///Icon file for mob worn overlays.
|
||||
///no var for state because it should *always* be the same as icon_state
|
||||
var/icon/mob_overlay_icon
|
||||
//Forced mob worn layer instead of the standard preferred ssize.
|
||||
//Forced mob worn layer instead of the standard preferred size.
|
||||
var/alternate_worn_layer
|
||||
|
||||
var/icon/anthro_mob_worn_overlay //Version of the above dedicated to muzzles/digitigrade
|
||||
var/icon/taur_mob_worn_overlay // Idem but for taurs. Currently only used by suits.
|
||||
|
||||
var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
|
||||
//Dimensions of the icon file used when this item is worn, eg: hats.dmi
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
/obj/machinery/vending/autodrobe = "AutoDrobe",
|
||||
/obj/machinery/vending/assist = "\improper Vendomat",
|
||||
/obj/machinery/vending/engivend = "\improper Engi-Vend",
|
||||
/obj/machinery/vending/engivend = "\improper YouTool",
|
||||
/obj/machinery/vending/tool = "\improper YouTool",
|
||||
/obj/machinery/vending/sustenance = "\improper Sustenance Vendor",
|
||||
/obj/machinery/vending/dinnerware = "\improper Plasteel Chef's Dinnerware Vendor",
|
||||
/obj/machinery/vending/cart = "\improper PTech",
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/storage/book/bible, HOLY_WEAPONS, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
|
||||
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/hooded/chaplain_hood
|
||||
name = "follower hood"
|
||||
|
||||
@@ -189,6 +189,7 @@
|
||||
slowdown = 2.0 //gotta pretend we're balanced.
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/plate/crusader/red
|
||||
icon_state = "crusader-red"
|
||||
|
||||
@@ -101,11 +101,11 @@
|
||||
icon_state = "random_wallet"
|
||||
|
||||
/obj/item/storage/wallet/random/PopulateContents()
|
||||
var/item1_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
|
||||
var/item1_type = /obj/effect/spawner/lootdrop/space_cash/no_turf
|
||||
var/item2_type
|
||||
if(prob(50))
|
||||
item2_type = pick( /obj/item/stack/spacecash/c10, /obj/item/stack/spacecash/c100, /obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c500)
|
||||
var/item3_type = pick( /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/gold, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron )
|
||||
item2_type = /obj/effect/spawner/lootdrop/space_cash/no_turf
|
||||
var/item3_type = /obj/effect/spawner/lootdrop/coin/no_turf
|
||||
|
||||
spawn(2)
|
||||
if(item1_type)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if (prob(40))
|
||||
new /obj/item/storage/toolbox/emergency(src)
|
||||
|
||||
switch (pickweight(list("small" = 40, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 5)))
|
||||
switch (pickweight(list("small" = 35, "aid" = 25, "tank" = 20, "both" = 10, "nothing" = 5, "rng" = 5)))
|
||||
if ("small")
|
||||
new /obj/item/tank/internals/emergency_oxygen(src)
|
||||
new /obj/item/tank/internals/emergency_oxygen(src)
|
||||
@@ -49,6 +49,12 @@
|
||||
if ("nothing")
|
||||
// doot
|
||||
|
||||
if ("rng")
|
||||
new /obj/effect/spawner/lootdrop/breathing_tanks/no_turf(src)
|
||||
new /obj/effect/spawner/lootdrop/breathing_tanks/no_turf(src)
|
||||
new /obj/effect/spawner/lootdrop/breathing_masks/no_turf(src)
|
||||
new /obj/effect/spawner/lootdrop/breathing_masks/no_turf(src)
|
||||
|
||||
return
|
||||
|
||||
/*
|
||||
@@ -100,13 +106,15 @@
|
||||
if(prob(70))
|
||||
new /obj/item/wrench(src)
|
||||
if(prob(70))
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/effect/spawner/lootdrop/welder_tools/no_turf(src)
|
||||
if(prob(70))
|
||||
new /obj/item/crowbar(src)
|
||||
if(prob(70))
|
||||
new /obj/item/wirecutters(src)
|
||||
if(prob(70))
|
||||
new /obj/item/t_scanner(src)
|
||||
if(prob(70))
|
||||
new /obj/effect/spawner/lootdrop/low_tools/no_turf(src) //Spare random basic tool
|
||||
if(prob(20))
|
||||
new /obj/item/storage/belt/utility(src)
|
||||
if(prob(30))
|
||||
|
||||
@@ -158,11 +158,24 @@
|
||||
H.set_species(newrace, icon_update=0)
|
||||
|
||||
if(H.dna.species.use_skintones)
|
||||
var/new_s_tone = input(user, "Choose your skin tone:", "Race change") as null|anything in GLOB.skin_tones
|
||||
|
||||
var/list/choices = GLOB.skin_tones
|
||||
if(CONFIG_GET(number/allow_custom_skintones))
|
||||
choices += "custom"
|
||||
var/new_s_tone = input(H, "Choose your skin tone:", "Race change") as null|anything in choices
|
||||
if(new_s_tone)
|
||||
H.skin_tone = new_s_tone
|
||||
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
||||
if(new_s_tone == "custom")
|
||||
var/default = H.dna.skin_tone_override || null
|
||||
var/custom_tone = input(user, "Choose your custom skin tone:", "Race change", default) as color|null
|
||||
if(custom_tone)
|
||||
var/temp_hsv = RGBtoHSV(new_s_tone)
|
||||
if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
to_chat(H,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
else
|
||||
H.skin_tone = custom_tone
|
||||
H.dna.skin_tone_override = custom_tone
|
||||
else
|
||||
H.skin_tone = new_s_tone
|
||||
H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK)
|
||||
|
||||
if(MUTCOLORS in H.dna.species.species_traits)
|
||||
var/new_mutantcolor = input(user, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
H.undie_color = random_short_color()
|
||||
H.undershirt = random_undershirt(H.gender)
|
||||
H.shirt_color = random_short_color()
|
||||
H.dna.skin_tone_override = null
|
||||
H.skin_tone = random_skin_tone()
|
||||
H.hair_style = random_hair_style(H.gender)
|
||||
H.facial_hair_style = random_facial_hair_style(H.gender)
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
/obj/item/gun/energy,
|
||||
/obj/item/restraints/handcuffs
|
||||
)
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
var/mode = VEST_STEALTH
|
||||
var/stealth_active = 0
|
||||
var/combat_cooldown = 10
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
|
||||
// Change Appearance, not randomizing clothes colour, itll just be janky
|
||||
H.gender = pick(MALE, FEMALE)
|
||||
H.dna.skin_tone_override = null
|
||||
H.skin_tone = random_skin_tone()
|
||||
H.hair_style = random_hair_style(H.gender)
|
||||
H.facial_hair_style = pick(random_facial_hair_style(H.gender),"Shaved")
|
||||
@@ -124,6 +125,8 @@
|
||||
// Revert Appearance
|
||||
H.gender = prev_gender
|
||||
H.skin_tone = prev_skin_tone
|
||||
if(!GLOB.skin_tones[H.skin_tone])
|
||||
H.dna.skin_tone_override = H.skin_tone
|
||||
H.hair_style = prev_hair_style
|
||||
H.facial_hair_style = prev_facial_hair_style
|
||||
H.hair_color = prev_hair_color
|
||||
|
||||
@@ -489,6 +489,7 @@
|
||||
clothing_flags = STOPSPRESSUREDAMAGE //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) //No armor at all.
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/space/changeling/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -205,6 +205,8 @@
|
||||
H.facial_hair_style = random_facial_hair_style(gender)
|
||||
if(skin_tone)
|
||||
H.skin_tone = skin_tone
|
||||
if(!GLOB.skin_tones[H.skin_tone])
|
||||
H.dna.skin_tone_override = H.skin_tone
|
||||
else
|
||||
H.skin_tone = random_skin_tone()
|
||||
H.update_hair()
|
||||
|
||||
@@ -89,11 +89,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/facial_hair_style = "Shaved" //Face hair type
|
||||
var/facial_hair_color = "000" //Facial hair color
|
||||
var/skin_tone = "caucasian1" //Skin color
|
||||
var/use_custom_skin_tone = FALSE
|
||||
var/eye_color = "000" //Eye color
|
||||
var/horn_color = "85615a" //Horn color
|
||||
var/wing_color = "fff" //Wing color
|
||||
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
||||
var/list/features = list("mcolor" = "FFF",
|
||||
"mcolor2" = "FFF",
|
||||
"mcolor3" = "FFF",
|
||||
"tail_lizard" = "Smooth",
|
||||
"tail_human" = "None",
|
||||
"snout" = "Round",
|
||||
@@ -108,8 +111,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"insect_wings" = "Plain",
|
||||
"insect_fluff" = "None",
|
||||
"insect_markings" = "None",
|
||||
"mcolor2" = "FFF",
|
||||
"mcolor3" = "FFF",
|
||||
"mam_body_markings" = "Plain",
|
||||
"mam_ears" = "None",
|
||||
"mam_snouts" = "None",
|
||||
@@ -361,7 +362,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "<h3>Skin Tone</h3>"
|
||||
|
||||
dat += "<a style='display:block;width:100px' href='?_src_=prefs;preference=s_tone;task=input'>[skin_tone]</a><BR>"
|
||||
dat += "<a style='display:block;width:100px' href='?_src_=prefs;preference=s_tone;task=input'>[use_custom_skin_tone ? "custom: <span style='border:1px solid #161616; background-color: [skin_tone];'> </span>" : skin_tone]</a><BR>"
|
||||
|
||||
var/mutant_colors
|
||||
if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits))
|
||||
@@ -763,7 +764,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(features["has_cock"])
|
||||
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
|
||||
dat += "<b>Penis Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'> </span>(Skin tone overriding)</a><br>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: [SKINTONE2HEX(skin_tone)];'> </span>(Skin tone overriding)</a><br>"
|
||||
else
|
||||
dat += "<b>Penis Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["cock_color"]];'> </span> <a href='?_src_=prefs;preference=cock_color;task=input'>Change</a><br>"
|
||||
@@ -781,7 +782,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(features["has_balls"])
|
||||
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
|
||||
dat += "<b>Testicles Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: [SKINTONE2HEX(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
else
|
||||
dat += "<b>Testicles Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["balls_color"]];'> </span> <a href='?_src_=prefs;preference=balls_color;task=input'>Change</a><br>"
|
||||
@@ -793,7 +794,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Vagina Type:</b> <a style='display:block;width:100px' href='?_src_=prefs;preference=vag_shape;task=input'>[features["vag_shape"]]</a>"
|
||||
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
|
||||
dat += "<b>Vagina Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: [SKINTONE2HEX(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
else
|
||||
dat += "<b>Vagina Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["vag_color"]];'> </span> <a href='?_src_=prefs;preference=vag_color;task=input'>Change</a><br>"
|
||||
@@ -806,7 +807,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(features["has_breasts"])
|
||||
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[skintone2hex(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: [SKINTONE2HEX(skin_tone)];'> </span>(Skin tone overriding)<br>"
|
||||
else
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["breasts_color"]];'> </span> <a href='?_src_=prefs;preference=breasts_color;task=input'>Change</a><br>"
|
||||
@@ -1438,6 +1439,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
eye_color = random_eye_color()
|
||||
if("s_tone")
|
||||
skin_tone = random_skin_tone()
|
||||
use_custom_skin_tone = null
|
||||
if("bag")
|
||||
backbag = pick(GLOB.backbaglist)
|
||||
if("suit")
|
||||
@@ -1545,7 +1547,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
underwear = new_underwear
|
||||
|
||||
if("undie_color")
|
||||
var/n_undie_color = input(user, "Choose your underwear's color.", "Character Preference", undie_color) as color|null
|
||||
var/n_undie_color = input(user, "Choose your underwear's color.", "Character Preference", "#[undie_color]") as color|null
|
||||
if(n_undie_color)
|
||||
undie_color = sanitize_hexcolor(n_undie_color)
|
||||
|
||||
@@ -1555,7 +1557,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
undershirt = new_undershirt
|
||||
|
||||
if("shirt_color")
|
||||
var/n_shirt_color = input(user, "Choose your undershirt's color.", "Character Preference", shirt_color) as color|null
|
||||
var/n_shirt_color = input(user, "Choose your undershirt's color.", "Character Preference", "#[shirt_color]") as color|null
|
||||
if(n_shirt_color)
|
||||
shirt_color = sanitize_hexcolor(n_shirt_color)
|
||||
|
||||
@@ -1565,7 +1567,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
socks = new_socks
|
||||
|
||||
if("socks_color")
|
||||
var/n_socks_color = input(user, "Choose your socks' color.", "Character Preference", socks_color) as color|null
|
||||
var/n_socks_color = input(user, "Choose your socks' color.", "Character Preference", "#[socks_color]") as color|null
|
||||
if(n_socks_color)
|
||||
socks_color = sanitize_hexcolor(n_socks_color)
|
||||
|
||||
@@ -1834,9 +1836,24 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["insect_markings"] = new_insect_markings
|
||||
|
||||
if("s_tone")
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones
|
||||
var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones
|
||||
if(CONFIG_GET(number/allow_custom_skintones))
|
||||
choices += "custom"
|
||||
var/new_s_tone = input(user, "Choose your character's skin tone:", "Character Preference") as null|anything in choices
|
||||
if(new_s_tone)
|
||||
skin_tone = new_s_tone
|
||||
if(new_s_tone == "custom")
|
||||
var/default = use_custom_skin_tone ? skin_tone : null
|
||||
var/custom_tone = input(user, "Choose your custom skin tone:", "Character Preference", default) as color|null
|
||||
if(custom_tone)
|
||||
var/temp_hsv = RGBtoHSV(custom_tone)
|
||||
if(ReadHSV(temp_hsv)[3] < ReadHSV("#333333")[3]) // rgb(50,50,50)
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
else
|
||||
use_custom_skin_tone = TRUE
|
||||
skin_tone = custom_tone
|
||||
else
|
||||
use_custom_skin_tone = FALSE
|
||||
skin_tone = new_s_tone
|
||||
|
||||
if("taur")
|
||||
var/list/snowflake_taur_list = list()
|
||||
@@ -1939,7 +1956,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/temp_hsv = RGBtoHSV(new_cockcolor)
|
||||
if(new_cockcolor == "#000000")
|
||||
features["cock_color"] = pref_species.default_color
|
||||
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
features["cock_color"] = sanitize_hexcolor(new_cockcolor)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
@@ -1979,7 +1996,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/temp_hsv = RGBtoHSV(new_ballscolor)
|
||||
if(new_ballscolor == "#000000")
|
||||
features["balls_color"] = pref_species.default_color
|
||||
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
features["balls_color"] = sanitize_hexcolor(new_ballscolor)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
@@ -2006,7 +2023,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/temp_hsv = RGBtoHSV(new_breasts_color)
|
||||
if(new_breasts_color == "#000000")
|
||||
features["breasts_color"] = pref_species.default_color
|
||||
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
features["breasts_color"] = sanitize_hexcolor(new_breasts_color)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
@@ -2028,7 +2045,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/temp_hsv = RGBtoHSV(new_vagcolor)
|
||||
if(new_vagcolor == "#000000")
|
||||
features["vag_color"] = pref_species.default_color
|
||||
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
|
||||
features["vag_color"] = sanitize_hexcolor(new_vagcolor)
|
||||
else
|
||||
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
||||
@@ -2430,6 +2447,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.wing_color = wing_color
|
||||
|
||||
character.skin_tone = skin_tone
|
||||
character.dna.skin_tone_override = use_custom_skin_tone ? skin_tone : null
|
||||
character.hair_style = hair_style
|
||||
character.facial_hair_style = facial_hair_style
|
||||
character.underwear = underwear
|
||||
|
||||
@@ -400,6 +400,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["hair_color"] >> hair_color
|
||||
S["facial_hair_color"] >> facial_hair_color
|
||||
S["eye_color"] >> eye_color
|
||||
S["use_custom_skin_tone"] >> use_custom_skin_tone
|
||||
S["skin_tone"] >> skin_tone
|
||||
S["hair_style_name"] >> hair_style
|
||||
S["facial_style_name"] >> facial_hair_style
|
||||
@@ -548,7 +549,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
hair_color = sanitize_hexcolor(hair_color, 3, 0)
|
||||
facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
|
||||
eye_color = sanitize_hexcolor(eye_color, 3, 0)
|
||||
skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones)
|
||||
use_custom_skin_tone = sanitize_integer(use_custom_skin_tone, FALSE, TRUE, initial(use_custom_skin_tone))
|
||||
if(use_custom_skin_tone && CONFIG_GET(number/allow_custom_skintones))
|
||||
skin_tone = sanitize_hexcolor(skin_tone, 6, TRUE, "#FFFFFF")
|
||||
else
|
||||
skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones - GLOB.nonstandard_skin_tones, initial(skin_tone))
|
||||
horn_color = sanitize_hexcolor(horn_color, 3, FALSE)
|
||||
wing_color = sanitize_hexcolor(wing_color, 3, FALSE, "#FFFFFF")
|
||||
backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag))
|
||||
@@ -657,6 +662,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["hair_color"] , hair_color)
|
||||
WRITE_FILE(S["facial_hair_color"] , facial_hair_color)
|
||||
WRITE_FILE(S["eye_color"] , eye_color)
|
||||
WRITE_FILE(S["use_custom_skin_tone"] , use_custom_skin_tone)
|
||||
WRITE_FILE(S["skin_tone"] , skin_tone)
|
||||
WRITE_FILE(S["hair_style_name"] , hair_style)
|
||||
WRITE_FILE(S["facial_style_name"] , facial_hair_style)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
name = "armwraps of unyielding resolve"
|
||||
desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
enhancement = 1 //It is not magic that makes you punch harder, but force of will. Trust me.
|
||||
enhancement = 2 //It is not magic that makes you punch harder, but force of will. Trust me.
|
||||
secondary_trait = TRAIT_ANTIMAGIC
|
||||
var/chaplain_spawnable = TRUE
|
||||
|
||||
@@ -115,14 +115,15 @@
|
||||
if(input)
|
||||
warcry = input
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/hug
|
||||
name = "Hugs of the North Star"
|
||||
desc = "The armbands of a humble friend. Makes you pretty keen to go let everyone know how much you appreciate them!"
|
||||
warcry = "owo" //Shouldn't ever come into play
|
||||
icon_state = "rapid"
|
||||
item_state = "rapid"
|
||||
enhancement = 0
|
||||
secondary_trait = TRAIT_PACIFISM //You are only here to hug and be friends!
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/Touch(mob/target, proximity = TRUE)
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/hug/Touch(mob/target, proximity = TRUE)
|
||||
if(!isliving(target))
|
||||
return
|
||||
|
||||
@@ -137,9 +138,6 @@
|
||||
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/rapid/hug/AltClick(mob/user)
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/gloves/botanic_leather
|
||||
name = "botanist's leather gloves"
|
||||
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm."
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
icon_state = "officerbluejacket"
|
||||
item_state = "officerbluejacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/vest
|
||||
name = "armor vest"
|
||||
@@ -29,6 +30,7 @@
|
||||
item_state = "armoralt"
|
||||
blood_overlay_type = "armor"
|
||||
dog_fashion = /datum/dog_fashion/back
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/alt
|
||||
desc = "A Type I armored vest that provides decent protection against most types of damage."
|
||||
@@ -58,6 +60,7 @@
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
heat_protection = CHEST|GROIN|LEGS|ARMS
|
||||
strip_delay = 80
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/hos/navyblue
|
||||
name = "head of security's jacket"
|
||||
@@ -88,6 +91,7 @@
|
||||
strip_delay = 70
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = null
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/warden/alt
|
||||
name = "warden's armored jacket"
|
||||
@@ -100,6 +104,7 @@
|
||||
icon_state = "wardenbluejacket"
|
||||
item_state = "wardenbluejacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/leather
|
||||
name = "security overcoat"
|
||||
@@ -125,6 +130,7 @@
|
||||
name = "syndicate captain's vest"
|
||||
desc = "A sinister looking vest of advanced armor worn over a black and red fireproof jacket. The gold collar and shoulders denote that this belongs to a high ranking syndicate officer."
|
||||
icon_state = "syndievest"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/capcarapace/alt
|
||||
name = "captain's parade jacket"
|
||||
@@ -163,6 +169,7 @@
|
||||
armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
strip_delay = 70
|
||||
equip_delay_other = 50
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/laserproof
|
||||
name = "reflector vest"
|
||||
@@ -172,6 +179,7 @@
|
||||
blood_overlay_type = "armor"
|
||||
armor = list("melee" = 10, "bullet" = 10, "laser" = 60, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
var/hit_reflect_chance = 40
|
||||
var/list/protected_zones = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN)
|
||||
|
||||
@@ -296,6 +304,7 @@
|
||||
icon_state = "rus_armor"
|
||||
item_state = "rus_armor"
|
||||
armor = list("melee" = 25, "bullet" = 30, "laser" = 0, "energy" = 15, "bomb" = 10, "bio" = 0, "rad" = 20, "fire" = 20, "acid" = 50)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/russian_coat
|
||||
name = "russian battle coat"
|
||||
desc = "Used in extremly cold fronts, made out of real bears."
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
body_parts_covered = CHEST|GROIN
|
||||
allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants)
|
||||
|
||||
|
||||
//Captain
|
||||
/obj/item/clothing/suit/captunic
|
||||
name = "captain's parade tunic"
|
||||
@@ -35,6 +36,7 @@
|
||||
item_state = "nun"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/chaplain/studentuni
|
||||
name = "student robe"
|
||||
@@ -49,6 +51,7 @@
|
||||
icon_state = "witchhunter"
|
||||
item_state = "witchhunter"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/chaplain/pharaoh
|
||||
name = "pharaoh tunic"
|
||||
@@ -56,6 +59,7 @@
|
||||
icon_state = "pharaoh"
|
||||
icon_state = "pharaoh"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/chaplain/holidaypriest
|
||||
name = "holiday priest"
|
||||
@@ -64,6 +68,7 @@
|
||||
item_state = "w_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
|
||||
//Chef
|
||||
@@ -77,6 +82,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
allowed = list(/obj/item/kitchen)
|
||||
togglename = "sleeves"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
//Cook
|
||||
/obj/item/clothing/suit/apron/chef
|
||||
@@ -99,6 +105,7 @@
|
||||
armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
heat_protection = CHEST|GROIN|LEGS|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/det_suit/Initialize()
|
||||
. = ..()
|
||||
@@ -119,6 +126,7 @@
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/radio)
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
//Lawyer
|
||||
/obj/item/clothing/suit/toggle/lawyer
|
||||
@@ -129,6 +137,7 @@
|
||||
blood_overlay_type = "coat"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
togglename = "buttons"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/toggle/lawyer/purple
|
||||
name = "purple suit jacket"
|
||||
@@ -154,6 +163,7 @@
|
||||
icon_state = "suspenders"
|
||||
blood_overlay_type = "armor" //it's the less thing that I can put here
|
||||
body_parts_covered = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
//Surgeon
|
||||
/obj/item/clothing/suit/apron/surgical
|
||||
@@ -174,6 +184,7 @@
|
||||
armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
|
||||
cold_protection = CHEST|ARMS
|
||||
heat_protection = CHEST|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
|
||||
//Robotocist
|
||||
@@ -185,7 +196,7 @@
|
||||
item_state = "techpriest"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
hoodtype = /obj/item/clothing/head/hooded/techpriest
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/hooded/techpriest
|
||||
name = "techpriest's hood"
|
||||
@@ -204,9 +215,11 @@
|
||||
desc = "A dark blue vest with reflective strips for emergency medical technicians."
|
||||
icon_state = "paramedic-vest"
|
||||
item_state = "paramedic-vest"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/emt
|
||||
name = "emt vest"
|
||||
desc = "A dark blue vest with reflective strips for emergency medical technicians."
|
||||
icon_state = "labcoat_emt"
|
||||
item_state = "labcoat_emt"
|
||||
item_state = "labcoat_emt"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
@@ -17,6 +17,7 @@
|
||||
body_parts_covered = CHEST
|
||||
allowed = list (/obj/item/gun/energy/laser/bluetag)
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/redtag
|
||||
name = "red laser tag armor"
|
||||
@@ -27,6 +28,7 @@
|
||||
body_parts_covered = CHEST
|
||||
allowed = list (/obj/item/gun/energy/laser/redtag)
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/*
|
||||
* Costume
|
||||
@@ -38,6 +40,7 @@
|
||||
item_state = "armor"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
hoodtype = /obj/item/clothing/head/hooded/flashsuit
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/hooded/flashsuit
|
||||
name = "flash button"
|
||||
@@ -58,6 +61,7 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "hgpirate"
|
||||
item_state = "hgpirate"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
|
||||
/obj/item/clothing/suit/cyborg_suit
|
||||
@@ -88,6 +92,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
allowed = list(/obj/item/storage/fancy/cigarettes, /obj/item/stack/spacecash)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
|
||||
/obj/item/clothing/suit/apron/overalls
|
||||
@@ -103,6 +108,7 @@
|
||||
icon_state = "purplebartenderapron"
|
||||
item_state = "purplebartenderapron"
|
||||
body_parts_covered = CHEST
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/syndicatefake
|
||||
name = "black and red space suit replica"
|
||||
@@ -121,7 +127,7 @@
|
||||
item_state = "hastur"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/imperium_monk
|
||||
name = "\improper Imperium monk suit"
|
||||
@@ -131,7 +137,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/chickensuit
|
||||
name = "chicken suit"
|
||||
@@ -205,6 +211,7 @@
|
||||
item_state = "snowman"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/poncho
|
||||
name = "poncho"
|
||||
@@ -212,6 +219,7 @@
|
||||
icon_state = "classicponcho"
|
||||
item_state = "classicponcho"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/poncho/green
|
||||
name = "green poncho"
|
||||
@@ -242,6 +250,7 @@
|
||||
item_state = "w_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET
|
||||
flags_inv = HIDEJUMPSUIT|HIDESHOES
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/hooded/carp_costume
|
||||
name = "carp costume"
|
||||
@@ -288,6 +297,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
clothing_flags = THICKMATERIAL
|
||||
hoodtype = /obj/item/clothing/head/hooded/bee_hood
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/hooded/bee_hood
|
||||
name = "bee hood"
|
||||
@@ -307,7 +317,7 @@
|
||||
allowed = list()
|
||||
actions_types = list(/datum/action/item_action/toggle_human_head)
|
||||
hoodtype = /obj/item/clothing/head/hooded/human_head
|
||||
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/head/hooded/human_head
|
||||
name = "bloated human head"
|
||||
@@ -323,6 +333,7 @@
|
||||
icon_state = "officertanjacket"
|
||||
item_state = "officertanjacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/ran
|
||||
name = "shikigami costume"
|
||||
@@ -332,6 +343,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAUR
|
||||
heat_protection = CHEST|GROIN|LEGS //fluffy tails!
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/ran
|
||||
name = "shikigami hat"
|
||||
@@ -361,6 +373,7 @@
|
||||
icon_state = "ianshirt"
|
||||
item_state = "ianshirt"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/nerdshirt
|
||||
name = "gamer shirt"
|
||||
@@ -368,6 +381,7 @@
|
||||
icon_state = "nerdshirt"
|
||||
item_state = "nerdshirt"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/vapeshirt //wearing this is asking to get beat.
|
||||
name = "Vape Naysh shirt"
|
||||
@@ -375,6 +389,7 @@
|
||||
icon_state = "vapeshirt"
|
||||
item_state = "vapeshirt"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/jacket
|
||||
name = "bomber jacket"
|
||||
@@ -385,6 +400,7 @@
|
||||
body_parts_covered = CHEST|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/jacket/leather
|
||||
name = "leather jacket"
|
||||
@@ -401,6 +417,7 @@
|
||||
icon_state = "leathercoat"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
cold_protection = CHEST|GROIN|ARMS|LEGS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
|
||||
/obj/item/clothing/suit/jacket/puffer
|
||||
name = "puffer jacket"
|
||||
@@ -492,6 +509,7 @@
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood
|
||||
name = "winter hood"
|
||||
@@ -897,6 +915,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD
|
||||
user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150)
|
||||
alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/suit/bronze
|
||||
name = "bronze suit"
|
||||
@@ -918,6 +937,7 @@
|
||||
flags_inv = HIDEGLOVES|HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD
|
||||
alternate_worn_layer = UNDER_HEAD_LAYER
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/flakjack
|
||||
name = "flak jacket"
|
||||
@@ -928,6 +948,7 @@
|
||||
body_parts_covered = CHEST
|
||||
resistance_flags = NONE
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/assu_suit
|
||||
name = "DAB suit"
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
var/hit_reaction_chance = 50
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user)
|
||||
active = !(active)
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
var/magic_flags = SPELL_WIZARD_ROBE
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/ComponentInitialize()
|
||||
@@ -115,6 +116,7 @@
|
||||
desc = "A set of armored robes that seem to radiate a dark power."
|
||||
icon_state = "magusblue"
|
||||
item_state = "magusblue"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
magic_flags = SPELL_WIZARD_ROBE|SPELL_CULT_ARMOR
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/magusred
|
||||
@@ -122,6 +124,7 @@
|
||||
desc = "A set of armored robes that seem to radiate a dark power."
|
||||
icon_state = "magusred"
|
||||
item_state = "magusred"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
magic_flags = SPELL_WIZARD_ROBE|SPELL_CULT_ARMOR
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/santa
|
||||
@@ -129,6 +132,7 @@
|
||||
desc = "Festive!"
|
||||
icon_state = "santa"
|
||||
item_state = "santa"
|
||||
mutantrace_variation = STYLE_DIGITIGRADE
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/fake
|
||||
desc = "A rather dull blue robe meant to mimick real wizard robes."
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/color/random
|
||||
icon_state = "random_jumpsuit"
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
can_adjust = FALSE
|
||||
strip_delay = 100
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/jabroni
|
||||
name = "Jabroni Outfit"
|
||||
@@ -34,6 +35,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/schoolgirl/red
|
||||
name = "red schoolgirl uniform"
|
||||
@@ -92,7 +94,7 @@
|
||||
desc = "It's not a skirt!"
|
||||
icon_state = "polykilt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/kilt/polychromic/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -107,6 +109,7 @@
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = FALSE
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/gladiator/ash_walker
|
||||
desc = "This gladiator uniform appears to be covered in ash and fairly dated."
|
||||
@@ -120,6 +123,7 @@
|
||||
body_parts_covered = CHEST|GROIN
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/maid/Initialize()
|
||||
. = ..()
|
||||
@@ -152,6 +156,7 @@
|
||||
icon_state = "geisha"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/villain
|
||||
name = "villain suit"
|
||||
@@ -200,6 +205,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/costume/drfreeze
|
||||
name = "doctor freeze's jumpsuit"
|
||||
@@ -207,6 +213,7 @@
|
||||
icon_state = "drfreeze"
|
||||
item_state = "drfreeze"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/costume/lobster
|
||||
name = "foam lobster suit"
|
||||
@@ -215,6 +222,7 @@
|
||||
item_state = "lobster"
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/costume/gondola
|
||||
name = "gondola hide suit"
|
||||
@@ -240,6 +248,7 @@
|
||||
icon_state = "christmasmaler"
|
||||
item_state = "christmasmaler"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/costume/christmas/green
|
||||
name = "green christmas suit"
|
||||
@@ -253,6 +262,7 @@
|
||||
icon_state = "christmasfemaler"
|
||||
item_state = "christmasfemaler"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/christmas/croptop/green
|
||||
name = "green feminine christmas suit"
|
||||
@@ -268,7 +278,7 @@
|
||||
item_state = "qipao"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/costume/qipao/white
|
||||
name = "White Qipao"
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/tech
|
||||
name = "cargo technician's jumpsuit"
|
||||
@@ -30,6 +31,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/miner
|
||||
desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty."
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
icon_state = "purplebartender"
|
||||
item_state = "purplebartender"
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/bartender/skirt
|
||||
name = "bartender's skirt"
|
||||
@@ -20,6 +21,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/chaplain
|
||||
desc = "It's a black jumpsuit, often worn by religious folk."
|
||||
@@ -36,6 +38,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/chef
|
||||
name = "cook's suit"
|
||||
@@ -50,6 +53,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/head_of_personnel
|
||||
desc = "It's a jumpsuit worn by someone who works in the position of \"Head of Personnel\"."
|
||||
@@ -66,6 +70,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/head_of_personnel/suit
|
||||
name = "head of personnel's suit"
|
||||
@@ -82,6 +87,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/hydroponics
|
||||
desc = "It's a jumpsuit designed to protect against minor plant-related hazards."
|
||||
@@ -98,6 +104,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/janitor
|
||||
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
|
||||
@@ -112,6 +119,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/janitor/maid
|
||||
name = "maid uniform"
|
||||
@@ -121,6 +129,7 @@
|
||||
body_parts_covered = CHEST|GROIN
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer
|
||||
desc = "Slick threads."
|
||||
@@ -145,6 +154,7 @@
|
||||
icon_state = "blacksuit_skirt"
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/really_black
|
||||
name = "executive suit"
|
||||
@@ -160,12 +170,14 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/black/skirt
|
||||
name = "lawyer black suitskirt"
|
||||
icon_state = "lawyer_black_skirt"
|
||||
item_state = "lawyer_black"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/female
|
||||
name = "female black suit"
|
||||
@@ -182,12 +194,14 @@
|
||||
icon_state = "black_suit_fem_skirt"
|
||||
item_state = "bl_suit"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/red/skirt
|
||||
name = "lawyer red suitskirt"
|
||||
icon_state = "lawyer_red_skirt"
|
||||
item_state = "lawyer_red"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/blue
|
||||
name = "lawyer blue suit"
|
||||
@@ -199,6 +213,7 @@
|
||||
icon_state = "lawyer_blue_skirt"
|
||||
item_state = "lawyer_blue"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/bluesuit
|
||||
name = "blue suit"
|
||||
@@ -216,6 +231,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/lawyer/purpsuit
|
||||
name = "purple suit"
|
||||
@@ -232,3 +248,4 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/mime/sexy
|
||||
name = "sexy mime outfit"
|
||||
@@ -37,7 +38,7 @@
|
||||
item_state = "blueclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/green
|
||||
name = "green clown suit"
|
||||
@@ -46,7 +47,7 @@
|
||||
item_state = "greenclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/yellow
|
||||
name = "yellow clown suit"
|
||||
@@ -55,7 +56,7 @@
|
||||
item_state = "yellowclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/purple
|
||||
name = "purple clown suit"
|
||||
@@ -64,7 +65,7 @@
|
||||
item_state = "purpleclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/orange
|
||||
name = "orange clown suit"
|
||||
@@ -73,7 +74,7 @@
|
||||
item_state = "orangeclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/rainbow
|
||||
name = "rainbow clown suit"
|
||||
@@ -82,7 +83,7 @@
|
||||
item_state = "rainbowclown"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/clown/jester
|
||||
name = "jester suit"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
icon_state = "red_suit_skirt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/curator/treasure_hunter
|
||||
name = "treasure hunter uniform"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/captain/suit
|
||||
name = "captain's suit"
|
||||
@@ -30,6 +31,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/captain/parade
|
||||
name = "captain's parade uniform"
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/engineering/atmospheric_technician
|
||||
desc = "It's a jumpsuit worn by atmospheric technicians."
|
||||
@@ -31,6 +32,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/engineering/engineer
|
||||
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
|
||||
@@ -55,3 +57,4 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -14,12 +14,11 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck
|
||||
desc = "It's a turtleneck worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection, for an officer with a superior sense of style and practicality."
|
||||
name = "chief medical officer's turtleneck"
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/turtlenecks.dmi'
|
||||
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
|
||||
icon_state = "cmoturtle"
|
||||
item_state = "w_suit"
|
||||
alt_covers_chest = TRUE
|
||||
@@ -41,6 +40,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/virologist
|
||||
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
|
||||
@@ -58,6 +58,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/chemist
|
||||
desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it."
|
||||
@@ -75,6 +76,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/paramedic
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a white cross on the chest denoting that the wearer is a trained paramedic."
|
||||
@@ -98,6 +100,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/paramedic/skirt/light
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic."
|
||||
@@ -113,6 +116,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = NO_FEMALE_UNIFORM
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/medical/doctor
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||
@@ -148,3 +152,4 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
item_state = "lb_suit"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/rnd/research_director/alt
|
||||
desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants."
|
||||
@@ -31,6 +32,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/rnd/research_director/turtleneck
|
||||
desc = "A dark purple turtleneck and tan khakis, for a director with a superior sense of style."
|
||||
@@ -49,6 +51,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/rnd/scientist
|
||||
desc = "It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist."
|
||||
@@ -66,6 +69,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/rnd/roboticist
|
||||
desc = "It's a slimming black with reinforced seams; great for industrial work."
|
||||
@@ -82,3 +86,4 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE //you know now that i think of it if you adjust the skirt and the sprite disappears isn't that just like flashing everyone
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/security/officer/formal
|
||||
name = "security officer's formal uniform"
|
||||
@@ -82,6 +83,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/security/warden/formal
|
||||
desc = "The insignia on this uniform tells you that this uniform belongs to the Warden."
|
||||
@@ -109,6 +111,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/security/detective/grey
|
||||
name = "noir suit"
|
||||
@@ -124,6 +127,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/*
|
||||
* Head of Security
|
||||
@@ -145,6 +149,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/security/head_of_security/grey
|
||||
name = "head of security's grey jumpsuit"
|
||||
@@ -166,6 +171,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/security/head_of_security/formal
|
||||
desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security."
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/misc/mailman
|
||||
name = "mailman's jumpsuit"
|
||||
@@ -186,6 +187,7 @@
|
||||
item_state = "duraskirt"
|
||||
can_adjust = FALSE
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/misc/squatter
|
||||
name = "slav squatter tracksuit"
|
||||
@@ -209,7 +211,7 @@
|
||||
icon_state = "keyholesweater"
|
||||
item_state = "keyholesweater"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/misc/stripper
|
||||
name = "pink stripper outfit"
|
||||
@@ -217,6 +219,7 @@
|
||||
item_state = "stripper_p"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/misc/stripper/green
|
||||
name = "green stripper outfit"
|
||||
@@ -278,7 +281,7 @@
|
||||
item_state = "rainbow"
|
||||
body_parts_covered = CHEST|ARMS //Because there's no bottom included
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/misc/poly_bottomless/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -291,7 +294,7 @@
|
||||
item_state = "rainbow"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
var/list/poly_states = 3
|
||||
var/list/poly_colors = list("#808080", "#FFFFFF", "#8CC6FF")
|
||||
|
||||
|
||||
@@ -48,5 +48,6 @@
|
||||
icon_state = "polypantsu"
|
||||
item_state = "rainbow"
|
||||
body_parts_covered = GROIN
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
poly_colors = list("#FFFFFF", "#8CC6FF")
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
/obj/item/clothing/under/dress/skirt
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/dress/skirt
|
||||
name = "black skirt"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = FALSE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/suit/sl
|
||||
desc = "It's a very amish looking suit."
|
||||
|
||||
@@ -5,9 +5,7 @@
|
||||
item_state = "w_suit"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
can_adjust = TRUE
|
||||
icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi'
|
||||
mob_overlay_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi'
|
||||
mutantrace_variation = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/sweater/black
|
||||
name = "black sweater"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
alt_covers_chest = TRUE
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/syndicate/bloodred
|
||||
name = "blood-red sneaksuit"
|
||||
@@ -48,6 +49,7 @@
|
||||
item_state = "bl_suit"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/syndicate/cosmetic
|
||||
name = "tactitool turtleneck"
|
||||
@@ -85,6 +87,7 @@
|
||||
desc = "With a suit lined with this many pockets, you are ready to operate."
|
||||
icon_state = "syndicate_combat"
|
||||
can_adjust = FALSE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
/obj/item/clothing/under/syndicate/rus_army
|
||||
name = "advanced military tracksuit"
|
||||
@@ -93,6 +96,7 @@
|
||||
can_adjust = FALSE
|
||||
armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = NONE
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/syndicate/baseball
|
||||
name = "major league, number unknown"
|
||||
@@ -102,4 +106,5 @@
|
||||
has_sensor = NO_SENSORS
|
||||
armor = list("melee" = 15, "bullet" = 5, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
alt_covers_chest = TRUE
|
||||
mutantrace_variation = NONE
|
||||
|
||||
|
||||
@@ -915,3 +915,80 @@
|
||||
results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
|
||||
mix_message = "When your powers combine, I am Captain Pl-..."
|
||||
|
||||
////////////////////////////////////////// Race Base Drinks //////////////////////////////////////
|
||||
|
||||
/datum/chemical_reaction/coldscales
|
||||
name = "Cold Scales"
|
||||
id = /datum/reagent/consumable/ethanol/coldscales
|
||||
results = list(/datum/reagent/consumable/ethanol/coldscales = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/toxin/slimejelly = 1, /datum/reagent/consumable/menthol = 1)
|
||||
|
||||
/datum/chemical_reaction/oil_drum
|
||||
name = "Oil Drum"
|
||||
id = /datum/reagent/consumable/ethanol/oil_drum
|
||||
results = list(/datum/reagent/consumable/ethanol/oil_drum = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oil = 1, /datum/reagent/consumable/ethanol/champagne = 12)
|
||||
|
||||
/datum/chemical_reaction/nord_king
|
||||
name = "Nord King"
|
||||
id = /datum/reagent/consumable/ethanol/nord_king
|
||||
results = list(/datum/reagent/consumable/ethanol/nord_king = 10)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol = 5, /datum/reagent/consumable/honey = 1, /datum/reagent/consumable/ethanol/red_mead = 10)
|
||||
|
||||
/datum/chemical_reaction/velvet_kiss
|
||||
name = "Velvet Kiss"
|
||||
id = /datum/reagent/consumable/ethanol/velvet_kiss
|
||||
results = list(/datum/reagent/consumable/ethanol/velvet_kiss = 15) //Limited races use this
|
||||
required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/consumable/tea = 1, /datum/reagent/consumable/ethanol/wine = 10)
|
||||
|
||||
/datum/chemical_reaction/abduction_fruit
|
||||
name = "Abduction Fruit"
|
||||
id = /datum/reagent/consumable/ethanol/abduction_fruit
|
||||
results = list(/datum/reagent/consumable/ethanol/abduction_fruit = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/limejuice = 10, /datum/reagent/consumable/strawberryjuice = 5, /datum/reagent/consumable/watermelonjuice = 10)
|
||||
|
||||
/datum/chemical_reaction/bug_zapper
|
||||
name = "Bug Zapper"
|
||||
id = /datum/reagent/consumable/ethanol/bug_zapper
|
||||
results = list(/datum/reagent/consumable/ethanol/bug_zapper = 20) //Harder to make
|
||||
required_reagents = list(/datum/reagent/consumable/lemonjuice = 10, /datum/reagent/teslium = 1, /datum/reagent/copper = 10)
|
||||
|
||||
/datum/chemical_reaction/mush_crush
|
||||
name = "Mush Crush"
|
||||
id = /datum/reagent/consumable/ethanol/mush_crush
|
||||
results = list(/datum/reagent/consumable/ethanol/mush_crush = 10)
|
||||
required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/ash = 5, /datum/reagent/toxin/coffeepowder = 10)
|
||||
|
||||
/datum/chemical_reaction/darkbrew
|
||||
name = "Darkbrew"
|
||||
id = /datum/reagent/consumable/ethanol/darkbrew
|
||||
results = list(/datum/reagent/consumable/ethanol/darkbrew = 20)//Limited races use this
|
||||
required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/toxin/bungotoxin = 5, /datum/reagent/toxin/coffeepowder = 10)
|
||||
|
||||
/datum/chemical_reaction/hollow_bone
|
||||
name = "Hollow Bone"
|
||||
id = /datum/reagent/consumable/ethanol/hollow_bone
|
||||
results = list(/datum/reagent/consumable/ethanol/hollow_bone = 10)
|
||||
required_reagents = list(/datum/reagent/toxin/bonehurtingjuice = 5, /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/coconutmilk = 10)
|
||||
|
||||
/datum/chemical_reaction/frisky_kitty
|
||||
name = "Frisky Kitty"
|
||||
id = /datum/reagent/consumable/ethanol/frisky_kitty
|
||||
results = list(/datum/reagent/consumable/ethanol/frisky_kitty = 2)
|
||||
required_reagents = list(/datum/reagent/consumable/catnip_tea = 1, /datum/reagent/consumable/milk = 1)
|
||||
required_temp = 296 //Just above room temp (22.85'C)
|
||||
|
||||
/datum/chemical_reaction/jell_wyrm
|
||||
name = "Jell Wyrm"
|
||||
id = /datum/reagent/consumable/ethanol/jell_wyrm
|
||||
results = list(/datum/reagent/consumable/ethanol/jell_wyrm = 2)
|
||||
required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/toxin/carpotoxin = 1, /datum/reagent/carbondioxide = 5)
|
||||
required_temp = 333 // (59.85'C)
|
||||
|
||||
/datum/chemical_reaction/laval_spit
|
||||
name = "Laval Spit"
|
||||
id = /datum/reagent/consumable/ethanol/laval_spit
|
||||
results = list(/datum/reagent/consumable/ethanol/laval_spit = 20) //Limited use
|
||||
required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/ethanol/mauna_loa = 10, /datum/reagent/sulfur = 5)
|
||||
required_temp = 900 // (626.85'C)
|
||||
|
||||
@@ -318,3 +318,4 @@
|
||||
bitesize_mod = 8
|
||||
tastes = list("wax" = 1)
|
||||
foodtype = SUGAR
|
||||
distill_reagent = /datum/reagent/consumable/ethanol/mead
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
desc = "Long stocks with flowering tips that has a chemical to make feline attracted to it."
|
||||
species = "catnip"
|
||||
plantname = "Catnip Plant"
|
||||
growthstages = 3
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip
|
||||
reagents_add = list(/datum/reagent/pax/catnip = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, /datum/reagent/toxin/teapowder = 0.3)
|
||||
rarity = 50
|
||||
|
||||
@@ -75,8 +75,7 @@
|
||||
new /obj/item/clothing/neck/petcollar(src)
|
||||
if(63 to 64)
|
||||
for(var/i in 1 to rand(4, 7))
|
||||
var/newcoin = pick(/obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/iron, /obj/item/coin/gold, /obj/item/coin/diamond, /obj/item/coin/plasma, /obj/item/coin/uranium)
|
||||
new newcoin(src)
|
||||
new /obj/effect/spawner/lootdrop/coin(src)
|
||||
if(65 to 66)
|
||||
new /obj/item/clothing/suit/ianshirt(src)
|
||||
new /obj/item/clothing/suit/hooded/ian_costume(src)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
shirt_color = random_short_color()
|
||||
socks = random_socks()
|
||||
socks_color = random_short_color()
|
||||
use_custom_skin_tone = FALSE
|
||||
skin_tone = random_skin_tone()
|
||||
hair_style = random_hair_style(gender)
|
||||
facial_hair_style = random_facial_hair_style(gender)
|
||||
|
||||
@@ -39,7 +39,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
var/horn_color //specific horn colors, because why not?
|
||||
var/wing_color
|
||||
|
||||
var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans)
|
||||
var/use_skintones = NO_SKINTONES // does it use skintones or not? (spoiler alert this is only used by humans)
|
||||
var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id.
|
||||
var/exotic_bloodtype = "" //If your race uses a non standard bloodtype (A+, O-, AB-, etc)
|
||||
var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing
|
||||
@@ -853,7 +853,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(!forced_colour)
|
||||
switch(S.color_src)
|
||||
if(SKINTONE)
|
||||
accessory_overlay.color = "#[skintone2hex(H.skin_tone)]"
|
||||
accessory_overlay.color = SKINTONE2HEX(H.skin_tone)
|
||||
if(MUTCOLORS)
|
||||
if(fixed_mut_color)
|
||||
accessory_overlay.color = "#[fixed_mut_color]"
|
||||
@@ -1456,12 +1456,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(target.check_martial_melee_block())
|
||||
target.visible_message("<span class='warning'>[target] blocks [user]'s attack!</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes punching cause staminaloss but funny martial artist types get a discount
|
||||
user.adjustStaminaLossBuffered(1.5)
|
||||
else
|
||||
user.adjustStaminaLossBuffered(3.5)
|
||||
|
||||
|
||||
if(attacker_style && attacker_style.harm_act(user,target))
|
||||
return TRUE
|
||||
else
|
||||
@@ -1499,10 +1499,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
var/miss_chance = 100//calculate the odds that a punch misses entirely. considers stamina and brute damage of the puncher. punches miss by default to prevent weird cases
|
||||
if(user.dna.species.punchdamagelow)
|
||||
if(HAS_TRAIT(user, TRAIT_PUGILIST)) //pugilists have a flat 10% miss chance
|
||||
miss_chance = 10
|
||||
if(atk_verb == ATTACK_EFFECT_KICK) //kicks never miss (provided your species deals more than 0 damage)
|
||||
miss_chance = 0
|
||||
else
|
||||
miss_chance = min(10 + ((puncherstam + puncherbrute)*0.5), 100) //probability of miss has a base of 10, and modified based on half your stamina and brute total. Capped at max 100 and min 0 to prevent weirdness in prob()
|
||||
miss_chance = min(10 + ((puncherstam + puncherbrute)*0.5), 100) //probability of miss has a base of 10, and modified based on half brute total. Capped at max 100 to prevent weirdness in prob()
|
||||
|
||||
if(!damage || !affecting || prob(miss_chance))//future-proofing for species that have 0 damage/weird cases where no zone is targeted
|
||||
playsound(target.loc, user.dna.species.miss_sound, 25, TRUE, -1)
|
||||
@@ -1526,7 +1528,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
if(user.limb_destroyer)
|
||||
target.dismembering_strike(user, affecting.body_zone)
|
||||
|
||||
|
||||
if(atk_verb == ATTACK_EFFECT_KICK)//kicks deal 1.5x raw damage + 0.5x stamina damage
|
||||
target.apply_damage(damage*1.5, BRUTE, affecting, armor_block)
|
||||
target.apply_damage(damage*0.5, STAMINA, affecting, armor_block)
|
||||
@@ -1538,21 +1540,21 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold)
|
||||
if((punchedstam > 50) && prob(punchedstam*0.5)) //If our punch victim has been hit above the threshold, and they have more than 50 stamina damage, roll for stun, probability of 1% per 2 stamina damage
|
||||
|
||||
|
||||
target.visible_message("<span class='danger'>[user] knocks [target] down!</span>", \
|
||||
"<span class='userdanger'>You're knocked down by [user]!</span>", "<span class='hear'>You hear aggressive shuffling followed by a loud thud!</span>", COMBAT_MESSAGE_RANGE, user)
|
||||
to_chat(user, "<span class='danger'>You knock [target] down!</span>")
|
||||
|
||||
|
||||
var/knockdown_duration = 40 + (punchedstam + (punchedbrute*0.5))*0.8 - armor_block
|
||||
target.DefaultCombatKnockdown(knockdown_duration)
|
||||
target.forcesay(GLOB.hit_appends)
|
||||
log_combat(user, target, "got a stun punch with their previous punch")
|
||||
|
||||
|
||||
if(HAS_TRAIT(user, TRAIT_KI_VAMPIRE) && !HAS_TRAIT(target, TRAIT_NOBREATH) && (punchedbrute < 100)) //If we're a ki vampire we also sap them of lifeforce, but only if they're not too beat up. Also living organics only.
|
||||
user.adjustBruteLoss(-5)
|
||||
user.adjustFireLoss(-5)
|
||||
user.adjustStaminaLoss(-20)
|
||||
|
||||
|
||||
target.adjustCloneLoss(10)
|
||||
target.adjustBruteLoss(10)
|
||||
|
||||
@@ -1613,13 +1615,18 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
"You hear a slap."
|
||||
)
|
||||
return FALSE
|
||||
else if(attacker_style && attacker_style.disarm_act(user,target))
|
||||
return 1
|
||||
|
||||
else
|
||||
user.do_attack_animation(target, ATTACK_EFFECT_DISARM)
|
||||
|
||||
user.adjustStaminaLossBuffered(3) //CITADEL CHANGE - makes disarmspam cause staminaloss
|
||||
|
||||
if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes disarmspam cause staminaloss, pugilists can do it almost effortlessly
|
||||
user.adjustStaminaLossBuffered(1)
|
||||
else
|
||||
user.adjustStaminaLossBuffered(3)
|
||||
|
||||
if(attacker_style && attacker_style.disarm_act(user,target))
|
||||
return TRUE
|
||||
|
||||
if(target.w_uniform)
|
||||
target.w_uniform.add_fingerprint(user)
|
||||
//var/randomized_zone = ran_zone(user.zone_selected) CIT CHANGE - comments out to prevent compiling errors
|
||||
@@ -1647,8 +1654,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(!(target.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE)) //CITADEL CHANGE
|
||||
randn += 25 //CITADEL CHANGE - Makes it harder to disarm outside of combat mode
|
||||
if(user.pulling == target)
|
||||
randn += -20 //If you have the time to get someone in a grab, you should have a greater chance at snatching the thing in their hand. Will be made completely obsolete by the grab rework but i've got a poor track record for releasing big projects on time so w/e i guess
|
||||
|
||||
randn -= 20 //If you have the time to get someone in a grab, you should have a greater chance at snatching the thing in their hand. Will be made completely obsolete by the grab rework but i've got a poor track record for releasing big projects on time so w/e i guess
|
||||
if(HAS_TRAIT(user, TRAIT_PUGILIST))
|
||||
randn -= 25 //if you are a pugilist, you're slapping that item from them pretty reliably
|
||||
if(HAS_TRAIT(target, TRAIT_PUGILIST))
|
||||
randn += 25 //meanwhile, pugilists are less likely to get disarmed
|
||||
|
||||
if(randn <= 35)//CIT CHANGE - changes this back to a 35% chance to accomodate for the above being commented out in favor of right-click pushing
|
||||
var/obj/item/I = null
|
||||
if(target.pulling)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
default_color = "FFFFFF"
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
|
||||
mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "wings" = "Angel")
|
||||
use_skintones = 1
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
no_equip = list(SLOT_BACK)
|
||||
blacklisted = 1
|
||||
limbs_id = "human"
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
punchstunthreshold = 25
|
||||
attack_verb = "smash"
|
||||
attack_sound = 'sound/weapons/resonator_blast.ogg'
|
||||
blacklisted = 1
|
||||
use_skintones = 0
|
||||
blacklisted = TRUE
|
||||
species_traits = list(NOBLOOD,EYECOLOR,NOGENITALS)
|
||||
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER)
|
||||
sexes = 0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
|
||||
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
|
||||
mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "deco_wings" = "None")
|
||||
use_skintones = TRUE
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
mutant_brain = /obj/item/organ/brain/dullahan
|
||||
mutanteyes = /obj/item/organ/eyes/dullahan
|
||||
mutanttongue = /obj/item/organ/tongue/dullahan
|
||||
|
||||
@@ -9,7 +9,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR)
|
||||
inherent_traits = list()
|
||||
limbs_id = "human"
|
||||
use_skintones = 1
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL
|
||||
damage_overlay_type = "human"
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR)
|
||||
mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
|
||||
use_skintones = 1
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
disliked_food = GROSS | RAW
|
||||
liked_food = JUNKFOOD | FRIED
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
heatmod = 1.5
|
||||
|
||||
mutanteyes = /obj/item/organ/eyes/night_vision/mushroom
|
||||
use_skintones = FALSE
|
||||
var/datum/martial_art/mushpunch/mush
|
||||
|
||||
/datum/species/mush/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
fake_species = null
|
||||
meat = initial(meat)
|
||||
limbs_id = "synth"
|
||||
use_skintones = 0
|
||||
use_skintones = FALSE
|
||||
sexes = 0
|
||||
fixed_mut_color = ""
|
||||
hair_color = ""
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID
|
||||
mutant_bodyparts = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "deco_wings" = "None")
|
||||
exotic_bloodtype = "U"
|
||||
use_skintones = TRUE
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
mutant_heart = /obj/item/organ/heart/vampire
|
||||
mutanttongue = /obj/item/organ/tongue/vampire
|
||||
blacklisted = TRUE
|
||||
@@ -23,7 +23,8 @@
|
||||
/datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species)
|
||||
. = ..()
|
||||
to_chat(C, "[info_text]")
|
||||
C.skin_tone = "albino"
|
||||
if(!C.dna.skin_tone_override)
|
||||
C.skin_tone = "albino"
|
||||
C.update_body(0)
|
||||
var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/B = new
|
||||
C.AddSpell(B)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
This system allows you to update individual mob-overlays, without regenerating them all each time.
|
||||
When we generate overlays we generate the standing version and then rotate the mob as necessary..
|
||||
|
||||
As of the time of writing there are 20 layers within this list. Please try to keep this from increasing. //22 and counting, good job guys
|
||||
As of the time of writing there are 20 layers within this list. Please try to keep this from increasing. //32 and counting, good job guys
|
||||
var/overlays_standing[20] //For the standing stance
|
||||
|
||||
Most of the time we only wish to update one overlay:
|
||||
@@ -125,8 +125,8 @@ There are several things that need to be remembered:
|
||||
var/alt_worn = U.mob_overlay_icon || 'icons/mob/clothing/uniform.dmi'
|
||||
var/variant_flag = NONE
|
||||
|
||||
if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE)
|
||||
alt_worn = 'icons/mob/clothing/uniform_digi.dmi'
|
||||
if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE && !(U.mutantrace_variation & STYLE_NO_ANTHRO_ICON))
|
||||
alt_worn = U.anthro_mob_worn_overlay || 'icons/mob/clothing/uniform_digi.dmi'
|
||||
variant_flag |= STYLE_DIGITIGRADE
|
||||
|
||||
var/mutable_appearance/uniform_overlay
|
||||
@@ -279,8 +279,8 @@ There are several things that need to be remembered:
|
||||
|
||||
var/alt_icon = S.mob_overlay_icon || 'icons/mob/clothing/feet.dmi'
|
||||
var/variation_flag = NONE
|
||||
if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE)
|
||||
alt_icon = 'icons/mob/clothing/feet_digi.dmi'
|
||||
if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON))
|
||||
alt_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/feet_digi.dmi'
|
||||
variation_flag |= STYLE_DIGITIGRADE
|
||||
|
||||
overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, S.icon_state, variation_flag, FALSE)
|
||||
@@ -340,8 +340,8 @@ There are several things that need to be remembered:
|
||||
muzzled = TRUE
|
||||
else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
|
||||
muzzled = TRUE
|
||||
if(muzzled && H.mutantrace_variation & STYLE_MUZZLE)
|
||||
alt_icon = 'icons/mob/clothing/head_muzzled.dmi'
|
||||
if(muzzled && H.mutantrace_variation & STYLE_MUZZLE && !(H.mutantrace_variation & STYLE_NO_ANTHRO_ICON))
|
||||
alt_icon = H.anthro_mob_worn_overlay || 'icons/mob/clothing/head_muzzled.dmi'
|
||||
variation_flag |= STYLE_MUZZLE
|
||||
|
||||
overlays_standing[HEAD_LAYER] = H.build_worn_icon(HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, H.icon_state, variation_flag, FALSE)
|
||||
@@ -392,6 +392,7 @@ There are several things that need to be remembered:
|
||||
update_observer_view(wear_suit,1)
|
||||
|
||||
var/worn_icon = wear_suit.mob_overlay_icon || 'icons/mob/clothing/suit.dmi'
|
||||
var/worn_state = wear_suit.icon_state
|
||||
var/center = FALSE
|
||||
var/dimension_x = 32
|
||||
var/dimension_y = 32
|
||||
@@ -401,6 +402,7 @@ There are several things that need to be remembered:
|
||||
T = GLOB.taur_list[dna.features["taur"]]
|
||||
|
||||
if(S.mutantrace_variation)
|
||||
|
||||
if(T?.taur_mode)
|
||||
var/init_worn_icon = worn_icon
|
||||
variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode
|
||||
@@ -412,14 +414,19 @@ There are several things that need to be remembered:
|
||||
if(STYLE_PAW_TAURIC)
|
||||
worn_icon = 'icons/mob/clothing/taur_canine.dmi'
|
||||
if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied.
|
||||
if(S.taur_mob_worn_overlay) //not going to make several new variables for all taur types. Nope.
|
||||
var/static/list/icon_to_state = list('icons/mob/clothing/taur_hooved.dmi' = "_hooved", 'icons/mob/clothing/taur_naga.dmi' = "_naga", 'icons/mob/clothing/taur_canine.dmi' = "_paws")
|
||||
worn_state += icon_to_state[worn_icon]
|
||||
worn_icon = S.taur_mob_worn_overlay
|
||||
center = T.center
|
||||
dimension_x = T.dimension_x
|
||||
dimension_y = T.dimension_y
|
||||
else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs.
|
||||
worn_icon = 'icons/mob/clothing/suit_digi.dmi'
|
||||
|
||||
else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE && !(S.mutantrace_variation & STYLE_NO_ANTHRO_ICON)) //not a taur, but digitigrade legs.
|
||||
worn_icon = S.anthro_mob_worn_overlay || 'icons/mob/clothing/suit_digi.dmi'
|
||||
variation_flag |= STYLE_DIGITIGRADE
|
||||
|
||||
overlays_standing[SUIT_LAYER] = S.build_worn_icon(SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, wear_suit.icon_state, variation_flag, FALSE)
|
||||
overlays_standing[SUIT_LAYER] = S.build_worn_icon(SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, worn_state, variation_flag, FALSE)
|
||||
var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER]
|
||||
if(OFFSET_SUIT in dna.species.offset_features)
|
||||
suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
|
||||
@@ -483,8 +490,8 @@ There are several things that need to be remembered:
|
||||
muzzled = TRUE
|
||||
else if(dna.species.mutant_bodyparts["snout"] && dna.features["snout"] != "None")
|
||||
muzzled = TRUE
|
||||
if(muzzled && M.mutantrace_variation & STYLE_MUZZLE)
|
||||
alt_icon = 'icons/mob/clothing/mask_muzzled.dmi'
|
||||
if(muzzled && M.mutantrace_variation & STYLE_MUZZLE && !(M.mutantrace_variation & STYLE_NO_ANTHRO_ICON))
|
||||
alt_icon = M.anthro_mob_worn_overlay || 'icons/mob/clothing/mask_muzzled.dmi'
|
||||
variation_flag |= STYLE_MUZZLE
|
||||
|
||||
var/mutable_appearance/mask_overlay = M.build_worn_icon(FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, wear_mask.icon_state, variation_flag, FALSE)
|
||||
|
||||
@@ -146,11 +146,9 @@
|
||||
has_snowflake_deadsprite = TRUE
|
||||
cyborg_pixel_offset = -16
|
||||
hat_offset = INFINITY
|
||||
var/obj/item/I = new /obj/item/analyzer/nose/flavour(src)
|
||||
basic_modules += I
|
||||
I = new /obj/item/soap/tongue/flavour(src)
|
||||
basic_modules += I
|
||||
I = new /obj/item/dogborg/sleeper/K9/flavour(src)
|
||||
basic_modules += new /obj/item/dogborg_nose(src)
|
||||
basic_modules += new /obj/item/dogborg_tongue(src)
|
||||
var/obj/item/dogborg/sleeper/K9/flavour/I = new(src)
|
||||
if(istype(src, /obj/item/robot_module/engineering))
|
||||
I.icon_state = "decompiler"
|
||||
if(istype(src, /obj/item/robot_module/security))
|
||||
|
||||
@@ -152,7 +152,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
to_chat(src, "<span class='warning'>Not a valid name, please try again.</span>")
|
||||
guardianrename()
|
||||
return
|
||||
visible_message("<span class='notice'>Your new name <span class='name'>[new_name]</span> anchors itself in your mind.</span>")
|
||||
to_chat(src, "<span class='notice'>Your new name <span class='name'>[new_name]</span> anchors itself in your mind.</span>")
|
||||
fully_replace_character_name(null, new_name)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies
|
||||
|
||||
@@ -312,10 +312,9 @@
|
||||
|
||||
/obj/machinery/light/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(on && status == LIGHT_OK)
|
||||
var/mutable_appearance/glowybit = mutable_appearance(overlayicon, base_state, EMISSIVE_LAYER, EMISSIVE_PLANE)
|
||||
glowybit.alpha = CLAMP(light_power*250, 30, 200)
|
||||
. += glowybit
|
||||
SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_LAYER, EMISSIVE_PLANE, dir, CLAMP(light_power*250, 30, 200))
|
||||
|
||||
|
||||
// update the icon_state and luminosity of the light depending on its state
|
||||
|
||||
@@ -2356,6 +2356,219 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
M.adjustStaminaLoss(-2)
|
||||
return ..()
|
||||
|
||||
////////////////////
|
||||
//Race-Base-Drinks//
|
||||
////////////////////
|
||||
|
||||
/datum/reagent/consumable/ethanol/coldscales
|
||||
name = "Coldscales"
|
||||
color = "#5AEB52" //(90, 235, 82)
|
||||
description = "A cold looking drink made for people with scales."
|
||||
boozepwr = 50 //strong!
|
||||
taste_description = "dead flies"
|
||||
glass_icon_state = "coldscales"
|
||||
glass_name = "glass of Coldscales"
|
||||
glass_desc = "A soft green drink that looks inviting!"
|
||||
|
||||
/datum/reagent/consumable/ethanol/coldscales/on_mob_life(mob/living/carbon/M)
|
||||
if(islizard(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/oil_drum
|
||||
name = "Oil Drum"
|
||||
color = "#000000" //(0, 0, 0)
|
||||
description = "Industeral grade oil mixed with some ethanol to make it a drink. Somehow not known to be toxic."
|
||||
boozepwr = 45
|
||||
taste_description = "oil spill"
|
||||
glass_icon_state = "oil_drum"
|
||||
glass_name = "Drum of oil"
|
||||
glass_desc = "A gray can of booze and oil..."
|
||||
|
||||
/datum/reagent/consumable/ethanol/oil_drum/on_mob_life(mob/living/carbon/M)
|
||||
if(isipcperson(M) || issynthliz(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/nord_king
|
||||
name = "Nord King"
|
||||
color = "#EB1010" //(235, 16, 16)
|
||||
description = "Strong mead mixed with more honey and ethanol. Known to beloved by most palettes."
|
||||
boozepwr = 50 //strong!
|
||||
taste_description = "honey and red wine"
|
||||
glass_icon_state = "nord_king"
|
||||
glass_name = "Keg of Nord King"
|
||||
glass_desc = "A dripping keg of red mead."
|
||||
|
||||
/datum/reagent/consumable/ethanol/nord_king/on_mob_life(mob/living/carbon/M)
|
||||
if(ishumanbasic(M) || isdwarf(M) || isangel(M)) //Humans and angel races are rare
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/velvet_kiss
|
||||
name = "Velvet Kiss"
|
||||
color = "#EB1010" //(235, 16, 16)
|
||||
description = "A bloody drink mixed with wine."
|
||||
boozepwr = 10 //weak
|
||||
taste_description = "iron with grapejuice"
|
||||
glass_icon_state = "velvet_kiss"
|
||||
glass_name = "glass of Velvet Kiss"
|
||||
glass_desc = "Red and white drink for the upper classes or undead."
|
||||
|
||||
/datum/reagent/consumable/ethanol/velvet_kiss/on_mob_life(mob/living/carbon/M)
|
||||
if(iszombie(M) || isvampire(M) || isdullahan(M)) //Rare races!
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/abduction_fruit
|
||||
name = "Abduction Fruit"
|
||||
color = "#DEFACD" //(222, 250, 205)
|
||||
description = "Mixing of juices to make an alien taste."
|
||||
boozepwr = 80 //Strong
|
||||
taste_description = "grass and lime"
|
||||
glass_icon_state = "abduction_fruit"
|
||||
glass_name = "glass of Abduction Fruit"
|
||||
glass_desc = "Mixed fruits that were never ment to be mixed..."
|
||||
|
||||
/datum/reagent/consumable/ethanol/abduction_fruit/on_mob_life(mob/living/carbon/M)
|
||||
if(isabductor(M) || isxenoperson(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/bug_zapper
|
||||
name = "Bug Zapper"
|
||||
color = "#F5882A" //(222, 250, 205)
|
||||
description = "Metals and lemon juice. Hardly even a drink."
|
||||
boozepwr = 5 //No booze really
|
||||
taste_description = "copper and AC power"
|
||||
glass_icon_state = "bug_zapper"
|
||||
glass_name = "glass of Bug Zapper"
|
||||
glass_desc = "An odd mix of copper, lemon juice and power meant for non-human consumption."
|
||||
|
||||
/datum/reagent/consumable/ethanol/bug_zapper/on_mob_life(mob/living/carbon/M)
|
||||
if(isinsect(M) || isflyperson(M) || ismoth(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/mush_crush
|
||||
name = "Mush Crush"
|
||||
color = "#F5882A" //(222, 250, 205)
|
||||
description = "Soil in a glass."
|
||||
boozepwr = 5 //No booze really
|
||||
taste_description = "dirt and iron"
|
||||
glass_icon_state = "mush_crush"
|
||||
glass_name = "glass of Mush Crush"
|
||||
glass_desc = "Popular among people that want to grow their own food rather then drink the soil."
|
||||
|
||||
/datum/reagent/consumable/ethanol/mush_crush/on_mob_life(mob/living/carbon/M)
|
||||
if(ispodperson(M) || ismush(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/darkbrew
|
||||
name = "Darkbrew"
|
||||
color = "#000000" //(0, 0, 0)
|
||||
description = "Contained dark matter mixed with coffee."
|
||||
boozepwr = 5 //No booze really
|
||||
taste_description = "Shadows and coffee trees"
|
||||
glass_icon_state = "darkbrew"
|
||||
glass_name = "glass of Darkbrew"
|
||||
glass_desc = "A pitch black drink that's commonly confused with a type of coffee."
|
||||
|
||||
/datum/reagent/consumable/ethanol/darkbrew/on_mob_life(mob/living/carbon/M)
|
||||
if(isshadow(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/hollow_bone
|
||||
name = "Hollow Bone"
|
||||
color = "#FCF7D4" //(252, 247, 212)
|
||||
description = "Shockingly none-harmful mix of toxins and milk."
|
||||
boozepwr = 15
|
||||
taste_description = "Milk and salt"
|
||||
glass_icon_state = "hollow_bone"
|
||||
glass_name = "skull of Hollow Bone"
|
||||
glass_desc = "Mixing of milk and bone hurting juice for enjoyment for rather skinny people."
|
||||
|
||||
/datum/reagent/consumable/ethanol/hollow_bone/on_mob_life(mob/living/carbon/M)
|
||||
if(isplasmaman(M) || isskeleton(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/frisky_kitty
|
||||
name = "Frisky Kitty"
|
||||
color = "#FCF7D4" //(252, 247, 212)
|
||||
description = "Warm milk mixed with a catnip."
|
||||
boozepwr = 0 //No one dont get drunk off milk!
|
||||
taste_description = "Warm milk and catnip"
|
||||
glass_icon_state = "frisky_kitty"
|
||||
glass_name = "cup of Drisky Kitty"
|
||||
glass_desc = "Warm milk and some catnip."
|
||||
|
||||
/datum/reagent/consumable/ethanol/frisky_kitty/on_mob_life(mob/living/carbon/M)
|
||||
if(ismammal(M) || iscatperson(M)) //well its not to bad for mammals
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/jell_wyrm
|
||||
name = "Jell Wyrm"
|
||||
color = "#FF6200" //(255, 98, 0)
|
||||
description = "Horrible mix of Co2, toxins and heat. Meant for slime based life."
|
||||
boozepwr = 40
|
||||
taste_description = "tropical sea"
|
||||
glass_icon_state = "jell_wyrm"
|
||||
glass_name = "glass of Jell Wyrm"
|
||||
glass_desc = "A bubbly drink that is rather inviting to those that don't know who it's meant for."
|
||||
|
||||
/datum/reagent/consumable/ethanol/jell_wyrm/on_mob_life(mob/living/carbon/M)
|
||||
if(isjellyperson(M) || isstartjelly(M) || isslimeperson(M) || isluminescent(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
M.adjustToxLoss(1, 0) //Low tox do to being carp + jell toxins.
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/laval_spit //Yes Laval
|
||||
name = "Laval Spit"
|
||||
color = "#DE3009" //(222, 48, 9)
|
||||
description = "Heat minerals and some mauna loa. Meant for rock based life."
|
||||
boozepwr = 30
|
||||
taste_description = "tropical island"
|
||||
glass_icon_state = "laval_spit"
|
||||
glass_name = "glass of Laval Spit"
|
||||
glass_desc = "Piping hot drink for those who can stomach the heat of lava."
|
||||
|
||||
/datum/reagent/consumable/ethanol/laval_spit/on_mob_life(mob/living/carbon/M)
|
||||
if(isgolem(M))
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
M.adjust_disgust(25)
|
||||
return ..()
|
||||
|
||||
///////////////
|
||||
//Barrle Wine//
|
||||
///////////////
|
||||
|
||||
/datum/reagent/consumable/ethanol/fruit_wine
|
||||
name = "Fruit Wine"
|
||||
description = "A wine made from grown plants."
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum////////////////////////////////
|
||||
//////DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum//////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/reagent/consumable/orangejuice
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_verygood)
|
||||
if (DRINK_FANTASTIC)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/quality_fantastic)
|
||||
if (RACE_DRINK)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_drink", /datum/mood_event/race_drink)
|
||||
if (FOOD_AMAZING)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "quality_food", /datum/mood_event/amazingtaste)
|
||||
return ..()
|
||||
|
||||
@@ -507,93 +507,83 @@
|
||||
/datum/reagent/spraytan/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
|
||||
if(ishuman(M))
|
||||
if(method == PATCH || method == VAPOR)
|
||||
var/mob/living/carbon/human/N = M
|
||||
if(N.dna.species.id == "human")
|
||||
switch(N.skin_tone)
|
||||
if("african1")
|
||||
N.skin_tone = "african2"
|
||||
if("indian")
|
||||
N.skin_tone = "african1"
|
||||
if("arab")
|
||||
N.skin_tone = "indian"
|
||||
if("asian2")
|
||||
N.skin_tone = "arab"
|
||||
if("asian1")
|
||||
N.skin_tone = "asian2"
|
||||
if("mediterranean")
|
||||
N.skin_tone = "african1"
|
||||
if("latino")
|
||||
N.skin_tone = "mediterranean"
|
||||
if("caucasian3")
|
||||
N.skin_tone = "mediterranean"
|
||||
if("caucasian2")
|
||||
N.skin_tone = pick("caucasian3", "latino")
|
||||
if("caucasian1")
|
||||
N.skin_tone = "caucasian2"
|
||||
if ("albino")
|
||||
N.skin_tone = "caucasian1"
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.dna.species.use_skintones)
|
||||
if(!H.dna.skin_tone_override)
|
||||
var/diff_len = length(GLOB.skin_tones - GLOB.nonstandard_skin_tones)
|
||||
H.skin_tone = GLOB.skin_tones[min(diff_len, GLOB.skin_tones.Find(H.skin_tone) + 1)]
|
||||
else
|
||||
H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, "#202020")
|
||||
if(MUTCOLORS in H.dna.species.species_traits) //take current alien color and darken it slightly
|
||||
H.dna.features["mcolor"] = tan_mutant_color(H.dna.features["mcolor"])
|
||||
H.update_body()
|
||||
|
||||
if(MUTCOLORS in N.dna.species.species_traits) //take current alien color and darken it slightly
|
||||
var/newcolor = ""
|
||||
var/string = N.dna.features["mcolor"]
|
||||
var/len = length(string)
|
||||
var/char = ""
|
||||
var/ascii = 0
|
||||
for(var/i=1, i<=len, i += length(char))
|
||||
char = string[i]
|
||||
ascii = text2ascii(char)
|
||||
switch(ascii)
|
||||
if(48)
|
||||
newcolor += "0"
|
||||
if(49 to 57)
|
||||
newcolor += ascii2text(ascii-1) //numbers 1 to 9
|
||||
if(97)
|
||||
newcolor += "9"
|
||||
if(98 to 102)
|
||||
newcolor += ascii2text(ascii-1) //letters b to f lowercase
|
||||
if(65)
|
||||
newcolor += "9"
|
||||
if(66 to 70)
|
||||
newcolor += ascii2text(ascii+31) //letters B to F - translates to lowercase
|
||||
else
|
||||
break
|
||||
if(ReadHSV(newcolor)[3] >= ReadHSV("#7F7F7F")[3])
|
||||
N.dna.features["mcolor"] = newcolor
|
||||
N.regenerate_icons()
|
||||
if(method == INGEST)
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='notice'>That tasted horrible.</span>")
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = "#7F7F7F")
|
||||
var/newcolor = ""
|
||||
var/len = length(color)
|
||||
var/char = ""
|
||||
var/ascii = 0
|
||||
for(var/i=1, i<=len, i += length(char))
|
||||
char = color[i]
|
||||
ascii = text2ascii(char)
|
||||
switch(ascii)
|
||||
if(35)
|
||||
newcolor += "#"
|
||||
if(48)
|
||||
newcolor += "0"
|
||||
if(49 to 57)
|
||||
newcolor += ascii2text(ascii-1) //numbers 1 to 9
|
||||
if(97)
|
||||
newcolor += "9"
|
||||
if(98 to 102)
|
||||
newcolor += ascii2text(ascii-1) //letters b to f lowercase
|
||||
if(65)
|
||||
newcolor += "9"
|
||||
if(66 to 70)
|
||||
newcolor += ascii2text(ascii+31) //letters B to F - translates to lowercase
|
||||
else
|
||||
break
|
||||
if(ReadHSV(newcolor)[3] >= ReadHSV(limit)[3])
|
||||
return newcolor
|
||||
return color
|
||||
|
||||
if(method == INGEST)
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='notice'>That tasted horrible.</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/spraytan/overdose_start(mob/living/M)
|
||||
. = ..()
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.hair_style = "Spiky"
|
||||
H.facial_hair_style = "Shaved"
|
||||
H.facial_hair_color = "000"
|
||||
H.hair_color = "000"
|
||||
if(!(HAIR in H.dna.species.species_traits)) //No hair? No problem!
|
||||
H.dna.species.species_traits += HAIR
|
||||
if(H.dna.species.use_skintones)
|
||||
if(H.dna.skin_tone_override)
|
||||
H.skin_tone = H.dna.skin_tone_override = "#FF8800"
|
||||
else
|
||||
H.skin_tone = "orange"
|
||||
else if(MUTCOLORS in H.dna.species.species_traits) //Aliens with custom colors simply get turned orange
|
||||
H.dna.features["mcolor"] = "f80"
|
||||
H.update_body()
|
||||
|
||||
/datum/reagent/spraytan/overdose_process(mob/living/M)
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/N = M
|
||||
N.hair_style = "Spiky"
|
||||
N.facial_hair_style = "Shaved"
|
||||
N.facial_hair_color = "000"
|
||||
N.hair_color = "000"
|
||||
if(!(HAIR in N.dna.species.species_traits)) //No hair? No problem!
|
||||
N.dna.species.species_traits += HAIR
|
||||
if(N.dna.species.use_skintones)
|
||||
N.skin_tone = "orange"
|
||||
else if(MUTCOLORS in N.dna.species.species_traits) //Aliens with custom colors simply get turned orange
|
||||
N.dna.features["mcolor"] = "f80"
|
||||
N.regenerate_icons()
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(prob(7))
|
||||
if(N.w_uniform)
|
||||
M.visible_message(pick("<b>[M]</b>'s collar pops up without warning.</span>", "<b>[M]</b> flexes [M.p_their()] arms."))
|
||||
if(H.w_uniform)
|
||||
H.visible_message(pick("<b>[H]</b>'s collar pops up without warning.</span>", "<b>[H]</b> flexes [H.p_their()] arms."))
|
||||
else
|
||||
M.visible_message("<b>[M]</b> flexes [M.p_their()] arms.")
|
||||
H.visible_message("<b>[H]</b> flexes [H.p_their()] arms.")
|
||||
if(prob(10))
|
||||
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = "spraytan")
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/datum/reagent/mutationtoxin
|
||||
name = "Stable Mutation Toxin"
|
||||
|
||||
@@ -200,8 +200,7 @@ Regenerative extracts:
|
||||
colour = "gold"
|
||||
|
||||
/obj/item/slimecross/regenerative/gold/core_effect(mob/living/target, mob/user)
|
||||
var/newcoin = pick(/obj/item/coin/silver, /obj/item/coin/iron, /obj/item/coin/gold, /obj/item/coin/diamond, /obj/item/coin/plasma, /obj/item/coin/uranium)
|
||||
var/obj/item/coin/C = new newcoin(target.loc)
|
||||
var/obj/item/coin/C = new /obj/effect/spawner/lootdrop/coin(target.loc)
|
||||
playsound(C, 'sound/items/coinflip.ogg', 50, 1)
|
||||
target.put_in_hand(C)
|
||||
|
||||
|
||||
@@ -350,7 +350,8 @@
|
||||
body_gender = H.dna.features["body_model"]
|
||||
should_draw_gender = S.sexes
|
||||
|
||||
if(MUTCOLORS in S.species_traits)
|
||||
var/mut_colors = (MUTCOLORS in S.species_traits)
|
||||
if(mut_colors)
|
||||
if(S.fixed_mut_color)
|
||||
species_color = S.fixed_mut_color
|
||||
else
|
||||
@@ -360,7 +361,7 @@
|
||||
species_color = ""
|
||||
|
||||
if(base_bp_icon != DEFAULT_BODYPART_ICON)
|
||||
color_src = MUTCOLORS //TODO - Add color matrix support to base limbs
|
||||
color_src = mut_colors ? MUTCOLORS : ((H.dna.skin_tone_override && S.use_skintones == USE_SKINTONES_GRAYSCALE_CUSTOM) ? CUSTOM_SKINTONE : SKINTONE)
|
||||
|
||||
if(S.mutant_bodyparts["legs"])
|
||||
if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG)
|
||||
@@ -544,13 +545,23 @@
|
||||
return
|
||||
|
||||
if(color_src) //TODO - add color matrix support for base species limbs
|
||||
var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone))
|
||||
var/draw_color = mutation_color || species_color
|
||||
var/grayscale = FALSE
|
||||
if(!draw_color)
|
||||
draw_color = SKINTONE2HEX(skin_tone)
|
||||
grayscale = color_src == CUSTOM_SKINTONE //Cause human limbs have a very pale pink hue by def.
|
||||
else
|
||||
draw_color = "#[draw_color]"
|
||||
if(draw_color)
|
||||
limb.color = "#[draw_color]"
|
||||
if(grayscale)
|
||||
limb.icon_state += "_g"
|
||||
limb.color = draw_color
|
||||
if(aux_icons)
|
||||
for(var/a in aux)
|
||||
var/image/I = a
|
||||
I.color = "#[draw_color]"
|
||||
if(grayscale)
|
||||
I.icon_state += "_g"
|
||||
I.color = draw_color
|
||||
if(!isnull(aux_marking))
|
||||
for(var/a in auxmarking)
|
||||
var/image/I = a
|
||||
|
||||
@@ -252,37 +252,6 @@
|
||||
L.change_bodypart_status(BODYPART_ROBOTIC)
|
||||
. = L
|
||||
|
||||
|
||||
/proc/skintone2hex(skin_tone)
|
||||
. = 0
|
||||
switch(skin_tone)
|
||||
if("caucasian1")
|
||||
. = "ffe0d1"
|
||||
if("caucasian2")
|
||||
. = "fcccb3"
|
||||
if("caucasian3")
|
||||
. = "e8b59b"
|
||||
if("latino")
|
||||
. = "d9ae96"
|
||||
if("mediterranean")
|
||||
. = "c79b8b"
|
||||
if("asian1")
|
||||
. = "ffdeb3"
|
||||
if("asian2")
|
||||
. = "e3ba84"
|
||||
if("arab")
|
||||
. = "c4915e"
|
||||
if("indian")
|
||||
. = "b87840"
|
||||
if("african1")
|
||||
. = "754523"
|
||||
if("african2")
|
||||
. = "471c18"
|
||||
if("albino")
|
||||
. = "fff4e6"
|
||||
if("orange")
|
||||
. = "ffc905"
|
||||
|
||||
/mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back)
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
|
||||
Reference in New Issue
Block a user