Commit Graph

6378 Commits

Author SHA1 Message Date
zxaber
24be009e96 Jaunting no longer allows you to end up inside a wall (#59520)
Jaunting now keeps track of the last five non-blocked tiles you moved across while in the jaunt. Upon exit, it will attempt to deposit you into the last unblocked tile. Should it run out of tiles to try, you will be returned to your starting location. As such, jaunting mobs can no longer end up inside walls or dense objects. Tables, and anything else with the climbable element, are still allowed.

Added support to /turf/proc/is_blocked_turf() to allow ignoring climbable atoms.

Added the TRAIT_CLIMBABLE trait, applied by the climbable element, to accomplish the above.
2021-06-28 11:03:22 -03:00
Timberpoes
fbdfde900c The to_chat proc no longer accepts null or empty strings and runtimes instead. (#59843)
* Catch null text sent to to_chat

* Brain traumas no longer send empty to_chat gain strings

* Make to_chat_immediate changes and clean up args list formatting

* Fix empty to_chat message where there is no memo for admins

* Fix additional edge case where there are no messages for the ckey.
2021-06-28 16:11:33 +03:00
cacogen
d3dd525e08 Cannabis has more believable effects (#59360)
Adds cannabis reagent and replaces space drugs with it in cannabis products
Adds space drugs to rainbow weed, which fits its theme and might satisfy the people who miss the effect
Removes lipolicide from cannabis products in favour of the reagent consuming nutrition directly
Cannabis reagent gives you messages describing symptoms of cannabis intoxication, makes you laugh, makes you hungry, has a chance to couchlock you buckled to a chair and put you to sleep lying down
Cannabis no longer references hallucinating, can't be overdosed and has no addiction
Adds Stoned status effect, which is applied by cannabis reagent
Stoned status effect slows you down, gives you bloodshot eyes, makes you clumsy, boosts your mood and gives you the drugged sound environment
Adds "stoned" icon state for Stoned status effect screen alert (sprite shamelessly stolen from the Smoke spell)
Adds BLOODSHOT_EYES trait, which is applied by Stoned status effect
Adds examine eye descriptions for bloodshot eyes and player-chosen red eyes
Adds cannabis movespeed modifier, which is applied by the Stoned status effect
Adds Stoned mood event, which is applied by Stoned status effect and gives the same mood boost as High but doesn't reference tripping
2021-06-27 21:14:48 -03:00
Time-Green
a915c7167e Refactors species stomach code, makes ethereal charge inherent to their stomach (#59801)
A stomach would literally just ask the species datum how to be hungry and made a bunch of exceptions for ethereals. I mostly just moved code around so that hunger is handled by a persons stomach, thus shrinking the species.dm bloat.

This also makes it so ethereal's charge mechanic is unique to their stomache, instead of this really weird inbetween where just nothing happens and you kinda starve to death. You can stick an ethereal stomach in a human and this will replace their hunger mechanic with the charge mechanic and lets them absorb power from APCs and everything. You can also give ethereals a normal stomach and they'll use the normal hunger mechanics
2021-06-27 12:35:53 -03:00
Mothblocks
23790c6c5e Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
2021-06-27 15:43:49 +01:00
Emmett Gaines
67c89fa1ab Greyscale Mat Datum Stationary Smooth Tanks (#59556)
Stationary gas tanks have been in a terrible place for a long time, this addresses some of the issues with a more balance focused change coming in a second mapping pr after this one.

Stationary gas tanks have been made constructable and act similarly to canisters in that they can be damaged, repaired, and over-pressurized to explode. Additionally, they can be made with any rigid material and their stats depend on that material. A glass tank is going to have far less pressure capability than one made of plasteel.

In terms of gameplay there are two main differences now: Adjacent stationary tanks will merge together both graphically and with their internal storage. Any port on any of the tanks can access this shared storage. Also stationary tanks no longer magically have many times the volume for gas as the tile it's in, instead they have a pressure cap and a normal amount of volume.

Of interest to coders this pr also adds a generic grouping datum that acts similar to how pipe networks work. It maintains a listing of all adjacent objects whose type falls within a specified filter. In this case it's used for the gas tanks to know of every other tank in the group. I'll be looking into spreading it's usage elsewhere where this can replace existing one off systems.

Some (de)construction:
First a glass tank is constructed which is then immediately damaged by the high pressure in the gas storage that is now shared. After repairing it for a moment another metal tank is built.
2021-06-26 19:26:33 -07:00
Timberpoes
ffacc8b1e5 Adds a kneecapping element and adds that very element to baseball bats. (#59816)
Implements appropriate signal handlers for /obj/item/proc/attack_secondary() - Secondary item attacks now send signals and signal handlers can now cancel the attack chain, continue it or move to the primary attack chain.

Adds a kneecapping element.

Kneecapping element replaces the item's secondary attack with an aimed attack at the kneecaps under certain circumstances. If these circumstances are not met, the secondary attack chain will continue as normal with the item's normal secondary attack.

Element is incompatible with non-items. Requires the parent item to have a force equal to or greater than WOUND_MINIMUM_DAMAGE. Also requires that the parent can actually get past pre_secondary_attack without the attack chain cancelling. Funnily enough, the Element doesn't require a blunt weapon. If admins add it to sharp or pointy weapons, they get the same aimed attack but with sharp and pointy wounds instead - Because all the Element does is add a hefty wounding modifier.

Kneecapping attacks have a wounding bonus between severe and critical+10 wound thresholds. Without some serious wound protecting armour this all but guarantees a wound of some sort. The attack is directed specifically at a limb and the limb takes the damage.

Requires the attacker to be aiming for either leg zone, which will be targetted specifically. They will than have a 3-second do_mob before executing the attack.

Kneecapping requires the target to either be on the floor, immobilised or buckled to something.

Passing all the checks will cancel the entire attack chain for the Element to handle attacking logic.

This Element has been added to the baseball bat. Any other items that wish to implement its functionality in the future are free to.
2021-06-26 10:10:58 -03:00
DragonTrance
279c93a0a7 Adds Defines for Species IDs (#59797)
Simply puts species IDs into defines ("lizard" turns into #define SPECIES_LIZARD "lizard"). This does not affect any gameplay, and is purely for making sure future code doesn't go all fucked up because someone accidentally misspells something

I only changed code that was spelt correctly, so if there actually is a typo somewhere, it isn't changed
2021-06-25 15:30:16 -03:00
Arkatos1
0b6bcbe711 Integrates spider eggs into the mob spawners (#59727)
Integrates spider egg clusters into the mob spawners instead of them being their own thing, which cleans up a code a fair bit, and gives players an overview of all available types of clusters in the ghost spawners menu, example image below. This also means players banned from ROLE_ALIEN will not be able to spawn as one, as they are very similiar antagonists in concept and it is probably wiser than using default ROLE_LAVALAND on mob spawners for restriction of this role.
Expanded mob spawners code to accomodate for a situations where spawners are using radials for handling mob choosing, and also for when spawners have special conditions for when they are available (like until eggs are mature, for example).
Mob spawners now support giving their mobs multiple factions membership, instead of being limited to only one.
Spider egg clusters now stop processing when they mature, as there is no need for them to do that anymore by that point.
Cleaned up and updated some spider variant radial info boxes, so players have better idea about each variant individual strengths and weaknesses.
2021-06-25 00:09:19 -03:00
Timberpoes
75a3717a04 Modifies right click logic so that it is not the same priority as modifier keys. (#59656)
Strips out the existing right click code - Due to the myriad of ways right clicking has been implemented, dedicated signals and procs for right clicking without modifiers are fundamentally incompatible with our system of primary and secondary attacks.

Adds additional signals to attacking code. These signals allow atoms to cancel the attack chain early on secondary attacks, or override the standard procs and not send signals to prevent any undesired behaviour from signal handlers.

Items that used RightClick procs have been converted to attack_hand_secondary.

The slaughter demon, having its own set of snowflake code as poor OOP principles have been applied in UnarmedAttack() procs with lacking calls to parent procs and arbitrary redefinition of behaviour, checks for a right click in its own UnarmedAttack() and performs a bodyslam off that.

Storage components now hijack the secondary attackby stage via signals to handle their opening and closing shortcuts on right click. When you right click a storage component equipped item with an object in your active hand, the object has an opportunity to perform its logic in pre secondary attack code and cancel the attack chain. If it does not cancel the attack chain in pre-attack, then the storage component takes over for attackby and, if possible, opens the relevant inventory and ends the attack chain.

The forensic scanner is a proof-of-concept of this working in action. With its scan logic moved from afterattack code to pre attack code for right clicking, right clicking with the scanner will now perform a scan where previously one was impossible. Left clicking still does what it always does - Scans at the very end of the attack chain.

The logic still isn't perfect - For example, you still can't attack containers in melee even in combat mode (you'll either open them or put your weapon into them regardless of which option you choose) - But this is a better setup overall which allows for items to at least override this behaviour in pre-attack if needed.
2021-06-24 14:30:33 -03:00
Watermelon914
921416b5d8 Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more. (#59728)
Adds the airlock shell. The circuit has full control over the airlock.
Refactors USB code to be easier to use for less experienced coders.
Implements USB cables for the binary valve to be able to open/close the valve.
Adds a private channel for radios that only lets circuits with the same owner's ID to interact with it.
2021-06-24 14:22:19 -03:00
eeSPee
b8f675fbf1 Ghoul Moodlet + Max HP fix (#59682)
Adds ghoul moodlet.
Fixes a undocumented issue with ghouls dying and being revived with 25/50 max health.
2021-06-24 14:21:47 -03:00
Watermelon914
f92403f3ed Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#59635)
Adds the multiplexer circuit component - en.wikipedia.org/wiki/Multiplexer
Circuit components can now be directly inserted into shells rather than having to take the integrated circuit out.
Special information can be accessed from components now through the "Info" button besides the eject button on a component.
2021-06-23 18:34:19 -03:00
MrMelbert
8dfd1fb627 Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus) (#59705)
This PR converts cow-tipping and medibot-tipping into a component, /datum/component/tippable. Cows and medibots now use the tippable component to control their tipping behaviors.

This PR also goes through a few atom_attack_hand signals and makes them all send the same arguments.
2021-06-23 00:39:22 -03:00
LemonInTheDark
6fcbce39cd Makes turfs persist their signals, uses this to optimize connect_loc (#59608)
* Makes turfs persist signals

* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear

* Converts all uses of connect_loc over to the new patterns

* Adds some comments, actually makes turfs persist signals

* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work

* bro fuck documentation

* Changes from a var to a proc, prevents admemems and idiots

* Extra detail on why we do the copy post qdel
2021-06-22 23:12:34 -04:00
Fikou
24549d707b Toy Update (#59754)
* code

* sprite part 1

* sprites and mapping

* wa

* fix

* warden figure fix

* warden fix 2

* wahwah

* Update code/game/objects/items/toys.dm

* series

Co-authored-by: tralezab <spamqetuo2@gmail.com>
2021-06-22 00:17:26 -07:00
Rohesie
e03cd1aada Refactors move procs to support multitle objects (#59658)
Enter(), Entered(), Exit() and Exited() all passed the old loc forward, but everything except a single a case cared about the direction of the movement more than about the specific source.
Since moving multi-tile objects will have multiple sources of movement but a single direction, this change makes it easier to track their movement.

Cleaned up a lot of code around and made proc inputs compatible.

I'll add opacity support for multi-tile objects in a different PR after this is merged, as this has grown large enough and I don't want to compromise the reviewability.

Tested this locally and as expected it didn't impair movement nor produced any runtimes.
2021-06-20 14:55:37 -07:00
dragomagol
09c0f20377 Correctly pluralize multiple projectiles (#59702)
When something gets hit by multiple projectiles whose names end in "s", an extra "s" gets added to pluralize them. Sadly \s doesn't add the es, so I've made a proc with the other conjugation methods and used it for projectiles.
2021-06-20 14:22:26 -07:00
Timberpoes
65cf3929ce Improves H.A.U.L. gauntlets and /datum/component/strong_pull code, fixing a couple of little issues in the process (#59550)
Does a bit of a logic re-write on the cargo gauntlets and their strong_pull component.

Cargo gauntlets themselves have been converted to use signals for equipping and unequipping.

Their component reference has been changed to a weakref so if the component is ever Destroy()ed for any reason outside of the gauntlets it doesn't hard del.

The strong_pull component now registers signals with parent in RegisterWithParent() instead of Init() and removing the strong grip is no longer a SIGNAL_HANDLER proc. It is now called by the signal handler for no longer pulling things and in Destroy(). This stops instances where pulling things and removing the gloves didn't remove the pull effect appropriately.
2021-06-20 14:12:10 -07:00
ArcaneMusic
839a6d45bc Converts suspenders to GAGS. (#59537)
Suspenders were already basically given a greyscale sprite by me in the past, this converts them to GAGS allowing custom recolors of them through existing code already in place.
2021-06-20 13:54:32 -07:00
Y0SH1M4S73R
63e33bd709 Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code) (#59636)
I noticed that various nonhuman body features can't be changed using genetics. I corrected this by adding a block to character genomes allowing you to edit features in the DNA console.
2021-06-20 16:20:09 -03:00
Krysonism
83b78e58fa Add ectoscopic sniffer to Robotics Labs (#59494)
This PR adds a new machine; the ectoscopic sniffer, to the robotics lab on each map.

The sniffer is small desktop machine used for detecting paranormal activity, it displays a green flash and a chime every time it is touched(as in attacked) by a ghost.

It has a single wire inside, when this wire is pulsed, it triggers the animation and chime, as if touched by a ghost, maybe some enterprising crewmember can use this to their advantage. When this wire is cut, the device won't trigger, no matter how many spooks or haunts touch it.

---

This PR is above all fun.

Of course, it can be used as the author of the previous PR intended; to alert the roboticists of souls willing to occupy a positronic brain.

Clever spacemen will always figure out how to use this kind of device for more creative parascientifc research.

It is still limited by its low bitrate and the very low quality of the information as compared to something like ghost court, since a single malevolent spirit is able to feed the living bullshit.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-06-19 14:32:44 +01:00
Watermelon914
21103dc00b Fixes integrated circuits not being able to have more components added to them (#59724)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-06-19 20:38:35 +12:00
Rohesie
0ec599786a Adds a setter for density (#59529)
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.

Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon
2021-06-16 15:06:10 -07:00
Mothblocks
4007f74490 USB Cables -- Connect circuits to computers/machines (#59345)
* Initial commit

* Sprites, finishing work

* More ways to detach from circuitboards

* Clear TODOs, give bots a button

* Fix qdel loop

* Designs

* It's the bots that have them

* Grammar fix

* Feedback for connecting to circuit directly

* Add USB cable design to basic circuitry

* Better naming

* Feedback

* Fix for new code

* COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY

* span procs
2021-06-15 14:23:16 -04:00
John Willard
a5308068d7 Gives the Bartender a Weapon's permit by default (#59642) 2021-06-15 09:38:52 -07:00
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
RaveRadbury
d1655dab56 Convert wrapping paper sprites to GAGS (#59374)
Wrapping paper has been put through GAGS. You can set the base color and ribbon color with right click, then apply it to a package.

Co-authored-by: coiax <yellowbounder@gmail.com>
2021-06-13 21:40:26 +01:00
MrMelbert
f61c47f371 The nth grown food refactor: Changes MOST unique plant effects into special plant genes/traits! Plant Genes+ (#59107)
* Auto doc'd much of grown botany food and plant traits and renamed a buncha variables and parameters to match modern contribution guidelines.
* Cleaned up a good bit of plant gene code left over from the prior refactor and modernized some of it.

All plant effects that were once unique to a plant are now un-graftable, un-mutatable, un-shearable plant traits - called IMMUTABLE traits.
The ultimate goal of this PR was to make all of the hidden, arcane traits that are spread through botany's various plants and add a way to figure out they exist in game. Take omega-weed, for example, which has a maximum volume of 420 units.


What does this mean for the enterprising botanist?

In most cases, all the plants should act the same way. None of the immutable traits are graftable from any of the plants, they cannot be sheared off of the plant, and they cannot be mutated randomly from strange seeds or high instability mutations.

Though, in refactoring these traits, two things have been fixed: Novaflower's on hit and Deathnettle's on hit now proc again. If you aren't aware, Novaflowers apply firestacks and Deathnettles paralyze on hit. They've been in an unreachable code segment for a few years now and i'm not sure if they should be "fixed" or not, since I think they don't need any buffs.


A few other things have changed:
* Liquid Contents can no longer be applied to plants with Hypodermic Prickles, and visa-versa. They already didn't work together, but this means you need to go through an extra step to make LC-deathnettles.
* Killer Tomatos no longer have liquid contents. Didn't really make sense, anyways.
2021-06-13 17:03:13 -03:00
Ryll Ryll
8e135a7b04 Corgis will no longer pick up non-items (like entire cars) (#59246)
I made one hell of a whoopsie with dog AI, letting dogs fetch and pick up and carry around things that are absolutely not meant to be carryable, basically anything that isn't anchored. This restricts their carrying ability to items.

Fixes: #59202
2021-06-13 16:24:28 -03:00
Y0SH1M4S73R
c7c984f8e4 Fixes a disembowelment typo (#59519) 2021-06-13 16:07:21 -03:00
Timberpoes
ec2938c72c Refactors quirk code. (#59618)
Adds new signal - COMSIG_MOB_EQUIPPED_ITEM. Signal sent at the same time COMSIG_ITEM_EQUIPPED is and allows something to Register for every time a mob equips an item. Replaced a process() in /datum/quirk/badback with signals relating to this. Holds a weakref to any backpack it has registered signals with for use in its own remove() proc.

Removes snowflake code in /datum/quirk/light_step - This quirk no longer uses GetComponent to directly modify a component. Instead, the same code has been shifted into the component itself, which now checks for TRAIT_LIGHT_STEP and mods the volume and range accordingly.

Refactors quirk code in general - Quirks no longer do major logic in New() and no longer qdel themselves in New(). You now fully instantiate a quirk assigned to a var, then call /datum/quirk/proc/add_to_holder(). Various scenarios that shouldn't happen now get handled in this proc and calling code can cleanup properly. Quirks "support" having no quirk_holder - Since their default state is no quirk_holder until the quirk is added to a holder, and similarly quirks can be removed from a holder as well. Destroying a quirk with a quirk_holder will remove it from the quirk_holder properly. qdeling a quirk_holder will clean up any quirks attached to them.

Rethinks processing quirks - Quirks no longer all process automatically. The new logic changes mean their previous need to process() just to check if their quirk_holder had been QDELETED so they didn't become runtime factories has been removed by the refactored code. The few quirks that still process require processing_quirk = TRUE which will start them processing when added to a quirk_holder and stop processing on removal. This means there should be some many hundred fewer quirks process()ing 24/7 every shift.

Subtypes item quirks - A number of quirks are designed to give items to the player. There's code duplication and varying implementation issues, so item quirks have their own subtype with a proc and some vars to handle this. Quirks will no longer fail to give items at all (some quirks actually explictly qdel'd the items they give if the user had no free hands or slots) and will drop items on the floor in the worst-case scenario. Players will always get the opportunity to see messages related to item quirks as these are in a code path that, when the quirk is first added to a new mob, will either output immediately if the mob has a client, or wait for the mob to have a client otherwise.

"Roundstart quirks" paradigm removed - Quirks now have a path to add unique effects that aren't replicated if the quirk is transferred from one mob to another - add_unique(). Item spawning and other similar one-shot logic is done here. This means that adding a quirk to a mob will trigger the one-time effects. Transferring it between mobs (for example, slimepeople changing bodies or swapping a golem shell) will not. roundstart_quirks var renamed to just quirks since it genuinely is just a list of quirks the mob has from any source - Whether roundstart, admin or transferred.

Family Heirloom quirk - Heirloom is now a weakref.

Nyctophobia quirk - No longer process()es, now Registers COMSIG_MOVABLE_MOVED. Every footstep in the dark will slow you back to walking.

Reality Dissociation Syndrome quirk - No longer snowflakes behaviour for mindbreaker toxin on process. Now mindbreaker toxin has the anti-hallucination functionality built into its already existing HAS_TRAIT(M, TRAIT_INSANITY) check in on_mob_life.

Tongue Tied quirk - Now uses .getorganslot(ORGAN_SLOT_TONGUE) to find the tongue instead of locate() in internal_organs

Obsessed antag - Thanks to the Family Heirloom quirk now holding a weakref to the heirloom item itself, this antag type will no longer get the steal heirloom objective if the heirloom doesn't exist (ie. the weakref is null or fails to resolve, meaning the item has been destroyed)

Various quirks that were impossible to remove before are now removable - Examples being light step (which no longer directly modifies the footstep component) and bad back.

In addition, adds some extra documentation overall and improves compliance with code requirements in a number of procs (but certainly not all).

Probably various other little changes here and there to make the above all mesh together.
2021-06-13 15:47:15 -03:00
TemporalOroboros
daec5002fc Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
2021-06-13 15:40:53 -03:00
Emmett Gaines
8eed0b2a1c Additional GAGS configuration json verification (#59524)
This standardizes how values are read from the json for greyscale layers so that error handling can check for some additional things:
No extra keys in the json that are unknown
No missing keys that a layer needs to work
Values are the expected type for that key

A variety of error messages have been added for various ways the json can be malformed and should hopefully provide good feedback for anyone working with greyscale configurations.
2021-06-13 15:23:13 -03:00
Arkatos1
9f6c1d2a7b Fixes Cayenne's error sign flickering (#59614)
This PR fixes a case where Cayenne's sprite was flickering an error sign when carrying a disk and correctly assigns icon state names to JSON gags files for carp mouth and wirecutters as per newest standards to prevent further issues with them in the future.
2021-06-13 03:00:04 -03:00
Kylerace
d3a1bea859 Turns lighting objects into a datum, makes all lighting be performed with an underlay. big maptick fix very good! (#58991)
credit to zewaka for the idea of using underlays

turns the lighting object movables that were unnecessary and increased maptick into a datum which then applies and removes an underlay in update(). also applies a lot of general lighting clean ups (mostly using as anything in loops and fixing single letter var names).

multiz is a little different by necessity, now only the bottom turf's lighting matters in the brightness of the top turf unlike master where the bottom turf's lighting object is hidden from the vis_contents of the top turf. there are still some kinks to iron out here though, since currently objects suspended in openspace (like tram platforms) look bad and glass floors look bad too

only thing i have left to do is make multiz work (well)

UPDATE: multiz now appears the same as far as i can tell, its possible there are other situations in which its different but datum mats work and it automatically updates if the turf below changes. now i just need to make the system less finnicky if at all possible (and possibly merge managed_turf_vis_content with managed_overlays maybe?)

new update: its basically equivalent to normal multiz as far as i can tell (visually at least, in the circumstances ive tested so far)

NEW NEW UPDATE: turfs no longer have the VIS_HIDE vis_flag and multiz works without stacking the lighting from the floor below! so this shouldnt have any overt drawbacks to master anymore

1 needless movable per tile is terrible for maptick. this is probably a larger improvement than my emissive blocker change in terms of maptick. im guessing we'd get around 0.6 average maptick per player after this where currently we get 0.85 or so

Edit: according to lemon, sybil reached 0.71 maptick per person when tm'd with this

if this is a big enough improvement i might finally be able to get rid of the Gone discord avatar
2021-06-12 21:37:29 -07:00
EOBGames
b05af8b31d Add Lizard Food: a Taste of the Homeworld (#59412)
The aims of this commit are threefold:

 - To introduce lizard culture (based upon Common Core) in a tangible way.
 - Give some more variety of techniques and recipes to the chef and bartender.
 - To give some flavour (metaphorically and literally).

🆑 Inept, Coiax, AdipemDragon, YakumoChen
add: The release of the new cookbook, "Tiziran Cooking: a Taste of the Homeworld" has brought Lizard food to the masses! Try out some new treats, like Moonfish, Nectar Larvae, and perhaps even Headcheese at the kitchen today!
add: To coincide with the new popularity of Lizard cuisine, Nanotrasen now stocks seeds for Korta Nuts, a common ingredient in lizard cooking, in the Megaseed vendors. Botanists, you know what to do.
add: A few Tiziran fish are also available for you aquaculture lovers out there. They all like saltwater!
add: A few new snacks are also now available at the station's snack vendors, for those of you too lazy to visit the kitchen.
/🆑

Co-authored-by: coiax <yellowbounder@gmail.com>
2021-06-12 20:01:44 +01:00
Arkatos1
7e8e36b4bd Fixes slip mood debuff (#59586)
This PR fixes a case where slip mood debuff was not triggering at all due to the simple fact that the mood component was not listening for the mob slip signal, so the relevant on_slip proc was never called and therefore mood debuff was never given.

Fixes #59570
2021-06-10 21:50:41 -03:00
LemonInTheDark
f90e8cf7a3 Fixes a bunch of harddels that are sourced from player action (#59371)
Sourced from #59118 and a cursed project I'll pr later, This pr contains a lot of harddel fixes for stuff that pops up after a player interacts with something. I'm not gonna list them all here because there's something like 60 130, check the commit log if you're curious

Oh and I moved ref tracking screaming to a separate define, and made some optimizations to the thing in general. I think that's it, this pr is a bit of a frankenstine
2021-06-10 21:44:23 -03:00
TJatPBnJ
31cabe82a5 Moves opening storage items from alt-click to right-click (#59565) 2021-06-10 11:35:36 -07:00
RandomGamer123
9484440727 Durathread Strangling Bug Fix and Better Feedback (#59572)
* Makes durathread strangling show up on examine

* Better and grammatically accurate feedback

* more grammar fixes

* Makes it work on jaws of life as well

* Make it check tool behavior as well

* Fixes some compile errors
2021-06-10 09:57:21 +02:00
GoldenAlpharex
73a3b55b0d Makes it so *me and *custom no longer rely on a datum variable to store messages (#59245)
* Makes the *me and *custom use local variables for message storage

* Automatic changelog compile [ci skip]

* Documents emotes.dm, fixes(?) emote swapping, brings up the code to modern standards, hopefully.

* Whoops, now it should compile.

* More documentation.

Co-authored-by: Changelogs <action@github.com>
2021-06-09 20:42:31 -04:00
cacogen
9caf154050 Rename component (#59511) 2021-06-08 15:04:35 -07:00
Jonathan Rubenstein
7eaa8645f6 Add component and element templates (#59101)
* Add component and element templates

* Convert compoinent and element templates to markdown files

* Change element example in template to stateless

* Replace element example with gong moving sound
2021-06-08 14:36:42 -07:00
interestingusernam3
997de9b59e Adds two clown-spection scanners that print clowncrypted reports (#59306)
Alright, update the changelog and body of the PR, and comment here when that's done.
This should be ready for merge then.
2021-06-07 16:35:25 -03:00
ModDownloading
97a3b10d0a Added audio cooldown for emotes TAKE 2 (#59479)
Adds a 5-second cooldown for the audio of clapping and laughing when they are done voluntarily. Also adds the new audio_cooldown var for emotes to set new audio cooldowns.
2021-06-05 22:40:30 -03:00
ArcaneMusic
f166fffb55 GAGs modular Winter Coats (#59135)
* Wintercoats GAGS startwork

* Menu shows coats,  icons and worns do not.

* Wintercoats Custom for now kind 80% fidelity.

* Fix hood

* Undraft phase progress

* Revert "Undraft phase progress"

This reverts commit 091dda4930766879586d9f189789272a91c2f6e1.

* Twat review, custom coat moved back to custom typepath.

* Review changes and uses the better grayscale sprite.

* merge conflict

* Fixes conflicts PLEASE god

* Fixes unit test.

* Done

* Final sprite tweak

Co-authored-by: celotajstg <celotajstg@users.noreply.github.com>
2021-06-05 20:19:07 -04:00
Cimika/Lessie/KathyRyals
61654778fe Ported hair gradients from TGMC. (#59435)
* Ported hair gradients from TGMC.

* Removed preferences. Added hair spray. Added the colorist quirk.

* Adds 2 new longer fade variants

* Added to vendor. Added to goodies.

* Added the sprite for the spray.

* Grammar!

* Update code/modules/mob/living/carbon/human/species.dm

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>

* Doccing and newline.

* Reviewies concerns adressed.

* Update code/modules/mob/living/carbon/human/human_defines.dm

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2021-06-05 20:12:28 -04:00
Gamer025
f73d8a2bae Fixes a bunch of hotkey preferences bugs (#59492)
This fixes the problem of the keybind conflict message being shown over and over again until you manually save your preferences with correct keybinds + resetting to classic keys works now
You had to manually save your prefs because the code didn't save the new unbound keys to the prefs file
Classic mode was broken because the emote hotkeys didn't have classic_keys set to Unbound by default

New hotkeys are now actually set to Unbound if no default key is set
This was broken for emote hotkeys because classic_keys = list("Unbound") was missing for them
It was also broken because the code assumed conflicting keys if some Unbound key already existed ...
The code also used classic key defaults even if you had hotkey mode enabled thats fixed now too
2021-06-05 10:55:33 -03:00
Emmett Gaines
888f29db92 Improved GAGS debug (#59392) 2021-06-04 21:46:56 -07:00