diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 773c651..7b90d85 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -344,6 +344,131 @@ var/global/datum/controller/occupations/job_master
unassigned -= player
return 1
+ proc/NBupdate(var/rank)
+ switch(rank)
+ if("Station Engineer")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ïîìîùíèê èíæåíåðà"
+ P.info = "\tÒðåáóåòñß ïîìîùíèê èíæåíåðà. Ïî äàííîìó âîïðîñó îáðàùàéòåñü ê ãëàâíîìó èíæåíåðó èëè äðóãèì ñîòðóäíèêàì îòäåëà èíæåíåðèè."
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Roboticist")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ïîìîùíèê ðîáîòèñòà"
+ P.info = "\t;Òðåáóåòñß ïîìîùíèê ðîáîòèñòà. Ïî äàííîìó âîïðîñó îáðàùàéòåñü â ðîáîòèêó èëè íåïîñðåäñòâåííî ê íà÷àëüíèêó îòäåëà èññëåäîâàíèé."
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ var/obj/item/weapon/paper/PP = new /obj/item/weapon/paper(nBoard.loc)
+ PP.name = "Êèáîðãèçàöèß"
+ PP.info = "\
+ \tÂñå æåëàþùèå ìîãóò ïðîéòè ïðîöåäóðó êèáîðãèçàöèè. Äëß ýòîãî çàïîëíèòå äàííûé áëàíê è îáðàòèòåñü ê ðîáîòèñòó.
\
+
Êîíòðàêò íà êèáåðíåòèçàöèþ
\
+ Èìß,ôàìèëèß:
\
+ Äîëæíîñòü:
\
+ NanoTrasen NSS Exodus
\
+ ß, íèæåïîäïèñàâøèéñß, òåì ñàìûì ñîãëàñèâøèéñß äîáðîâîëüíî ïðîéòè îïåðàöèþ íà ìîçãå ñ öåëüþ êèáåðíåòèçèðîâàòüñß èëè îñâîèòü ÈÈ, ÿ â êóðñå ïîñëåäñòâèé òàêîãî àêòà. ß òàêæå ïîíèìàþ, ÷òî ýòà îïåðàöèß ìîæåò áûòü íåîáðàòèìîé, è ÷òî ìîé òðóäîâîé äîãîâîð áóäåò ðàñòîðãíóò.
\
+ Ïîäïèñü îáúåêòà:
\
+ Ïîäïèñü êàïèòàíà, êîìàíäíîãî îôèöåðà èëè äðóãîãî ãëàâû ñ íàèáîëüøèì ðàíãîì:
\
+ Ïå÷àòü êàïèòàíà, êîìàíäíîãî îôèöåðà èëè äðóãîãî ãëàâû ñ íàèáîëüøèì ðàíãîì:"
+ PP.fields = 4
+ PP.updateinfolinks()
+ PP.update_icon()
+ PP.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ var/obj/item/weapon/paper/PPP = new /obj/item/weapon/paper(nBoard.loc)
+ PPP.name = "Àóãìåíòàöèß"
+ PPP.info = "\
+ \tÂñå æåëàþùèå ìîãóò ïðîéòè ïðîöåäóðó àóãìåíòàöèè. Äëß ýòîãî çàïîëíèòå äàííûé áëàíê è îáðàòèòåñü ê ðîáîòèñòó.
\
+ Êîíòðàêò íà àóãìåíòàöèþ
\
+ Èìß,ôàìèëèß:
\
+ Äîëæíîñòü:
\
+ NanoTrasen NSS Exodus
\
+ ß, íèæåïîäïèñàâøèéñß, òåì ñàìûì ñîãëàñèâøèéñß äîáðîâîëüíî ïðîéòè îïåðàöèþ êèáåðíåòè÷åñêîé àóãìåíòàöèè êîíå÷íîñòè. ß â êóðñå ïîñëåäñòâèé òàêîãî àêòà. ß òàêæå ïîíèìàþ, ÷òî ýòà îïåðàöèß íåîáðàòèìà.
\
+ Êîíå÷íîñòü äëß àóãìåíòàöèè:
\
+ Ïîäïèñü îáúåêòà:
\
+ Ïîäïèñü ðîáîòèñòà èëè ëèöà, åãî çàìåíßþùåãî:
"
+ PPP.fields = 5
+ PPP.updateinfolinks()
+ PPP.update_icon()
+ PPP.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Medical Doctor")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Èíòåðí"
+ P.info = "\t ìåäáåå ïðîõîäèò íàáîð â èíòåðíàòóðó. Ïî äàííîìó âîïðîñó îáðàùàéòåñü â ìåäáåé èëè íåïîñðåäñòâåííî ê ãëàâíîìó âðà÷ó."
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Geneticist")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ãåíåòè÷åñêèå ýêñïåðèìåíòû"
+ P.info = "\
+ \tÆåëàþùèå ïîñâßòèòü ñåáß íàóêå ìîãóò ïðèíßòü ó÷àñòèå â ãåíåòè÷åñêèõ ýêñïåðìåíòàõ. Äëß ýòîãî íåîáõîäèìî çàïîëíèòü äàííûé áëàíê è îáðàòèòüñß ê ãåíòèêó èëè íåïîñðåäñòâåííî ê ãëàâíîìó âðà÷ó.
\
+ Êîíòðàêò íà ïðîâåäåíèå äîáðîâîëüüíûõ ãåíòè÷åñêèõ ýêñïåðèìåíòîâ
\
+ Èìß,ôàìèëèß:
\
+ Äîëæíîñòü:
\
+ NanoTrasen NSS Exodus
\
+ ß, íèæåïîäïèñàâøèéñß, òåì ñàìûì ñîãëàñèâøèéñß äîáðîâîëüíî ïðèíßòü ó÷àñòèå â ãåíåòè÷åñêèõ ýêñïåðèìåíòàõ. ß â êóðñå ïîñëåäñòâèé òàêîãî àêòà. ß òàêæå ïîíèìàþ, ÷òî äàííûé àêò ìîæåò íàíåñòè íåïîïðàâèìûé âðåä ìîåìó çäîðîâüþ, âïëîòü äî ñìåðòè. Âñþ îòâåòñòâåííîñòü çà ïîñëåäñòâèß áåðó íà ñåáß è îáßçóþñü íå ïðåäúßâëÿòü íèêàêèõ ïðåòåíçèé êîìïàíèè 'ÍàíîÒðàçåí' èëè íåïîñðåäñòâåíî ó÷¸íûì, ïðîâîäèâøèì ýêñïåðèìåíò.
\
+ Ïîäïèñü îáúåêòà:
\
+ Ïîäïèñü êàïèòàíà, êîìàíäíîãî îôèöåðà èëè äðóãîãî ãëàâû ñ íàèáîëüøèì ðàíãîì:
\
+ Ïå÷àòü êàïèòàíà, êîìàíäíîãî îôèöåðà èëè äðóãîãî ãëàâû ñ íàèáîëüøèì ðàíãîì:"
+ P.update_icon()
+ P.fields = 4
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Scientist")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ïîìîùíèê ó÷¸íîãî"
+ P.info = "\tÆåëàþùèå ïîñâßòèòü ñåáß íàóêå ìîãóò ñòàòü ïîìùíèêàìè ñòàðøåãî ó÷¸íîãî ñîñòàâà. Äëß ýòîãî íåîáõîäèìî îáðàòèòüñß â îòäåë èññëåäîâàíèé èëè íåïîñðåäñòâåííî ê ãëàâå äàííîãî îòäåëà"
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Chef")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ñó-øåô"
+ P.info = "\tÒðåáóåòñß ñó-øåô. Ïî äàííîìó âîïðîñó îáðàùàéòåñü ê ïîâàðó."
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
+ if("Quartermaster")
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = "Ãðóç÷èê"
+ P.info = "\t îòäåë ïîñòàâîê òðåáóåòñß ãðóç÷èê. Ïî äàííîìó âîïðîñó îáðàùàéòåñü ê êâàðòèðìåéñòðó."
+ P.update_icon()
+ P.updateinfolinks()
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ return
proc/EquipRank(var/mob/living/carbon/human/H, var/rank, var/joined_late = 0)
if(!H) return 0
@@ -423,7 +548,7 @@ var/global/datum/controller/occupations/job_master
var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack/satchel(H)
new /obj/item/weapon/storage/box/survival(BPK)
H.equip_to_slot_or_del(BPK, slot_back,1)
-
+ NBupdate(rank)
H << "You are the [alt_title ? alt_title : rank]."
H << "As the [alt_title ? alt_title : rank] you answer directly to [job.supervisors]. Special circumstances may change this."
if(job.req_admin_notify)
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index dde3e58..ec7729a 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -78,3 +78,33 @@
usr << browse("[P.name][P.info]", "window=[P.name]")
onclose(usr, "[P.name]")
return
+
+/obj/structure/noticeboard/assistant_nb
+
+/obj/structure/noticeboard/assistant_nb/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob)
+ if(istype(O, /obj/item/weapon/paper))
+ if(notices < 5)
+ O.add_fingerprint(user)
+ add_fingerprint(user)
+ user.drop_item()
+ O.loc = src
+ notices++
+ icon_state = "nboard0[notices]"
+ for(var/obj/structure/noticeboard/assistant_nb/nBoard in world)
+ if(nBoard != src)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(nBoard.loc)
+ P.name = O:name
+ P.info = O:info
+ P.info_links = O:info_links
+ P.stamps = O:stamps
+ P.fields = O:fields
+ P.update_icon()
+ P.updateinfolinks()
+ P.stamped = O:stamped
+ P.overlays = O:overlays
+ P.loc = nBoard
+ nBoard.notices++
+ nBoard.icon_state = "nboard0[nBoard.notices]"
+ user << "You pin the paper to the noticeboard."
+ else
+ user << "You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached."
diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm
index 53b4d5c..5835979 100644
--- a/code/game/turfs/simulated/floor_types.dm
+++ b/code/game/turfs/simulated/floor_types.dm
@@ -159,6 +159,9 @@
/turf/simulated/floor/beach/water
name = "Water"
icon_state = "water"
+ blocks_air = 1
+ oxygen = 10
+ nitrogen = 90
/turf/simulated/floor/beach/water/New()
..()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index baceaa2..8a473fe 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1,4 +1,3 @@
-
/mob/living/verb/succumb()
set hidden = 1
if ((src.health < 0 && src.health > -95.0))
@@ -85,7 +84,12 @@
/mob/living/proc/adjustOxyLoss(var/amount)
if(status_flags & GODMODE) return 0 //godmode
- oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
+ if(amount > 0)
+ suffocation++
+ if(amount <= 0)
+ suffocation = 0
+ if(suffocation > 15)
+ oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2))
/mob/living/proc/setOxyLoss(var/amount)
if(status_flags & GODMODE) return 0 //godmode
@@ -94,6 +98,9 @@
/mob/living/proc/getToxLoss()
return toxloss
+/mob/living
+ var/suffocation = 0
+
/mob/living/proc/adjustToxLoss(var/amount)
if(status_flags & GODMODE) return 0 //godmode
toxloss = min(max(toxloss + amount, 0),(maxHealth*2))
@@ -666,4 +673,4 @@
set category = "IC"
resting = !resting
- src << "\blue You are now [resting ? "resting" : "getting up"]"
\ No newline at end of file
+ src << "\blue You are now [resting ? "resting" : "getting up"]"