Merge branch 'master' of github.com:Baystation12/Baystation12 into TGUpdates

Conflicts:
	icons/mob/items_lefthand.dmi
	icons/mob/items_righthand.dmi
This commit is contained in:
Erthilo
2012-07-04 09:00:59 +01:00
55 changed files with 9294 additions and 8699 deletions
+1 -1
View File
@@ -120,7 +120,7 @@ extern "C" DLL_EXPORT const char* recv_message(int n, char *v[])
if(sender.sin_addr.s_addr != addr.sin_addr.s_addr) {
continue; // not our connection, ignore and try again
} else {
return_buffer[rc] = '0'; // 0-terminate the string
return_buffer[rc] = 0; // 0-terminate the string
return return_buffer;
}
}
@@ -209,10 +209,10 @@
external_pressure_bound = between(0, text2num(signal.data["set_external_pressure"]), ONE_ATMOSPHERE*50)
if("adjust_internal_pressure" in signal.data)
internal_pressure_bound = between(0, text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50)
internal_pressure_bound = between(0, internal_pressure_bound + text2num(signal.data["adjust_internal_pressure"]), ONE_ATMOSPHERE*50)
if("adjust_external_pressure" in signal.data)
external_pressure_bound = between(0, text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50)
external_pressure_bound = between(0, external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), ONE_ATMOSPHERE*50)
if("init" in signal.data)
name = signal.data["init"]
@@ -134,6 +134,7 @@
P.name = template.name
P.desc = template.desc
P.icon = template.icon
P.img = template:img
sleep(30)
job_num_copies -= 1
+1 -1
View File
@@ -4,7 +4,7 @@
school = "transmutation"
charge_max = 600
clothes_req = 0
clothes_req = 1
invocation = "GIN'YU CAPAN"
invocation_type = "whisper"
range = 1
+1
View File
@@ -9,5 +9,6 @@
canmove = 0
blinded = 0
anchored = 1 // don't get pushed around
universal_speak = 1 //Ghosts are multi-lingual!
var/mob/corpse = null // observer mode
var/datum/hud/living/carbon/hud = null // hud
+2 -2
View File
@@ -368,7 +368,7 @@
/obj/item/weapon/storage/syringes
name = "syringes"
desc = "A box full of syringes."
desc = "A biohazard alert warning is printed on the box"
desc = "A biohazard alert warning is printed on the box."
icon_state = "syringe"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
@@ -442,7 +442,7 @@
/obj/item/weapon/storage/injectbox
name = "DNA-Injectors"
desc = "This box contains injectors it seems."
desc = "This box contains injectors."
icon_state = "box"
item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
+8 -12
View File
@@ -558,8 +558,8 @@
name = "medical pack"
singular_name = "medical pack"
icon = 'items.dmi'
amount = 10 //To compensate for wounds
max_amount = 10
amount = 5 //To compensate for wounds
max_amount = 5
w_class = 1
throw_speed = 4
throw_range = 20
@@ -571,7 +571,7 @@
singular_name = "roll of gauze"
desc = "A roll of gauze for sealing up wounds."
icon_state = "brutepack"
heal_brute = 1
heal_brute = 7
origin_tech = "biotech=1"
/obj/item/stack/medical/bruise_pack/tajaran
@@ -580,7 +580,7 @@
desc = "A soft leaf that is rubbed on bruises."
icon = 'harvest.dmi'
icon_state = "cabbage"
heal_brute = 1
heal_brute = 7
/obj/item/stack/medical/ointment
name = "ointment"
@@ -588,7 +588,7 @@
gender = PLURAL
singular_name = "ointment"
icon_state = "ointment"
heal_burn = 1
heal_burn = 7
origin_tech = "biotech=1"
/obj/item/stack/medical/ointment/tajaran
@@ -597,27 +597,23 @@
desc = "A cold leaf that is rubbed on burns."
icon = 'harvest.dmi'
icon_state = "ambrosiavulgaris"
heal_burn = 1
heal_burn = 7
/obj/item/stack/medical/advanced/bruise_pack
name = "advanced trauma kit"
singular_name = "advanced trauma kit"
desc = "An advanced trauma kit for severe injuries."
icon_state = "traumakit"
heal_brute = 1
heal_brute = 12
origin_tech = "biotech=1"
amount = 10
max_amount = 10
/obj/item/stack/medical/advanced/ointment
name = "advanced burn kit"
singular_name = "advanced burn kit"
desc = "An advanced treatment kit for severe burns."
icon_state = "burnkit"
heal_burn = 1
heal_burn = 12
origin_tech = "biotech=1"
amount = 10
max_amount = 10
/obj/item/stack/medical/splint
name = "medical splint"
+1 -1
View File
@@ -164,7 +164,7 @@
if ("7")
//feedback_add_details("wizard_spell_learned","MT") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
usr.spell_list += new /obj/effect/proc_holder/spell/targeted/mind_transfer(usr)
src.temp = "This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process."
src.temp = "This spell allows the user to switch bodies with a target, and requires full wizard garb. Careful to not lose your memory in the process."
if ("8")
//feedback_add_details("wizard_spell_learned","FW") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
usr.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/forcewall(usr)
+1 -1
View File
@@ -65,7 +65,7 @@
flag = BOTANIST
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
total_positions = 3
spawn_positions = 2
supervisors = "the head of personnel"
selection_color = "#dddddd"
+2 -2
View File
@@ -76,7 +76,7 @@
flag = ATMOSTECH
department_flag = ENGSEC
faction = "Station"
total_positions = 2
total_positions = 3
spawn_positions = 2
supervisors = "the chief engineer"
selection_color = "#fff5cc"
@@ -106,7 +106,7 @@
flag = ROBOTICIST
department_flag = ENGSEC
faction = "Station"
total_positions = 1
total_positions = 2
spawn_positions = 1
supervisors = "the chief engineer and research director"
selection_color = "#fff5cc"
+4 -4
View File
@@ -76,8 +76,8 @@
flag = CHEMIST
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
total_positions = 2
spawn_positions = 2
supervisors = "the chief medical officer"
selection_color = "#ffeef0"
@@ -101,8 +101,8 @@
flag = GENETICIST
department_flag = MEDSCI
faction = "Station"
total_positions = 1
spawn_positions = 1
total_positions = 2
spawn_positions = 2
supervisors = "the chief medical officer and research director"
selection_color = "#ffeef0"
+47 -10
View File
@@ -209,6 +209,9 @@
/obj/machinery/body_scanconsole/attack_hand(user as mob)
if(..())
return
if(!ishuman(connected.occupant))
user << "\red This device can only scan compatible lifeforms."
return
var/dat
if (src.delete && src.temphtml) //Window in buffer but its just simple message, so nothing
src.delete = src.delete
@@ -216,7 +219,7 @@
dat = text("[]<BR><BR><A href='?src=\ref[];clear=1'>Main Menu</A>", src.temphtml, src)
else
if (src.connected) //Is something connected?
var/mob/living/carbon/occupant = src.connected.occupant
var/mob/living/carbon/human/occupant = src.connected.occupant
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
if (istype(occupant)) //is there REALLY someone in there?
var/t1
@@ -231,34 +234,68 @@
dat += "<font color='red'>This device can only scan human occupants.</FONT>"
else
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
dat += text("<font color='green'>Radiation Level: []%</FONT><BR><BR>", occupant.radiation)
dat += "<table border='1'>"
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())
dat += text("[]\t-Burn Severity %: []</FONT><BR><BR>", (occupant.getFireLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getFireLoss())
dat += text("[]\tRadiation Level %: []</FONT><BR>", (occupant.radiation < 10 ?"<font color='blue'>" : "<font color='red'>"), occupant.radiation)
dat += text("[]\tGenetic Tissue Damage %: []</FONT><BR>", (occupant.getCloneLoss() < 1 ?"<font color='blue'>" : "<font color='red'>"), occupant.getCloneLoss())
dat += text("[]\tApprox. Brain Damage %: []</FONT><BR>", (occupant.getBrainLoss() < 1 ?"<font color='blue'>" : "<font color='red'>"), occupant.getBrainLoss())
dat += text("Paralysis Summary %: [] ([] seconds left!)<BR>", occupant.paralysis, round(occupant.paralysis / 4))
dat += text("Body Temperature: [occupant.bodytemperature-T0C]&deg;C ([occupant.bodytemperature*1.8-459.67]&deg;F)<BR><HR>")
if(occupant.vessel)
var/blood_volume = round(occupant.vessel.get_reagent_amount("blood"))
var/blood_percent = blood_volume / 560
blood_percent *= 100
dat += text("[]\tBlood Level %: [] ([blood_volume] units)</FONT><BR>", (blood_volume > 448 ?"<font color='blue'>" : "<font color='red'>"), blood_volume)
if(occupant.reagents)
dat += text("Inaprovaline units: [] units<BR>", occupant.reagents.get_reagent_amount("inaprovaline"))
dat += text("Soporific (Sleep Toxin): [] units<BR>", occupant.reagents.get_reagent_amount("stoxin"))
dat += text("[]\tDermaline: [] units</FONT><BR>", (occupant.reagents.get_reagent_amount("dermaline") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("dermaline"))
dat += text("[]\tBicaridine: [] units<BR>", (occupant.reagents.get_reagent_amount("bicaridine") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("bicaridine"))
dat += text("[]\tDexalin: [] units<BR>", (occupant.reagents.get_reagent_amount("dexalin") < 30 ? "<font color='black'>" : "<font color='red'>"), occupant.reagents.get_reagent_amount("dexalin"))
for(var/datum/disease/D in occupant.viruses)
if(!D.hidden[SCANNER])
dat += text("<font color='red'><B>Warning: [D.form] Detected</B>\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]</FONT><BR>")
if (occupant.virus2 || occupant.reagents.reagent_list.len > 0)
dat += text("<font color='red'>Warning: Foreign substances detected in bloodstream.</FONT>")
dat += "<HR><table border='1'>"
dat += "<tr>"
dat += "<th>Organ</th>"
dat += "<th>Burn Damage</th>"
dat += "<th>Brute Damage</th>"
dat += "<th>Other Wounds</th>"
dat += "</tr>"
for(var/name in occupant:organs)
var/datum/organ/external/e = occupant:organs[name]
for(var/name in occupant.organs)
var/datum/organ/external/e = occupant.organs[name]
dat += "<tr>"
var/AN = ""
var/open = ""
var/infected = ""
var/imp = ""
var/bled = ""
var/splint = ""
if(e.status & SPLINTED)
splint = "Splinted:"
if(e.status & BLEEDING)
bled = "Bleeding:"
if(e.status & BROKEN)
AN = "[e.broken_description]:"
if(e.open)
open = "OPEN:"
open = "Open:"
if(e.implant && e.implant.len)
imp = "IMPLANT:"
imp = "Implanted:"
if(!AN && !open && !infected & !imp)
AN = "None"
if(!e.status & DESTROYED)
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[bled][AN][open][infected][imp]</td>"
if(!(e.status & DESTROYED))
dat += "<td>[e.display_name]</td><td>[e.burn_dam]</td><td>[e.brute_dam]</td><td>[bled][AN][splint][open][infected][imp]</td>"
else
dat += "<td>[e.display_name]</td><td>-</td><td>-</td><td>Not Found</td>"
dat += "</tr>"
@@ -268,5 +305,5 @@
else
dat = "<font color='red'> Error: No Body Scanner connected.</font>"
dat += text("<BR><BR><A href='?src=\ref[];mach_close=scanconsole'>Close</A>", user)
user << browse(dat, "window=scanconsole;size=500x500")
user << browse(dat, "window=scanconsole;size=430x600")
return
+2
View File
@@ -185,6 +185,8 @@
new/obj/item/nutrient/rh(src.loc)
new/obj/item/nutrient/rh(src.loc)
new/obj/item/nutrient/rh(src.loc)
if("wallet")
new/obj/item/weapon/storage/wallet(src.loc)
if("gloves")
new/obj/item/clothing/gloves/botanic_leather(src.loc)
if("tbelt")
+4 -1
View File
@@ -128,7 +128,10 @@
spawn(30)
src.eject_wait = 0
src.occupant = new /mob/living/carbon/human(src)
if(istajaran(occupant))
src.occupant = new /mob/living/carbon/human/tajaran(src)
else
src.occupant = new /mob/living/carbon/human(src)
occupant:UI = UI // set interface preference
+1 -1
View File
@@ -474,7 +474,7 @@
temp = "Updating local R&D database..."
src.updateUsrDialog()
sleep(30) //only sleep if called by user
for(var/obj/machinery/computer/rdconsole/RDC in get_area(src))
for(var/obj/machinery/computer/rdconsole/RDC in oview(7)) //get_area(src)) is broken due to ULTRALIIIIIGHT
if(!RDC.sync)
continue
for(var/datum/tech/T in RDC.files.known_tech)
+1 -1
View File
@@ -6,7 +6,7 @@
name = "mecha part"
icon = 'mech_construct.dmi'
icon_state = "blank"
w_class = 20
w_class = 5 //I'm pretty sure that's silly.
flags = FPRINT | TABLEPASS | CONDUCT
origin_tech = "programming=2;materials=2"
var/construction_time = 100
+1 -1
View File
@@ -153,7 +153,7 @@ obj/effect/decal/poster/New(var/serial)
desc += " Here to protect and serve... your donuts! A generously proportioned man, he teaches you the value of hiding your snacks."
if(20)
name += " - Tajaran Today, Special #222"
desc += " A controversial front page pinup from NTFashion, banned on numerous stations for it's unreasonably cute depictions."
desc += " A controversial front page pinup from NTFashion, banned on numerous stations for its unreasonably cute depictions."
if(21)
name += " - Respect a Soghun"
desc += " This poster depicts a well dressed looking Soghun receiving a prestigious award. It appears to espouse greater co-operation and harmony between the two races."
+1 -1
View File
@@ -192,7 +192,7 @@
return 0
var/mob/M = loc
if(!M.canmove)
if(!M.canmove && (!M.buckled && M.handcuffed))
return 0
if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) ) )
+2 -2
View File
@@ -114,14 +114,14 @@ MASS SPECTROMETER
else if (M.getBrainLoss() >= 10)
user.show_message(text("\red Significant brain damage detected. Subject may have had a concussion."), 1)
if (M.virus2 || M.reagents.reagent_list.len > 0)
user.show_message(text("\red Unknown substance detected in blood."), 1)
user.show_message(text("\red Foreign substances detected in bloodstream."), 1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
var/limb = e.getDisplayName()
if(e.status & BROKEN)
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!e.status & SPLINTED))
if(((e.name == "l_arm") || (e.name == "r_arm") || (e.name == "l_leg") || (e.name == "r_leg")) && (!(e.status & SPLINTED)))
user << "\red Unsecured fracture in subject [limb]. Splinting recommended for transport."
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
@@ -23,6 +23,9 @@
if (recording)
var/ending = copytext(msg, length(msg))
src.timestamp+= src.timerecorded
if (issilicon(M))
src.storedinfo += "\[[time2text(src.timerecorded*10,"hh:mm:ss")]\] [M.name] states, \"[msg]\""
return
if (M.stuttering)
src.storedinfo += "\[[time2text(src.timerecorded*10,"hh:mm:ss")]\] [M.name] stammers, \"[msg]\""
return
+1 -1
View File
@@ -139,7 +139,7 @@
var/direction = get_dir(src,target)
if(usr.buckled && isobj(usr.buckled) && !usr.buckled.anchored )
if(usr.buckled && istype(usr.buckled, /obj/structure/stool/bed/chair/office) && !usr.buckled.anchored ) //Making only office chairs fire-extinguishable. Because NO FUN ALLOWED
spawn(0)
var/obj/B = usr.buckled
var/movementdirection = turn(direction,180)
+6 -2
View File
@@ -103,7 +103,8 @@
var/n_name = input(usr, "What would you like to label the photo?", "Photo Labelling", src.name) as text
n_name = copytext(n_name, 1, 32)
if ((loc == usr && usr.stat == 0))
//loc.loc check is for making possible renaming photos in clipboards
if (( (src.loc == usr || (src.loc.loc && src.loc.loc == usr)) && usr.stat == 0))
name = "photo[(n_name ? text("- '[n_name]'") : null)]"
add_fingerprint(usr)
return
@@ -203,7 +204,10 @@
y_c--
x_c = x_c - 3
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo( get_turf(src) )
var/obj/item/weapon/photo/P = new/obj/item/weapon/photo()
P.loc = usr.loc
if(!user.get_inactive_hand())
usr.put_in_inactive_hand(P)
var/icon/small_img = icon(temp)
var/icon/ic = icon('items.dmi',"photo")
small_img.Scale(8,8)
+20 -19
View File
@@ -7,10 +7,10 @@ MEDICAL
/obj/item/stack/medical/attack(mob/living/carbon/M as mob, mob/user as mob)
var/heal_cap = 0
var/heal_cap = 50
if(istype(src, /obj/item/stack/medical/advanced))
heal_cap = -50
heal_cap = 0
if (M.stat == 2)
var/t_him = "it"
@@ -51,7 +51,7 @@ MEDICAL
if(!((affecting.name == "l_arm") || (affecting.name == "r_arm") || (affecting.name == "l_leg") || (affecting.name == "r_leg")))
user << "\red You can't apply a splint there!"
return
if(!affecting.status & BROKEN)
if(!(affecting.status & BROKEN))
user << "\red [M]'s [limb] isn't broken!"
return
if(affecting.status & SPLINTED)
@@ -87,25 +87,26 @@ MEDICAL
user << "\red \The [M] is wounded badly, this item cannot help [t_him]!"
return
if (user)
if (M != user)
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
else
var/t_his = "its"
if (user.gender == MALE)
t_his = "his"
else if (user.gender == FEMALE)
t_his = "her"
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
"\red You bandage your [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
use(1)
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
H.UpdateDamageIcon()
if (user)
if (M != user)
user.visible_message("\red \The [H]'s [affecting.display_name] has been bandaged with \a [src] by \the [user].",\
"\red You bandage \the [H]'s [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
else
var/t_his = "its"
if (user.gender == MALE)
t_his = "his"
else if (user.gender == FEMALE)
t_his = "her"
user.visible_message("\red \The [user] bandages [t_his] [affecting.display_name] with \a [src].",\
"\red You bandage your [affecting.display_name] with \the [src].",\
"You hear gauze being ripped.")
use(1)
else
user << "Nothing to patch up!"
H.UpdateDamage()
M.updatehealth()
else
+50 -11
View File
@@ -101,7 +101,8 @@ NOTEBOOK
return
var/n_name = input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text
n_name = copytext(n_name, 1, 32)
if ((src.loc == usr && usr.stat == 0))
//loc.loc check is for making possible renaming papers in clipboards
if ((src.loc == usr || (src.loc.loc && src.loc.loc == usr) && usr.stat == 0))
src.name = n_name && n_name != "" ? n_name : "Untitled paper"
src.add_fingerprint(usr)
return
@@ -633,8 +634,24 @@ NOTEBOOK
var/dat = "<B>Clipboard</B><BR>"
if (src.pen)
dat += text("<A href='?src=\ref[];pen=1'>Remove Pen</A><BR><HR>", src)
for(var/obj/item/weapon/paper/P in src)
dat += text("<A href='?src=\ref[];read=\ref[]'>[]</A> <A href='?src=\ref[];write=\ref[]'>Write</A> <A href='?src=\ref[];remove=\ref[]'>Remove</A><BR>", src, P, P.name, src, P, src, P)
dat += "<table>"
for(var/obj/item/weapon/W in src)
dat += "<tr>"
if (istype(W, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = W
dat += text("<td><A href='?src=\ref[];read=\ref[]'>[]</A></td><td> \
<A href='?src=\ref[];write=\ref[]'>Write</A></td><td> \
<A href='?src=\ref[];rname=\ref[]'>Rename</A></td><td> \
<A href='?src=\ref[];remove=\ref[]'>Remove</A><BR></td>", \
src, P, P.name, src, P, src, P, src, P)
if (istype(W, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = W
dat += text("<td><A href='?src=\ref[];read=\ref[]'>[]</A></td><td> \
<A href='?src=\ref[];rname=\ref[]'>Rename</A></td><td> \
<A href='?src=\ref[];remove=\ref[]'>Remove</A><BR></td>" \
, src, P, P.name, src, P, src, P)
dat += "</tr>"
dat += "</table>"
user << browse(dat, "window=clipboard")
onclose(user, "clipboard")
return
@@ -679,6 +696,16 @@ NOTEBOOK
usr.update_clothing()
P.add_fingerprint(usr)
src.add_fingerprint(usr)
if (href_list["rname"])
var/obj/item/I = locate(href_list["rname"])
if ((I && I.loc == src))
if (istype(I, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = I
P.rename()
if (istype(I, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = I
P.rename()
src.add_fingerprint(usr)
if (href_list["write"])
var/obj/item/P = locate(href_list["write"])
if ((P && P.loc == src))
@@ -692,13 +719,25 @@ NOTEBOOK
P.attackby(src.pen, usr)
src.add_fingerprint(usr)
if (href_list["read"])
var/obj/item/weapon/paper/P = locate(href_list["read"])
if ((P && P.loc == src))
if (!( istype(usr, /mob/living/carbon/human) ))
usr << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", P.name, stars(P.info)), text("window=[]", P.name))
onclose(usr, "[P.name]")
else
usr << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", P.name, P.info), text("window=[]", P.name))
var/obj/item/I = locate(href_list["read"])
if ((I && I.loc == src))
if (istype(I, /obj/item/weapon/paper))
var/obj/item/weapon/paper/P = I
if (!( istype(usr, /mob/living/carbon/human) ))
usr << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", P.name, stars(P.info)), text("window=[]", P.name))
onclose(usr, "[P.name]")
else
var/t = dd_replacetext(P.info, "\n", "<BR>")
usr << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", P.name, t), text("window=[]", P.name))
onclose(usr, "[P.name]")
if (istype(I, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = I
usr << browse_rsc(P.img, "tmp_photo.png")
usr << browse("<html><head><title>Photo</title></head>" \
+ "<body style='overflow:hidden'>" \
+ "<div> <img src='tmp_photo.png' width = '180'" \
+ "[P.scribble ? "<div> Writings on the back:<br><i>[P.scribble]</i>" : ]"\
+ "</body></html>", "window=book;size=200x[P.scribble ? 400 : 200]")
onclose(usr, "[P.name]")
if (ismob(src.loc))
var/mob/M = src.loc
@@ -733,7 +772,7 @@ NOTEBOOK
/obj/item/weapon/clipboard/attackby(obj/item/weapon/P as obj, mob/user as mob)
..()
if (istype(P, /obj/item/weapon/paper))
if (istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo))
if (src.contents.len < 15)
user.drop_item()
P.loc = src
@@ -1242,7 +1242,7 @@ CIRCULAR SAW
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(7)
affecting.status |= OPEN
affecting.open = 1
else
M.take_organ_damage(7)
@@ -1454,7 +1454,8 @@ CIRCULAR SAW
user << "\red You mess up!"
S.take_damage(15)
S.status |= OPEN|BLEEDING
S.status |= BLEEDING
S.open = 1
if(S.display_name == "chest")
H:embryo_op_stage = 1.0
if(S.display_name == "groin")
-7
View File
@@ -1,12 +1,5 @@
/obj/item/weapon/storage/briefcase/New()
..()
new /obj/item/weapon/paper(src)
new /obj/item/weapon/paper(src)
new /obj/item/weapon/paper(src)
new /obj/item/weapon/paper(src)
new /obj/item/weapon/paper(src)
new /obj/item/weapon/paper(src)
new /obj/item/weapon/pen(src)
/obj/item/weapon/storage/briefcase/attack(mob/M as mob, mob/living/user as mob)
//..()
+1 -1
View File
@@ -96,7 +96,7 @@ client/proc/display_admin_reports()
output += "<b>Offense:</b>[N.body]<br>"
output += "<small>Occured at [time2text(N.date,"MM/DD hh:mm:ss")]</small><br>"
output += "<small>authored by <i>[N.author]</i></small><br>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=done;ID=[N.ID]'>Flag as Handled</a>"
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=remove;ID=[N.ID]'>Flag as Handled</a>"
if(src.key == N.author)
output += " <a href='?src=\ref[report_topic_handler];client=\ref[src];action=edit;ID=[N.ID]'>Edit</a>"
output += "<br>"
+269
View File
@@ -305,6 +305,7 @@ This method wont take into account storage items developed in the future and doe
return src.attack_hand(user)
/obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob)
// TODO: Link this up with the supply depot if possible
if(..())
return
user.machine = src
@@ -433,6 +434,7 @@ This method wont take into account storage items developed in the future and doe
return
/obj/machinery/computer/supplycomp/attack_hand(var/mob/user as mob)
// TODO: Link this up with the supply depot if possible
if(!src.allowed(user))
user << "\red Access Denied."
return
@@ -688,3 +690,270 @@ This method wont take into account storage items developed in the future and doe
from.move_contents_to(dest)
supply_shuttle_at_station = !supply_shuttle_at_station
/*
* Supply depot control console
*/
/obj/machinery/supply_depot_console
name = "Supply Depot Console"
icon = 'terminals.dmi'
icon_state = "production_console"
density = 0
anchored = 1
var/id = ""
var/temphtml = null // Store the menu HTML in here
var/obj/machinery/supply_depot/machine = null
var/machinedir = SOUTHWEST
/obj/machinery/supply_depot_console/New()
..()
spawn(7)
src.machine = locate(/obj/machinery/supply_depot, get_step(src, machinedir))
if (machine)
machine.CONSOLE = src
else
del(src)
/obj/machinery/supply_depot_console/attack_hand(user as mob)
var/dat
if (src.temphtml)
dat = src.temphtml
else
dat += "<h3>Raw Materials Storage</h3><table width='100%'>"
dat += "<table><tr><td><b>Material</b></td><td><b>Stored</b></td><td><b>Amount to release</b></td></tr>"
var/canrelease = 0
if (machine.total_material > 0)
// Loop through the items in our inventory
for (var/material in machine.inventory)
var/temp = machine.inventory[material]
if (temp["amt"] > 0)
// Can we press the "release" button?
if (temp["rel"] > 0)
canrelease = 1
// The things I do to make it look good...
dat += "<tr><td>[temp["name"]]</td><td>[temp["amt"]]</td><td><a href='?src=\ref[src];set_release=[material]'>[temp["rel"]]</a> - <a href='?src=\ref[src];release_one=[material]'>Release</a></td></tr>"
else
dat += "<tr><td colspan='3'>No materials loaded.</tr></td>"
dat += text("</table><br>Space remaining: [((machine.MAX_MATERIAL - machine.total_material) < machine.MAX_MATERIAL/10) ? "<font color='red'><b>" : ""][machine.MAX_MATERIAL - machine.total_material][(machine.MAX_MATERIAL - machine.total_material < machine.MAX_MATERIAL/10) ? "</b></font>" : ""]<br>") // Warn the user when we're at 90% capacity
dat += text("Print manifest: <a href='?src=\ref[src];toggle_print=1>'>[machine.print_manifest ? "Yes" : "No"]</a><br><br>")
dat += text("<a href='?src=\ref[src];load=1'>Load material</a><br>")
if (canrelease)
dat += text("<a href='?src=\ref[src];release_all=1'>Release material</a><br>")
user << browse("[dat]", "window=console_stacking_machine")
/obj/machinery/supply_depot_console/Topic(href, href_list)
if (..())
return
usr.machine = src
src.add_fingerprint(usr)
if (href_list["set_release"])
var/material = text2path(href_list["set_release"])
if (machine.inventory[material]["amt"] > 0)
var/release = input("Amount of [lowertext(machine.inventory[material]["name"])] to release (max 500):", "Amount to release", machine.inventory[material]["rel"]) as num
// For sanity's sake, we don't drop more than 10 stacks at a time.
if (release > 500)
release = 500
else if (release < 0)
release = 0
machine.inventory[material]["rel"] = release
// Turn manifests on/off
else if (href_list["toggle_print"])
machine.print_manifest = !machine.print_manifest
// Load materials from the output area
else if (href_list["load"])
machine.load_materials(machine.output.loc)
// Release a single material
else if (href_list["release_one"])
var/material = text2path(href_list["release_one"])
// Can we release it?
if (!machine.total_material) return
if (machine.inventory[material]["amt"] <= 0 || machine.inventory[material]["rel"] <= 0) return
if (machine.spawn_stacks(material, machine.inventory[material]["rel"]))
src.temphtml = "Material released.<br><br>"
src.temphtml += "<a href='?src=\ref[src];main_menu=1'>OK</a>"
else if (href_list["release_all"])
// Do it.
machine.release_materials()
src.temphtml = "Material released[(machine.print_manifest) ? " and shipping manifest printed" : ""].<br><br>"
src.temphtml += "<a href='?src=\ref[src];main_menu=1'>OK</a>"
else if (href_list["main_menu"])
src.temphtml = null
src.updateUsrDialog()
return
/*
* Supply depot machine
*/
/obj/machinery/supply_depot
name = "supply depot"
icon_state = "depot_open"
density = 1
anchored = 1
var/id = ""
var/machine = null
var/obj/machinery/mineral/input = null
var/obj/machinery/mineral/output = null
var/obj/machinery/supply_depot_console/CONSOLE
// TODO: This will eventually incorporate researchable material bins to expand the depot's capacity.
// Until then, let's just give it a reasonably large starting capacity.
// This will probably go down to 2,500 as soon as it can be upgraded to 5k, 7.5k or 10k.
// Or infinite, if research feels like giving cargo a bag of holding, the miserly fucks.
var/MAX_MATERIAL = 5000 // The upper limit of -all- materials in the machine (default 100 stacks of 50)
var/total_material = 0 // The total amount it's holding
var/print_manifest = 1 // Print a manifest when releasing material?
// DEEEEEEERP
var/inventory = list(
/obj/item/stack/sheet/metal = list("name" = "Iron", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/plasteel = list("name" = "Plasteel", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/glass = list("name" = "Glass", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/rglass = list("name" = "Reinforced glass", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/plasma = list("name" = "Solid plasma", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/gold = list("name" = "Gold", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/silver = list("name" = "Silver", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/uranium = list("name" = "Uranium", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/diamond = list("name" = "Diamond", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/clown = list("name" = "Bananium", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/adamantine= list("name" = "Adamantine", "amt" = 0, "rel" = 50),
/obj/item/stack/sheet/mythril = list("name" = "Mythril", "amt" = 0, "rel" = 50)
)
/obj/machinery/supply_depot/New()
..()
spawn(5)
// Find input
for (var/dir in cardinal)
src.input = locate(/obj/machinery/mineral/input, get_step(src, dir))
if (src.input) break
// Find output
for (var/dir in cardinal)
src.output = locate(/obj/machinery/mineral/output, get_step(src, dir))
if (src.output) break
return
return
// Suck up all processable matter from a given location
/obj/machinery/supply_depot/proc/load_materials(loc_in, loc_out)
// If we can get out of doing anything, we do.
if (total_material >= MAX_MATERIAL || !loc_in)
return
var/obj/item/stack/sheet/O
while (locate(/obj/item/stack/sheet, loc_in))
O = locate(/obj/item/stack/sheet, loc_in)
// Do we want it?
if (inventory[O.type])
// Will the entire stack fit?
if (total_material + O.amount <= MAX_MATERIAL)
inventory[O.type]["amt"] += O.amount
total_material += O.amount
update_icon()
del(O)
else
// Nope, max us out and update the item
var/taken = MAX_MATERIAL - total_material
inventory[O.type]["amt"] += taken
total_material = MAX_MATERIAL
O.amount = O.amount - taken
update_icon()
return
else
// We don't. Move it along.
O.loc = loc_out
// Release a given batch of materials
/obj/machinery/supply_depot/proc/release_materials()
// Can we actually release anything in the first place?
if (!src.total_material) return
var/can_release = 0
for (var/material in inventory)
if (inventory[material]["amt"] > 0 && inventory[material]["rel"] > 0)
can_release = 1
if (!can_release) return
// Get us a cargo manifest if applicable...
if (ordernum)
ordernum++
else
ordernum = rand(500,5000)
var/obj/item/weapon/paper/manifest/slip
if (print_manifest)
slip = new /obj/item/weapon/paper/manifest(output.loc)
slip.info = ""
slip.info +="<h3>[command_name()] Internal Shipping Manifest</h3><hr><br>"
slip.info +="Order #: [ordernum]<br>"
slip.info +="CONTENTS:<br><ul>"
// Now actually spawn the items we're releasing and add them to the manifest
for (var/material in inventory)
var/temp = inventory[material]
if (temp["amt"] <= 0 || temp["rel"] <= 0)
continue
// If we're trying to draw more than we have, correct it.
if (temp["rel"] > temp["amt"])
temp["rel"] = temp["amt"]
// WHY THE FUCK DO I DO THESE THINGS
var/obj/item/stack/sheet/M = spawn_stacks(material, temp["rel"])
if (M && print_manifest)
slip.info += "<li>[temp["rel"]] units [M.name]</li>"
// Close up the cargo manifest
if (print_manifest)
slip.info += "</ul><br>CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
slip.loc = output.loc
update_icon()
/obj/machinery/supply_depot/proc/spawn_stacks(material, amount)
if (!material || amount < 1)
return 0
// Decrement our material counts
inventory[material]["amt"] -= amount
total_material -= amount
var/obj/item/stack/sheet/G
// Spawn our stacks
while (amount > 0)
G = new material(output.loc)
G.amount = (amount >= 50) ? 50 : amount
amount -= G.amount
return G
/obj/machinery/supply_depot/process()
if (src.input && src.output)
load_materials(input.loc, output.loc)
/obj/machinery/supply_depot/update_icon()
if (src.total_material >= src.MAX_MATERIAL)
src.icon_state = "depot_closed"
else
icon_state = "depot_open"
+1 -1
View File
@@ -9,7 +9,7 @@
s["enter"] = enter_allowed
s["vote"] = config.allow_vote_mode
s["ai"] = config.allow_ai
s["host"] = host ? host : null
s["host"] = config.hostedby
s["players"] = list()
s["admins"] = 0
var/n = 0
+4
View File
@@ -26,6 +26,10 @@
user << "You are wearing that."
return
if(O in user) //TEMPORARY FIX. It seems trying to put items that are in your hand in the bags breaks them horribly. - Erthilo
user << "You'll need to put the evidence down to properly bag it."
return
if(contents.len)
user << "The [src] already has something inside it."
return ..()
+1 -1
View File
@@ -1448,7 +1448,7 @@ var/global/BSACooldown = 0
special_role_description = "Role: <i>Mind datum missing</i> Antagonist: <i>Mind datum missing</i>; Has been rev: <i>Mind datum missing</i>;"
//Health
health_description = "Oxy: [M.oxyloss] - Tox: [M.toxloss] - Fire: [M.fireloss] - Brute: [M.bruteloss] - Clone: [M.cloneloss] - Brain: [M.brainloss]"
health_description = "Oxy: [M.getOxyLoss()] - Tox: [M.getToxLoss()] - Fire: [M:getFireLoss()] - Brute: [M:getBruteLoss()] - Clone: [M.getCloneLoss()] - Brain: [M.getBrainLoss()]"
src.owner << "<b>Info about [M.name]:</b> "
src.owner << "Mob type = [M.type]; Damage = [health_description]"
+3 -2
View File
@@ -878,8 +878,9 @@
verbs -= /client/proc/hide_most_verbs
verbs += /client/proc/show_verbs
verbs += /client/proc/deadchat //toggles deadchat
verbs += /obj/admins/proc/toggleooc //toggle ooc
if(holder.level > 0)
verbs += /client/proc/deadchat //toggles deadchat
verbs += /obj/admins/proc/toggleooc //toggle ooc
verbs += /client/proc/cmd_admin_say//asay
verbs += /client/proc/cmd_mod_say//asay
// feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+19
View File
@@ -158,6 +158,7 @@
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
new /obj/item/weapon/reagent_containers/pill/fluff/listermed( src )
/obj/item/weapon/reagent_containers/pill/fluff/listermed
name = "anti-depressant pill"
desc = "Used to deal with depression."
@@ -167,6 +168,18 @@
reagents.add_reagent("stoxin", 5)
reagents.add_reagent("sugar", 10)
reagents.add_reagent("ethanol", 5)
/obj/item/clothing/mask/fluff/electriccig //CubeJackal: Barry Sharke
name = "Electronic cigarette"
desc = "An electronic cigarette. Most of the relief of a real cigarette with none of the side effects. Often used by smokers who are trying to quit the habit."
icon = 'custom_items.dmi'
icon_state = "cigon"
throw_speed = 0.5
item_state = "ciglit"
w_class = 1
body_parts_covered = null
flags = FPRINT|TABLEPASS
//////////////////////////////////
//////////// Clothing ////////////
//////////////////////////////////
@@ -261,6 +274,12 @@
item_state = "leatherjack"
color = "leatherjack"
/obj/item/clothing/suit/storage/labcoat/fluff/burnt //Jamini: Edwin Atweeke
name = "burnt labcoat"
desc = "This lab coat has clearly seen better, less burnt, days."
icon = 'custom_items.dmi'
icon_state = "labcoat_burnt_open"
//////////// Uniforms ////////////
/obj/item/clothing/under/fluff/jumpsuitdown //searif: Yuki Matsuda
@@ -34,8 +34,6 @@
var/t_is = "is"
var/msg = "<span class='info'>*---------*\nThis is "
if(src.icon)
msg += "\icon[src.icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
switch(get_visible_gender())
if(MALE)
@@ -292,7 +290,7 @@
if(21 to INFINITY)
wound_flavor_text["[temp.display_name]"] += pick(" a lot of burns"," severe melting")
wound_flavor_text["[temp.display_name]"] += "!</span>\n"
else if(temp.wound_descs)
else if(temp.wound_descs.len)
var/list/wound_descriptors = list()
for(var/time in temp.wound_descs)
for(var/wound in temp.wound_descs[time])
+5 -5
View File
@@ -947,7 +947,7 @@
emote("scream")
else if(E.name == "l_leg" || E.name == "l_foot" \
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
if(!E.status & SPLINTED)
if(!(E.status & SPLINTED))
leg_tally-- // let it fail even if just foot&leg
// can't stand
if(leg_tally == 0 && !paralysis && !(lying || resting))
@@ -1048,11 +1048,11 @@
stat = 1
if (sleeping > 0)
if(stat == 0)
// BUG: this doesn't seem to happen ever.. probably when you hit sleep willingly,
// it automatically adjusts your stat without calling this proc
if(stat == 0 && !resting)
// BUG: this doesn't seem to happen ever.. probably when you hit sleep willingly,
// it automatically adjusts your stat without calling this proc
// show them a message so they know what's going on
// show them a message so they know what's going on
src << "\blue You feel very drowsy.. Your eyelids become heavy..."
handle_dreams()
@@ -450,7 +450,7 @@
emote("scream")
else if(E.name == "l_leg" || E.name == "l_foot" \
|| E.name == "r_leg" || E.name == "r_foot" && !lying)
if(!E.status & SPLINTED)
if(!(E.status & SPLINTED))
leg_tally-- // let it fail even if just foot&leg
// can't stand
+6
View File
@@ -70,6 +70,12 @@
M.show_message(rendered_a, 2)
else//If they do not.
M.show_message(rendered_b, 2)
for (var/obj/item/device/taperecorder/O in range(T, 7)) //Puree hack for tap recorder
spawn (0)
if(O && !istype(O.loc, /obj/item/weapon/storage))
O.hear_talk(src, message_a)
/*Radios "filter out" this conversation channel so we don't need to account for them.
This is another way of saying that we won't bother dealing with them.*/
else
+1 -1
View File
@@ -687,7 +687,7 @@
if(H.health - H.halloss <= config.health_threshold_crit)
for(var/name in H.organs)
var/datum/organ/external/e = H.organs[name]
if((H.lying) && ((e.status & BROKEN && !e.status & SPLINTED) || e.status & BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
if((H.lying) && ((e.status & BROKEN && !(e.status & SPLINTED)) || e.status & BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100))
return 1
break
return 0
@@ -753,17 +753,23 @@ datum/preferences
if("input")
var/list/new_species = list("Human")
var/prev_species = species
var/whitelisted = 0
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
if(is_alien_whitelisted(user, "Soghun")) //Check for Soghun and admins
new_species += "Soghun"
whitelisted = 1
if(is_alien_whitelisted(user, "Tajaran")) //Check for Tajaran and admins
new_species += "Tajaran"
whitelisted = 1
if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins
new_species += "Skrell"
whitelisted = 1
else //Not using the whitelist? Aliens for everyone!
new_species += "Tajaran"
new_species += "Soghun"
new_species += "Skrell"
if(!whitelisted)
alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
species = input("Please select a species", "Character Generation", null) in new_species
if(prev_species != species)
h_style = "Bald" //Try not to carry face/head hair over.
+4 -4
View File
@@ -55,6 +55,10 @@
if(!text)
return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
var/ending = copytext(text, length(text))
if (is_speaking_soghun)
return "hisses, \"[text]\"";
if (is_speaking_skrell)
return "warbles, \"[text]\"";
if (src.disease_symptoms & DISEASE_HOARSE)
return "rasps, \"[text]\"";
if (src.stuttering)
@@ -67,10 +71,6 @@
return "asks, \"[text]\"";
if (ending == "!")
return "exclaims, \"[text]\"";
if (is_speaking_soghun)
return "hisses, \"[text]\"";
if (is_speaking_skrell)
return "warbles, \"[text]\"";
return "says, \"[text]\"";
+50 -5
View File
@@ -238,11 +238,56 @@
return "[emote], \"[text]\""
return "says, \"[text]\"";
/mob/living/simple_animal/emote(var/act)
if(act)
if(act == "scream") act = "makes a loud and pained whimper" //ugly hack to stop animals screaming when crushed :P
for (var/mob/O in viewers(src, null))
O.show_message("<B>[src]</B> [act].")
/mob/living/simple_animal/emote(var/act,var/m_type=1,var/message = null)
switch(act)
if ("scream")
message = "<B>[src]</B> screams!"
m_type = 2
if ("custom")
var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN)
if (!input)
return
var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable")
if (input2 == "Visible")
m_type = 1
else if (input2 == "Hearable")
m_type = 2
else
alert("Unable to use this emote, must be either hearable or visible.")
return
message = "<B>[src]</B> [input]"
if ("me")
if(silent)
return
if (src.client && (client.muted || client.muted_complete))
src << "You are muted."
return
if (stat)
return
if(!(message))
return
else
if(cmptext(copytext(message, 1, 3), "v "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 1
else if(cmptext(copytext(message, 1, 3), "h "))
message = "<B>[src]</B> [copytext(message, 3)]"
m_type = 2
else
message = "<B>[src]</B> [message]"
else
src << text("Invalid Emote: []", act)
if ((message && src.stat == 0))
if (m_type & 1)
for(var/mob/O in viewers(src, null))
O.show_message(message, m_type)
else
for(var/mob/O in hearers(src, null))
O.show_message(message, m_type)
return
/mob/living/simple_animal/attack_animal(mob/living/simple_animal/M as mob)
+1 -1
View File
@@ -127,7 +127,7 @@
var/oldlum = luminosity
//luminosity = on * brightness
ul_SetLuminosity(on * brightness, on * brightness, fitting != "bulb" ? on * brightness : max(on * (brightness - 2), 0) ) // *DAL*
ul_SetLuminosity(on * brightness, on * brightness, fitting != "bulb" ? on * brightness : max(on * (brightness - 1), 0) ) // *DAL*
// if the state changed, inc the switching counter
if(oldlum != luminosity)
+9 -1
View File
@@ -219,6 +219,10 @@
O.loc = P
amount -= 1
P.w_class = O.w_class
if(O.w_class > 5.0)
P.w_class = 5.0
if(O.w_class < 1.0)
P.w_class = 1.0
P.icon_state = "deliverycrate[P.w_class]"
var/t
switch(P.w_class)
@@ -232,9 +236,13 @@
t = "bulky"
if(5.0)
t = "huge"
if(P.w_class < 1.0)
t = "tiny"
if(P.w_class > 5.0)
t = "huge"
P.name = "[t] package"
user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\
"\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\
"\blue You wrap \the [target], leaving [amount] units of paper on \the [src].",\
"You hear someone taping paper around a small object.")
else if (istype(target, /obj/structure/closet/crate))
var/obj/structure/closet/crate/O = target
+4 -2
View File
@@ -5,9 +5,10 @@ cacophony - Retired Admin
cajoes - Game Admin
cib - Game Master
compactninja - Game Master
duntadaman - Game Admin
dysthymia - Retired Admin
doughnuts - Game Admin
erthilo - Game Admin
erthilo - Game Master
hawkv3 - Game Master
headswe - Game Master
iaryni - Game Master
@@ -19,7 +20,8 @@ misterfox - Game Admin
mloc - Game Master
ridley4 - Game Admin
skymarshal - Game Master
spaceman96 - Game Admin
spaceman96 - Admin Observer
strumpetplaya - Retired Admin
tastyfish - Game Master
uristqwerty - Game Master
wrongnumber - Game Admin
+8
View File
@@ -1,14 +1,22 @@
botanistpower - Tajaran
bowlsoldier - Tajaran
bluefishie - Skrell
deciusreln - Skrell
densane - Skrell
dopeghoti - Tajaran
duntadaman - Skrell
fenrisian - Tajaran
firefishie - Skrell
forsamori - Tajaran
forsamori - Soghun
galenus - Soghun
masterofstuff - Skrell
mangled - Skrell
searif - Soghun
searif - Tajaran
searif - Skrell
spaceman96 - Tajaran
spaceman96 - Soghun
spaceman96 - Skrell
sparklysheep - Skrell
watermelonstorm - Tajaran
+3 -1
View File
@@ -38,4 +38,6 @@ themij: Taryn Kifer: /obj/item/clothing/head/helmet/greenbandana/fluff/taryn_kif
tzefa: Wes Solari: /obj/item/fluff/wes_solari_1
vinceluk: Seth Sealis: /obj/item/clothing/suit/storage/det_suit/fluff/graycoat
whitellama: Ethan Way: /obj/item/fluff/ethan_way_1
whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1
whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1
jamini: Edwin Atweeke: /obj/item/clothing/suit/storage/labcoat/fluff/burnt
cubejackal: Barry Sharke: /obj/item/clothing/mask/fluff/electriccig
+5 -1
View File
@@ -5,4 +5,8 @@ dakonic
themij
sparklysheep
botanistpower
asanadas
asanadas
deusdactyl
densane
bowlsoldier
fenrisian
+42
View File
@@ -57,6 +57,40 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">29 June 2012</h2>
<h3 class="author">Erthilo updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Raises job limits for Botanists, Atmospheric Technicnians, Roboticists, Chemists, and Geneticists.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">28 June 2012</h2>
<h3 class="author">Chinsky updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">'Rename' function for clipboards</li>
<li class="rscadd">Can add photos to clipboards</li>
<li class="bugfix">Fixed troubles with formatting when reading from clipboard (linebreaks not being properly placed)</li>
<li class="bugfix">Fixed photocopiers not copying photos properly</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">27 June 2012</h2>
<h3 class="author">Erthilo updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Simple animals (like constructs) can properly emote using the Me verb now.</li>
<li class="rscadd">Body scanners now show a much more detailed readout on patients.</li>
<li class="tweak">Wizard 'Mind Transfer' spell now requires full wizard garb to work.</li>
<li class="tweak">Chairs without wheel will no longer move with fire extinguishers. BECAUSE I HATE FUN.</li>
<li class="tweak">Gauze/kits/ointment now heal wounds instantly again. Gauze and ointment don't work below 50 health, advanced kits don't work below 0. This may be tweaked as necessary in future.</li>
<li class="rscdel">Stepping in pools of blood no longer leaves footprints due to lag issues.</li>
<li class="bugfix">Fixed batons hitting on all non-help intents. It'll now only do it on harm intent.</li>
<li class="bugfix">Fixed tape recorders not recording holopad speech.</li>
<li class="bugfix">Fixed random " on his head" messages in examine.</li>
<li class="bugfix">Fixed surgery, all surgical procedures should work again.</li>
<li class="bugfix">Fixes medical items. Gauze/kits/ointment can now be applied correctly again.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">26 June 2012</h2>
<h3 class="author">TG updated:</h3>
@@ -79,6 +113,14 @@ should be listed in the changelog upon commit though. Thanks. -->
<li class="tweak">Blood is now actually lost from the person being dragged.</li>
<li class="bugfix">Fixed CPR being performed at weird health levels.</li>
</ul>
<h3 class="author">Watermelon Storm updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added a medbay (with rolling beds) and a holding cell to the destination of the escape shuttle.</li>
</ul>
<h3 class="author">Drieden updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">The cargo bay now has a supply depot to store, sort, and dispense raw materials, and print shipping manifests.</li>
</ul>
</div>
<div class="commit sansserif">
Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

+8684 -8584
View File
File diff suppressed because it is too large Load Diff