Commit Graph

1586 Commits

Author SHA1 Message Date
Timberpoes
9ad38ff0ce Fixes mapstart and random arcade machines (#53958)
Randomly generated arcade machines were getting random boards and initing properly, but they weren't re-built as the appropriate subtype.

This oversight has been remedied. A new subtype has been created for random arcade machines which exists purely to pick a random circuit then create a machine from that circuit's build path before returning that it should be qdel'd.

This new subtype has been appropriately regex find-and-replaced into all maps.
* Objectify
2020-09-27 13:59:07 -03:00
Timberpoes
9c95813da4 Rebalances space loot and space exploration (#53916) 2020-09-25 04:53:43 -07:00
Tad Hardesty
df8df0a8a7 Disable some effect systems during init (#53929)
Instantly spread gib streaks rather than doing so over a delay
Completely skip broken light fixture sparking during init
2020-09-25 08:47:32 -03:00
TiviPlus
3dad9ef20f Refactors decals to an element (#53922) 2020-09-24 21:36:17 -03:00
Couls
f174cd671c improve performance of vis_overlays by handling dir by using vis_flags (#53816)
vis dir changes are now handled by vis_flags
2020-09-24 06:00:41 -03:00
Ryll Ryll
80cefef747 Fixes projectile impacts + messages, embedding, adds deployable landmines (#53436)
* icon and alert anim

* hmm

* projectile and embed fixes

* cap mine

* clean up, fix some issues with projectile embeds

* light

* doc

* icon

* awkward

* icon again
2020-09-23 07:53:55 +02:00
tralezab
e44dcc035c Flower Buds now have a countdown for ghosts for when they're going to hatch (#53648)
They're two minute timers with no indication, which makes kudzu kinda annoying to spectate.
2020-09-23 00:50:26 +01:00
TiviPlus
ff1631b7b9 Fully removes devil and affiliated shitcode (#53612)
Its all over the place, messy, and overall a bad enough gamemode to be removed from rotation.
A rework would have to tear out everything as is so there is no reason to allow the shitcode to live beyond tripping up everything.
2020-09-23 00:46:21 +01:00
TiviPlus
c35008b1b0 Optimizes Conveyors (#53220)
Less proc overhead
Made the actual moving speedier
removed a unused var
2020-09-19 10:37:15 -03:00
Mickyan
35752f491a Adds sidings floor decorations (#53797)
This was a frequent request from mappers ever since trimlines were added, they work similarly to trimlines but they have different use cases and don't necessarily work together, so I am calling them sidings to avoid confusion.
Whereas trimlines are floor paint for plating, these are solid borders to be used either alongside walls, smoothing transitions between floor types or mark/split an area without having to use walls, and work with any floor type.

These are ALL greyscaled, so they're trivial to bikeshed customize and make new types for your mapping needs
- Colored (plastic/vinyl strips, standard departmental colors)
- Plating(metal, grey/white/dark)
- Wood(it's wood)

I've added them to meta's bar as a small example
2020-09-18 22:10:32 -04:00
Jordan Brown
a1498d7fd6 Merge pull request #53812 from SgtHunk/ITS-HAURRIBLE
Adds the CRAZY HAMBURGER
2020-09-18 22:05:50 -04:00
SgtHunk
eb27bb33d3 GRASS OF DEATH
Could I have added green smoke in some other way? Possibly.
Do I know how or have the brain power for it? Not really.
Oh yeah also actual sprite for the burger, along with all ingredients i've missed
2020-09-18 14:57:34 -03:00
oranges
538aaf8314 Slightly optimize shroom spreading code (#53652)
There were some recent lag events on the servers caused by the timer  
subsystem jamming up with glowshroom timers. I whined about this but  
nobody did anything so

(Thanos "Fine... I'll do it myself" GIF)

There are a few changes here, first we collect the potential turfs for 
the view call in a single pass, not once per yield run.

Second we don't run a second view(1) on every single potential turf, 
instead we try to randomly pick a turf 3 times during yield phase and 
check the view then.

If we fail to find a potential location then we bail out of that yield 
phase. This is a tradeoff between processing time spent finding 
locations and the chance that the glowshroom fails to spread.

Finally, we have maximum limit on how many times a glowshroom fails to 
spread, if it fails to spread at least 5 times over any iteration, it 
stops processing for spread completely.

As a bonus, the timers have been made unique, so we don't accidentally 
generate multiple timers for a single shroom, other than the two it 
already needs.

This code would benefit from being a separate subsystem and grouping, 
generations of the plants together as a single ticking entity and just 
spreading from selected edge plants. However I don't particularly feel 
like plumbing that together, so this will suit for now.
2020-09-17 23:46:20 -07:00
tralezab
1424bd0b2a Countdowns now use the maptext class (#53649) 2020-09-13 06:01:58 +01:00
Emmanuel S
953e337eb3 Pod launcher renaissance squash (#52611)
Refactoring of Flex, Fix Section scrollable

Getting presets working


wip


Upgrade dependencies

preset notice, tooltip fixes, pod spawnlocation fixes


finishes UI, final polish


quells one travismoment


Apply suggestions from code review

Co-authored-by: Rohesie <rohesie@gmail.com>
better var names


better vars


sound for loop


Further review addressing


runtime fixes


Update code/modules/asset_cache/asset_list_items.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
More review addressing


tgui merge


why was that there


Small improvements


Small Improvements Part 2


dropoff / wall moving improvements


compile!


more fixes
2020-09-10 20:22:47 +03:00
Donkie
53b212ddf2 Process procs now properly utilize deltatime when implementing rates, timers and probabilities (#52981)
* Process procs now properly use deltatime when implementing rates, timers and probabilities

* Review fixes

* Geiger counters cleanup

Made hardsuit geiger code more similar to geiger counter code
Geiger counters are more responsive now

* Moved SS*_DT defines to subsystems.dm

* Rebase fix

* Redefined the SS*_DT defines to use the subsystem wait vars

* Implemented suggested changes by @AnturK

* Commented /datum/proc/process about the deltatime stuff

* Send delta_time as a process parameter instead of the defines

Also DTfied acid_processing

* Dtfied new acid component
2020-09-08 10:24:05 +02:00
TemporalOroboros
111676c9b7 Acid Component (#53273)
Makes acid levels a component.
    Merges the acid effect object into the component.
    Reworks acids decay rates slightly.
    Rebalances xenos acid spit so that they can still melt through walls.

Misc. associated changes:

    Adds defines for a lot of the acid associated constants.
    Documents clean types and adds CLEAN_TYPE_ACID
    Adds and implements a return bitflag for COMSIG_COMPONENT_CLEAN_ACT
    Adds a looping sound for acid.
    Makes /atom/proc/acid_act return a boolean.
    Fixes waterclosets creating a new reagent holder datum every time they are used.
    Removes waterclosets regenerating reagents on-use and restricts their reaction volume to 5 units.
    Adds and implements a couple reagent signals.
    Renames a few vars so Rohesie can stop telling me to rename more vars.
2020-09-05 16:18:55 -03:00
TiviPlus
550e763433 Reenables SHOULD_NOT_SLEEP on initialize (#53378) 2020-09-04 20:44:08 -03:00
NightRed
52a0183e80 Cleans up extinguish_mob and prevents perpetual fire (#53252) 2020-09-02 19:48:50 -03:00
Ghilker
60355138f8 Crystal Event: flavor texts, signaler, balancing and mob differentiation (#53340)
This PR adds a bunch of flavor texts to the different devices and structures that are used during the event, all to make clearer to the players what to do without too much troubles.
Also i added the ability to use the normal Analyzer+signaler to close the portals and achieve the same result of dropping the crystals.

This PR have more stuff inside: I tweaked the health of the mobs to be balanced around the "toolbox damage" (around 15), so that in 2 or 3 hits they'll fall. I tweaked the damage so that those mobs are all around pretty dangerous, plus each one gets a personal effect: the minion gets a smoke effect on death, the thug gets a random teleport when hit and a dodge ability, the recruit can smash delete walls on touch, the killer is fast and shoot a freezing ray to slow down victims, the boss has an AoE tesla-like attack can dust mobs if they are in crit conditions (thus consuming them)
spawned anomalies don't explode anymore.
You can sacrifice someone to the crystal to increase the spawn delay by 5 seconds permanently
tick for the event is once every 2 seconds, have to use raw numbers to define the duration (15 minutes)
2020-09-01 18:53:43 -03:00
Timberpoes
1be4c428ca Fixes Hyperkinetic Dampener Field runtime. (#53275) 2020-09-01 17:23:41 -03:00
uomo
56467396b4 Mining sign fix. (#53251)
Turns old mining "signs" into turf decals instead

It looks nothing like a sign, so, this just made sense.
Moved the icon from the mining survival pod walls file, to the turf decal icons file.
Replaced every instance in the maps with the new type path.
2020-08-30 22:52:09 -07:00
TiviPlus
ce3d7e2f0d Mecha refactor 2020 (#52902)
-Mechs are a vehicle subtype
-Mech equipment half-rewritten
-Mech actions completely redone
-Cooldown macros
-New movement macros & replacing all var in GLOB.diagonals with ISDIAGONALDIR(var)
-New lazylist macro
-Support for lavaland only mechs
-Removed the tank because fuck off with that hacky shit
-Documentation
-Fuckton of fixes
2020-08-29 23:33:47 -03:00
Qustinnus
75415d3eb5 Refactors burgers to use components & auto-eating (#53224) 2020-08-29 03:11:37 -07:00
TiviPlus
ca366c3ea1 Bools and returns super-pr (#53221)
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
2020-08-28 14:26:37 -07:00
Donkie
9c3846885f Bloody feet update (#53109)
Componentized the bloody feet feature.

* Hardsuits and other feet-covering clothing can now get bloody feet as well and spread gunk around.
* Bare feet can now get bloody as well and spread gunk around.
* Shoes/feet won't get bloody if something is covering them.
* Improved blood spreading behaviour. Previously, magic numbers were used in the blood pick up and drop off process. Now, when you step in blood, you and the floor share the blood volume. When you step on a non-bloody tile, you give away half of your shoe blood to the tile, and so on. This means the total blood volume always stays constant when moving around. * Blood doesn't appear out of thin air, nor get flushed to bluespace.
* Lowered footprint minimum opacity. Because it looks better, imo.
* Improved footprint exit/enter dirs.
* Improved footprint examine.
* Removed code for cult magic where a spell can suck up blood on your shoes. I'm pretty sure this code didn't work anyway. Implementing that for this new system would require a new signal and I just don't think it's worth it.

How can this game make you spend 20 hours on fucking spaceman footprints

Hardsuits will become "fully bloody" by just stepping in blood. This is a limitation of the current forensics system, as that is what is used to determine if an item is bloody or not. I'm aware of this but I don't think it fits to fix that in this PR.

cl
add: Footprints and bloody shoes major update. Hardsuits and bare feet can now get bloody as well. Improved blood spreading behaviour.
fix: Shoes will no longer get bloody while wearing something that covers them.
/cl
2020-08-27 09:57:20 +12:00
81Denton
3858b72bdb Merge pull request #53020 from Qustinnus/fatgrowing
[READY] Vatgrowing: Third time's the charm
2020-08-24 22:46:08 +02:00
Krysonism
9723c5956b gross decal spawner + more swab sites (#34) 2020-08-24 22:22:05 +02:00
ShizCalev
afc61e2d4b Fixes broken circuit board in delta's electronic marketing den (#53149) 2020-08-24 08:49:23 -03:00
TemporalOroboros
6e950daccc Defines damage flags. (#53158) 2020-08-24 08:20:33 -03:00
floyd
d8c2e683a0 Merge branch 'master' into fatgrowing 2020-08-22 23:01:19 +02:00
Rohesie
eda7c6ca55 Overlay lighting component (#52413)
Sparks no longer lag, projectile beams move super smoothly, same with mobs and whatnot. This also allows for easy expansion into directional lights, field-of-view, wee-woo rotating lights or whatever.

It does have a downside: things right-clicked or checked through the alt+click tab will show the light overlay:


This is a BYOND limitation, very well worth it IMO.

🆑
add: Smooth movable lighting system implemented. Projectiles, sparks, thrown flashlights or moving mobs with lights should be much smoother and less laggy.
balance: Light sources no longer stack in range, though they still do in intensity.
/🆑
2020-08-22 14:56:38 +12:00
Rohesie
584580d664 to the base (#52917) 2020-08-21 22:48:02 +02:00
Rohesie
7859721611 Explosions SS runtime fix + code cleanup (#52894)
* runtime fix

* turf references are immortal
2020-08-21 21:57:29 +02:00
Qustinnus
cedac4a44b Update code/game/objects/effects/spawners/scatter.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
2020-08-21 06:58:59 +02:00
floyd
9b4a488216 no food stuff 2020-08-20 23:36:18 +03:00
Jared-Fogle
45c14f6330 Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
2020-08-20 09:11:28 +12:00
TiviPlus
0ab4f38605 Diagonal macro thingu (#52927) 2020-08-18 22:35:33 -03:00
Rohesie
25f670f8de Opacity refactor (#52881)
Moves all opacity var manipulation to a proc which sends a signal.
    light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
    has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
    Some opacity-related sight procs optimized as a result of this.
    Some variables moved to the object's definition.
    A define or two added into the mix for clarity.
    Some code cleaning, like turning booleans into their defines.
    One file renamed for clarity.

Changelog

cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl
2020-08-19 13:24:20 +12:00
Qustinnus
f54de4a2b8 refactors resist act to be on atom level (#53016) 2020-08-18 20:30:44 -03:00
Rohesie
b0726e032b Icon smooth refactor (#52864)
bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system.

    canSmoothWith list turned into a bitflag list.

    smoothing_groups list added to substitute the type path list.

    smoothing procs turned into atom procs, refactored and optimized a bit.

    smooth directions redefined in order to fit in 8 bits for a future smoothing system

    some variable names changed, foreseeing a second smoothing system

    SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly.

    SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss.

    Does very minor code cleanup.

    Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists.

    Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number.

Could be tested a bit to see if I missed any icons not properly smoothing.
2020-08-13 14:03:49 +12:00
silicons
51dc283773 supermatter anomaly generation can no longer be used to get anomaly cores (#52732)
* fix

* webedit moment yes i'm testing this pr shhhh you didn't see that failed compile

* haha what if i tested my code?
2020-08-06 15:25:45 -03:00
Rohesie
6ff08e1c69 Color standardization, vars moved, and signals (#52574)
Defined all the existing light_color values.
    Moved their definitions to colors.dm
    Made white the default color. It was so already, but that was very obscured.
    Moved the atom light-related variables to the atom definition.
    Wrapped changes to variables such as light_color into procs that report the event through signals.
    Moved the light_on variable to the atom level, also adding a signal for its changing, to represent toggling lights.
    Cleaned up a little bit of code in where new variables were defined before redefinitions.

This is all atomization to reduce changes in #52413
None of this affect gameplay at all, it's all code cleaning and refactoring.

There's more colors to standardize, a search for color = will find lots of targets, and I see little need to have both the LIGHT_COLOR and COLOR patterns, but I don't want to make this PR bigger than it already is.
2020-08-04 13:59:48 +12:00
LemonInTheDark
092af76b5d Adds an atmos debugging tool and excited group visualizer (#52395)
* Adds an atmos debugging tool and excited group visualizer

* rebuild moment

* yarn install -> yarn run build

* Sigh

* Fixed UI, did not test, needs a rebuild.

* Proper flexing

* Adds varied colors, improved ui courtusy of stylemistake:

* Fixes a runtime, updates tgui

* added superconductors, cleaned up some shitcode, removed a clashing color

* Woop

* Speed

* rebuild

* Adds a tick count

* begone auto-update

* color defines

* rebuild moment

* color improvements, fixes updating

* adds another preprocesser define to handle showing max shares in the ui

* test of application system?

* patches up some display issues, allows for smooth flowing from one group to another

* overlay-ified

* client testing

* dmi moment

* plane master

* it fucking works

* size change

* passthrough

* rebuild moment

* adresses review concerns, toggles active turf vis on when testing

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-08-03 09:15:08 +02:00
Fikou
14725daf58 repaths neurotoxin + embedding changes in bullets + adds effects when you shoot energy weapons (#52543)
* how

* Update alien_powers.dm

* adds impact effects, makes thinks that shouldnt embed not embed

* rogue pixel moment
2020-07-30 01:33:51 -03:00
Daniel Hultgren
0741b1977f Cleanable cleanup (#52477)
* Don't initialize the atom_colours list on atoms until it's actually needed

* Moved bloody_hands var to mob/living/carbon/human instead

* Added COMSIG_COMPONENT_CLEAN_RADIATION signal to reduce moms spaghetti

The shower and suit storage unit now calls this signal instead of either doing it manually or doing it via the washed proc

* Cleaned up carbon washing, renamed washed to wash

* The wash proc now doesn't take the washer as first arg because that wasn't used anywhere
* The wash strength is no longer optional
* Carbons now overrides the wash proc instead of using the signal
* Properly check for obscuredness before washing any equipped items
* Properly wash all items and bloody hands etc
* Added clean_lips proc for humans for cleaning any lipstick

* Cleaned up washing. Washy stuff now calls wash instead of calling the clean signal directly

* Renamed is_cleanable to ismopable, gives this category a more fitting purpose. Many things beyond floor decals are cleanable. It is now also determined using the atom layer instead to make it more generic.
* Properly utilize the is_cleanable define
* Added wash override for turfs where they also wash any mopables on the same tile
* Space cleaner and cleaning element etc now simply washes the mob instead of doing its own manual cleaning on ~some~ equipped items

* Non-component washables now simply override wash instead of registering for the clean signal

* Fixed some left over clean signal registers not returning true

* Added clean_strength var to space cleaner

* Moved human wash proc next to the other washing procs

* Also wash glasses and mask if not obscured when washing face

* Fixed attempting to "scoop up" cleanable decals using a rag

* Fixed plasmaman spacehelm icon not updating when washed

Also removed a duplicated worn_overlays proc

* Fixed head icon not updating when washing lipstick

* Moved radioactive clean signal register to where it should be

* Added atom radiate VV verb for debugging

* Redesigned the CLEAN constants into a more sensible flags setup

This makes it more dynamic, cleaning apparatuses can clean more specific than just a cleaning strength.

* CLEAN_TYPE_* flags indicate a specific cleanable, such as blood, fingerprints or disease
* CLEAN_* consts consist of a combination of cleaning types to make cleaning apparatuses have a consistent behaviour on what they clean

* Fixed broken rad removal logic in showers

* Apply suggestions from code review

Co-authored-by: Rohesie <rohesie@gmail.com>

* Removed unneccesary bool from sink code

* Fixed wrongly named variable in turf wash

* Renamed bloody_hands to blood_in_hands

Co-authored-by: Rohesie <rohesie@gmail.com>
2020-07-29 09:31:38 -03:00
Rohesie
cb9f81e43c Renames smooth var to smoothing_flags (#52427)
* smooth_flags

* SMOOTH_FALSE

* smooth_flags
2020-07-29 10:19:23 +02:00
Jared-Fogle
2b14436488 Add check timer sources debug command (#52417)
* Add check timer sources command

* Recognize linked list implementation
2020-07-28 12:36:53 +02:00
TemporalOroboros
5b99d66569 Replaces some zero-delay timers with INVOKE_ASYNC (#52434)
* 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
2020-07-26 22:09:58 -04:00
AnturK
4e1f0c9664 Smoothing cleanup, variables moved, atom movable three Destroy() merged into one (#51878)
* smooth

* derp

* parent call order

* defined

* merge stuff

* tab

* merge conflicts

* call parent first
2020-07-21 19:28:06 +02:00