diff --git a/code/defines/mob/living/silicon/robot.dm b/code/defines/mob/living/silicon/robot.dm
index f288e30c02d..c65ae490386 100644
--- a/code/defines/mob/living/silicon/robot.dm
+++ b/code/defines/mob/living/silicon/robot.dm
@@ -56,4 +56,7 @@
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
var/channels = list()
- var/modlock = 0
\ No newline at end of file
+ var/modlock = 0
+
+ var/lawcheck[1] //For stating laws!
+ var/ioncheck[1]
\ No newline at end of file
diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm
index 67459f8f934..a6f20a1ba69 100644
--- a/code/defines/obj/storage.dm
+++ b/code/defines/obj/storage.dm
@@ -657,3 +657,8 @@
name = "security satchel"
desc = "A robust satchel for security related needs."
icon_state = "satchel-sec"
+
+/obj/item/weapon/storage/backpack/satchel_hyd
+ name = "hydroponics satchel"
+ desc = "A green satchel for plant related work."
+ icon_state = "satchel_hyd"
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index aa294a16ce5..8e2e98b362b 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -71,6 +71,9 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
+ if(H.backbag == 2) H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
+ if(H.backbag == 3) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel(H), H.slot_back)
+ if(H.backbag == 4) H.equip_if_possible(new /obj/item/weapon/storage/backpack/satchel_hyd(H), H.slot_back)
H.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(H), H.slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
H.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(H), H.slot_gloves)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index c7035736f6d..56b5e8c1af5 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -481,7 +481,7 @@
var/counter = 1
while(src.active2.fields[text("com_[]", counter)])
counter++
- src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2053 []", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
+ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2556 []", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
if (href_list["del_c"])
if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 479e8edf240..7cc8685c261 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -328,7 +328,7 @@ What a mess.*/
var/counter = 1
while(active2.fields[text("com_[]", counter)])
counter++
- active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2053 []", authenticated, rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
+ active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2556 []", authenticated, rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
if ("Delete Record (ALL)")
if (active1)
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index b516adc80ce..09a5e9e2523 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -67,6 +67,14 @@
item_state = "jumpsuitdown"
color = "jumpsuitdown"
+/obj/item/clothing/under/fluff/olddressuniform
+ name = "retired dress uniform"
+ desc = "A retired Station Head of Staff uniform, phased out twenty years ago for the newer jumpsuit design, but still acceptable dress. Lovingly maintained."
+ icon = 'custom_items.dmi'
+ icon_state = "olddressuniform"
+ item_state = "olddressuniform"
+ color = "olddressuniform"
+
//////////// Useable Items
/obj/item/weapon/pen/fluff/multi
@@ -101,6 +109,13 @@
icon = 'custom_items.dmi'
icon_state = "maye_daye_1"
+/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1
+ name = "vintage thermos"
+ desc = "An older thermos with a faint shine."
+ icon = 'custom_items.dmi'
+ icon_state = "johann_erzatz_1"
+ volume = 50
+
//////////// Misc Items
/obj/item/fluff/wes_solari_1
diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm
index e7f4904ede4..5afa42ee14b 100644
--- a/code/modules/mob/living/silicon/robot/laws.dm
+++ b/code/modules/mob/living/silicon/robot/laws.dm
@@ -93,4 +93,97 @@
/mob/living/silicon/robot/proc/clear_ion_laws()
laws_sanity_check()
- laws.clear_ion_laws()
\ No newline at end of file
+ laws.clear_ion_laws()
+
+/mob/living/silicon/robot/proc/statelaws() // -- TLE
+// set category = "AI Commands"
+// set name = "State Laws"
+ src.say("Current Active Laws:")
+ //src.laws_sanity_check()
+ //src.laws.show_laws(world)
+ var/number = 1
+ sleep(10)
+
+
+
+ if (src.laws.zeroth)
+ if (src.lawcheck[1] == "Yes") //This line and the similar lines below make sure you don't state a law unless you want to. --NeoFite
+ src.say("0. [src.laws.zeroth]")
+ sleep(10)
+
+ for (var/index = 1, index <= src.laws.ion.len, index++)
+ var/law = src.laws.ion[index]
+ var/num = ionnum()
+ if (length(law) > 0)
+ if (src.ioncheck[index] == "Yes")
+ src.say("[num]. [law]")
+ sleep(10)
+
+ for (var/index = 1, index <= src.laws.inherent.len, index++)
+ var/law = src.laws.inherent[index]
+
+ if (length(law) > 0)
+ if (src.lawcheck[index+1] == "Yes")
+ src.say("[number]. [law]")
+ sleep(10)
+ number++
+
+
+ for (var/index = 1, index <= src.laws.supplied.len, index++)
+ var/law = src.laws.supplied[index]
+
+ if (length(law) > 0)
+ if(src.lawcheck.len >= number+1)
+ if (src.lawcheck[number+1] == "Yes")
+ src.say("[number]. [law]")
+ sleep(10)
+ number++
+
+
+/mob/living/silicon/robot/verb/checklaws() //Gives you a link-driven interface for deciding what laws the statelaws() proc will share with the crew. --NeoFite
+ set category = "Robot Commands"
+ set name = "State Laws"
+
+ var/list = "Which laws do you want to include when stating them for the crew?
"
+
+
+
+ if (src.laws.zeroth)
+ if (!src.lawcheck[1])
+ src.lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite
+ list += {"[src.lawcheck[1]] 0: [src.laws.zeroth] "}
+
+ for (var/index = 1, index <= src.laws.ion.len, index++)
+ var/law = src.laws.ion[index]
+
+ if (length(law) > 0)
+
+
+ if (!src.ioncheck[index])
+ src.ioncheck[index] = "Yes"
+ list += {"[src.ioncheck[index]] [ionnum()]: [law] "}
+ src.ioncheck.len += 1
+
+ var/number = 1
+ for (var/index = 1, index <= src.laws.inherent.len, index++)
+ var/law = src.laws.inherent[index]
+
+ if (length(law) > 0)
+ src.lawcheck.len += 1
+
+ if (!src.lawcheck[number+1])
+ src.lawcheck[number+1] = "Yes"
+ list += {"[src.lawcheck[number+1]] [number]: [law] "}
+ number++
+
+ for (var/index = 1, index <= src.laws.supplied.len, index++)
+ var/law = src.laws.supplied[index]
+ if (length(law) > 0)
+ src.lawcheck.len += 1
+ if (!src.lawcheck[number+1])
+ src.lawcheck[number+1] = "Yes"
+ list += {"[src.lawcheck[number+1]] [number]: [law] "}
+ number++
+ list += {"
State Laws"}
+
+ usr << browse(list, "window=laws")
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index be090aaa13f..13a2c20ded1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -207,6 +207,20 @@
viewalerts = 1
src << browse(dat, "window=robotalerts&can_close=0")
+/mob/living/silicon/robot/proc/ai_roster()
+ set category = "Robot Commands"
+ set name = "Show Crew Manifest"
+
+ var/dat = "
Crew RosterCrew Roster:
"
+
+ for (var/datum/data/record/t in data_core.general)
+ dat += "[t.fields["name"]] - [t.fields["rank"]] "
+
+ dat += ""
+
+ src << browse(dat, "window=airoster")
+ onclose(src, "airoster")
+
/mob/living/silicon/robot/blob_act()
if (stat != 2)
adjustBruteLoss(60)
@@ -937,6 +951,26 @@
else
src << "Module isn't activated"
installed_modules()
+
+ if (href_list["lawc"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite
+ var/L = text2num(href_list["lawc"])
+ switch(lawcheck[L+1])
+ if ("Yes") lawcheck[L+1] = "No"
+ if ("No") lawcheck[L+1] = "Yes"
+// src << text ("Switching Law [L]'s report status to []", lawcheck[L+1])
+ checklaws()
+
+ if (href_list["lawi"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite
+ var/L = text2num(href_list["lawi"])
+ switch(ioncheck[L])
+ if ("Yes") ioncheck[L] = "No"
+ if ("No") ioncheck[L] = "Yes"
+// src << text ("Switching Law [L]'s report status to []", lawcheck[L+1])
+ checklaws()
+
+ if (href_list["laws"]) // With how my law selection code works, I changed statelaws from a verb to a proc, and call it through my law selection panel. --NeoFite
+ statelaws()
+
return
/mob/living/silicon/robot/proc/uneq_active()
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index c9e4dbd35ab..3d4ca7661d2 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -212,6 +212,8 @@
O << "To use something, simply click or double-click it."
O << {"Use say ":s to speak to fellow cyborgs and the AI through binary."}
+ O.verbs += /mob/living/silicon/robot/proc/ai_roster
+
O.job = "Cyborg"
O.mmi = new /obj/item/device/mmi(O)
@@ -412,4 +414,4 @@
del(src)
- return O
+ return O
diff --git a/code/unused/computer2/med_rec.dm b/code/unused/computer2/med_rec.dm
index 8cb06a40c28..c4a4e2245df 100644
--- a/code/unused/computer2/med_rec.dm
+++ b/code/unused/computer2/med_rec.dm
@@ -409,7 +409,7 @@
var/counter = 1
while(src.active2.fields[text("com_[]", counter)])
counter++
- src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2053 []", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
+ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2556 []", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
if (href_list["del_c"])
if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
diff --git a/config/custom_items.txt b/config/custom_items.txt
index 744eabb8733..b5c1ac10406 100644
--- a/config/custom_items.txt
+++ b/config/custom_items.txt
@@ -19,4 +19,6 @@ lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote
lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote
orangebottle: Lillian Levett: /obj/item/weapon/pen/fluff/fancypen
orangebottle: Lilliana Reade: /obj/item/weapon/pen/fluff/fancypen
-deusdactyl: Roger Wiles: /obj/item/clothing/under/rank/virologist/fluff/cdc_jumpsuit, /obj/item/clothing/suit/storage/labcoat/fluff/cdc_labcoat
\ No newline at end of file
+deusdactyl: Roger Wiles: /obj/item/clothing/under/rank/virologist/fluff/cdc_jumpsuit, /obj/item/clothing/suit/storage/labcoat/fluff/cdc_labcoat
+desiderium: Momiji Inubashiri: /obj/item/clothing/under/fluff/olddressuniform
+leonheart11: Johann Erzatz: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1
\ No newline at end of file
diff --git a/html/archivedchangelog.html b/html/archivedchangelog.html
new file mode 100644
index 00000000000..6c80d65c641
--- /dev/null
+++ b/html/archivedchangelog.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/html/bug-minus.png b/html/bug-minus.png
new file mode 100644
index 00000000000..9934db406b1
Binary files /dev/null and b/html/bug-minus.png differ
diff --git a/html/burn-exclamation.png b/html/burn-exclamation.png
new file mode 100644
index 00000000000..b2a4f670a86
Binary files /dev/null and b/html/burn-exclamation.png differ
diff --git a/html/changelog.html b/html/changelog.html
index e17e91684fb..855e307feea 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -1,13 +1,26 @@
- /tg/ Station 13 Changelog
+ Baystation 12 Changelog
-
+
+
@@ -24,7 +37,31 @@
-
+
+
+
+
+
+
+
30th April 2012
+
Erthilo updated:
+
+
Switched to /tg/'s changelog format! Previous updates can be found here: http://baystation12.net/wiki/index.php/Changelog
+
New green alt satchel for Botanists.
+
Cyborgs can now view crew manifest and also state laws.
+
New ATM sprites.
+
Changes year to 2556 on medical/security records.
+
+
+
+
/tg/ station 13 Development Team
diff --git a/html/changelog.js b/html/changelog.js
new file mode 100644
index 00000000000..4146d0f094e
--- /dev/null
+++ b/html/changelog.js
@@ -0,0 +1,87 @@
+/*
+function dropdowns() {
+ var divs = document.getElementsByTagName('div');
+ var headers = new Array();
+ var links = new Array();
+ for(var i=0;i=0) {
+ elem.className = elem.className.replace('visible','hidden');
+ this.className = this.className.replace('open','closed');
+ }
+ else {
+ elem.className = elem.className.replace('hidden','visible');
+ this.className = this.className.replace('closed','open');
+ }
+ return false;
+ }
+ })(links[i]);
+ }
+ }
+}
+*/
+/*
+function filterchanges(type){
+ var lists = document.getElementsByTagName('ul');
+ for(var i in lists){
+ if(lists[i].className && lists[i].className.search('changes')>=0) {
+ for(var j in lists[i].childNodes){
+ if(lists[i].childNodes[j].nodeType == 1){
+ if(!type){
+ lists[i].childNodes[j].style.display = 'block';
+ }
+ else if(lists[i].childNodes[j].className!=type) {
+ lists[i].childNodes[j].style.display = 'none';
+ }
+ else {
+ lists[i].childNodes[j].style.display = 'block';
+ }
+ }
+ }
+ }
+ }
+}
+*/
+function dropdowns() {
+ var drops = $('div.drop');
+ var indrops = $('div.indrop');
+ if(drops.length!=indrops.length){
+ alert("Some coder fucked up with dropdowns");
+ }
+ drops.each(function(index){
+ $(this).toggleClass('closed');
+ $(indrops[index]).hide();
+ $(this).click(function(){
+ $(this).toggleClass('closed');
+ $(this).toggleClass('open');
+ $(indrops[index]).toggle();
+ });
+ });
+}
+
+function filterchanges(type){
+ $('ul.changes li').each(function(){
+ if(!type || $(this).hasClass(type)){
+ $(this).show();
+ }
+ else {
+ $(this).hide();
+ }
+ });
+}
+
+$(document).ready(function(){
+ dropdowns();
+});
\ No newline at end of file
diff --git a/html/chevron-expand.png b/html/chevron-expand.png
new file mode 100644
index 00000000000..f770e33d8ea
Binary files /dev/null and b/html/chevron-expand.png differ
diff --git a/html/chevron.png b/html/chevron.png
new file mode 100644
index 00000000000..b83135b6908
Binary files /dev/null and b/html/chevron.png differ
diff --git a/html/cross-circle.png b/html/cross-circle.png
new file mode 100644
index 00000000000..e6f2d3228b8
Binary files /dev/null and b/html/cross-circle.png differ
diff --git a/html/hard-hat-exclamation.png b/html/hard-hat-exclamation.png
new file mode 100644
index 00000000000..e22eb61b8fe
Binary files /dev/null and b/html/hard-hat-exclamation.png differ
diff --git a/html/image-minus.png b/html/image-minus.png
new file mode 100644
index 00000000000..b2bac2c45ab
Binary files /dev/null and b/html/image-minus.png differ
diff --git a/html/image-plus.png b/html/image-plus.png
new file mode 100644
index 00000000000..308c1ae0a28
Binary files /dev/null and b/html/image-plus.png differ
diff --git a/html/music-minus.png b/html/music-minus.png
new file mode 100644
index 00000000000..1b9478f43e7
Binary files /dev/null and b/html/music-minus.png differ
diff --git a/html/music-plus.png b/html/music-plus.png
new file mode 100644
index 00000000000..ea7f36c6ba3
Binary files /dev/null and b/html/music-plus.png differ
diff --git a/html/spell-check.png b/html/spell-check.png
new file mode 100644
index 00000000000..70b066d12ae
Binary files /dev/null and b/html/spell-check.png differ
diff --git a/html/tick-circle.png b/html/tick-circle.png
new file mode 100644
index 00000000000..bcc4dc24b20
Binary files /dev/null and b/html/tick-circle.png differ
diff --git a/html/wrench-screwdriver.png b/html/wrench-screwdriver.png
new file mode 100644
index 00000000000..1a59de688d5
Binary files /dev/null and b/html/wrench-screwdriver.png differ
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index d2e07918203..7636523d57c 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index 14e84d67326..0674f0abd7b 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index a35fc84e968..0f8bf8278fd 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 9ea045299d4..b3ae61bd778 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index fd13b9499bf..c03545cfefd 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index 1703f6ceb33..bb3e6d1c056 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/icons/obj/terminals.dmi b/icons/obj/terminals.dmi
index 19a7712aec0..816d9fed745 100644
Binary files a/icons/obj/terminals.dmi and b/icons/obj/terminals.dmi differ