Merge remote-tracking branch 'citadel/master' into shield_refactor
This commit is contained in:
@@ -23,6 +23,10 @@
|
||||
var/rando_race = pick(GLOB.roundstart_races)
|
||||
pref_species = new rando_race()
|
||||
features = random_features(pref_species?.id)
|
||||
if(gender == MALE || gender != FEMALE)
|
||||
features["body_model"] = gender
|
||||
else if(gender == PLURAL)
|
||||
features["body_model"] = pick(MALE,FEMALE)
|
||||
age = rand(AGE_MIN,AGE_MAX)
|
||||
|
||||
/datum/preferences/proc/update_preview_icon(equip_job = TRUE)
|
||||
|
||||
@@ -1025,3 +1025,19 @@
|
||||
|
||||
/mob/living/carbon/can_hold_items()
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/set_gender(ngender = NEUTER, silent = FALSE, update_icon = TRUE, forced = FALSE)
|
||||
var/bender = gender != ngender
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if(dna && bender)
|
||||
if(ngender == MALE || ngender == FEMALE)
|
||||
dna.features["body_model"] = ngender
|
||||
if(!silent)
|
||||
var/adj = ngender == MALE ? "masculine" : "feminine"
|
||||
visible_message("<span class='boldnotice'>[src] suddenly looks more [adj]!</span>", "<span class='boldwarning'>You suddenly feel more [adj]!</span>")
|
||||
else if(ngender == NEUTER)
|
||||
dna.features["body_model"] = MALE
|
||||
if(update_icon)
|
||||
update_body()
|
||||
|
||||
@@ -621,13 +621,14 @@
|
||||
|
||||
//Used for new human mobs created by cloning/goleming/podding
|
||||
/mob/living/carbon/human/proc/set_cloned_appearance()
|
||||
if(gender == MALE)
|
||||
if(dna.features["body_model"] == MALE)
|
||||
facial_hair_style = "Full Beard"
|
||||
else
|
||||
facial_hair_style = "Shaved"
|
||||
hair_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
|
||||
underwear = "Nude"
|
||||
undershirt = "Nude"
|
||||
socks = "Nude"
|
||||
update_body()
|
||||
update_hair()
|
||||
update_genitals()
|
||||
@@ -707,7 +708,7 @@
|
||||
|
||||
/mob/living/carbon/human/wash_cream()
|
||||
if(creamed) //clean both to prevent a rare bug
|
||||
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_snout"))
|
||||
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_lizard"))
|
||||
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
|
||||
creamed = FALSE
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
var/oldpseudoheight = pseudo_z_axis
|
||||
. = ..()
|
||||
for(var/datum/mutation/human/HM in dna.mutations)
|
||||
HM.on_move(src, NewLoc)
|
||||
HM.on_move(NewLoc)
|
||||
if(. && (combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) && !(movement_type & FLYING) && CHECK_ALL_MOBILITY(src, MOBILITY_MOVE|MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby)
|
||||
if(!HAS_TRAIT(src, TRAIT_FREESPRINT))
|
||||
doSprintLossTiles(1)
|
||||
|
||||
@@ -585,7 +585,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(T)
|
||||
var/state = "[T.icon_state][((DIGITIGRADE in species_traits) && T.has_digitigrade) ? "_d" : ""]"
|
||||
var/mutable_appearance/MA
|
||||
if(H.dna.species.sexes && H.gender == FEMALE)
|
||||
if(H.dna.species.sexes && H.dna.features["body_model"] == FEMALE)
|
||||
MA = wear_female_version(state, T.icon, BODY_LAYER)
|
||||
else
|
||||
MA = mutable_appearance(T.icon, state, -BODY_LAYER)
|
||||
@@ -746,7 +746,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
if(!bodyparts_to_add)
|
||||
return
|
||||
|
||||
var/g = (H.gender == FEMALE) ? "f" : "m"
|
||||
var/g = (H.dna.features["body_model"] == FEMALE) ? "f" : "m"
|
||||
|
||||
for(var/layer in relevent_layers)
|
||||
var/layertext = mutant_bodyparts_layertext(layer)
|
||||
|
||||
@@ -603,10 +603,11 @@
|
||||
else if (select_alteration == "Penis Length")
|
||||
for(var/obj/item/organ/genital/penis/X in H.internal_organs)
|
||||
qdel(X)
|
||||
var/new_length
|
||||
new_length = input(owner, "Penis length in inches:\n([COCK_SIZE_MIN]-[COCK_SIZE_MAX])", "Genital Alteration") as num|null
|
||||
var/min_D = CONFIG_GET(number/penis_min_inches_prefs)
|
||||
var/max_D = CONFIG_GET(number/penis_max_inches_prefs)
|
||||
var/new_length = input(owner, "Penis length in inches:\n([min_D]-[max_D])", "Genital Alteration") as num|null
|
||||
if(new_length)
|
||||
H.dna.features["cock_length"] = max(min( round(text2num(new_length)), COCK_SIZE_MAX),COCK_SIZE_MIN)
|
||||
H.dna.features["cock_length"] = CLAMP(round(new_length), min_D, max_D)
|
||||
H.update_genitals()
|
||||
H.apply_overlay()
|
||||
H.give_genital(/obj/item/organ/genital/testicles)
|
||||
@@ -615,8 +616,7 @@
|
||||
else if (select_alteration == "Breast Size")
|
||||
for(var/obj/item/organ/genital/breasts/X in H.internal_organs)
|
||||
qdel(X)
|
||||
var/new_size
|
||||
new_size = input(owner, "Breast Size", "Genital Alteration") as null|anything in GLOB.breasts_size_list
|
||||
var/new_size = input(owner, "Breast Size", "Genital Alteration") as null|anything in CONFIG_GET(keyed_list/breasts_cups_prefs)
|
||||
if(new_size)
|
||||
H.dna.features["breasts_size"] = new_size
|
||||
H.update_genitals()
|
||||
|
||||
@@ -132,7 +132,7 @@ There are several things that need to be remembered:
|
||||
var/mutable_appearance/uniform_overlay
|
||||
|
||||
if(dna && dna.species.sexes)
|
||||
var/G = (gender == FEMALE) ? "f" : "m"
|
||||
var/G = (dna.features["body_model"] == FEMALE) ? "f" : "m"
|
||||
if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
|
||||
uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, U.fitted, variant_flag, FALSE)
|
||||
|
||||
@@ -648,12 +648,11 @@ generate/load female uniform sprites matching all previously decided variables
|
||||
else
|
||||
. += "-not_coloured"
|
||||
|
||||
. += "-[gender]"
|
||||
. += "-[dna.features["body_model"]]"
|
||||
|
||||
|
||||
var/is_taur = FALSE
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
|
||||
if(("taur" in dna.species.mutant_bodyparts) && (dna.features["taur"] != "None"))
|
||||
is_taur = TRUE
|
||||
|
||||
|
||||
|
||||
@@ -1192,3 +1192,9 @@
|
||||
|
||||
/mob/living/canface()
|
||||
return ..() && CHECK_MOBILITY(src, MOBILITY_MOVE)
|
||||
|
||||
/mob/living/proc/set_gender(ngender = NEUTER, silent = FALSE, update_icon = TRUE, forced = FALSE)
|
||||
if(forced || (!ckey || client?.prefs.cit_toggles & (ngender == FEMALE ? FORCED_FEM : FORCED_MASC)))
|
||||
gender = ngender
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
/datum/outfit/piratecorpse
|
||||
name = "Pirate Corpse"
|
||||
uniform = /obj/item/clothing/under/pirate
|
||||
uniform = /obj/item/clothing/under/costume/pirate
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
glasses = /obj/item/clothing/glasses/eyepatch
|
||||
head = /obj/item/clothing/head/bandana
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
/datum/outfit/russiancorpse
|
||||
name = "Russian Corpse"
|
||||
uniform = /obj/item/clothing/under/soviet
|
||||
uniform = /obj/item/clothing/under/costume/soviet
|
||||
shoes = /obj/item/clothing/shoes/jackboots
|
||||
head = /obj/item/clothing/head/bearpelt
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
/datum/outfit/russiancorpse/officer
|
||||
name = "Russian Officer Corpse"
|
||||
uniform = /obj/item/clothing/under/rank/security/navyblue/russian
|
||||
uniform = /obj/item/clothing/under/costume/russian_officer
|
||||
suit = /obj/item/clothing/suit/armor/navyblue/russian
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
ears = /obj/item/radio/headset
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
/datum/outfit/nanotrasensoldiercorpse2
|
||||
name = "NT Private Security Officer Corpse"
|
||||
uniform = /obj/item/clothing/under/rank/security
|
||||
uniform = /obj/item/clothing/under/rank/security/officer
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
shoes = /obj/item/clothing/shoes/combat
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
/datum/outfit/cat_butcher
|
||||
name = "Cat Butcher Uniform"
|
||||
uniform = /obj/item/clothing/under/rank/medical/green
|
||||
uniform = /obj/item/clothing/under/rank/medical/doctor/green
|
||||
suit = /obj/item/clothing/suit/apron/surgical
|
||||
shoes = /obj/item/clothing/shoes/sneakers/white
|
||||
gloves = /obj/item/clothing/gloves/color/latex/nitrile
|
||||
|
||||
@@ -14,8 +14,8 @@ The colossus' true danger lies in its ranged capabilities. It fires immensely da
|
||||
At 33% health, the colossus gains an additional attack:
|
||||
4. The colossus fires two spirals of death bolts, spinning in opposite directions.
|
||||
|
||||
When a colossus dies, it leaves behind a chunk of glowing crystal known as a black box. Anything placed inside will carry over into future rounds.
|
||||
For instance, you could place a bag of holding into the black box, and then kill another colossus next round and retrieve the bag of holding from inside.
|
||||
When a colossus dies, it leaves behind an anomalous crystal structure. This crystal can be activated in one of multiple ways and has an effect randomly chosen from a list.
|
||||
It also drops its vocal cords, which, when inserted into someone's mouth, allow them to activate some specific phrases that cause effects, such as sleeping to people nearby.
|
||||
|
||||
Difficulty: Very Hard
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
head = /obj/item/clothing/head/helmet/space/plasmaman
|
||||
belt = /obj/item/tank/internals/plasmaman/belt
|
||||
else
|
||||
uniform = /obj/item/clothing/under/rank/miner/lavaland
|
||||
uniform = /obj/item/clothing/under/rank/cargo/miner/lavaland
|
||||
if (prob(4))
|
||||
belt = pickweight(list(/obj/item/storage/belt/mining = 2, /obj/item/storage/belt/mining/alt = 2))
|
||||
else if(prob(10))
|
||||
@@ -306,7 +306,7 @@
|
||||
l_pocket = pickweight(list(/obj/item/stack/spacecash/c1000 = 7, /obj/item/reagent_containers/hypospray/medipen/survival = 2, /obj/item/borg/upgrade/modkit/cooldown = 1 ))
|
||||
if("Ashwalker")
|
||||
mob_species = /datum/species/lizard/ashwalker
|
||||
uniform = /obj/item/clothing/under/gladiator/ash_walker
|
||||
uniform = /obj/item/clothing/under/costume/gladiator/ash_walker
|
||||
if(prob(95))
|
||||
head = /obj/item/clothing/head/helmet/gladiator
|
||||
else
|
||||
@@ -346,7 +346,7 @@
|
||||
l_pocket = pick(list(/obj/item/crowbar/power, /obj/item/wrench/power, /obj/item/weldingtool/experimental))
|
||||
if("YeOlde")
|
||||
mob_gender = FEMALE
|
||||
uniform = /obj/item/clothing/under/maid
|
||||
uniform = /obj/item/clothing/under/costume/maid
|
||||
gloves = /obj/item/clothing/gloves/color/white
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
head = /obj/item/clothing/head/helmet/knight
|
||||
@@ -369,7 +369,7 @@
|
||||
back = /obj/item/tank/internals/oxygen
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
if("Cultist")
|
||||
uniform = /obj/item/clothing/under/roman
|
||||
uniform = /obj/item/clothing/under/costume/roman
|
||||
suit = /obj/item/clothing/suit/cultrobes
|
||||
head = /obj/item/clothing/head/culthood
|
||||
suit_store = /obj/item/tome
|
||||
@@ -378,7 +378,7 @@
|
||||
glasses = /obj/item/clothing/glasses/hud/health/night/cultblind
|
||||
backpack_contents = list(/obj/item/reagent_containers/glass/beaker/unholywater = 1, /obj/item/cult_shift = 1, /obj/item/flashlight/flare/culttorch = 1, /obj/item/stack/sheet/runed_metal = 15)
|
||||
if("Lavaknight")
|
||||
uniform = /obj/item/clothing/under/assistantformal
|
||||
uniform = /obj/item/clothing/under/misc/assistantformal
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
r_pocket = /obj/item/melee/transforming/energy/sword/cx/broken
|
||||
|
||||
Reference in New Issue
Block a user