Commit Graph

1988 Commits

Author SHA1 Message Date
SkyratBot
0c53462374 [MIRROR] Refactors the procedural generation of lavaland and turf/closed/mineral (#2131)
* Refactor the procedural generation of lavaland and turf/closed/mineral (#54915)

This replaces lavaland's old diagonal tunnel gen which was really
horrendously jammed into asteroid floor code (?????) with Cellular
Automata which runs in rust (PR for that here:
https://github.com/tgstation/rust-g/pull/57 ). The new code is a bit
cleaner, but also looks better.

VID: https://streamable.com/a45ke2

Things to do:
- Make an icemoon version
- Fix the roundstart atmos adjacency issues

I asked AnturK if this was an acceptable PR for this month; he said it
was okay as long as I didn't add new areas, which I don't plan to do.
But if anyone thinks this PR breaks the spirit of the month I'll open
it again in december.

* Refactors the procedural generation of lavaland and turf/closed/mineral

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
2020-12-11 06:10:38 +01:00
SkyratBot
9dfb7a1189 [MIRROR] Everything that uses maptext now uses the class that makes it actually readable (#2116)
* Everything that uses maptext now uses the class that makes it actually readable

* Update chatmessage.dm

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2020-12-11 00:40:04 +00:00
SkyratBot
66c207e19c [MIRROR] Reverts (#54963) due to timer spam (#2109)
* Revert "Refactors how movetype flags are added and removed and the floating animation (#54963)" (#55432)

This reverts commit b8425c003a.

* Reverts (#54963) due to timer spam

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2020-12-10 05:58:05 +01:00
SkyratBot
afce3e2a94 [MIRROR] pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#2097)
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)

Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:

Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:

Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake

Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).

I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.

Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.

scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.

scan_moved_turf() (WIP) will be used for handling moving onto a turf.

permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.

A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types

UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game

Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.

Fixes penetrating projectiles like sniper penetrators

This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)

* pass_flags handling refactor + rewrites a part of projectiles for the n-th time

Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
2020-12-09 23:44:54 +01:00
SkyratBot
2ee5d422ae [MIRROR] Refactors how movetype flags are added and removed and the floating animation (#2096)
* Refactors how movetype flags are added and removed and the floating animation (#54963)

I wanted to refactor how movetype flags are added and removed into traits to prevent multiple sources of specific movement types from conflicting one other. I ended up also having to refactor the floating animation loop (the one that bobs up and down) code in the process.
Why It's Good For The Game

A way to avoid conflict from multiple sources of movement types.
This also stops melee attacks, jitteriness and update_transform() from temporarily disabling the floating movetype bitflag altogether until the next life tick.

Tested, but i'm pretty sure improvements could be made.
Changelog

cl
fix: jitteriness, melee attack animations and resting/standing up should no longer momentarily remove the floating movement type.
/cl

* Refactors how movetype flags are added and removed and the floating animation

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2020-12-09 23:43:42 +01:00
SkyratBot
f105b47a55 [MIRROR] Singularity component (#2082)
* Singularity component (#55096)

Adds singularity component

* Singularity component

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-12-08 11:30:39 +00:00
Funce
9e63d2fed3 Our Discord message shouldn't rely on their being another station (#2063) 2020-12-07 05:47:28 +00:00
Funce
3ed84722a0 Adds the original Discord messages back to the alert system, no more barrenness (#2050) 2020-12-06 22:59:47 +01:00
SkyratBot
2d58d386ef [MIRROR] Migrate some docs from the GitHub wiki into the repository (#2027)
* Merge pull request #55268 from AutomaticFrenzy/patch/docs-from-github-wiki

Migrate some docs from the GitHub wiki into the repository

* Migrate some docs from the GitHub wiki into the repository

Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
2020-12-03 17:16:02 +00:00
Azarak
309af8c333 aaa (#1996) 2020-12-01 21:08:52 +00:00
SkyratBot
c487c73f39 [MIRROR] Grep for space indentation (#1969)
* Grep for space indentation

* aa

* Update species.dm

* Update species.dm

* Update maps.dm

* Update examine.dm

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-12-01 12:26:41 +01:00
SkyratBot
2cf928b280 [MIRROR] Init sanity unit test (#1980)
* Init sanity unit test (#55147)

https://github.com/tgstation/TerraGov-Marine-Corps/pull/5326
Stemming from
https://github.com/ParadiseSS13/Paradise/pull/14770

Basically it just checks for bad initialize calls

* Init sanity unit test

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
2020-11-30 23:01:45 +00:00
Gandalf
363a7a72a1 a (#1951) 2020-11-30 18:35:25 +01:00
Gandalf
e45fb4ca44 Realtime Indicator [NON-MODULAR] (#1921)
* REAL TIME BABY

* REAL TIME BABY
2020-11-30 13:22:23 +01:00
SkyratBot
94cb4e0ce4 [MIRROR] sstimer no longer batches maintenance tasks to the bucket list to avoid edge cases and duplicated logic. (#1933)
* sstimer no longer batches maintenance tasks to the bucket list to avoid edge cases and duplicated logic. (#55140)

* sstimer no longer delays maintenance tasks if its going over its tick.

This was leading to bugs if certain state operations happened while a task was delayed, furthermore if the timer subsystem was overloaded, the invoked timers list would bloat as it would never get cleared out, which would make all timer invocations take longer as they had to add to an ever growing list.

* Update timer.dm

* Fix error when a bucket has only one timer.

* simply timer loop logic & improve timer debug string

It would try to batch up linked list modifications and every issue we have ever had has been related to this, so now it just directly pulls the head of the linked list off, using bucketEject, rather then detect when it reaches the end of the linked list queue it will now just know because the bucket will be empty.

All bucketCount logic has been moved to bucketEject and bucketJoin(), which should also keep that more proper.

* Update timer.dm

* Update timer.dm

* sstimer no longer batches maintenance tasks to the bucket list to avoid edge cases and duplicated logic.

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2020-11-29 21:28:18 +00:00
Azarak
491d9f48a2 aaa (#1910) 2020-11-28 17:18:33 +00:00
Gandalf
bd1a70b8d8 Update air.dm (#1840) 2020-11-25 17:45:33 -06:00
SkyratBot
65368300d2 [MIRROR] Refactors Pastries into newfood. (#1824)
* Refactors Pastries into newfood. (#54996)

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
Co-authored-by: Floyd <Floydje123@ hotmail.com>

* Refactors Pastries into newfood.

* Update collars.dm

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
Co-authored-by: Floyd <Floydje123@ hotmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2020-11-25 01:02:00 +00:00
Gandalf
907f14f244 Old PB system [SEMI-MODULAR] (#1616)
* yes

* aaaaaa

* Update panicbunker.dm
2020-11-21 17:25:36 +01:00
Gandalf
527cc49a3b Various changes to chat [NON-MODULAR] (#1750)
* Various changes to chat

* Update statpanel.dm
2020-11-21 17:25:00 +01:00
SkyratBot
44567b22a3 [MIRROR] Fix client time timers duplicating if any client time timer caused a stack overflow. (#1703)
* Fix client time timers duplicating if any client time timer caused a stack overflow. (#54977)

* Fix client time timers duplicating if any client time timer caused a stack overflow.

* Fix client time timers duplicating if any client time timer caused a stack overflow.

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2020-11-17 00:46:40 +01:00
SkyratBot
9a25a388ce [MIRROR] [TM Candidate] Fix a number of atmos-related runtimes through pipeline and SSair tweaks. (#1695)
* [TM Candidate] Fix a number of atmos-related runtimes through pipeline and SSair tweaks. (#54804)

* Feex

* Moar feex

* [TM Candidate] Fix a number of atmos-related runtimes through pipeline and SSair tweaks.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2020-11-15 03:41:40 +00:00
SkyratBot
c0cdf25886 [MIRROR] Arconomy: Amputating the Invisible Hand of Income. (#1687)
* Arconomy: Amputating the Invisible Hand of Income.

* Update tgui.bundle.js

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-11-14 21:52:07 +01:00
SkyratBot
e768cef297 [MIRROR] /obj/screen --> /atom/movable/screen (#1646)
* /obj/screen --> /atom/movable/screen

* Update storage.dm

* Update radial.dm

* a

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-11-11 04:12:50 +01:00
SkyratBot
f53f3c88b7 [MIRROR] Performance Logging no longer produces broken csv files (#1665)
* Performance Logging no longer produces broken csv files (#54894)

Also better file names so it's easier to mass scrape them.

* Performance Logging no longer produces broken csv files

Co-authored-by: Rob Bailey <actioninja@gmail.com>
2020-11-11 02:50:02 +00:00
SkyratBot
0572d30cb0 [MIRROR] performance logging (#1629)
* performance logging (#54809)

Dumps a bunch of perf info to a csv every 10 seconds.

Currently this info is only stored in blackbox where it's effectively useless.
csv is a very easy to parse format and is natively supported by a lot of data analysis tools

* performance logging

Co-authored-by: Rob Bailey <actioninja@gmail.com>
2020-11-08 05:03:16 +00:00
SkyratBot
30fc6c78ac [MIRROR] Turns transparency for turfs into an element, and gives it to datum materials. (#1567)
* Turns transparency for turfs into an element, and gives it to datum materials. (#54250)

* Turns transparency for turfs into an element, and gives it to datum materials.

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
2020-11-04 00:33:49 +00:00
SkyratBot
bd75f38fd6 [MIRROR] Initialize and LateInitialize runs correctly at round start (#1478)
* Initialize and LateInitialize runs correctly at round start (#54594)

I've been pulling my hair out on this one. Ever since I started my ntnet project, I could never get LateInitalize to work right. Apparently it has never worked right. How it was set up before on server start

    Station map loads, Does NOT run Initialize(mapload = TRUE)
    Generates space, lavaland/icebox ruins
    Loads a ruin, DOES run Initialize(mapload = TRUE) EXCEPT on areas
    End of mapping system
    Atom system Initialized and it checks and runs Initialize(mapload = TRUE) on world

You see the issue? Initialize and by extension LateInitialize is run in blocks. Worst, LateInitialize is run on turfs FIRST in ruins BEFORE Initialize is ever run on the other atoms. While there isn't much in Area, there is map_generator so I am sure it caused some grief for map creators.

The NEW order now is

    Station map loads, Does NOT run Initialize(mapload = TRUE)
    Generates space, lavaland/icebox ruins
    Loads a ruin, Does NOT run Initialize(mapload = TRUE)
    End of mapping system
    Atom system Initialized and it checks and runs Initialize(mapload = TRUE) on world

Also if you dynamicly load a map, like snowdin or such, it will Initialize all atoms at once and then run LateInitialize properly

* Initialize and LateInitialize runs correctly at round start

Co-authored-by: WarlockD <warlockd@gmail.com>
2020-10-27 02:22:25 +00:00
SkyratBot
91773c46da [MIRROR] Interview System / Soft Panic Bunker (#1458)
* Interview System / Soft Panic Bunker

* a

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-10-26 08:32:37 +01:00
SkyratBot
d1315d9474 [MIRROR] Audio falloff re-work, and increased audio range. (#1406)
* Audio falloff re-work, and increased audio range.

* a

* a

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-10-21 07:36:31 +02:00
SkyratBot
b3cd29d2d2 [MIRROR] SSeconomy/var/bank_accounts is now an association list of account identifiers and datums for O(1) performance (#1363)
* SSeconomy/var/bank_accounts is now an association list of account identifiers and datums for O(1) performance (#54430)

Title. Also added some precautions to bank_account/new() and the crab17 gear.
The fact the majority of functions pertinent to the bank_accounts list was O(n) disquieted me.

* SSeconomy/var/bank_accounts is now an association list of account identifiers and datums for O(1) performance

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2020-10-19 01:35:05 +01:00
Azarak
83f120b1e7 Fixes loadouts, again (#1337)
* fix

* Update job.dm
2020-10-16 03:29:12 +01:00
SkyratBot
eb92ea9cb8 [MIRROR] adds more cursed animal masks (#1335)
* adds more cursed animal masks (#53539)

Animal masks refactor

* adds more cursed animal masks

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2020-10-15 22:12:00 +01:00
SkyratBot
bcb5fbc83c [MIRROR] TGUI Communications console (#1286)
* TGUI Communications console

* fix

Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2020-10-14 17:45:53 +01:00
SkyratBot
b8d9874c27 [MIRROR] Converts all A && A.B into A?.B (#1292)
* Converts A && A.B into A?.B (#54342)

Implements the ?. operator, replacing code like A && A.B with A?.B

BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.

* Converts all A && A.B into A?.B

Co-authored-by: ZeWaka <zewakagamer@gmail.com>
2020-10-13 23:19:25 +02:00
SkyratBot
b576900a8b [MIRROR] Temporal Scarring is now per-character-slot, changelings now fake scars when disguising (#1274)
* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising (#54311)

* Temporal Scarring is now per-character-slot, changelings now fake scars when disguising

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
2020-10-12 23:26:04 +02:00
Azarak
ddd6247f63 weh (#1253) 2020-10-12 02:10:10 +01:00
Azarak
61854773af [SEMI-MODULAR] Adds missing alerts and various alert features (#1238)
* alertz

* Create readme.md
2020-10-11 05:47:36 +01:00
Azarak
ff6b1eb96e weh (#1234) 2020-10-10 19:21:16 +01:00
SkyratBot
cae0e4cb5c [MIRROR] Adds Alloy Materials (#1228)
* Adds Alloy Materials (#53623)

Adds and implements alloy materials

Takes several materials that were mostly fluff and converts them into actual usable materials.
Messes with material code a bit to make alloys recycle back into their component materials.
Adds the alloy materials to their in-game stacks.

Materials added:
    Plasteel
    Plastitanium
    Plasmaglass
    Titaniumglass
    Plastitanium Glass
    Alien Alloy

Makes plasteel/plastitanium/plasmaglass and the rest able to have separate properties from their component materials. It doesn't make much sense that the materials used to seal off the supermatter chamber from the rest of the station would be prone to exploding when heated.

Allows for further expansion of materials, possibly including actual functional metallurgy and smelting at some point in the very distant future.

(Lemons note: Adds a regeneration component, used for alien alloy)

* Adds Alloy Materials

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
2020-10-10 00:29:56 +01:00
SkyratBot
4745a3260e [MIRROR] Mice properly spawn in maintenance during the migration event. (#1223)
* Mice properly spawn in maintenance during the migration event. (#54243)

fix: Mice properly spawn during the mouse migration event.
Fixes #54242 .

* Mice properly spawn in maintenance during the migration event.

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2020-10-09 18:32:06 +02:00
Azarak
218f7d455c job quirk restriction system (#1187) 2020-10-08 22:17:17 +01:00
SkyratBot
2e09bb7eef [MIRROR] Fix shuttle loader big shuttle load issues. (#1204)
* Fix shuttle loader (#54200)

Set mode = SHUTTLE_PREARRIVAL to shuttle that initially placed to transit docking port.
No more SSshuttles delete transit for half loaded shuttle

Fix #54232

* Fix shuttle loader big shuttle load issues.

Co-authored-by: Dennok <Deneles@yandex.ru>
2020-10-08 17:29:17 +02:00
SkyratBot
fbed5fa6a6 [MIRROR] Cleans up rat related features and makes Regal Ratking a rare spawn from mouse migration event. (#1195)
* Cleans up rat related features and makes Regal Ratking a rare spawn from mouse migration event. (#54191)

* Cleans up rat related features and makes Regal Ratking a rare spawn from mouse migration event.

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2020-10-07 23:25:50 +02:00
SkyratBot
666c1a108a [MIRROR] Some shuttes rework. Allow many shuttles of one template to work at the same time. (#1162)
* Some shuttes rework. Allow many shuttles of one template to work at the same time. (#53993)

* add replace button to shuttle panel

load button now only load new shuttle

* shuttle teplate loads as shuttle

* new shuttle console connects to shuttle

* new navigation computer connect to shurrle

* docking_port id now unique

add count to id if id already in work

* many docks from one base tenplate

* up

* fix unregister

* up

* up

* up

* block multiple shuttle loading

* return preview button

* up  id generation

* Some shuttes rework. Allow many shuttles of one template to work at the same time.

Co-authored-by: Dennok <Deneles@yandex.ru>
2020-10-05 22:31:15 +01:00
Azarak
eb8b6e204c lowers events frequency (#1118) 2020-10-04 23:45:58 +01:00
SkyratBot
ada67ac929 [MIRROR] Ports soup, snacks, icecream, salads and meat to newfood (#1074)
* Ports soup, snacks, icecream, salads and meat to newfood (#54028)

Ports soup, snacks, icecream, salads and meat to newfood

* Ports soup, snacks, icecream, salads and meat to newfood

* Update true_changeling.dm

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-09-30 14:37:15 +02:00
SkyratBot
cf76ee5b1a [MIRROR] Communication hotfix (#1062)
* Communication hotfix

* bah

* Update preferences.dm

Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-09-30 01:12:57 +02:00
SkyratBot
1713561d4b [MIRROR] Rebindable communication(OOC, Say, Me) (#1055)
* Rebindable communication(OOC, Say, Me) (#54035)

 OOC, Say and Me is now rebindable

* Rebindable communication(OOC, Say, Me)

* Update preferences.dm

* wowee

* aaa

Co-authored-by: Couls <coul422@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
2020-09-30 00:50:37 +02:00
SkyratBot
df3c9f87cb [MIRROR] Restyles Stat Panel, Adds Subpanel Sub-Categories (#1044)
* Restyles Stat Panel, Adds Subpanel Sub-Categories (#53947)

I re-styled the CSS for the stat panel in hopes to make it look nice, and I also added the ability to use sub-categories (currently a single level) of verbs using a . (period), an example being Admin.Fun instead of the previous Admin - Fun. This now results in a sub-category being automagically generated in the stat panel.

* Restyles Stat Panel, Adds Subpanel Sub-Categories

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2020-09-29 12:31:56 +02:00