* Fixes poster qdel loop (#69611)
atom/Destroy() deletes the contents of an atom, and we were listening for when the structure in our contents is being deleted to qdel ourselves.
* Fixes poster qdel loop
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Two more early traitor objectives for minor vandalism (#68036)
* Test commit, adds file.
Adds the actual game implementation
Revert "Feature/ratlain"
Adds hiding shards behind posters.
Begins adding evil posters which make you sad if you look at them.
Refactors 'seeing' to use proximity sensors.
This is both more efficient and allows both propaganda tools to share code.
Added most of the implementation for grafitti too, needs splitting into its own file.
* Separated objectives into different files
* Adds the graffiti objective
* Adds demoraliser component for shared behaviour between disparate items
* Soap now calls wash() instead of just qdeling things by itself
Adds file I forgot to commit.
* Remove pointless 'var's
* Makes my abstract objective abstract, probably?
Missed one remaining instance of unecessary var
* Alphabetises tgstation.dme
Tiny change to flavour text.
Removes random unwanted pixel.
* * Refactors how signals are handled across the code and moves filtering to a more appropriate place.
* Handily removes owner object which we don't need any more.
* Adds some early returns.
* Adds missing call to super in contraband.dm attackby.
* That was supposed to be a commit not also a push.
Reverts one change I didn't want to make which also allows this to compile.
* * Removes unecessary tracking of rune in spraycan
* Simplifies spam protection
* Unregister signals in "ungenerate_objective" rather than bespoke proc
* Removes pointless type cast applied two lines before type guarding it again
* Fixes some formatting
* Replaces mob/living/human with mob/living in demoraliser, if Ian get a mood component then why not demoralise him too?
* Adds missing comment
* Updates bad proc name
* * Moves proc from demoraliser to mood
* Replaces reference to glass shard trap with a weakref
* Cleans up some lines which were left after refactoring
* Corrects timing of setting `drawing_rune`
* More early returns
* Test
* Removes trailing /
Replaces . = ..() with a later return ..() in a couple of places
* Restores failure penalty
Adds weight to objective category
* Adds penalty to missed file.
* Separates slipping on graffiti to its own signal
Removes a duplicate comment
More early returns
* Renames vague var.
* Two more early traitor objectives for minor vandalism
* aaaaa
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Poster Pack 2 - Beyond Posters (#68235)
Adds a new selection of posters, poster-like objects, and wall decorations.
New entirely with this PR, shipping containers! These sprites were adapted from a base from TGMC, with brands and designs more fitting to our universe here on TG
Another new addition, flags! These draw upon Common Core lore, representing several major factions from the lorebase as a new mapping tool
Finally, there are two interactive wall objects- wall clocks, and calendars:
The wall clock shows both the "real time", represented as the Earth time, or Treaty Coordinated Standard Time, and the station time, represented as the local time, or Coalition Standard Time
The calendar gives the in-universe date, as well as any active holidays
Why It's Good For The Game
This adds a lot of fun aesthetic additions that I think will benefit our mapping team in creating new spaces and breathing new life into older ones. Additionally, it helps make our Common Core lore a bit more tangible to the playerbase, bringing it away from being "just on a wiki" and into the game proper.
A whole host of new posters have just become available.
For the architects among you: a number of new aesthetic options are available for mapping with. Let your creativity free!
* Poster Pack 2 - Beyond Posters
* add to dumb modular file
Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Fixes The Lizard's Gas Posters Showing Up On-Station (#66328)
Hey there,
There's been a bug the last four months where the posters made for The Lizard's Gas would show up in random poster spawners. I was aware of it within days of its first sighting, but I elected not to fix it because I thought it was cute with the implication that the crew was going to the gas station and looting the posters, bringing it back to station. Anyways, I've been told to change it, but that's fine. I just turn it into a "fluff" subtype, which shouldn't show up on station or in consoles any more. Very epic.
* Fixes The Lizard's Gas Posters Showing Up On-Station
Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
* Adds a new poster to commemorate the end of an era (#62885)
* Added a new poster
* Adds an extra layer of grime.
Co-authored-by: Farquaar <(tgGithubPW0)>
* Adds a new poster to commemorate the end of an era
Co-authored-by: Farquaar <44147031+Farquaar@users.noreply.github.com>
* Beauty is now an element. Fixing an issue with enter/exit area comsigs. (#57147)
Co-authored-by: Ghommie <425422238+Ghommie@ users.noreply.github.com>
* Beauty is now an element. Fixing an issue with enter/exit area comsigs.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Ghommie <425422238+Ghommie@ users.noreply.github.com>
* Add gas giant controversy posters (#56830)
* Add official There Is No Gas Giant poster
🆑 ArcaneMusic, coiax
add: Nanotrasen reminds its crew members that the station has never
orbited a Gas Giant, and is engaging in a media campaign to remind
employees of this fact.
/🆑
There is a half remembered fact that Space Station 13 orbits a gas
giant, allegedly due to some entry on a wiki someplace.
Given the vigorous discussion on this subject, it seems appropriate that
this confusion is forever immortalised in poster form.
With thanks to @ ArcaneMusic for doing the sprite.
* gas truths
Co-authored-by: tralezab <spamqetuo2@ gmail.com>
* Add gas giant controversy posters
Co-authored-by: coiax <yellowbounder@gmail.com>
Co-authored-by: tralezab <spamqetuo2@ gmail.com>
* Beauty component improvements. Two new fantasy component prefixes (#54622)
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned.
* Beauty component improvements. Two new fantasy component prefixes
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* INVOKE_ASYNC
Replaces a zero-delay timer with INVOKE_ASYNC
* More timers
Switches out some more zero-delay timers for `INVOKE_ASYNC`
* lib_codex_gigas
One last switch
* inhand icons
* Adding to the object, forgot to name one icon.
* Fixing some stuff, and creating inhand icons.
* Fixes a thing I broke.
* Fixes things (including ALL posters) that shouldn't be wrenchable being wrenchable. Plaques now transfer icon_state always.
* Picture frames, painting frames, and the monkey portrait are now wooden.
* Fountain pens can now be uncommonly found in maint.
* Uneditable sign types should not become editable when unwrenched.
* Move redefined var above newly defined var.
Corrects the name of the star-kist poster to actually use the name of
the in-game soda. Technically we shouldn't be advertising a real life
soda brand in our spaceman videogame, we should be advertising the
bootleg one instead.
AddComponent/AddElement now support named arguments. This requires passing around an argument list instead of using actual proc args which a bit gross but we can blame byond for forcing this.
InheritComponent uses mirrored init arguments instead of an argument list which means no more accessing it via index to get to the same arguments as in init.
As a small bonus I restructured dcs defines to be a bit more manageable. Mainly just splits them into separate files and gives them their own folder.
* Unicode support Part 2 -- copytext()
This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.
I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````
with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.
This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.
* Makes the code functional
* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.
* Removes ninjaspeak since it's unused
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
About The Pull Request
Adds 'notice' span class to all visible_messages which had no span class, making all those black messages blue.
Why It's Good For The Game
This should help differentiate action-messages from talking-messages in the chat. More actions will be blue, thus black talking-messages should pop out more.
* mostly fixes in this commit
* removes old_god from the dme
* russian shuttle improvements
* TODO: fix the hook gun
* shotgun finished, next commit shuttle
* bounty hunting shuttle
* back up to speed on the dmis
* readds poster 46 and adds the shuttle finally
* dmi fixes
* traps need fixing, work out whatever is happening with synths
* super final touches, see desc
map ports + proper spawners, pinpointer and traps functional. other misc changes
* removes verb stuff from non verb stuff
* review (see desc)
antimagic checks and it now the two objects move inside each other instead
* dmi conflicts
* PLUNGERS. BEGONE.
cl Floyd
del: removed beauty / dirtyness
balance: Mood no longer gives you hallucinations, instead makes you go into crit sooner
/cl
oranges requested these changes, i havn't coded in DM for a while so I might have made some mistakes
Robustin says:
The very heart of our overlay code, a single line that basically boiled
down to overlays = new_overlays, was the cause of so much overlay lag.
Human overlay code was by far the biggest culprit. Most objects have 0-2
overlays but humans are marching around with 20+ most of the time and
the current system was spending a LOT of effort comparing 20+ image with
20+ other images and then apparently rendering them all anyway. Human
overlays are at least 10x the cost of any other overlay process and on a
busy server the overlay compiling was 2x the cost of any other system.
I compared the cost of overlay changes by picking up/dropping a PDA in
the dorms 250 times, with a 50% chance to use our current overlay
compiler and a 50% chance to use a "direct addition/removal (+=, -=)
approach:
CURRENT 1120ms 133 (avg:8.4210529327392578)
SCRAPS 6ms 112 (avg:0.0535714291036129)
Now this PR makes our whole overlay subsystem use that approach for
overlay compiling and the early results look incredible. The best part
is this is just the START of improvements. Humans benefits the most
because their icon system was already designed for small, incremental
overlay updates. By moving other code from "Cut everything, then put it
all back" to only updating the necessary overlays (cough, APC's), we can
see similar improvements.
oranges says:
I've picked up this PR because robustin vanished, but I do see the value
in the approach, only things I added were the checks for the overlay
list len changing
I also retabbed the entire file because I am a brainlet and did it
without thinking
cl Floyd / Qustinnus
del: Removes short-term effects of mood
add; Adds long-term effects of mood by implementing sanity which goes up with good mood, down with bad mood, but takes time to change. Your sanity can be seen as your average mood in the recent past. All effects of moods are now covered by this system
add: Beauty component, currently only attached to cleanables, but you could attach it to any atom/movable and make them pretty/ugly, affecting mood of anyone in the room.
refactor: Removes the original way of adding mood events, uses signals properly instead.
fix: Cleanables "giving" area's free beauty during initialization
fix: Fixes some events not clearing properly
/cl
Fixes#36444
From now on mood no longer affects you directly, instead it decides whether your sanity goes up or down, when your sanity gets too low you will get the effects of what mood did before.
This means getting hit with bad moods due to being attacked while not mean you are doomed anymore, and you get a large timeframe to get away and just fix your mood later.
I also added the beauty component, you could add this to any object and it would either make a room prettier or uglier, comparable to DF or Rimworld. You could add traits to make certain people ugly, for example.