diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index b9c0544bc1..c4fb800d13 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -6,10 +6,12 @@ #define RETURN_TYPE(X) set SpacemanDMM_return_type = X #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X #define UNLINT(X) SpacemanDMM_unlint(X) + #define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X #else #define RETURN_TYPE(X) #define SHOULD_CALL_PARENT(X) #define UNLINT(X) X + #define SHOULD_BE_PURE(X) #endif /world/proc/enable_debugger() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index dc9f280e48..6018bc70ee 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -207,6 +207,6 @@ /obj/item/paper/guides/recycler name = "paper - 'garbage duty instructions'" - info = "
Official Diploma
"} + info = {"__Starfleet Academy__\nOfficial Diploma"} /obj/item/paper/fluff/holodeck/disclaimer name = "Holodeck Disclaimer" diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 28ca97dc2b..057a234bde 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -556,3 +556,17 @@ It's fairly easy to fix if dealing with single letters but not so much with comp //Can the mob see reagents inside of containers? /mob/proc/can_see_reagents() return stat == DEAD || silicon_privileges //Dead guys and silicons can always see reagents + +/mob/proc/is_blind() + SHOULD_BE_PURE(TRUE) + return eye_blind ? TRUE : HAS_TRAIT(src, TRAIT_BLIND) + +/mob/proc/can_read(obj/O) + if(is_blind()) + to_chat(src, "As you are trying to read [O], you suddenly feel very stupid!") + return + if(!is_literate()) + to_chat(src, "You try to read [O], but can't comprehend any of it.") + return + return TRUE + diff --git a/code/modules/modular_computers/hardware/printer.dm b/code/modules/modular_computers/hardware/printer.dm index 44383822cc..36c666e5d6 100644 --- a/code/modules/modular_computers/hardware/printer.dm +++ b/code/modules/modular_computers/hardware/printer.dm @@ -27,13 +27,11 @@ // Damaged printer causes the resulting paper to be somewhat harder to read. if(damage > damage_malfunction) - P.info = stars(text_to_print, 100-malfunction_probability) + P.setText(stars(text_to_print, 100-malfunction_probability)) else - P.info = text_to_print + P.setText(text_to_print) if(paper_title) P.name = paper_title - P.update_icon() - P.reload_fields() stored_paper-- P = null return TRUE @@ -59,4 +57,4 @@ icon_state = "printer_mini" w_class = WEIGHT_CLASS_TINY stored_paper = 5 - max_paper = 15 \ No newline at end of file + max_paper = 15 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 243fbdbe78..be2049fb88 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -4,7 +4,11 @@ * * lipstick wiping is in code/game/objects/items/weapons/cosmetics.dm! */ - +/** + ** Paper is now using markdown (like in github pull notes) for ALL rendering + ** so we do loose a bit of functionality but we gain in easy of use of + ** paper and getting rid of that crashing bug + **/ /obj/item/paper name = "paper" gender = NEUTER @@ -21,19 +25,57 @@ resistance_flags = FLAMMABLE max_integrity = 50 dog_fashion = /datum/dog_fashion/head + color = "white" + /// What's actually written on the paper. + var/info - var/info //What's actually written on the paper. - var/info_links //A different version of the paper which includes html links at fields and EOF - var/stamps //The (text for the) stamps on the paper. - var/fields = 0 //Amount of user created fields + /// The (text for the) stamps on the paper. + var/stamps var/list/stamped + + /// This REALLY should be a componenet. Basicly used during, april fools + /// to honk at you var/rigged = 0 var/spam_flag = 0 + /// var/contact_poison // Reagent ID to transfer on contact var/contact_poison_volume = 0 - var/datum/oracle_ui/ui = null - var/force_stars = FALSE // If we should force the text to get obfuscated with asterisks + var/ui_x = 600 + var/ui_y = 800 + /// When a piece of paper cannot be edited, this makes it mutable + var/finalized = FALSE + /// We MAY be edited, mabye we are just looking at it or something. + var/readonly = FALSE + /// Color of the pin that wrote on this paper + var/pen_color = "black" + +/** + ** This proc copies this sheet of paper to a new + ** sheet, Makes it nice and easy for carbon and + ** the copyer machine + **/ +/obj/item/paper/proc/copy() + var/obj/item/paper/N = new(arglist(args)) + N.info = info + N.pen_color = pen_color + N.color = color + N.finalized = TRUE + N.update_icon_state() + N.stamps = stamps + N.stamped = stamped.Copy() + copy_overlays(N, TRUE) + return N + +/** + ** This proc sets the text of the paper and updates the + ** icons. You can modify the pen_color after if need + ** be. + **/ +/obj/item/paper/proc/setText(text, read_only = TRUE) + readonly = read_only + info = text + update_icon_state() /obj/item/paper/pickup(user) if(contact_poison && ishuman(user)) @@ -42,42 +84,16 @@ if(!istype(G) || G.transfer_prints) H.reagents.add_reagent(contact_poison,contact_poison_volume) contact_poison = null - //ui.check_view_all() - ..() - -/obj/item/paper/dropped(mob/user) - //ui.check_view(user) - return ..() + . = ..() /obj/item/paper/Initialize() . = ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) - //ui = new /datum/oracle_ui(src, 420, 600, get_asset_datum(/datum/asset/spritesheet/simple/paper)) - //ui.can_resize = FALSE - update_icon() - updateinfolinks() -/* -/obj/item/paper/oui_getcontent(mob/target) - if(!target.is_literate() || force_stars) - force_stars = FALSE - return "Surprisingly, gravity isn't that hard to make! All you have to do is inject deadly radioactive minerals into a ball of - energy and you have yourself gravity! You can turn the machine on or off when required but you must remember that the generator - will EMIT RADIATION when charging or discharging, you can tell it is charging or discharging by the noise it makes, so please WEAR PROTECTIVE CLOTHING.
-Don't panic! The gravity generator was designed to be easily repaired. If, somehow, the sturdy framework did not survive then - please proceed to panic; otherwise follow these steps.
At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array.
You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!
Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker.
Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
" + info = {" +# Welcome! +At greencorps we love the environment, and space. With this package you are able to help mother nature and produce energy without any usage of fossil fuel or plasma! Singularity energy is dangerous while solar energy is safe, which is why it's better. Now here is how you setup your own solar array. +You can make a solar panel by wrenching the solar assembly onto a cable node. Adding a glass panel, reinforced or regular glass will do, will finish the construction of your solar panel. It is that easy!Now after setting up 19 more of these solar panels you will want to create a solar tracker to keep track of our mother nature's gift, the sun. These are the same steps as before except you insert the tracker equipment circuit into the assembly before performing the final step of adding the glass. You now have a tracker! Now the last step is to add a computer to calculate the sun's movements and to send commands to the solar panels to change direction with the sun. Setting up the solar computer is the same as setting up any computer, so you should have no trouble in doing that. You do need to put a wire node under the computer, and the wire needs to be connected to the tracker. +Congratulations, you should have a working solar array. If you are having trouble, here are some tips. Make sure all solar equipment are on a cable node, even the computer. You can always deconstruct your creations if you make a mistake.
That's all to it, be safe, be green!
+"}
#undef SOLAR_GEN_RATE
#undef OCCLUSION_DISTANCE
diff --git a/code/modules/ruins/spaceruin_code/DJstation.dm b/code/modules/ruins/spaceruin_code/DJstation.dm
index 29814d8c1f..ace32b694d 100644
--- a/code/modules/ruins/spaceruin_code/DJstation.dm
+++ b/code/modules/ruins/spaceruin_code/DJstation.dm
@@ -2,4 +2,20 @@
/obj/item/paper/fluff/ruins/djstation
name = "paper - 'DJ Listening Outpost'"
- info = "Welcome new owner!
You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio frequencies. Here is a step by step guide to start listening in on those saucy radio channels:
'+(n?e:H(e,!0))+"\n":""+(n?e:H(e,!0))+"\n"},t.blockquote=function(e){return"\n"+e+"\n"},t.html=function(e){return e},t.heading=function(e,t,n,o){return this.options.headerIds?"
"+e+"
\n"},t.table=function(e,t){return t&&(t=""+t+""),""+e+""},t.br=function(){return this.options.xhtml?""+Z(l.message+"",!0)+"";throw l}}return ne.options=ne.setOptions=function(e){return X(ne.defaults,e),ee(ne.defaults),ne},ne.getDefaults=J,ne.defaults=te,ne.use=function(e){var t=X({},e);if(e.renderer&&function(){var n=ne.defaults.renderer||new U,o=function(t){var o=n[t];n[t]=function(){for(var r=arguments.length,a=new Array(r),i=0;i