Merge remote-tracking branch 'upstream/master' into sec-rifle

This commit is contained in:
Fox-McCloud
2016-01-03 22:35:28 -05:00
170 changed files with 19726 additions and 18103 deletions
+1 -1
View File
@@ -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
+15 -16
View File
@@ -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/"
)
+80
View File
@@ -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]"]
+74 -36
View File
@@ -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]',
+3 -3
View File
@@ -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
+6
View File
@@ -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"
+3 -2
View File
@@ -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
+1
View File
@@ -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
+2 -1
View File
@@ -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)
+178 -31
View File
@@ -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"
+6 -7
View File
@@ -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.
+1
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -132,7 +132,7 @@
if(get_dist(src, user) > 1)
return
coil.turf_place(T, user)
coil.place_turf(T, user)
return
else
..()
+1 -1
View File
@@ -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
+4 -1
View File
@@ -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"
+4
View File
@@ -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)
+2 -2
View File
@@ -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"