mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 15:14:27 +01:00
Merge remote-tracking branch 'upstream/master' into sec-rifle
This commit is contained in:
@@ -4,7 +4,7 @@ world/IsBanned(key,address,computer_id)
|
||||
log_access("Failed Login (invalid data): [key] [address]-[computer_id]")
|
||||
return list("reason"="invalid login data", "desc"="Error: Could not check ban status, please try again. Error message: Your computer provided invalid or blank information to the server on connection (BYOND Username, IP, and Computer ID). Provided information for reference: Username: '[key]' IP: '[address]' Computer ID: '[computer_id]'. If you continue to get this error, please restart byond or contact byond support.")
|
||||
|
||||
if (computer_id == 2147483647) //this cid causes stickybans to go haywire
|
||||
if (text2num(computer_id) == 2147483647) //this cid causes stickybans to go haywire
|
||||
log_access("Failed Login (invalid cid): [key] [address]-[computer_id]")
|
||||
return list("reason"="invalid login data", "desc"="Error: Could not check ban status, Please try again. Error message: Your computer provided an invalid Computer ID.")
|
||||
var/admin = 0
|
||||
|
||||
@@ -187,21 +187,21 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
|
||||
//DEFINITIONS FOR ASSET DATUMS START HERE.
|
||||
/datum/asset/simple/paper
|
||||
assets = list(
|
||||
"large_stamp-clown.png" = 'icons/paper_icons/large_stamp-clown.png',
|
||||
"large_stamp-deny.png" = 'icons/paper_icons/large_stamp-deny.png',
|
||||
"large_stamp-ok.png" = 'icons/paper_icons/large_stamp-ok.png',
|
||||
"large_stamp-hop.png" = 'icons/paper_icons/large_stamp-hop.png',
|
||||
"large_stamp-cmo.png" = 'icons/paper_icons/large_stamp-cmo.png',
|
||||
"large_stamp-ce.png" = 'icons/paper_icons/large_stamp-ce.png',
|
||||
"large_stamp-hos.png" = 'icons/paper_icons/large_stamp-hos.png',
|
||||
"large_stamp-rd.png" = 'icons/paper_icons/large_stamp-rd.png',
|
||||
"large_stamp-cap.png" = 'icons/paper_icons/large_stamp-cap.png',
|
||||
"large_stamp-qm.png" = 'icons/paper_icons/large_stamp-qm.png',
|
||||
"large_stamp-law.png" = 'icons/paper_icons/large_stamp-law.png',
|
||||
"large_stamp-cent.png" = 'icons/paper_icons/large_stamp-cent.png',
|
||||
"large_stamp-clown.png" = 'icons/paper_icons/large_stamp-clown.png',
|
||||
"large_stamp-deny.png" = 'icons/paper_icons/large_stamp-deny.png',
|
||||
"large_stamp-ok.png" = 'icons/paper_icons/large_stamp-ok.png',
|
||||
"large_stamp-hop.png" = 'icons/paper_icons/large_stamp-hop.png',
|
||||
"large_stamp-cmo.png" = 'icons/paper_icons/large_stamp-cmo.png',
|
||||
"large_stamp-ce.png" = 'icons/paper_icons/large_stamp-ce.png',
|
||||
"large_stamp-hos.png" = 'icons/paper_icons/large_stamp-hos.png',
|
||||
"large_stamp-rd.png" = 'icons/paper_icons/large_stamp-rd.png',
|
||||
"large_stamp-cap.png" = 'icons/paper_icons/large_stamp-cap.png',
|
||||
"large_stamp-qm.png" = 'icons/paper_icons/large_stamp-qm.png',
|
||||
"large_stamp-law.png" = 'icons/paper_icons/large_stamp-law.png',
|
||||
"large_stamp-cent.png" = 'icons/paper_icons/large_stamp-cent.png',
|
||||
"large_stamp-syndicate.png" = 'icons/paper_icons/large_stamp-syndicate.png',
|
||||
"talisman.png" = 'icons/paper_icons/talisman.png',
|
||||
"ntlogo.png" = 'icons/paper_icons/ntlogo.png'
|
||||
"talisman.png" = 'icons/paper_icons/talisman.png',
|
||||
"ntlogo.png" = 'icons/paper_icons/ntlogo.png'
|
||||
)
|
||||
|
||||
/datum/asset/nanoui
|
||||
@@ -209,8 +209,7 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
|
||||
|
||||
var/list/common_dirs = list(
|
||||
"nano/assets/",
|
||||
"nano/css/",
|
||||
"nano/js/",
|
||||
"nano/codemirror/",
|
||||
"nano/images/",
|
||||
"nano/layouts/"
|
||||
)
|
||||
|
||||
@@ -97,6 +97,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
var/undershirt = "Nude" //undershirt type
|
||||
var/socks = "Nude" //socks type
|
||||
var/backbag = 2 //backpack type
|
||||
var/ha_style = "None" //Head accessory style
|
||||
var/r_headacc = 0 //Head accessory colour
|
||||
var/g_headacc = 0 //Head accessory colour
|
||||
var/b_headacc = 0 //Head accessory colour
|
||||
var/m_style = "None" //Marking style
|
||||
var/r_markings = 0 //Marking colour
|
||||
var/g_markings = 0 //Marking colour
|
||||
var/b_markings = 0 //Marking colour
|
||||
var/h_style = "Bald" //Hair type
|
||||
var/r_hair = 0 //Hair color
|
||||
var/g_hair = 0 //Hair color
|
||||
@@ -341,6 +349,18 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "[TextPreview(flavor_text)]...<br>"
|
||||
dat += "<br>"
|
||||
|
||||
if((species in list("Unathi", "Vulpkanin", "Tajaran"))) //Species that have head accessories.
|
||||
var/headaccessoryname = "Head Accessory"
|
||||
if(species == "Unathi")
|
||||
headaccessoryname = "Horns"
|
||||
dat += "<br><b>[headaccessoryname]</b><br>"
|
||||
dat += "<a href='?_src_=prefs;preference=headaccessory;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_headacc, 2)][num2hex(g_headacc, 2)][num2hex(b_headacc, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_headacc, 2)][num2hex(g_headacc, 2)][num2hex(b_headacc)]'><tr><td>__</td></tr></table></font> "
|
||||
dat += "Style: <a href='?_src_=prefs;preference=ha_style;task=input'>[ha_style]</a><br>"
|
||||
|
||||
dat += "<br><b>Body Markings</b><br>"
|
||||
dat += "<a href='?_src_=prefs;preference=markings;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_markings, 2)][num2hex(g_markings, 2)][num2hex(b_markings, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_markings, 2)][num2hex(g_markings, 2)][num2hex(b_markings)]'><tr><td>__</td></tr></table></font> "
|
||||
dat += "<br>Style: <a href='?_src_=prefs;preference=m_style;task=input'>[m_style]</a><br>"
|
||||
|
||||
var/hairname = "Hair"
|
||||
if(species == "Machine")
|
||||
hairname = "Frame Color"
|
||||
@@ -1112,6 +1132,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
|
||||
s_tone = 0
|
||||
|
||||
ha_style = "None" // No Vulp ears on Unathi
|
||||
m_style = "None" // No Unathi markings on Tajara
|
||||
|
||||
body_accessory = null //no vulpatail on humans damnit
|
||||
if("speciesprefs")//oldvox code
|
||||
speciesprefs = !speciesprefs
|
||||
@@ -1172,6 +1195,52 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if(new_h_style)
|
||||
h_style = new_h_style
|
||||
|
||||
if("headaccessory")
|
||||
if((species in list("Unathi", "Vulpkanin", "Tajaran"))) // Species with head accessories
|
||||
var/input = "Choose the colour of your your character's head accessory:"
|
||||
var/new_head_accessory = input(user, input, "Character Preference", rgb(r_headacc, g_headacc, b_headacc)) as color|null
|
||||
if(new_head_accessory)
|
||||
r_headacc = hex2num(copytext(new_head_accessory, 2, 4))
|
||||
g_headacc = hex2num(copytext(new_head_accessory, 4, 6))
|
||||
b_headacc = hex2num(copytext(new_head_accessory, 6, 8))
|
||||
|
||||
if("ha_style")
|
||||
if((species in list("Unathi", "Vulpkanin", "Tajaran"))) // Species with head accessories
|
||||
var/list/valid_head_accessory_styles = list()
|
||||
for(var/head_accessory_style in head_accessory_styles_list)
|
||||
var/datum/sprite_accessory/H = head_accessory_styles_list[head_accessory_style]
|
||||
if( !(species in H.species_allowed))
|
||||
continue
|
||||
|
||||
valid_head_accessory_styles[head_accessory_style] = head_accessory_styles_list[head_accessory_style]
|
||||
|
||||
var/new_head_accessory_style = input(user, "Choose the style of your character's head accessory:", "Character Preference") as null|anything in valid_head_accessory_styles
|
||||
if(new_head_accessory_style)
|
||||
ha_style = new_head_accessory_style
|
||||
|
||||
if("markings")
|
||||
if((species in list("Unathi", "Vulpkanin", "Tajaran"))) // Species with markings
|
||||
var/input = "Choose the colour of your your character's body markings:"
|
||||
var/new_markings = input(user, input, "Character Preference", rgb(r_markings, g_markings, b_markings)) as color|null
|
||||
if(new_markings)
|
||||
r_markings = hex2num(copytext(new_markings, 2, 4))
|
||||
g_markings = hex2num(copytext(new_markings, 4, 6))
|
||||
b_markings = hex2num(copytext(new_markings, 6, 8))
|
||||
|
||||
if("m_style")
|
||||
if((species in list("Unathi", "Vulpkanin", "Tajaran"))) // Species with markings
|
||||
var/list/valid_markings = list()
|
||||
for(var/markingstyle in marking_styles_list)
|
||||
var/datum/sprite_accessory/M = marking_styles_list[markingstyle]
|
||||
if( !(species in M.species_allowed))
|
||||
continue
|
||||
|
||||
valid_markings[markingstyle] = marking_styles_list[markingstyle]
|
||||
|
||||
var/new_marking_style = input(user, "Choose the style of your character's body markings:", "Character Preference") as null|anything in valid_markings
|
||||
if(new_marking_style)
|
||||
m_style = new_marking_style
|
||||
|
||||
if("body_accessory")
|
||||
var/list/possible_body_accessories = list()
|
||||
if(check_rights(R_ADMIN, 1, user))
|
||||
@@ -1597,6 +1666,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
character.undershirt = undershirt
|
||||
character.socks = socks
|
||||
|
||||
if(character.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
character.r_headacc = r_headacc
|
||||
character.g_headacc = g_headacc
|
||||
character.b_headacc = b_headacc
|
||||
character.ha_style = ha_style
|
||||
if(character.species.bodyflags & HAS_MARKINGS)
|
||||
character.r_markings = r_markings
|
||||
character.g_markings = g_markings
|
||||
character.b_markings = b_markings
|
||||
character.m_style = m_style
|
||||
|
||||
if(body_accessory)
|
||||
character.body_accessory = body_accessory_by_name["[body_accessory]"]
|
||||
|
||||
|
||||
@@ -108,6 +108,16 @@
|
||||
skin_red,
|
||||
skin_green,
|
||||
skin_blue,
|
||||
markings_red,
|
||||
markings_green,
|
||||
markings_blue,
|
||||
head_accessory_red,
|
||||
head_accessory_green,
|
||||
head_accessory_blue,
|
||||
hair_style_name,
|
||||
facial_style_name,
|
||||
marking_style_name,
|
||||
head_accessory_style_name,
|
||||
hair_style_name,
|
||||
facial_style_name,
|
||||
eyes_red,
|
||||
@@ -170,47 +180,55 @@
|
||||
r_skin = text2num(query.item[15])
|
||||
g_skin = text2num(query.item[16])
|
||||
b_skin = text2num(query.item[17])
|
||||
h_style = query.item[18]
|
||||
f_style = query.item[19]
|
||||
r_eyes = text2num(query.item[20])
|
||||
g_eyes = text2num(query.item[21])
|
||||
b_eyes = text2num(query.item[22])
|
||||
underwear = query.item[23]
|
||||
undershirt = query.item[24]
|
||||
backbag = text2num(query.item[25])
|
||||
b_type = query.item[26]
|
||||
r_markings = text2num(query.item[18])
|
||||
g_markings = text2num(query.item[19])
|
||||
b_markings = text2num(query.item[20])
|
||||
r_headacc = text2num(query.item[21])
|
||||
g_headacc = text2num(query.item[22])
|
||||
b_headacc = text2num(query.item[23])
|
||||
h_style = query.item[24]
|
||||
f_style = query.item[25]
|
||||
m_style = query.item[26]
|
||||
ha_style = query.item[27]
|
||||
r_eyes = text2num(query.item[28])
|
||||
g_eyes = text2num(query.item[29])
|
||||
b_eyes = text2num(query.item[30])
|
||||
underwear = query.item[31]
|
||||
undershirt = query.item[32]
|
||||
backbag = text2num(query.item[33])
|
||||
b_type = query.item[34]
|
||||
|
||||
|
||||
//Jobs
|
||||
alternate_option = text2num(query.item[27])
|
||||
job_support_high = text2num(query.item[28])
|
||||
job_support_med = text2num(query.item[29])
|
||||
job_support_low = text2num(query.item[30])
|
||||
job_medsci_high = text2num(query.item[31])
|
||||
job_medsci_med = text2num(query.item[32])
|
||||
job_medsci_low = text2num(query.item[33])
|
||||
job_engsec_high = text2num(query.item[34])
|
||||
job_engsec_med = text2num(query.item[35])
|
||||
job_engsec_low = text2num(query.item[36])
|
||||
job_karma_high = text2num(query.item[37])
|
||||
job_karma_med = text2num(query.item[38])
|
||||
job_karma_low = text2num(query.item[39])
|
||||
alternate_option = text2num(query.item[35])
|
||||
job_support_high = text2num(query.item[36])
|
||||
job_support_med = text2num(query.item[37])
|
||||
job_support_low = text2num(query.item[38])
|
||||
job_medsci_high = text2num(query.item[39])
|
||||
job_medsci_med = text2num(query.item[40])
|
||||
job_medsci_low = text2num(query.item[41])
|
||||
job_engsec_high = text2num(query.item[42])
|
||||
job_engsec_med = text2num(query.item[43])
|
||||
job_engsec_low = text2num(query.item[44])
|
||||
job_karma_high = text2num(query.item[45])
|
||||
job_karma_med = text2num(query.item[46])
|
||||
job_karma_low = text2num(query.item[47])
|
||||
|
||||
//Miscellaneous
|
||||
flavor_text = query.item[40]
|
||||
med_record = query.item[41]
|
||||
sec_record = query.item[42]
|
||||
gen_record = query.item[43]
|
||||
disabilities = text2num(query.item[44])
|
||||
player_alt_titles = params2list(query.item[45])
|
||||
organ_data = params2list(query.item[46])
|
||||
rlimb_data = params2list(query.item[47])
|
||||
nanotrasen_relation = query.item[48]
|
||||
speciesprefs = text2num(query.item[49])
|
||||
flavor_text = query.item[48]
|
||||
med_record = query.item[49]
|
||||
sec_record = query.item[50]
|
||||
gen_record = query.item[51]
|
||||
disabilities = text2num(query.item[52])
|
||||
player_alt_titles = params2list(query.item[53])
|
||||
organ_data = params2list(query.item[54])
|
||||
rlimb_data = params2list(query.item[55])
|
||||
nanotrasen_relation = query.item[56]
|
||||
speciesprefs = text2num(query.item[57])
|
||||
|
||||
//socks
|
||||
socks = query.item[50]
|
||||
body_accessory = query.item[51]
|
||||
socks = query.item[58]
|
||||
body_accessory = query.item[59]
|
||||
|
||||
//Sanitize
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
@@ -233,8 +251,16 @@
|
||||
r_skin = sanitize_integer(r_skin, 0, 255, initial(r_skin))
|
||||
g_skin = sanitize_integer(g_skin, 0, 255, initial(g_skin))
|
||||
b_skin = sanitize_integer(b_skin, 0, 255, initial(b_skin))
|
||||
r_markings = sanitize_integer(r_markings, 0, 255, initial(r_markings))
|
||||
g_markings = sanitize_integer(g_markings, 0, 255, initial(g_markings))
|
||||
b_markings = sanitize_integer(b_markings, 0, 255, initial(b_markings))
|
||||
r_headacc = sanitize_integer(r_headacc, 0, 255, initial(r_headacc))
|
||||
g_headacc = sanitize_integer(g_headacc, 0, 255, initial(g_headacc))
|
||||
b_headacc = sanitize_integer(b_headacc, 0, 255, initial(b_headacc))
|
||||
h_style = sanitize_inlist(h_style, hair_styles_list, initial(h_style))
|
||||
f_style = sanitize_inlist(f_style, facial_hair_styles_list, initial(f_style))
|
||||
m_style = sanitize_inlist(m_style, marking_styles_list, initial(m_style))
|
||||
ha_style = sanitize_inlist(ha_style, head_accessory_styles_list, initial(ha_style))
|
||||
r_eyes = sanitize_integer(r_eyes, 0, 255, initial(r_eyes))
|
||||
g_eyes = sanitize_integer(g_eyes, 0, 255, initial(g_eyes))
|
||||
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
|
||||
@@ -300,8 +326,16 @@
|
||||
skin_red='[r_skin]',
|
||||
skin_green='[g_skin]',
|
||||
skin_blue='[b_skin]',
|
||||
markings_red='[r_markings]',
|
||||
markings_green='[g_markings]',
|
||||
markings_blue='[b_markings]',
|
||||
head_accessory_red='[r_headacc]',
|
||||
head_accessory_green='[g_headacc]',
|
||||
head_accessory_blue='[b_headacc]',
|
||||
hair_style_name='[sql_sanitize_text(h_style)]',
|
||||
facial_style_name='[sql_sanitize_text(f_style)]',
|
||||
marking_style_name='[sql_sanitize_text(m_style)]',
|
||||
head_accessory_style_name='[sql_sanitize_text(ha_style)]',
|
||||
eyes_red='[r_eyes]',
|
||||
eyes_green='[g_eyes]',
|
||||
eyes_blue='[b_eyes]',
|
||||
@@ -351,7 +385,9 @@
|
||||
hair_red, hair_green, hair_blue,
|
||||
facial_red, facial_green, facial_blue,
|
||||
skin_tone, skin_red, skin_green, skin_blue,
|
||||
hair_style_name, facial_style_name,
|
||||
markings_red, markings_green, markings_blue,
|
||||
head_accessory_red, head_accessory_green, head_accessory_blue,
|
||||
hair_style_name, facial_style_name, marking_style_name, head_accessory_style_name,
|
||||
eyes_red, eyes_green, eyes_blue,
|
||||
underwear, undershirt,
|
||||
backbag, b_type, alternate_option,
|
||||
@@ -370,7 +406,9 @@
|
||||
'[r_hair]', '[g_hair]', '[b_hair]',
|
||||
'[r_facial]', '[g_facial]', '[b_facial]',
|
||||
'[s_tone]', '[r_skin]', '[g_skin]', '[b_skin]',
|
||||
'[sql_sanitize_text(h_style)]', '[sql_sanitize_text(f_style)]',
|
||||
'[r_markings]', '[g_markings]', '[b_markings]',
|
||||
'[r_headacc]', '[g_headacc]', '[b_headacc]',
|
||||
'[sql_sanitize_text(h_style)]', '[sql_sanitize_text(f_style)]', '[sql_sanitize_text(m_style)]', '[sql_sanitize_text(ha_style)]',
|
||||
'[r_eyes]', '[g_eyes]', '[b_eyes]',
|
||||
'[underwear]', '[undershirt]',
|
||||
'[backbag]', '[b_type]', '[alternate_option]',
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
fish_count = 0
|
||||
for(var/fish in fish_list)
|
||||
if(fish)
|
||||
fish_count ++
|
||||
fish_count++
|
||||
|
||||
//Check if the water level can support the current number of fish
|
||||
if((fish_count * 50) > water_level)
|
||||
@@ -196,7 +196,7 @@
|
||||
if(fish_count >=2 && egg_count < max_fish) //Need at least 2 fish to breed, but won't breed if there are as many eggs as max_fish
|
||||
if(food_level > 2 && filth_level <=5) //Breeding is going to use extra food, and the filth_level shouldn't be too high
|
||||
if(prob(((fish_count - 2) * 5)+10)) //Chances increase with each additional fish, 10% base + 5% per additional fish
|
||||
egg_count ++ //A new set of eggs were laid, increase egg_count
|
||||
egg_count++ //A new set of eggs were laid, increase egg_count
|
||||
egg_list.Add(select_egg_type()) //Add the new egg to the egg_list for storage
|
||||
food_level -= 2 //Remove extra food for the breeding process
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
//Check if we were passed a fish type
|
||||
if(type)
|
||||
fish_list.Add("[type]") //Add a fish of the specified type
|
||||
fish_count ++ //Increase fish_count to reflect the introduction of a fish, so the everything else works fine
|
||||
fish_count++ //Increase fish_count to reflect the introduction of a fish, so the everything else works fine
|
||||
//Announce the new fish
|
||||
src.visible_message("A new [type] has hatched in \the [src]!")
|
||||
//Null type fish are dud eggs, give a message to inform the player
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
// Mechanical concerns.
|
||||
var/health = 0 // Plant health.
|
||||
var/lastproduce = 0 // Last time tray was harvested
|
||||
var/current_cycle = 0 // Used for tracking number of cycles for aging
|
||||
var/lastcycle = 0 // Cycle timing/tracking var.
|
||||
var/cycledelay = 150 // Delay per cycle.
|
||||
var/closed_system // If set, the tray will attempt to take atmos from a pipe.
|
||||
@@ -350,6 +351,7 @@
|
||||
seed = null
|
||||
dead = 0
|
||||
age = 0
|
||||
lastproduce = 0
|
||||
sampled = 0
|
||||
mutation_mod = 0
|
||||
|
||||
@@ -369,6 +371,7 @@
|
||||
|
||||
sampled = 0
|
||||
age = 0
|
||||
lastproduce = 0
|
||||
yield_mod = 0
|
||||
mutation_mod = 0
|
||||
|
||||
@@ -389,6 +392,7 @@
|
||||
health = seed.get_trait(TRAIT_ENDURANCE)
|
||||
lastcycle = world.time
|
||||
harvest = 0
|
||||
lastproduce = 0
|
||||
weedlevel = 0
|
||||
pestlevel = 0
|
||||
sampled = 0
|
||||
@@ -544,6 +548,7 @@
|
||||
age = 0
|
||||
health = seed.get_trait(TRAIT_ENDURANCE)
|
||||
lastcycle = world.time
|
||||
lastproduce = 0
|
||||
harvest = 0
|
||||
weedlevel = 0
|
||||
|
||||
@@ -705,6 +710,7 @@
|
||||
seed = S.seed //Grab the seed datum.
|
||||
dead = 0
|
||||
age = 1
|
||||
lastproduce = 0
|
||||
//Snowflakey, maybe move this to the seed datum
|
||||
health = (istype(S, /obj/item/seeds/cutting) ? round(seed.get_trait(TRAIT_ENDURANCE)/rand(2,5)) : seed.get_trait(TRAIT_ENDURANCE))
|
||||
lastcycle = world.time
|
||||
|
||||
@@ -35,7 +35,10 @@
|
||||
return
|
||||
|
||||
// Advance plant age.
|
||||
if(prob(30)) age += 1 * HYDRO_SPEED_MULTIPLIER
|
||||
current_cycle++
|
||||
if(current_cycle == 3)
|
||||
age += 1 * HYDRO_SPEED_MULTIPLIER
|
||||
current_cycle = 0
|
||||
|
||||
//Highly mutable plants have a chance of mutating every tick.
|
||||
if(seed.get_trait(TRAIT_IMMUTABLE) == -1)
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
/mob/living/carbon/alien/humanoid/update_fire()
|
||||
overlays -= overlays_standing[X_FIRE_LAYER]
|
||||
if(on_fire)
|
||||
overlays_standing[X_FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing", "layer"= -X_FIRE_LAYER)
|
||||
overlays_standing[X_FIRE_LAYER] = image("icon"='icons/mob/OnFire.dmi', "icon_state"="Generic_mob_burning", "layer"= -X_FIRE_LAYER)
|
||||
overlays += overlays_standing[X_FIRE_LAYER]
|
||||
return
|
||||
else
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
f_style = facial_hair_style
|
||||
|
||||
update_hair()
|
||||
update_fhair()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/reset_hair()
|
||||
@@ -74,6 +74,7 @@
|
||||
f_style = "Shaved"
|
||||
|
||||
update_hair()
|
||||
update_fhair()
|
||||
|
||||
/mob/living/carbon/human/proc/change_eye_color(var/red, var/green, var/blue)
|
||||
if(red == r_eyes && green == g_eyes && blue == b_eyes)
|
||||
@@ -106,7 +107,7 @@
|
||||
g_facial = green
|
||||
b_facial = blue
|
||||
|
||||
update_hair()
|
||||
update_fhair()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/change_skin_color(var/red, var/green, var/blue)
|
||||
|
||||
@@ -91,6 +91,8 @@ var/global/list/body_accessory_by_species = list("None" = null)
|
||||
icon = 'icons/mob/body_accessory.dmi'
|
||||
animated_icon = 'icons/mob/body_accessory.dmi'
|
||||
blend_mode = ICON_ADD
|
||||
icon_state = "null"
|
||||
animated_icon_state = "null"
|
||||
|
||||
/datum/body_accessory/tail/try_restrictions(var/mob/living/carbon/human/H)
|
||||
if(!H.wear_suit || !(H.wear_suit.flags_inv & HIDETAIL) && !istype(H.wear_suit, /obj/item/clothing/suit/space))
|
||||
@@ -125,4 +127,4 @@ var/global/list/body_accessory_by_species = list("None" = null)
|
||||
|
||||
icon_state = "vulptail5"
|
||||
animated_icon_state = "vulptail5_a"
|
||||
allowed_species = list("Vulpkanin")
|
||||
allowed_species = list("Vulpkanin")
|
||||
|
||||
@@ -150,6 +150,7 @@
|
||||
f_style = "Shaved"
|
||||
if(h_style)
|
||||
h_style = "Bald"
|
||||
update_fhair(0)
|
||||
update_hair(0)
|
||||
|
||||
mutations.Add(SKELETON)
|
||||
@@ -166,6 +167,7 @@
|
||||
f_style = "Shaved" //we only change the icon_state of the hair datum, so it doesn't mess up their UI/UE
|
||||
if(h_style)
|
||||
h_style = "Bald"
|
||||
update_fhair(0)
|
||||
update_hair(0)
|
||||
|
||||
mutations.Add(HUSK)
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
/mob/living/carbon/human
|
||||
|
||||
hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,SPECIALROLE_HUD,NATIONS_HUD)
|
||||
|
||||
//Marking colour and style
|
||||
var/r_markings = 0
|
||||
var/g_markings = 0
|
||||
var/b_markings = 0
|
||||
var/m_style = "None"
|
||||
|
||||
//Hair colour and style
|
||||
var/r_hair = 0
|
||||
var/g_hair = 0
|
||||
var/b_hair = 0
|
||||
var/h_style = "Bald"
|
||||
|
||||
//Head accessory colour and style
|
||||
var/r_headacc = 0
|
||||
var/g_headacc = 0
|
||||
var/b_headacc = 0
|
||||
var/ha_style = "None"
|
||||
|
||||
//Facial hair colour and style
|
||||
var/r_facial = 0
|
||||
var/g_facial = 0
|
||||
|
||||
@@ -143,6 +143,7 @@
|
||||
head = null
|
||||
if(I.flags & BLOCKHAIR || I.flags & BLOCKHEADHAIR)
|
||||
update_hair() //rebuild hair
|
||||
update_fhair()
|
||||
update_inv_head()
|
||||
else if(I == r_ear)
|
||||
r_ear = null
|
||||
@@ -160,6 +161,7 @@
|
||||
wear_mask = null
|
||||
if(I.flags & BLOCKHAIR || I.flags & BLOCKHEADHAIR)
|
||||
update_hair() //rebuild hair
|
||||
update_fhair()
|
||||
if(internal)
|
||||
if(internals)
|
||||
internals.icon_state = "internal0"
|
||||
|
||||
@@ -150,8 +150,9 @@
|
||||
/mob/living/carbon/human/handle_message_mode(var/message_mode, var/message, var/verb, var/speaking, var/used_radios, var/alt_name)
|
||||
switch(message_mode)
|
||||
if("intercom")
|
||||
for(var/obj/item/device/radio/intercom/I in view(1, null))
|
||||
I.talk_into(src, message, verb, speaking)
|
||||
for(var/obj/item/device/radio/intercom/I in view(1, src))
|
||||
spawn(0)
|
||||
I.talk_into(src, message, null, verb, speaking)
|
||||
used_radios += I
|
||||
|
||||
if("headset")
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
return message
|
||||
|
||||
/datum/species/plasmaman/equip(var/mob/living/carbon/human/H)
|
||||
H.fire_sprite = "Plasmaman"
|
||||
|
||||
// Unequip existing suits and hats.
|
||||
H.unEquip(H.wear_suit)
|
||||
H.unEquip(H.head)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
flags = HAS_LIPS
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
|
||||
bodyflags = FEET_CLAWS | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
bodyflags = FEET_CLAWS | HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
dietflags = DIET_CARN
|
||||
|
||||
cold_level_1 = 280 //Default 260 - Lower is better
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
flags = HAS_LIPS | CAN_BE_FAT
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
|
||||
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
bodyflags = FEET_PADDED | HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
dietflags = DIET_OMNI
|
||||
reagent_tag = PROCESS_ORG
|
||||
flesh_color = "#AFA59E"
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
flags = HAS_LIPS
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
|
||||
bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
bodyflags = FEET_PADDED | HAS_TAIL | HAS_HEAD_ACCESSORY | HAS_MARKINGS | HAS_SKIN_COLOR | TAIL_WAGGING
|
||||
dietflags = DIET_OMNI
|
||||
reagent_tag = PROCESS_ORG
|
||||
flesh_color = "#966464"
|
||||
|
||||
@@ -106,30 +106,33 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#define MUTANTRACE_LAYER 1
|
||||
#define MUTATIONS_LAYER 2
|
||||
#define DAMAGE_LAYER 3
|
||||
#define UNIFORM_LAYER 4
|
||||
#define ID_LAYER 5
|
||||
#define SHOES_LAYER 6
|
||||
#define GLOVES_LAYER 7
|
||||
#define EARS_LAYER 8
|
||||
#define SUIT_LAYER 9
|
||||
#define GLASSES_LAYER 10
|
||||
#define BELT_LAYER 11 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define TAIL_LAYER 12 //bs12 specific. this hack is probably gonna come back to haunt me
|
||||
#define SUIT_STORE_LAYER 13
|
||||
#define BACK_LAYER 14
|
||||
#define HAIR_LAYER 15 //TODO: make part of head layer?
|
||||
#define FACEMASK_LAYER 16
|
||||
#define HEAD_LAYER 17
|
||||
#define COLLAR_LAYER 18
|
||||
#define HANDCUFF_LAYER 19
|
||||
#define LEGCUFF_LAYER 20
|
||||
#define L_HAND_LAYER 21
|
||||
#define R_HAND_LAYER 22
|
||||
#define TARGETED_LAYER 23 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define FIRE_LAYER 24 //If you're on fire
|
||||
#define TOTAL_LAYERS 24
|
||||
#define MARKINGS_LAYER 2
|
||||
#define MUTATIONS_LAYER 3
|
||||
#define DAMAGE_LAYER 4
|
||||
#define UNIFORM_LAYER 5
|
||||
#define ID_LAYER 6
|
||||
#define SHOES_LAYER 7
|
||||
#define GLOVES_LAYER 8
|
||||
#define EARS_LAYER 9
|
||||
#define SUIT_LAYER 10
|
||||
#define GLASSES_LAYER 11
|
||||
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define TAIL_LAYER 13 //bs12 specific. this hack is probably gonna come back to haunt me
|
||||
#define SUIT_STORE_LAYER 14
|
||||
#define BACK_LAYER 15
|
||||
#define HAIR_LAYER 16 //TODO: make part of head layer?
|
||||
#define HEAD_ACCESSORY_LAYER 17
|
||||
#define FHAIR_LAYER 18
|
||||
#define FACEMASK_LAYER 19
|
||||
#define HEAD_LAYER 20
|
||||
#define COLLAR_LAYER 21
|
||||
#define HANDCUFF_LAYER 22
|
||||
#define LEGCUFF_LAYER 23
|
||||
#define L_HAND_LAYER 24
|
||||
#define R_HAND_LAYER 25
|
||||
#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
|
||||
#define FIRE_LAYER 27 //If you're on fire
|
||||
#define TOTAL_LAYERS 27
|
||||
|
||||
|
||||
|
||||
@@ -350,6 +353,75 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
//tail
|
||||
update_tail_layer(0)
|
||||
//head accessory
|
||||
update_head_accessory(0)
|
||||
//markings
|
||||
update_markings(0)
|
||||
//hair
|
||||
update_hair(0)
|
||||
update_fhair(0)
|
||||
|
||||
|
||||
//MARKINGS OVERLAY
|
||||
/mob/living/carbon/human/proc/update_markings(var/update_icons=1)
|
||||
//Reset our markings
|
||||
overlays_standing[MARKINGS_LAYER] = null
|
||||
|
||||
var/obj/item/organ/external/chest/chest_organ = get_organ("chest")
|
||||
if(!chest_organ || chest_organ.is_stump() || (chest_organ.status & ORGAN_DESTROYED) )
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//base icons
|
||||
var/icon/markings_standing = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s")
|
||||
|
||||
if(m_style && (src.species.bodyflags & HAS_MARKINGS))
|
||||
var/datum/sprite_accessory/marking_style = marking_styles_list[m_style]
|
||||
if(marking_style && marking_style.species_allowed)
|
||||
if(src.species.name in marking_style.species_allowed)
|
||||
var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
|
||||
if(marking_style.do_colouration)
|
||||
markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
|
||||
markings_standing.Blend(markings_s, ICON_OVERLAY)
|
||||
else
|
||||
//warning("Invalid m_style for [species.name]: [m_style]")
|
||||
|
||||
overlays_standing[MARKINGS_LAYER] = image(markings_standing)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
//HEAD ACCESSORY OVERLAY
|
||||
/mob/living/carbon/human/proc/update_head_accessory(var/update_icons=1)
|
||||
//Reset our head accessory
|
||||
overlays_standing[HEAD_ACCESSORY_LAYER] = null
|
||||
|
||||
var/obj/item/organ/external/head/head_organ = get_organ("head")
|
||||
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED) )
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//masks and helmets can obscure our head accessory
|
||||
if( (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)))
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//base icons
|
||||
var/icon/head_accessory_standing = new /icon('icons/mob/body_accessory.dmi',"accessory_none_s")
|
||||
|
||||
if(ha_style && !(head && (head.flags & BLOCKHEADHAIR) && !(isSynthetic()) && (src.species.bodyflags & HAS_HEAD_ACCESSORY)))
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
if(src.species.name in head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
head_accessory_standing.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
else
|
||||
//warning("Invalid ha_style for [species.name]: [ha_style]")
|
||||
|
||||
overlays_standing[HEAD_ACCESSORY_LAYER] = image(head_accessory_standing)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
//HAIR OVERLAY
|
||||
@@ -367,6 +439,41 @@ var/global/list/damage_icon_parts = list()
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//base icons
|
||||
var/icon/hair_standing = new /icon('icons/mob/human_face.dmi',"bald_s")
|
||||
|
||||
if(h_style && !(head && (head.flags & BLOCKHEADHAIR) && !(isSynthetic())))
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
|
||||
if(hair_style && hair_style.species_allowed)
|
||||
if(src.species.name in hair_style.species_allowed)
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
|
||||
hair_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
else
|
||||
//warning("Invalid h_style for [species.name]: [h_style]")
|
||||
|
||||
overlays_standing[HAIR_LAYER] = image(hair_standing)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
//FACIAL HAIR OVERLAY
|
||||
/mob/living/carbon/human/proc/update_fhair(var/update_icons=1)
|
||||
//Reset our facial hair
|
||||
overlays_standing[FHAIR_LAYER] = null
|
||||
|
||||
var/obj/item/organ/external/head/head_organ = get_organ("head")
|
||||
if(!head_organ || head_organ.is_stump() || (head_organ.status & ORGAN_DESTROYED) )
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//masks and helmets can obscure our facial hair, unless we're a synthetic
|
||||
if( (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)))
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
//base icons
|
||||
var/icon/face_standing = new /icon('icons/mob/human_face.dmi',"bald_s")
|
||||
|
||||
@@ -381,19 +488,7 @@ var/global/list/damage_icon_parts = list()
|
||||
else
|
||||
//warning("Invalid f_style for [species.name]: [f_style]")
|
||||
|
||||
if(h_style && !(head && (head.flags & BLOCKHEADHAIR) && !(isSynthetic())))
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
|
||||
if(hair_style && hair_style.species_allowed)
|
||||
if(src.species.name in hair_style.species_allowed)
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(hair_style.do_colouration)
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
|
||||
face_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
else
|
||||
//warning("Invalid h_style for [species.name]: [h_style]")
|
||||
|
||||
overlays_standing[HAIR_LAYER] = image(face_standing)
|
||||
overlays_standing[FHAIR_LAYER] = image(face_standing)
|
||||
|
||||
if(update_icons) update_icons()
|
||||
|
||||
@@ -457,6 +552,7 @@ var/global/list/damage_icon_parts = list()
|
||||
skeleton = null
|
||||
|
||||
update_hair(0)
|
||||
update_fhair(0)
|
||||
if(update_icons) update_icons()
|
||||
|
||||
//Call when target overlay should be added/removed
|
||||
@@ -485,6 +581,8 @@ var/global/list/damage_icon_parts = list()
|
||||
update_mutations(0)
|
||||
update_body(0)
|
||||
update_hair(0)
|
||||
update_head_accessory(0)
|
||||
update_fhair(0)
|
||||
update_mutantrace(0)
|
||||
update_inv_w_uniform(0,0)
|
||||
update_inv_wear_id(0)
|
||||
@@ -1016,6 +1114,7 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#undef MUTANTRACE_LAYER
|
||||
#undef MARKINGS_LAYER
|
||||
#undef MUTATIONS_LAYER
|
||||
#undef DAMAGE_LAYER
|
||||
#undef UNIFORM_LAYER
|
||||
@@ -1032,6 +1131,8 @@ var/global/list/damage_icon_parts = list()
|
||||
#undef BACK_LAYER
|
||||
#undef HAIR_LAYER
|
||||
#undef HEAD_LAYER
|
||||
#undef HEAD_ACCESSORY_LAYER
|
||||
#undef FHAIR_LAYER
|
||||
#undef COLLAR_LAYER
|
||||
#undef HANDCUFF_LAYER
|
||||
#undef LEGCUFF_LAYER
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
// ++++ROCKDTBEN++++ MOB PROCS -- Ask me before touching.
|
||||
// Stop! ... Hammertime! ~Carn
|
||||
// I touched them without asking... I'm soooo edgy ~Erro (added nodamage checks)
|
||||
// no ~Tigerkitty
|
||||
|
||||
/mob/living/proc/getBruteLoss()
|
||||
return bruteloss
|
||||
|
||||
@@ -305,9 +305,9 @@
|
||||
return
|
||||
|
||||
/mob/living/silicon/robot/update_fire()
|
||||
overlays -= image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")
|
||||
overlays -= image("icon"='icons/mob/OnFire.dmi', "icon_state"="Generic_mob_burning")
|
||||
if(on_fire)
|
||||
overlays += image("icon"='icons/mob/OnFire.dmi', "icon_state"="Standing")
|
||||
overlays += image("icon"='icons/mob/OnFire.dmi', "icon_state"="Generic_mob_burning")
|
||||
|
||||
/mob/living/silicon/robot/fire_act()
|
||||
if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
if(self_message && M==src)
|
||||
msg = self_message
|
||||
M.show_message(msg, 2, deaf_message, 1)
|
||||
|
||||
|
||||
// based on say code
|
||||
var/omsg = replacetext(message, "<B>[src]</B> ", "")
|
||||
var/list/listening_obj = new
|
||||
@@ -177,6 +177,7 @@
|
||||
|
||||
if(ishuman(src) && W == src:head)
|
||||
src:update_hair()
|
||||
src:update_fhair()
|
||||
|
||||
/mob/proc/put_in_any_hand_if_possible(obj/item/W as obj, del_on_fail = 0, disable_warning = 1, redraw_mob = 1)
|
||||
if(equip_to_slot_if_possible(W, slot_l_hand, del_on_fail, disable_warning, redraw_mob))
|
||||
|
||||
@@ -248,36 +248,53 @@ datum/preferences
|
||||
else
|
||||
preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
|
||||
//Body Markings
|
||||
if(current_species && (current_species.bodyflags & HAS_MARKINGS))
|
||||
var/datum/sprite_accessory/marking_style = marking_styles_list[m_style]
|
||||
if(marking_style && marking_style.species_allowed)
|
||||
var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
|
||||
markings_s.Blend(rgb(r_markings, g_markings, b_markings), ICON_ADD)
|
||||
preview_icon.Blend(markings_s, ICON_OVERLAY)
|
||||
|
||||
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = current_species ? current_species.eyes : "eyes_s")
|
||||
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
|
||||
|
||||
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
|
||||
if(hair_style)
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
hair_s.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
eyes_s.Blend(hair_s, ICON_OVERLAY)
|
||||
|
||||
//Head Accessory
|
||||
if(current_species && (current_species.bodyflags & HAS_HEAD_ACCESSORY))
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
head_accessory_s.Blend(rgb(r_headacc, g_headacc, b_headacc), ICON_ADD)
|
||||
eyes_s.Blend(head_accessory_s, ICON_OVERLAY)
|
||||
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[f_style]
|
||||
if(facial_hair_style)
|
||||
if(facial_hair_style && facial_hair_style.species_allowed)
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
|
||||
eyes_s.Blend(facial_s, ICON_OVERLAY)
|
||||
|
||||
|
||||
var/icon/underwear_s = null
|
||||
if(underwear && current_species.clothing_flags & HAS_UNDERWEAR)
|
||||
if(underwear && (current_species.clothing_flags & HAS_UNDERWEAR))
|
||||
var/datum/sprite_accessory/underwear/U = underwear_list[underwear]
|
||||
if(U)
|
||||
underwear_s = new/icon(U.icon, "uw_[U.icon_state]_s", ICON_OVERLAY)
|
||||
|
||||
var/icon/undershirt_s = null
|
||||
if(undershirt && current_species.clothing_flags & HAS_UNDERSHIRT)
|
||||
if(undershirt && (current_species.clothing_flags & HAS_UNDERSHIRT))
|
||||
var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt]
|
||||
if(U2)
|
||||
undershirt_s = new/icon(U2.icon, "us_[U2.icon_state]_s", ICON_OVERLAY)
|
||||
|
||||
var/icon/socks_s = null
|
||||
if(socks && current_species.clothing_flags & HAS_SOCKS)
|
||||
if(socks && (current_species.clothing_flags & HAS_SOCKS))
|
||||
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
|
||||
if(U3)
|
||||
socks_s = new/icon(U3.icon, "sk_[U3.icon_state]_s", ICON_OVERLAY)
|
||||
@@ -804,8 +821,6 @@ datum/preferences
|
||||
else if(backbag == 3 || backbag == 4)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
|
||||
if(!(current_species.bodyflags & NO_EYES))
|
||||
preview_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
if(underwear_s)
|
||||
preview_icon.Blend(underwear_s, ICON_OVERLAY)
|
||||
if(undershirt_s)
|
||||
@@ -814,6 +829,8 @@ datum/preferences
|
||||
preview_icon.Blend(socks_s, ICON_OVERLAY)
|
||||
if(clothes_s)
|
||||
preview_icon.Blend(clothes_s, ICON_OVERLAY)
|
||||
if(!(current_species.bodyflags & NO_EYES))
|
||||
preview_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
preview_icon_front = new(preview_icon, dir = SOUTH)
|
||||
preview_icon_side = new(preview_icon, dir = WEST)
|
||||
|
||||
|
||||
@@ -584,25 +584,6 @@
|
||||
*/
|
||||
|
||||
/datum/sprite_accessory/hair
|
||||
una_spines_long
|
||||
name = "Long Unathi Spines"
|
||||
icon_state = "soghun_longspines"
|
||||
species_allowed = list("Unathi")
|
||||
|
||||
una_spines_short
|
||||
name = "Short Unathi Spines"
|
||||
icon_state = "soghun_shortspines"
|
||||
species_allowed = list("Unathi")
|
||||
|
||||
una_frills_long
|
||||
name = "Long Unathi Frills"
|
||||
icon_state = "soghun_longfrills"
|
||||
species_allowed = list("Unathi")
|
||||
|
||||
una_frills_short
|
||||
name = "Short Unathi Frills"
|
||||
icon_state = "soghun_shortfrills"
|
||||
species_allowed = list("Unathi")
|
||||
|
||||
una_horns
|
||||
name = "Unathi Horns"
|
||||
@@ -645,11 +626,6 @@
|
||||
species_allowed = list("Skrell")
|
||||
gender = FEMALE
|
||||
|
||||
taj_ears
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "ears_plain"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
taj_ears_clean
|
||||
name = "Tajara Clean"
|
||||
icon_state = "hair_clean"
|
||||
@@ -892,6 +868,8 @@
|
||||
|
||||
/datum/sprite_accessory/facial_hair
|
||||
|
||||
//Tajara
|
||||
|
||||
taj_sideburns
|
||||
name = "Tajara Sideburns"
|
||||
icon_state = "facial_sideburns"
|
||||
@@ -922,6 +900,8 @@
|
||||
icon_state = "facial_smallstache"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
//Vox
|
||||
|
||||
vox_colonel
|
||||
name = "Vox Colonel Beard"
|
||||
icon_state = "vox_colonel"
|
||||
@@ -957,12 +937,6 @@
|
||||
species_allowed = list("Vulpkanin")
|
||||
gender = NEUTER
|
||||
|
||||
vulp_earfluff
|
||||
name = "Earfluff"
|
||||
icon_state = "vulp_facial_earfluff"
|
||||
species_allowed = list("Vulpkanin")
|
||||
gender = NEUTER
|
||||
|
||||
vulp_mask
|
||||
name = "Mask"
|
||||
icon_state = "vulp_facial_mask"
|
||||
@@ -993,6 +967,51 @@
|
||||
species_allowed = list("Vulpkanin")
|
||||
gender = NEUTER
|
||||
|
||||
//Unathi
|
||||
|
||||
una_spines_long
|
||||
name = "Long Spines"
|
||||
icon_state = "soghun_longspines"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_spines_short
|
||||
name = "Short Spines"
|
||||
icon_state = "soghun_shortspines"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_frills_long
|
||||
name = "Long Frills"
|
||||
icon_state = "soghun_longfrills"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_frills_short
|
||||
name = "Short Frills"
|
||||
icon_state = "soghun_shortfrills"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_frills_webbed_long
|
||||
name = "Long Webbed Frills"
|
||||
icon_state = "soghun_longfrills_webbed"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_frills_webbed_short
|
||||
name = "Short Webbed Frills"
|
||||
icon_state = "soghun_shortfrills_webbed"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
una_frills_webbed_aquatic
|
||||
name = "Aquatic Frills"
|
||||
icon_state = "soghun_aquaticfrills_webbed"
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
|
||||
|
||||
//skin styles - WIP
|
||||
//going to have to re-integrate this with surgery
|
||||
//let the icon_state hold an icon preview for now
|
||||
@@ -1518,4 +1537,132 @@
|
||||
name = "Vox Fishnets"
|
||||
icon_state = "vox_fishnet"
|
||||
gender = NEUTER
|
||||
species_allowed = list("Vox")
|
||||
species_allowed = list("Vox")
|
||||
|
||||
/* HEAD ACCESSORY */
|
||||
|
||||
/datum/sprite_accessory/head_accessory
|
||||
icon = 'icons/mob/body_accessory.dmi'
|
||||
species_allowed = list("Unathi", "Vulpkanin", "Tajaran")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/none
|
||||
name = "None"
|
||||
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/simple
|
||||
name = "Simple"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "horns_simple"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/short
|
||||
name = "Short"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "horns_short"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/curled
|
||||
name = "Curled"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "horns_curled"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/ram
|
||||
name = "Ram"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "horns_ram"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_earfluff
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Vulpkanin Earfluff"
|
||||
icon_state = "vulp_facial_earfluff"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_blaze
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Blaze"
|
||||
icon_state = "vulp_facial_blaze"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_vulpine
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Vulpine"
|
||||
icon_state = "vulp_facial_vulpine"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_mask
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Mask"
|
||||
icon_state = "vulp_facial_mask"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_patch
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Patch"
|
||||
icon_state = "vulp_facial_patch"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_ruff
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Ruff"
|
||||
icon_state = "vulp_facial_ruff"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_kita
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Kita"
|
||||
icon_state = "vulp_facial_kita"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/vulp_swift
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Swift"
|
||||
icon_state = "vulp_facial_swift"
|
||||
species_allowed = list("Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/head_accessory/taj_ears
|
||||
icon = 'icons/mob/human_face.dmi'
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "ears_plain"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
/* BODY MARKINGS */
|
||||
|
||||
/datum/sprite_accessory/body_markings
|
||||
icon = 'icons/mob/body_accessory.dmi'
|
||||
species_allowed = list("Unathi", "Tajaran", "Vulpkanin")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/body_markings/none
|
||||
name = "None"
|
||||
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpkanin","Slime People","Skellington","Vox")
|
||||
icon_state = "accessory_none"
|
||||
|
||||
/datum/sprite_accessory/body_markings/stripe
|
||||
name = "Stripe"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "markings_stripe"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tiger
|
||||
name = "Tiger Body"
|
||||
species_allowed = list("Unathi", "Tajaran", "Vulpkanin")
|
||||
icon_state = "markings_tiger"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tigerhead
|
||||
name = "Tiger Body + Head"
|
||||
species_allowed = list("Unathi", "Tajaran", "Vulpkanin")
|
||||
icon_state = "markings_tigerhead"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tigerheadface_taj
|
||||
name = "Tajaran Tiger Body + Head + Face"
|
||||
species_allowed = list("Tajaran")
|
||||
icon_state = "markings_tigerheadface_taj"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tigerheadface_vulp
|
||||
name = "Vulpkanin Tiger Body + Head + Face"
|
||||
species_allowed = list("Vulpkanin")
|
||||
icon_state = "markings_tigerheadface_vulp"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tigerheadface_una
|
||||
name = "Unathi Tiger Body + Head + Face"
|
||||
species_allowed = list("Unathi")
|
||||
icon_state = "markings_tigerheadface_una"
|
||||
@@ -106,14 +106,13 @@ nanoui is used to open and update nano browser uis
|
||||
*/
|
||||
/datum/nanoui/proc/add_common_assets()
|
||||
add_script("libraries.min.js") // A JS file comprising of jQuery, doT.js and jQuery Timer libraries (compressed together)
|
||||
add_script("nano.js") // A JS file of the NanoUI JavaScript concatenated into one file.
|
||||
add_stylesheet("shared.css") // this CSS sheet is common to all UIs
|
||||
add_stylesheet("icons.css") // this CSS sheet is common to all UIs
|
||||
add_script("nano.js") // A JS file of the NanoUI JavaScript compressed into one file.
|
||||
add_stylesheet("nanoui.css") // Concatenated CSS sheet common to all UIs, contains all of the standard NanoUI styling.
|
||||
|
||||
//codemirror
|
||||
add_script("codemirror-compressed.js") // A custom compressed JS file of codemirror, with CSS highlighting
|
||||
add_stylesheet("codemirror.css") // this CSS sheet is common to all UIs, so all UIs can use codemirror
|
||||
add_stylesheet("cm_lesser-dark.css") //CSS styling for codemirror, dark theme
|
||||
// CodeMirror
|
||||
add_script("codemirror-compressed.js") // A custom minified JavaScript file of CodeMirror, with the following plugins: CSS Mode, NTSL Mode, CSS-hint addon, Search addon, Sublime Keymap.
|
||||
add_stylesheet("codemirror.css") // A CSS sheet containing the basic stylings and formatting information for CodeMirror.
|
||||
add_stylesheet("cm_lesser-dark.css") // A theme for CodeMirror to use, which closely resembles the rest of the NanoUI style.
|
||||
|
||||
/**
|
||||
* Set the current status (also known as visibility) of this ui.
|
||||
|
||||
@@ -147,6 +147,7 @@
|
||||
owner.unEquip(owner.wear_mask)
|
||||
spawn(1)
|
||||
owner.update_hair()
|
||||
owner.update_fhair()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||
|
||||
+22
-59
@@ -634,81 +634,43 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
// Cable laying procedures
|
||||
//////////////////////////////////////////////
|
||||
|
||||
/obj/item/stack/cable_coil/proc/get_new_cable(location)
|
||||
var/obj/structure/cable/C = new(location)
|
||||
C.cableColor(color)
|
||||
|
||||
return C
|
||||
|
||||
// called when cable_coil is clicked on a turf/simulated/floor
|
||||
/obj/item/stack/cable_coil/proc/turf_place(turf/simulated/floor/F, mob/user)
|
||||
/obj/item/stack/cable_coil/proc/place_turf(turf/T, mob/user)
|
||||
if(!isturf(user.loc))
|
||||
return
|
||||
|
||||
if(!T.can_have_cabling())
|
||||
user << "<span class='warning'>You can only lay cables on catwalks and plating!</span>"
|
||||
return
|
||||
|
||||
if(get_amount() < 1) // Out of cable
|
||||
user << "There is no cable left."
|
||||
user << "<span class='warning'>There is no cable left!</span>"
|
||||
return
|
||||
|
||||
if(get_dist(F,user) > 1) // Too far
|
||||
user << "You can't lay cable at a place that far away."
|
||||
return
|
||||
|
||||
if(F.intact) // Ff floor is intact, complain
|
||||
user << "You can't lay cable there unless the floor tiles are removed."
|
||||
if(get_dist(T,user) > 1) // Too far
|
||||
user << "<span class='warning'>You can't lay cable at a place that far away!</span>"
|
||||
return
|
||||
|
||||
else
|
||||
var/dirn
|
||||
|
||||
if(user.loc == F)
|
||||
if(user.loc == T)
|
||||
dirn = user.dir // if laying on the tile we're on, lay in the direction we're facing
|
||||
else
|
||||
dirn = get_dir(F, user)
|
||||
dirn = get_dir(T, user)
|
||||
|
||||
for(var/obj/structure/cable/LC in F)
|
||||
if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0))
|
||||
user << "<span class='warning'>There's already a cable at that position.</span>"
|
||||
return
|
||||
///// Z-Level Stuff
|
||||
// check if the target is open space
|
||||
/* if(istype(F, /turf/simulated/floor/open))
|
||||
for(var/obj/structure/cable/LC in F)
|
||||
if((LC.d1 == dirn && LC.d2 == 11 ) || ( LC.d2 == dirn && LC.d1 == 11))
|
||||
user << "<span class='warning'>There's already a cable at that position.</span>"
|
||||
return
|
||||
|
||||
var/turf/simulated/floor/open/temp = F
|
||||
var/obj/structure/cable/C = new(F)
|
||||
var/obj/structure/cable/D = new(temp.floorbelow)
|
||||
|
||||
C.cableColor(color)
|
||||
|
||||
C.d1 = 11
|
||||
C.d2 = dirn
|
||||
C.add_fingerprint(user)
|
||||
C.updateicon()
|
||||
|
||||
var/datum/powernet/PN = new()
|
||||
PN.add_cable(C)
|
||||
|
||||
C.mergeConnectedNetworks(C.d2)
|
||||
C.mergeConnectedNetworksOnTurf()
|
||||
|
||||
D.cableColor(color)
|
||||
|
||||
D.d1 = 12
|
||||
D.d2 = 0
|
||||
D.add_fingerprint(user)
|
||||
D.updateicon()
|
||||
|
||||
PN.add_cable(D)
|
||||
D.mergeConnectedNetworksOnTurf()
|
||||
|
||||
// do the normal stuff
|
||||
else */
|
||||
///// Z-Level Stuff
|
||||
for(var/obj/structure/cable/LC in F)
|
||||
if((LC.d1 == dirn && LC.d2 == 0 ) || ( LC.d2 == dirn && LC.d1 == 0))
|
||||
user << "There's already a cable at that position."
|
||||
for(var/obj/structure/cable/LC in T)
|
||||
if(LC.d2 == dirn && LC.d1 == 0)
|
||||
user << "<span class='warning'>There's already a cable at that position!</span>"
|
||||
return
|
||||
|
||||
var/obj/structure/cable/C = new(F)
|
||||
|
||||
C.cableColor(color)
|
||||
var/obj/structure/cable/C = get_new_cable(T)
|
||||
|
||||
//set up the new cable
|
||||
C.d1 = 0 //it's a O-X node cable
|
||||
@@ -728,6 +690,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
|
||||
|
||||
use(1)
|
||||
|
||||
if (C.shock(user, 50))
|
||||
if (prob(50)) //fail
|
||||
new/obj/item/stack/cable_coil(C.loc, 1, C.color)
|
||||
@@ -751,7 +714,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
|
||||
|
||||
|
||||
if(U == T) //if clicked on the turf we're standing on, try to put a cable in the direction we're facing
|
||||
turf_place(T,user)
|
||||
place_turf(T,user)
|
||||
return
|
||||
|
||||
var/dirn = get_dir(C, user)
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
if(get_dist(src, user) > 1)
|
||||
return
|
||||
|
||||
coil.turf_place(T, user)
|
||||
coil.place_turf(T, user)
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
src.last_shot = world.time
|
||||
if(src.shot_number < 3)
|
||||
src.fire_delay = 2
|
||||
src.shot_number ++
|
||||
src.shot_number++
|
||||
else
|
||||
src.fire_delay = rand(minimum_fire_delay,maximum_fire_delay)
|
||||
src.shot_number = 0
|
||||
|
||||
@@ -27,7 +27,7 @@ datum/reagent/carpet
|
||||
color = "#701345"
|
||||
|
||||
/datum/reagent/carpet/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if(T.is_plating() || T.is_plasteel_floor())
|
||||
if(istype(T, /turf/simulated/floor/plating) || istype(T, /turf/simulated/floor/plasteel))
|
||||
var/turf/simulated/floor/F = T
|
||||
F.ChangeTurf(/turf/simulated/floor/carpet)
|
||||
..()
|
||||
@@ -204,6 +204,7 @@ datum/reagent/hair_dye/reaction_mob(var/mob/living/M, var/volume)
|
||||
H.g_hair = rand(0,255)
|
||||
H.b_hair = rand(0,255)
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -229,6 +230,7 @@ datum/reagent/hairgrownium/reaction_mob(var/mob/living/M, var/volume)
|
||||
H.h_style = random_hair_style(H.gender, H.species)
|
||||
H.f_style = random_facial_hair_style(H.gender, H.species)
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -256,6 +258,7 @@ datum/reagent/super_hairgrownium/on_mob_life(var/mob/living/M as mob)
|
||||
H.h_style = "Very Long Hair"
|
||||
H.f_style = "Very Long Beard"
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
if(!H.wear_mask || H.wear_mask && !istype(H.wear_mask, /obj/item/clothing/mask/fakemoustache))
|
||||
if(H.wear_mask)
|
||||
H.unEquip(H.wear_mask)
|
||||
|
||||
@@ -358,3 +358,33 @@ datum/design/AAC
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, "sacid" = 20)
|
||||
build_path = /obj/item/weapon/circuitboard/atmos_automation
|
||||
|
||||
|
||||
//Shield Generators//
|
||||
|
||||
/datum/design/shield_gen_ex
|
||||
name = "Circuit Design (Experimental hull shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental hull shield generator."
|
||||
id = "shield_gen_ex"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 10000, MAT_GOLD = 10000)
|
||||
build_path = /obj/item/weapon/circuitboard/shield_gen_ex
|
||||
|
||||
/datum/design/shield_gen
|
||||
name = "Circuit Design (Experimental shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental shield generator."
|
||||
id = "shield_gen"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 10000, MAT_GOLD = 10000)
|
||||
build_path = /obj/item/weapon/circuitboard/shield_gen
|
||||
|
||||
/datum/design/shield_cap
|
||||
name = "Circuit Design (Experimental shield capacitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental shielding capacitor."
|
||||
id = "shield_cap"
|
||||
req_tech = list("magnets" = 3, "powerstorage" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_DIAMOND = 10000, MAT_GOLD = 10000)
|
||||
build_path = /obj/item/weapon/circuitboard/shield_cap
|
||||
@@ -16,15 +16,6 @@
|
||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
||||
"/obj/item/stack/cable_coil" = 5)
|
||||
|
||||
datum/design/shield_gen_ex
|
||||
name = "Circuit Design (Experimental hull shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental hull shield generator."
|
||||
id = "shield_gen"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_GOLD = 10000)
|
||||
build_path = "/obj/machinery/shield_gen/external"
|
||||
|
||||
////////////////////////////////////////
|
||||
// Shield Generator
|
||||
|
||||
@@ -42,15 +33,6 @@ datum/design/shield_gen_ex
|
||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
||||
"/obj/item/stack/cable_coil" = 5)
|
||||
|
||||
datum/design/shield_gen
|
||||
name = "Circuit Design (Experimental shield generator)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental shield generator."
|
||||
id = "shield_gen"
|
||||
req_tech = list("bluespace" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_GOLD = 10000)
|
||||
build_path = "/obj/machinery/shield_gen/external"
|
||||
|
||||
////////////////////////////////////////
|
||||
// Shield Capacitor
|
||||
|
||||
@@ -67,12 +49,3 @@ datum/design/shield_gen
|
||||
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
|
||||
"/obj/item/weapon/stock_parts/console_screen" = 1,
|
||||
"/obj/item/stack/cable_coil" = 5)
|
||||
|
||||
datum/design/shield_cap
|
||||
name = "Circuit Design (Experimental shield capacitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build an experimental shielding capacitor."
|
||||
id = "shield_cap"
|
||||
req_tech = list("magnets" = 3, "powerstorage" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 2000, "sacid" = 20, MAT_PLASMA = 10000, MAT_DIAMOND = 5000, MAT_SILVER = 10000)
|
||||
build_path = "/obj/machinery/shield_gen/external"
|
||||
|
||||
@@ -301,6 +301,10 @@
|
||||
//rotate our direction
|
||||
dir = angle2dir(rotation+dir2angle(dir))
|
||||
|
||||
//resmooth if need be.
|
||||
if(smooth)
|
||||
smooth_icon(src)
|
||||
|
||||
//rotate the pixel offsets too.
|
||||
if (pixel_x || pixel_y)
|
||||
if (rotation < 0)
|
||||
|
||||
@@ -593,7 +593,7 @@
|
||||
if(H.species.name == "Human" && !(H.f_style == "Elvis Sideburns"))
|
||||
spawn(50)
|
||||
H.f_style = "Elvis Sideburns"
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/virussunglasses
|
||||
@@ -805,7 +805,7 @@ var/list/compatible_mobs = list(/mob/living/carbon/human)
|
||||
H << "<span class='warning'>Your chin and neck itch!.</span>"
|
||||
spawn(50)
|
||||
H.f_style = "Full Beard"
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
|
||||
/datum/disease2/effect/bloodynose
|
||||
name = "Intranasal Hemorrhage"
|
||||
|
||||
Reference in New Issue
Block a user