This commit is contained in:
Chinsky
2013-05-17 07:35:21 +04:00
41 changed files with 10491 additions and 10476 deletions

View File

@@ -35,6 +35,7 @@
#define FILE_DIR "icons/Testing" #define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf" #define FILE_DIR "icons/turf"
#define FILE_DIR "icons/vending_icons" #define FILE_DIR "icons/vending_icons"
#define FILE_DIR "icons/xenoarch_icons"
#define FILE_DIR "sound" #define FILE_DIR "sound"
#define FILE_DIR "sound/AI" #define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience" #define FILE_DIR "sound/ambience"

View File

@@ -39,9 +39,9 @@
dat += "<a href='?src=\ref[src]&alarm=\ref[alarm]'>" dat += "<a href='?src=\ref[src]&alarm=\ref[alarm]'>"
switch(max(alarm.danger_level, alarm.alarm_area.atmosalm)) switch(max(alarm.danger_level, alarm.alarm_area.atmosalm))
if (0) if (0)
dat += "<font color=blue>" dat += "<font color=green>"
if (1) if (1)
dat += "<font color=yellow>" dat += "<font color=blue>"
if (2) if (2)
dat += "<font color=red>" dat += "<font color=red>"
dat += "[alarm]</font></a><br/>" dat += "[alarm]</font></a><br/>"
@@ -302,8 +302,8 @@ Nitrous Oxide
AALARM_MODE_REPLACEMENT = "<font color='red'>REPLACE AIR</font>", AALARM_MODE_REPLACEMENT = "<font color='red'>REPLACE AIR</font>",
AALARM_MODE_PANIC = "<font color='red'>PANIC</font>", AALARM_MODE_PANIC = "<font color='red'>PANIC</font>",
AALARM_MODE_CYCLE = "<font color='red'>CYCLE</font>", AALARM_MODE_CYCLE = "<font color='red'>CYCLE</font>",
AALARM_MODE_FILL = "<font color='red'>FILL</font>", AALARM_MODE_FILL = "<font color='red'>FILL</font>",\
) AALARM_MODE_OFF = "<font color='blue'>OFFF</font>",)
for (var/m=1,m<=modes.len,m++) for (var/m=1,m<=modes.len,m++)
if (current.mode==m) if (current.mode==m)
output += {"<li><A href='?src=\ref[src];alarm=\ref[current];mode=[m]'><b>[modes[m]]</b></A> (selected)</li>"} output += {"<li><A href='?src=\ref[src];alarm=\ref[current];mode=[m]'><b>[modes[m]]</b></A> (selected)</li>"}

View File

@@ -3,13 +3,13 @@
/obj/item/clothing/head/beret/centcom/officer /obj/item/clothing/head/beret/centcom/officer
name = "officers beret" name = "officers beret"
desc = "A black beret adorned with the shield&mdash;a silver kite shield with an engraved sword&mdash;of the NanoTrasen security forces, announcing to the world that the wearer is a defender of NanoTrasen." desc = "A black beret adorned with the shield<EFBFBD>a silver kite shield with an engraved sword<EFBFBD>of the NanoTrasen security forces, announcing to the world that the wearer is a defender of NanoTrasen."
icon_state = "centcomofficerberet" icon_state = "centcomofficerberet"
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS
/obj/item/clothing/head/beret/centcom/captain /obj/item/clothing/head/beret/centcom/captain
name = "captains beret" name = "captains beret"
desc = "A white beret adorned with the shield&mdash;a cobalt kite shield with an engraved sword&mdash;of the NanoTrasen security forces, worn only by those captaining a vessel of the NanoTrasen Navy." desc = "A white beret adorned with the shield<EFBFBD>a cobalt kite shield with an engraved sword<EFBFBD>of the NanoTrasen security forces, worn only by those captaining a vessel of the NanoTrasen Navy."
icon_state = "centcomcaptain" icon_state = "centcomcaptain"
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS

View File

@@ -33,6 +33,7 @@
#define AALARM_MODE_PANIC 3 //constantly sucks all air #define AALARM_MODE_PANIC 3 //constantly sucks all air
#define AALARM_MODE_CYCLE 4 //sucks off all air, then refill and switches to scrubbing #define AALARM_MODE_CYCLE 4 //sucks off all air, then refill and switches to scrubbing
#define AALARM_MODE_FILL 5 //emergency fill #define AALARM_MODE_FILL 5 //emergency fill
#define AALARM_MODE_OFF 6 //Shuts it all down.
#define AALARM_SCREEN_MAIN 1 #define AALARM_SCREEN_MAIN 1
#define AALARM_SCREEN_VENT 2 #define AALARM_SCREEN_VENT 2
@@ -183,7 +184,7 @@
if(environment.temperature > target_temperature) if(environment.temperature > target_temperature)
gas.temperature -= energy_used/heat_capacity gas.temperature -= energy_used/heat_capacity
else else
gas.temperature -= energy_used/heat_capacity gas.temperature += energy_used/heat_capacity
environment.merge(gas) environment.merge(gas)
@@ -238,9 +239,9 @@
return 0 return 0
proc/get_danger_level(var/current_value, var/list/danger_levels) proc/get_danger_level(var/current_value, var/list/danger_levels)
if(current_value >= danger_levels[4] || current_value <= danger_levels[1]) if((current_value >= danger_levels[4] && danger_levels[4] > 0) || current_value <= danger_levels[1])
return 2 return 2
if(current_value >= danger_levels[3] || current_value <= danger_levels[2]) if((current_value >= danger_levels[3] && danger_levels[3] > 0) || current_value <= danger_levels[2])
return 1 return 1
return 0 return 0
@@ -339,9 +340,9 @@
switch(mode) switch(mode)
if(AALARM_MODE_SCRUBBING) if(AALARM_MODE_SCRUBBING)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 1, "scrubbing"= 1, "panic_siphon"= 0) ) send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "scrubbing"= 1, "panic_siphon"= 0) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 1, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in alarm_area.air_scrub_names)
@@ -351,15 +352,21 @@
if(AALARM_MODE_REPLACEMENT) if(AALARM_MODE_REPLACEMENT)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "setting"= 3, "scrubbing"= 1, "panic_siphon"= 0) ) send_signal(device_id, list("power"= 1, "panic_siphon"= 1) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 3, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_FILL) if(AALARM_MODE_FILL)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list("power"= 0) ) send_signal(device_id, list("power"= 0) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "setting"= 3, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_OFF)
for(var/device_id in alarm_area.air_scrub_names)
send_signal(device_id, list("power"= 0) )
for(var/device_id in alarm_area.air_vent_names)
send_signal(device_id, list("power"= 0) )
proc/apply_danger_level(var/new_danger_level) proc/apply_danger_level(var/new_danger_level)
alarm_area.atmosalm = new_danger_level alarm_area.atmosalm = new_danger_level
@@ -817,7 +824,8 @@ Toxins: <span class='dl[plasma_dangerlevel]'>[plasma_percent]</span>%<br>
AALARM_MODE_REPLACEMENT = "<font color='blue'>REPLACE AIR</font>",\ AALARM_MODE_REPLACEMENT = "<font color='blue'>REPLACE AIR</font>",\
AALARM_MODE_PANIC = "<font color='red'>PANIC</font>",\ AALARM_MODE_PANIC = "<font color='red'>PANIC</font>",\
AALARM_MODE_CYCLE = "<font color='red'>CYCLE</font>",\ AALARM_MODE_CYCLE = "<font color='red'>CYCLE</font>",\
AALARM_MODE_FILL = "<font color='red'>FILL</font>",) AALARM_MODE_FILL = "<font color='green'>FILL</font>",\
AALARM_MODE_OFF = "<font color='blue'>OFFF</font>",)
for (var/m=1,m<=modes.len,m++) for (var/m=1,m<=modes.len,m++)
if (mode==m) if (mode==m)
output += "<li><A href='?src=\ref[src];mode=[m]'><b>[modes[m]]</b></A> (selected)</li>" output += "<li><A href='?src=\ref[src];mode=[m]'><b>[modes[m]]</b></A> (selected)</li>"

View File

@@ -225,7 +225,6 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
next_dest_loc = closest_loc next_dest_loc = closest_loc
if (next_dest_loc) if (next_dest_loc)
src.patrol_path = AStar(src.loc, next_dest_loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=null) src.patrol_path = AStar(src.loc, next_dest_loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=null)
src.patrol_path = reverselist(src.patrol_path)
else else
patrol_move() patrol_move()
@@ -235,7 +234,6 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
spawn(0) spawn(0)
if(!src || !target) return if(!src || !target) return
src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 0, 30) src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 0, 30)
src.path = reverselist(src.path)
if(src.path.len == 0) if(src.path.len == 0)
src.oldtarget = src.target src.oldtarget = src.target
src.target = null src.target = null

View File

@@ -615,7 +615,6 @@ Auto Patrol: []"},
// given an optional turf to avoid // given an optional turf to avoid
/obj/machinery/bot/ed209/proc/calc_path(var/turf/avoid = null) /obj/machinery/bot/ed209/proc/calc_path(var/turf/avoid = null)
src.path = AStar(src.loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=avoid) src.path = AStar(src.loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=avoid)
src.path = reverselist(src.path)
// look for a criminal in view of the bot // look for a criminal in view of the bot

View File

@@ -357,7 +357,6 @@
var/turf/dest = get_step_towards(target,src) //Can't pathfind to a tray, as it is dense, so pathfind to the spot next to the tray var/turf/dest = get_step_towards(target,src) //Can't pathfind to a tray, as it is dense, so pathfind to the spot next to the tray
src.path = AStar(src.loc, dest, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 30,id=botcard) src.path = AStar(src.loc, dest, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 30,id=botcard)
src.path = reverselist(src.path)
if(src.path.len == 0) if(src.path.len == 0)
for ( var/turf/spot in orange(1,target) ) //The closest one is unpathable, try the other spots for ( var/turf/spot in orange(1,target) ) //The closest one is unpathable, try the other spots
if ( spot == dest ) //We already tried this spot if ( spot == dest ) //We already tried this spot

View File

@@ -244,7 +244,6 @@
src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30) src.path = AStar(src.loc, src.target.loc, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30)
else else
src.path = AStar(src.loc, src.target, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30) src.path = AStar(src.loc, src.target, /turf/proc/AdjacentTurfsSpace, /turf/proc/Distance, 0, 30)
src.path = reverselist(src.path)
if(src.path.len == 0) if(src.path.len == 0)
src.oldtarget = src.target src.oldtarget = src.target
src.target = null src.target = null

View File

@@ -299,7 +299,6 @@
if(src.patient && src.path.len == 0 && (get_dist(src,src.patient) > 1)) if(src.patient && src.path.len == 0 && (get_dist(src,src.patient) > 1))
spawn(0) spawn(0)
src.path = AStar(src.loc, get_turf(src.patient), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 30,id=botcard) src.path = AStar(src.loc, get_turf(src.patient), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 30,id=botcard)
src.path = reverselist(src.path)
if(src.path.len == 0) if(src.path.len == 0)
src.oldpatient = src.patient src.oldpatient = src.patient
src.patient = null src.patient = null

View File

@@ -706,7 +706,8 @@
// given an optional turf to avoid // given an optional turf to avoid
/obj/machinery/bot/mulebot/proc/calc_path(var/turf/avoid = null) /obj/machinery/bot/mulebot/proc/calc_path(var/turf/avoid = null)
src.path = AStar(src.loc, src.target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, id=botcard, exclude=avoid) src.path = AStar(src.loc, src.target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, id=botcard, exclude=avoid)
src.path = reverselist(src.path) if(!src.path)
src.path = list()
// sets the current destination // sets the current destination

View File

@@ -583,7 +583,6 @@ Auto Patrol: []"},
// given an optional turf to avoid // given an optional turf to avoid
/obj/machinery/bot/secbot/proc/calc_path(var/turf/avoid = null) /obj/machinery/bot/secbot/proc/calc_path(var/turf/avoid = null)
src.path = AStar(src.loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=avoid) src.path = AStar(src.loc, patrol_target, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 120, id=botcard, exclude=avoid)
src.path = reverselist(src.path)
// look for a criminal in view of the bot // look for a criminal in view of the bot

View File

@@ -19,10 +19,12 @@
sleep(2) sleep(2)
new /obj/item/clothing/head/that(src) new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/that(src) new /obj/item/clothing/head/that(src)
new /obj/item/clothing/head/hairflower
new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/sl_suit(src)
new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/sl_suit(src)
new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src)
new /obj/item/clothing/under/dress/dress_saloon
new /obj/item/clothing/suit/wcoat(src) new /obj/item/clothing/suit/wcoat(src)
new /obj/item/clothing/suit/wcoat(src) new /obj/item/clothing/suit/wcoat(src)
new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src)

View File

@@ -150,6 +150,17 @@ obj/structure/ex_act(severity)
pod_moving = 1 pod_moving = 1
close_animation() close_animation()
sleep(CLOSE_DURATION + 2) sleep(CLOSE_DURATION + 2)
//reverse directions for automated cycling
var/turf/next_loc = get_step(loc, pod.dir)
var/obj/structure/transit_tube/nexttube
for(var/obj/structure/transit_tube/tube in next_loc)
if(tube.has_entrance(pod.dir))
nexttube = tube
break
if(!nexttube)
pod.dir = turn(pod.dir, 180)
if(icon_state == "closed" && pod) if(icon_state == "closed" && pod)
pod.follow_tube() pod.follow_tube()

View File

@@ -133,7 +133,8 @@ var/list/admin_verbs_debug = list(
/client/proc/air_report, /client/proc/air_report,
/client/proc/reload_admins, /client/proc/reload_admins,
/client/proc/restart_controller, /client/proc/restart_controller,
/client/proc/enable_debug_verbs /client/proc/enable_debug_verbs,
/client/proc/callproc
) )
var/list/admin_verbs_possess = list( var/list/admin_verbs_possess = list(
/proc/possess, /proc/possess,

View File

@@ -13,24 +13,24 @@
var/list/istates = J.IconStates() var/list/istates = J.IconStates()
if(!Lstates.Find(O.icon_state) && !Lstates.Find(O.item_state)) if(!Lstates.Find(O.icon_state) && !Lstates.Find(O.item_state))
if(O.icon_state) if(O.icon_state)
text += "[O.type] WANTS IN LEFT HAND CALLED\n\"[O.icon_state]\".\n" text += "[O.type] is missing left hand icon called \"[O.icon_state]\".\n"
if(!Rstates.Find(O.icon_state) && !Rstates.Find(O.item_state)) if(!Rstates.Find(O.icon_state) && !Rstates.Find(O.item_state))
if(O.icon_state) if(O.icon_state)
text += "[O.type] WANTS IN RIGHT HAND CALLED\n\"[O.icon_state]\".\n" text += "[O.type] is missing right hand icon called \"[O.icon_state]\".\n"
if(O.icon_state) if(O.icon_state)
if(!istates.Find(O.icon_state)) if(!istates.Find(O.icon_state))
text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.icon_state]\" IN \"[O.icon]\"\n" text += "[O.type] is missing normal icon called \"[O.icon_state]\" in \"[O.icon]\".\n"
if(O.item_state) //if(O.item_state)
if(!istates.Find(O.item_state)) // if(!istates.Find(O.item_state))
text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.item_state]\" IN \"[O.icon]\"\n" // text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.item_state]\" IN \"[O.icon]\"\n"
text+="\n" //text+="\n"
del(O) del(O)
if(text) if(text)
var/F = file("broken_icons.txt") var/F = file("broken_icons.txt")
fdel(F) fdel(F)
F << text F << text
world << "Completely successfully and written to [F]" world << "Completeled successfully and written to [F]"

View File

@@ -30,7 +30,7 @@
//////////// ////////////
var/next_allowed_topic_time = 10 var/next_allowed_topic_time = 10
// comment out the line below when debugging locally to enable the options & messages menu // comment out the line below when debugging locally to enable the options & messages menu
control_freak = 1 //control_freak = 1
//////////////////////////////////// ////////////////////////////////////

View File

@@ -273,5 +273,9 @@
'icons/spideros_icons/sos_11.png', 'icons/spideros_icons/sos_11.png',
'icons/spideros_icons/sos_12.png', 'icons/spideros_icons/sos_12.png',
'icons/spideros_icons/sos_13.png', 'icons/spideros_icons/sos_13.png',
'icons/spideros_icons/sos_14.png' 'icons/spideros_icons/sos_14.png',
'icons/xenoarch_icons/chart1.jpg',
'icons/xenoarch_icons/chart2.jpg',
'icons/xenoarch_icons/chart3.jpg',
'icons/xenoarch_icons/chart4.jpg'
) )

View File

@@ -252,7 +252,7 @@ datum/preferences
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>" dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>" dat += "Skin Tone: <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
//dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>" //dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>"
//dat += "Needs Glasses: <a href='?_src_=prefs;preference=disabilities'><b>[disabilities == 0 ? "No" : "Yes"]</b></a><br>" dat += "Needs Glasses: <a href='?_src_=prefs;preference=disabilities'><b>[disabilities == 0 ? "No" : "Yes"]</b></a><br>"
dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust</a><br>" dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust</a><br>"
//display limbs below //display limbs below

View File

@@ -1,5 +1,5 @@
#define SAVEFILE_VERSION_MIN 8 #define SAVEFILE_VERSION_MIN 8
#define SAVEFILE_VERSION_MAX 8 #define SAVEFILE_VERSION_MAX 9
//handles converting savefiles to new formats //handles converting savefiles to new formats
//MAKE SURE YOU KEEP THIS UP TO DATE! //MAKE SURE YOU KEEP THIS UP TO DATE!

View File

@@ -517,7 +517,7 @@ hi
icon_state = "deus_blueshield" icon_state = "deus_blueshield"
item_state = "deus_blueshield" item_state = "deus_blueshield"
/obj/item/clothing/suit/fluff/oldscarf //Writerer2: Javaria Zara /obj/item/clothing/suit/fluff/oldscarf //Writerer2: Sharik Israa
name = "old scarf" name = "old scarf"
desc = "An old looking scarf, it seems to be fairly worn." desc = "An old looking scarf, it seems to be fairly worn."
icon_state = "mantle-unathi" icon_state = "mantle-unathi"

View File

@@ -36,7 +36,7 @@
var/sender var/sender
var/message var/message
switch(pick(1,2,3,4,5)) switch(pick(1,2,3,4,5,6))
if(1) if(1)
sender = pick("MaxBet","MaxBet Online Casino","There is no better time to register","I'm excited for you to join us") sender = pick("MaxBet","MaxBet Online Casino","There is no better time to register","I'm excited for you to join us")
message = pick("Triple deposits are waiting for you at MaxBet Online when you register to play with us.",\ message = pick("Triple deposits are waiting for you at MaxBet Online when you register to play with us.",\
@@ -73,6 +73,12 @@
"Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\ "Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\
"Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\ "Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\
"Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits") "Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits")
if(6)
sender = pick("NanoTrasen Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt")
message = pick("The NanoTrasen Morale Division wishes to provide you with quality entertainment sites.",\
"WetSkrell.nt is a xenophillic website endorsed by NT for the use of male crewmembers among it's many stations and outposts.",\
"Wetskrell.nt only provides the higest quality of male entertaiment to NanoTrasen Employees.",\
"Simply enter your NanoTrasen Bank account system number and pin. With three easy steps this service could be yours!")
useMS.send_pda_message("[P.owner]", sender, message) useMS.send_pda_message("[P.owner]", sender, message)

View File

@@ -6,7 +6,7 @@ mob/living/carbon/proc/dream()
"light","a scientist","a monkey","a catastrophe","a loved one","a gun","warmth","freezing","the sun", "light","a scientist","a monkey","a catastrophe","a loved one","a gun","warmth","freezing","the sun",
"a hat","the Luna","a ruined station","a planet","plasma","air","the medical bay","the bridge","blinking lights", "a hat","the Luna","a ruined station","a planet","plasma","air","the medical bay","the bridge","blinking lights",
"a blue light","an abandoned laboratory","Nanotrasen","The Syndicate","blood","healing","power","respect", "a blue light","an abandoned laboratory","Nanotrasen","The Syndicate","blood","healing","power","respect",
"riches","space","a crash","happiness","pride","a fall","water","flames","ice","melons","flying" "riches","space","a crash","happiness","pride","a fall","water","flames","ice","melons","flying","the eggs"
) )
spawn(0) spawn(0)
for(var/i = rand(1,4),i > 0, i--) for(var/i = rand(1,4),i > 0, i--)

View File

@@ -344,8 +344,7 @@ commented out in r5061, I left it because of the shroom thingies
user << "\red You start [P.drill_verb][fail_message ? fail_message : ""]." user << "\red You start [P.drill_verb][fail_message ? fail_message : ""]."
if(fail_message) if(fail_message && prob(90))
if(prob(50))
if(prob(25)) if(prob(25))
excavate_find(5, src.finds[1]) excavate_find(5, src.finds[1])
else if(prob(50)) else if(prob(50))
@@ -425,8 +424,6 @@ commented out in r5061, I left it because of the shroom thingies
//extract pesky minerals while we're excavating //extract pesky minerals while we're excavating
while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len]) while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len])
drop_mineral() drop_mineral()
//have a 50% chance to extract bonus minerals this way
//if(prob(50))
pop(excavation_minerals) pop(excavation_minerals)
mineralAmt-- mineralAmt--
@@ -456,13 +453,6 @@ commented out in r5061, I left it because of the shroom thingies
O = new /obj/item/weapon/ore/plasma(src) O = new /obj/item/weapon/ore/plasma(src)
if (src.mineralName == "Diamond") if (src.mineralName == "Diamond")
O = new /obj/item/weapon/ore/diamond(src) O = new /obj/item/weapon/ore/diamond(src)
/*if (src.mineralName == "Archaeo")
//new /obj/item/weapon/archaeological_find(src)
//if(prob(10) || delicate)
if(prob(50)) //Don't have delicate tools (hand pick/excavation tool) yet, temporarily change to 50% instead of 10% -Mij
O = new /obj/item/weapon/ore/strangerock(src)
else
destroyed = 1*/
if (src.mineralName == "Clown") if (src.mineralName == "Clown")
O = new /obj/item/weapon/ore/clown(src) O = new /obj/item/weapon/ore/clown(src)
if(O) if(O)
@@ -496,14 +486,9 @@ commented out in r5061, I left it because of the shroom thingies
M.Stun(5) M.Stun(5)
M.apply_effect(25, IRRADIATE) M.apply_effect(25, IRRADIATE)
/*if (prob(src.artifactChance))
//spawn a rare artifact here
new /obj/machinery/artifact(src)*/
var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid) var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid)
N.fullUpdateMineralOverlays() N.fullUpdateMineralOverlays()
/*if(destroyed) //Display message about being a terrible miner
usr << "\red You destroy some of the rocks!"*/
return return
/turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F) /turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F)

View File

@@ -559,7 +559,7 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(disabilities & NEARSIGHTED) if(disabilities & NEARSIGHTED)
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "glasses"), ICON_OVERLAY) preview_icon.Blend(new /icon('icons/mob/eyes.dmi', "glasses"), ICON_OVERLAY)
preview_icon.Blend(eyes_s, ICON_OVERLAY) preview_icon.Blend(eyes_s, ICON_OVERLAY)
if(clothes_s) if(clothes_s)

View File

@@ -534,6 +534,10 @@
proc/move() proc/move()
var/obj/structure/disposalpipe/last var/obj/structure/disposalpipe/last
while(active) while(active)
if(hasmob && prob(3))
for(var/mob/living/H in src)
H.take_overall_damage(20, 0, "Blunt Trauma")//horribly maim any living creature jumping down disposals. c'est la vie
if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy if(has_fat_guy && prob(2)) // chance of becoming stuck per segment if contains a fat guy
active = 0 active = 0
// find the fat guys // find the fat guys

View File

@@ -9,7 +9,7 @@
var/view_range = 20 //how close excavation has to come to show an overlay on the turf var/view_range = 20 //how close excavation has to come to show an overlay on the turf
var/clearance_range = 3 //how close excavation has to come to extract the item var/clearance_range = 3 //how close excavation has to come to extract the item
//if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore //if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore
var/prob_delicate = 75 //probability it requires an active suspension field to not insta-crumble var/prob_delicate = 90 //probability it requires an active suspension field to not insta-crumble
var/dissonance_spread = 1 //proportion of the tile that is affected by this find var/dissonance_spread = 1 //proportion of the tile that is affected by this find
//used in conjunction with analysis machines to determine correct suspension field type //used in conjunction with analysis machines to determine correct suspension field type
@@ -276,6 +276,7 @@
if(19) if(19)
apply_prefix = 0 apply_prefix = 0
new_item = new /obj/item/weapon/claymore(src.loc) new_item = new /obj/item/weapon/claymore(src.loc)
new_item.force = 10
item_type = new_item.name item_type = new_item.name
if(20) if(20)
//arcane clothing //arcane clothing
@@ -318,6 +319,7 @@
if(25) if(25)
apply_prefix = 0 apply_prefix = 0
new_item = new /obj/item/weapon/katana(src.loc) new_item = new /obj/item/weapon/katana(src.loc)
new_item.force = 10
item_type = new_item.name item_type = new_item.name
if(26) if(26)
//energy gun //energy gun

View File

@@ -18,26 +18,23 @@ obj/machinery/anomaly/accelerator/ScanResults()
num_reagents++ num_reagents++
if(num_reagents == 2 && scanned_sample && carrier_name) if(num_reagents == 2 && scanned_sample && carrier_name)
var/accuracy = GetResultSpecifity(scanned_sample, carrier_name) var/specifity = GetResultSpecifity(scanned_sample, carrier_name)
accuracy += 0.5 * (1 - accuracy) / scanned_sample.total_spread results = "Kinetic acceleration of carrier ([carrier_name]) indicates age ([100 * specifity]% accuracy): <br><br>"
if(!accuracy)
accuracy = rand(0.01, 0.5)
results = "Kinetic acceleration of carrier ([carrier_name]) indicates age ([100 * accuracy]% accuracy): <br><br>"
if(scanned_sample.age_billion) if(scanned_sample.age_billion)
var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - specifity) * (2 * rand() - 1)), 0)
var/displayed_age_billions = scanned_sample.age_billion + max(scanned_sample.age_billion * ((1 - accuracy) * (2 * rand() - 1)), 0) var/displayed_age_billions = scanned_sample.age_billion + max(scanned_sample.age_billion * ((1 - specifity) * (2 * rand() - 1)), 0)
results += "[displayed_age_billions + displayed_age_millions / 1000] billion years.<br>" results += "[displayed_age_billions + displayed_age_millions / 1000] billion years.<br>"
else if(scanned_sample.age_million) else if(scanned_sample.age_million)
var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age_thousand * ((1 - accuracy) * (4 * rand() - 2)), 0) var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age_thousand * ((1 - specifity) * (4 * rand() - 2)), 0)
var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - specifity) * (2 * rand() - 1)), 0)
results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.<br>" results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.<br>"
else if(scanned_sample.age_thousand) else if(scanned_sample.age_thousand)
var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - accuracy) * (8 * rand() - 4)), 0) var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - specifity) * (8 * rand() - 4)), 0)
var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age * ((1 - accuracy) * (4 * rand() - 2)), 0) var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age * ((1 - specifity) * (4 * rand() - 2)), 0)
results += "[displayed_age_thousands + displayed_age / 1000] thousand years.<br>" results += "[displayed_age_thousands + displayed_age / 1000] thousand years.<br>"
else else
var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - accuracy) * (8 * rand() - 4)), 0) var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - specifity) * (8 * rand() - 4)), 0)
results += "[displayed_age] years.<br>" results += "[displayed_age] years.<br>"
results += "<br>Warning, results only valid for ages on the scale of billions of years." results += "<br>Warning, results only valid for ages on the scale of billions of years."

View File

@@ -110,7 +110,7 @@
dat += "Scan in progress<br><br><br>" dat += "Scan in progress<br><br><br>"
else else
dat += "[held_container ? "<A href='?src=\ref[src];eject_beaker=1'>Eject beaker</a>" : "No beaker inserted."]<br>" dat += "[held_container ? "<A href='?src=\ref[src];eject_beaker=1'>Eject beaker</a>" : "No beaker inserted."]<br>"
dat += "[fuel_container ? "<A href='?src=\ref[src];eject_fuel=1'>Eject fuel tank</a>" : "No fuel tank inserted."]<br>" //dat += "[fuel_container ? "<A href='?src=\ref[src];eject_fuel=1'>Eject fuel tank</a>" : "No fuel tank inserted."]<br>"
dat += "[held_container ? "<A href='?src=\ref[src];begin=1'>Begin scanning</a>" : ""]" dat += "[held_container ? "<A href='?src=\ref[src];begin=1'>Begin scanning</a>" : ""]"
dat += "<hr>" dat += "<hr>"
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</a><BR>" dat += "<A href='?src=\ref[src];refresh=1'>Refresh</a><BR>"
@@ -130,7 +130,7 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
held_container.loc = src held_container.loc = src
updateDialog() updateDialog()
else if(istype(W, /obj/item/weapon/tank)) /*else if(istype(W, /obj/item/weapon/tank))
//var/obj/item/weapon/reagent_containers/glass/G = W //var/obj/item/weapon/reagent_containers/glass/G = W
if(fuel_container) if(fuel_container)
user << "\red You must remove the [fuel_container] first." user << "\red You must remove the [fuel_container] first."
@@ -139,7 +139,7 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
user.drop_item(W) user.drop_item(W)
fuel_container.loc = src fuel_container.loc = src
fuel_container = W fuel_container = W
updateDialog() updateDialog()*/
else else
return ..() return ..()

View File

@@ -19,16 +19,11 @@ obj/machinery/anomaly/fourier_transform/ScanResults()
if(num_reagents == 2 && scanned_sample && carrier) if(num_reagents == 2 && scanned_sample && carrier)
//all necessary components are present //all necessary components are present
var/accuracy = GetResultSpecifity(scanned_sample, carrier) var/specifity = GetResultSpecifity(scanned_sample, carrier)
var/distance = scanned_sample.artifact_distance var/distance = scanned_sample.artifact_distance
if(distance > 0) if(distance > 0)
if(prob(accuracy))
distance += (2 * rand() - 1) * distance * 0.05 distance += (2 * rand() - 1) * distance * 0.05
accuracy = 0.95 + 0.05 * (2 * rand() - 1) results = "Fourier transform analysis on anomalous energy absorption through carrier ([carrier]) indicates source located inside emission radius ([95 * specifity]% accuracy): [distance]."
else
var/offset = 1 - accuracy
distance += (2 * rand() - 1) * distance * offset
results = "Fourier transform analysis on anomalous energy absorption through carrier ([carrier]) indicates source located inside emission radius ([100 * accuracy]% accuracy): [distance]."
else else
results = "Energy dispersion detected throughout sample consistent with background readings.<br>" results = "Energy dispersion detected throughout sample consistent with background readings.<br>"
if(carrier == scanned_sample.source_mineral) if(carrier == scanned_sample.source_mineral)

View File

@@ -18,16 +18,13 @@ obj/machinery/anomaly/gas_chromatography/ScanResults()
num_reagents++ num_reagents++
if(num_reagents == 2 && scanned_sample) if(num_reagents == 2 && scanned_sample)
var/specifity = GetResultSpecifity(scanned_sample, carrier)
var/specifity = 0.15 results = "Chromatography partitioning analysis over carrier ([carrier]) indicates the following elements present ([100 * specifity]% accuracy):<br><br>"
if(carrier)
specifity = GetResultSpecifity(scanned_sample, carrier)
results = "Chromatography partitioning analysis over carrier ([carrier]) indicates the following elements present ([110 * (specifity / (specifity + 0.1))]% accuracy):<br><br>"
var/num_found = 0 var/num_found = 0
for(var/index=1,index <= scanned_sample.find_presence.len, index++) for(var/index=1,index <= scanned_sample.find_presence.len, index++)
var/find = scanned_sample.find_presence[index] var/find = scanned_sample.find_presence[index]
if(find && prob( 110 * (specifity / (specifity + 0.1)) )) if(find && prob(100 * specifity))
results += " - " + finds_as_strings[index] + "<br>" results += " - " + finds_as_strings[index] + "<br>"
num_found++ num_found++

View File

@@ -32,13 +32,17 @@ obj/machinery/anomaly/hyperspectral/ScanResults()
var/specifity = GetResultSpecifity(scanned_sample, carrier) var/specifity = GetResultSpecifity(scanned_sample, carrier)
results = "Spectral signature over carrier ([carrier]):<br>" results = "Spectral signature over carrier ([carrier]):<br>"
if(specifity <= 0.25) if(specifity <= 0.25)
results += "<img src=\"http://i.imgur.com/TAQHn.jpg\"></img><br>" //results += "<img src=\"http://i.imgur.com/TAQHn.jpg\"></img><br>"
results += "<img src=chart1.jpg>"
else if(specifity <= 0.5) else if(specifity <= 0.5)
results += "<img src=\"http://i.imgur.com/EwOZ7.jpg\"></img><br>" //results += "<img src=\"http://i.imgur.com/EwOZ7.jpg\"></img><br>"
results += "<img src=chart2.jpg>"
else if(specifity <= 0.75) else if(specifity <= 0.75)
results += "<img src=\"http://i.imgur.com/1qCae.jpg\"></img><br>" //results += "<img src=\"http://i.imgur.com/1qCae.jpg\"></img><br>"
results += "<img src=chart3.jpg>"
else else
results += "<img src=\"http://i.imgur.com/9T9nc.jpg\"></img><br>" //results += "<img src=\"http://i.imgur.com/9T9nc.jpg\"></img><br>"
results += "<img src=chart4.jpg>"
results += "<br>" results += "<br>"
if(scanned_sample.artifact_id) if(scanned_sample.artifact_id)

View File

@@ -8,6 +8,7 @@
icon = 'device.dmi' icon = 'device.dmi'
icon_state = "locator" icon_state = "locator"
item_state = "locator" item_state = "locator"
w_class = 2
/obj/item/device/gps/attack_self(var/mob/user as mob) /obj/item/device/gps/attack_self(var/mob/user as mob)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
@@ -18,5 +19,6 @@
desc = "A coiled metallic tape used to check dimensions and lengths." desc = "A coiled metallic tape used to check dimensions and lengths."
icon = 'icons/obj/xenoarchaeology.dmi' icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "measuring" icon_state = "measuring"
w_class = 2
//todo: dig site tape //todo: dig site tape

View File

@@ -22,6 +22,7 @@
var/clearance = 0 var/clearance = 0
var/record_index = 1 var/record_index = 1
var/dissonance_spread = 1 var/dissonance_spread = 1
var/material = "unknown"
/obj/item/device/depth_scanner/proc/scan_atom(var/mob/user, var/atom/A) /obj/item/device/depth_scanner/proc/scan_atom(var/mob/user, var/atom/A)
user.visible_message("\blue [user] scans [A], the air around them humming gently.") user.visible_message("\blue [user] scans [A], the air around them humming gently.")
@@ -34,12 +35,14 @@
D.coords = "[M.x].[rand(0,9)]:[M.y].[rand(0,9)]:[10 * M.z].[rand(0,9)]" D.coords = "[M.x].[rand(0,9)]:[M.y].[rand(0,9)]:[10 * M.z].[rand(0,9)]"
D.time = worldtime2text() D.time = worldtime2text()
D.record_index = positive_locations.len + 1 D.record_index = positive_locations.len + 1
D.material = M.mineralName
//find whichever is closer: find or mineral //find whichever is closer: find or mineral
if(M.finds.len) if(M.finds.len)
var/datum/find/F = M.finds[1] var/datum/find/F = M.finds[1]
D.depth = F.excavation_required * 2 D.depth = F.excavation_required * 2
D.clearance = F.clearance_range * 2 D.clearance = F.clearance_range * 2
D.material = get_responsive_reagent(F.find_type)
if(M.excavation_minerals.len) if(M.excavation_minerals.len)
if(M.excavation_minerals[1] < D.depth) if(M.excavation_minerals[1] < D.depth)
D.depth = M.excavation_minerals[1] D.depth = M.excavation_minerals[1]

View File

@@ -109,7 +109,7 @@
item_state = "syringe_kit" item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
storage_slots = 8 storage_slots = 8
w_class = 4 w_class = 3
can_hold = list("/obj/item/weapon/pickaxe/brush",\ can_hold = list("/obj/item/weapon/pickaxe/brush",\
"/obj/item/weapon/pickaxe/one_pick",\ "/obj/item/weapon/pickaxe/one_pick",\
"/obj/item/weapon/pickaxe/two_pick",\ "/obj/item/weapon/pickaxe/two_pick",\
@@ -118,7 +118,7 @@
"/obj/item/weapon/pickaxe/five_pick",\ "/obj/item/weapon/pickaxe/five_pick",\
"/obj/item/weapon/pickaxe/six_pick",\ "/obj/item/weapon/pickaxe/six_pick",\
"/obj/item/weapon/pickaxe/hand") "/obj/item/weapon/pickaxe/hand")
max_combined_w_class = 20 max_combined_w_class = 11
max_w_class = 4 max_w_class = 4
use_to_pickup = 1 // for picking up broken bulbs, not that most people will try use_to_pickup = 1 // for picking up broken bulbs, not that most people will try

View File

@@ -90,6 +90,7 @@ should be listed in the changelog upon commit though. Thanks. -->
<li class="tweak">Psych office in medbay has been made better looking.</li> <li class="tweak">Psych office in medbay has been made better looking.</li>
</ul> </ul>
</div> </div>
<div class="commit sansserif"> <div class="commit sansserif">
<h2 class="date">24th April 2013</h2> <h2 class="date">24th April 2013</h2>
<h3 class="author">NerdyBoy1104 updated:</h3> <h3 class="author">NerdyBoy1104 updated:</h3>
@@ -101,26 +102,10 @@ should be listed in the changelog upon commit though. Thanks. -->
</div> </div>
<div class="commit sansserif"> <div class="commit sansserif">
<h2 class="date">24th April 2013</h2> <h2 class="date">Spamcat</h2>
<h3 class="author">faux updated:</h3> <h3 class="author">04.05.2013 updated:</h3>
<ul class="changes bgimages16"> <ul class="changes bgimages16">
<li class="imageadd">Mixed Wardrobe Closet now has colored shoes and plaid skirts.</li> <li class="bugfix">Blood type is now saved in character creation menu, no need to edit it manually every round.</li>
<li class="imageadd">Dress uniforms added to the Captain, RD, and HoP wardrobe closets. A uniform jacket has also been added to the Captain's closet. HoS' hat has been re-added to their closet. I do not love the CMO and CE enough to give them anything.</li>
<li class="imageadd">Atheletic closet now has five different swimsuits *for the ladies* in them. If you are a guy, be prepared to be yelled at if you run around like a moron in one of these. Same goes for ladies who run around in shorts with their titties swaying in the space winds.</li>
<li class="imageadd">A set of dispatcher uniforms will spawn in the security closet. These are for playtesting the dispatcher role.</li>
<li class="imageadd">New suit spawns in the laundry room. It's for geezer's only. You're welcome, Book.</li>
<li class="imageadd">Nurse outfit variant, orderly uniform, and first responder jacket will now spawn in the medical wardrobe closet.</li>
<li class="imageadd">A white wedding dress will spawn in the chaplain's closet. There are also several dresses currently only adminspawnable. Admins: Look either under "bride" or "dress." The bride one leads to the colored wedding dresses, and there are some other kinds of dresses under dress.</li>
<li class="tweak">No more luchador masks or boxing gloves or boxing ring. You guys have a swimming pool now, dip in and enjoy it.</li>
<li class="tweak">The meeting hall has been replaced with an awkwardly placed security office meant for prisoner processing.</li>
<li class="tweak">Added a couple more welding goggles to engineering since you guys liked those a lot.</li>
<li class="imageadd">Flasks spawn behind the bar. Only three. Don't fight over them. I don't know how to add them to the bar vending machine otherwise I would have done that instead. Detective, you have your own flask in your office, it's underneath the cigarettes on your desk.</li>
<li class="tweak">Added two canes to the medical storage, for people who have leg injuries and can't walk good and stuff. I do not want to see doctors pretending to be House. These are for patients. Do not make me delete this addition and declare you guys not being able to have nice things.</li>
<li class="tweak">Secondary entance to EVA now directly leads into the medbay hardsuit section. Sorry for any inconviences this will cause. The CMO can now fetch the hardsuits whenever they want.</li>
<li class="tweak">Secondary security hardsuit has been added to the armory. Security members please stop stealing engineer's hardsuits when you guys want to pair up for space travel.</li>
<li class="tweak">Firelocks have been moved around in the main hallways to form really ghetto versions of airlocks.</li>
<li class="tweak">Violin spawns in theatre storage now. I didn't put the piano there though, that was someone else.</li>
<li class="tweak">Psych office in medbay has been made better looking.</li>
</ul> </ul>
</div> </div>
@@ -171,6 +156,15 @@ should be listed in the changelog upon commit though. Thanks. -->
</ul> </ul>
</div> </div>
<div class="commit sansserif">
<h2 class="date">May 14th 2013</h2>
<h3 class="author">Cael_Aislinn updated:</h3>
<ul class="changes bgimages16">
<li class="experiment">Depth scanners can now be used to determine what material archaeological deposits are made of, meaning lab analysis is no longer required.</li>
<li class="tweak">Some useability issues with xenoarchaeology tools have been resolved, and the transit pods cycle automatically now.</li>
</ul>
</div>
<div class="commit sansserif"> <div class="commit sansserif">
<h2 class="date">11 April 2013</h2> <h2 class="date">11 April 2013</h2>
<h3 class="author">SkyMarshal updated:</h3> <h3 class="author">SkyMarshal updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

File diff suppressed because it is too large Load Diff