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"]"