Commit Graph

1308 Commits

Author SHA1 Message Date
Ghom
911005e03c Makes the "Ian's Adventure" station trait more interesting by making the dog deadchat controllable plus extra lives. (#62617)
About The Pull Request

Makes the "Ian Adventure" station trait more interesting by giving him deadchat control (democracy mode, 3 seconds cooldown on inputs) and a couple extra lives* to survive early round tiding.

*Basically, a new component that respawns the critter when he dies. The component itself is simple enough, but it sends a signal each respawn to allow other datums to expand this behavior how they want. I've contemplated adding a signal that can stop death, dusting and gibbing instead of respawning the mob at first but because death(), dust() and gib() were made with the assertion that the mob is always going to die I've quickly realized it'd require a refactor that's way too big and out of scope.

The deadchat control of corgis only include commands to change and drop hats, "speak" (random lines from the speak list of the mob) and spin (other than cardinal movement) for now. I'd have loved to add more complex commands (like, argumented) that can potentially be relayed to the AI controller, but I guess that'll have to wait until the thing gets refactored a little.
Why It's Good For The Game

"Ian's Adventure" is a really bland station trait at the moment. All it does is move Ian somewhere else at the start of the round. Even by the station traits standard of being small things this is insignificant, and also pretty bad considering Ian is not actually going on an adventure since he lacks the initiative to do anything being an npc dog.
This PR aims to breath fresh air into this station trait and push it toward a slighty more engaging direction, though it relies on observers to work, while still being a small """"cute"""" station trait.
Changelog

cl
expansion: The "Ian's Adventure" station trait now makes Ian deadchat controllable and gives him a couple extra lives (to survive early round tiding)
/cl
2021-11-18 13:13:57 +13:00
Ghom
026857414f The detomatix cart now sends forged messages that make PDAs explode if one tries to reply to them instead of detonating them right off the bat. (#62494) 2021-11-14 02:22:30 -08:00
Mothblocks
758d92f2a4 Fix restricted roles change breaking uplinks (#62772) 2021-11-12 13:16:41 +01:00
CocaColaTastesGood
cff8582c71 Update uplink.dm (#62735) 2021-11-11 20:23:48 -05:00
Ghilker
4b68506d54 Allow manual crafting of many atmos devices with the crafting menu (#62676) 2021-11-10 12:57:23 -08:00
Watermelon914
bb8bcd2473 Made admin circuits more abstract, they no longer end up in the contents of the shell. (#62630)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-11-08 14:55:19 -08:00
Mothblocks
ec95e7cf94 Add healing aura component (#62526) 2021-11-08 01:20:12 -08:00
John Willard
11a3984b97 Spirit holding component won't let you awaken another spirit until it's done (#62340) 2021-11-05 22:34:26 -07:00
Ghom
2e7f828e93 Blind can now smell what the Oven is cooking. Plus punctuation. (#62538) 2021-11-03 21:25:13 -04:00
John Willard
6c0aba5da4 removes double spaces AFTER symbols (#62515)
* removes double spaces AFTER symbols

* found more
2021-11-03 21:09:35 -04:00
CocaColaTastesGood
b75cd20b6d [s] Fixes an exploit that allowed players to spawn arbitrary paths (#62561) 2021-11-03 15:09:39 -07:00
CocaColaTastesGood
e93d89f1da [s] Fixes exploits (#62549)
Removes an unsanitized to chat to world.
2021-11-04 09:07:20 +13:00
Mothblocks
0f3c4e51f7 Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed (#62265)
Implements the Modernizing radiation design document ( https://hackmd.io/@tgstation/rJNIyeBHt ) and replaces the current radiation sources with the new system, as well as replacing/removing a bunch of old consumers of radiation that either had no reason to exist, or could be replaced by something else.

Diverges from the doc in that items radiation don't go up like explained. I was going to, but items get irradiated so easily that it just feels pretty lame. Items still get irradiated, but it's mostly just so that radiation sources look cooler (wow, lots of stuff around going green), and for things like the geiger counter.

Instead of the complicated radiation_wave system, radiation now just checks everything between the radiation source and the potential target, losing power along the way based on the radiation insulation of whats in between. If this reaches too low a point (specified by radiation_pulse consumers), then the radiation will not pass. Otherwise, will roll a chance to irradiate. Uranium structures allow a delay before irradiating, so stay away!
2021-11-01 04:20:39 -03:00
John Willard
88d7dbfc10 removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
2021-10-28 19:25:50 -03:00
esainane
d521116acf Refactor /turf/var/intact (#62331)
Turfs have a variable, intact, which conflates three meanings:

    Determining whether there's something that can be pried out, such as directly with a crowbar or indirectly with a tile stack and a crowbar off-hand.
    Determining whether underfloor pieces are visible.
    Determining whether underfloor pieces can be interacted with - by players with tools, through interaction with effects like chemical acid, or foam.

When plating is hit with a stack of tiles, /turf/open/floor/attackby checks whether the turf is intact, and if so, ends the attack chain regardless of whether or not the attempt to hotswap a turf (with a crowbar) is successful or not. However, turfs which want the underfloor to be visible - such as catwalks and glass - set the intact variable to FALSE, and so can be repeatedly placed over one another, as if they were the first tile to be placed over the plating.

This refactors /turf/var/intact into two distinct variables:

    /turf/var/overfloor_placed, for whether or not there is something over plating.
    /turf/var/underfloor_visible, for whether or not the various underfloor pieces should be invisible, visible, or both visible and interactable.

All references to /turf/var/intact have been replaced with an equivalent overfloor_placed or underfloor_visible reference, depending on which check is appropriate. underfloor_accessibility can take one of UNDERFLOOR_HIDDEN, UNDERFLOOR_VISIBLE, or UNDERFLOOR_INTERACTABLE. This prevents cases such as acid foam or tools phasing through glass floors to affect the underfloor pieces underneath, and covers all kinds of unusual, not-wiring-visiblity usage such as Holodeck completeness, Revenant interaction, or station integrity checking.
2021-10-28 19:14:40 -03:00
Fikou
ae0542603b removes some ways of making unvaredited custom callbacks (#62345) 2021-10-26 19:34:39 -04:00
MMMiracles
3216b3c7cb Adds a cool pair of salesman shades to the maintenace loot pile (#62141)
Adds a pair of tinted glasses to the maintenance loot pool that has a unique effect when the wearer is at low sanity. Also adds a signal that sends the sanity amount of a mob every time SetSanity is called.
2021-10-20 13:14:13 -04:00
Ghom
d9f4153a41 clickon signal procs cleanup (fixes inability to examine things in certain situations). (#62180)
Title. The clickon proc calls params2list only after the component signal was sent notwhitstanding clickon comsig procs also needing to access these parameters in order to work properly, which means every one of these comsig procs has its own params2list(params) call. This problem isn't exlusive to these comsig procs. For some reason the params text string is passed down to the melee click chain, afterattack and afterattack_secondary instead of the params/modifiers list... buuut we'll get there later. TL;DR params2list is being called more times than necessary because of a suboptimal old code.

Another issue: Some of these comsig procs ignore parameters such as shift, which is used to examinate things and access popup menus, alt, ctrl and/or middle mouse button. This is the case of the honorbound mutation datum, shy and shy in room components, mechas and the clown car. This is of course also getting fixed.
2021-10-19 13:52:59 +01:00
Jack LeCroy
4891abd267 Refactor rolling paper to use customizable reagent holder (#61758)
The component can accept dryable items and food items now. Any instance of the component can be set to use dryable items, just like normally food items are used. To add the dryable item, it's the same as with food. You attack with the item in hand. I am currently thinking about more uses for dryable items and also more ways the component can be used.
2021-10-18 11:16:07 +01:00
John Willard
87c26e8157 Broken Secways will say it's broken, rather than the component. (#62096)
changes it from
"/datum/component/riding/vehicle/secway sputters and refuses to move!"
to
"The secway sputters and refuses to move!"
2021-10-16 19:40:34 -04:00
Seris02
39e841a759 fixes udder gutlunch runtimes (#62034) 2021-10-16 19:28:23 -04:00
itseasytosee
f51000f506 Repaths knives to not all be children of the kitchen knife. (#62035)
Basically makes the code less dumb, took a long time. I worked hard to make sure there were no unintended effects (minus the fact you can no longer get spoons from the experimentor). No player-facing effects

I thought it looked weird that all cultist and combat knives were subtypes of the kitchen knives
2021-10-15 15:28:01 -07:00
Mothblocks
3be6f04b5c Add missing SIGNAL_HANDLERs (#62115)
Add missing SIGNAL_HANDLERs
2021-10-15 07:01:02 +01:00
Ghilker
95c8e00af7 cleanup _HELPERS/_lists.dm and all the necessary files (#61827)
Bring _HELPERS/_lists.dm to latest standards by:
-Adding proper documentation and fixing existing one
-Giving vars proper names
-Procs now use snake case as per standard (many files that use those procs will be affected)
2021-10-12 14:48:51 +01:00
Fikou
3cee8f53b2 fixes mode switch actions on storage items being broken (#62059)
Checks the wrong variable, changed it so that it now checks the correct variable
2021-10-12 14:34:49 +01:00
MrMelbert
3a2d33afaa Converts the behavior from suit/toggle to component behavior (#61941) 2021-10-11 03:28:29 -07:00
LemonInTheDark
861bf808bc Fixes a few hard deletes and runtimes I either caused, or ran into when trying to fix hard deletes (#61953)
Please don't try and send chat messages if you have nothing to say
Fixes a spurious runtime.
Fixes a runtime caused by my lack of understanding of huds. remove_hud_from is intended for hud watchers, remove_from_hud is intended for hud items. Doesn't really make sense most of the time, and just runtimes out the ass
Fixes a runtime in shapeshifting, restore should not run if the object is not restoring, or if it's deleting. it should run if it's not restoring, and it's not deleted. 4head
Fun fact, if there's two turret control boards they'll override each other. Use weakrefs. Oh also removes a var called cp, nothing good will come of that
Today in: Good lord the stacking machine is an afront to god, we discover that the labor claims console was attempting to act as a console, which of course fails when it comes time to clear it's improperly named var. Disgusting
Attempts to fix potential wound ref hangs in surgeries? maybe?
Fixes a runtime in luminescent stuff I created in my big harddel crusade. owner is a mob, not a species
Fixes a runtime related to headspikes deleting themselves twice. Pain
Fixes hard deletes sourced from the prophet trauma. Good fucking lord this is awful
Offhand item is somehow hard deleting. I have no idea how. Here's hoping signals fixes it, because if it doesn't I'm stumped. It's not a common scenario, but it does happen in spurts that suggest repeated usage
2021-10-09 09:44:21 +01:00
Krysonism
6832084d70 Fixes riding abilities by sharing action buttons (#61854) 2021-10-08 05:06:43 -07:00
Watermelon914
d15b305527 Refactors the list datatype to support composite lists. Adapts a lot of circuits to be able to properly use composite lists. Adds the dispenser shell (#61856)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Colovorat <35225170+Colovorat@users.noreply.github.com>
2021-10-06 22:51:36 -07:00
Ghilker
b95c0366a4 _HELPERS/unsorted.dm has been sorted (#61882)
bring code up to latest standards, move many procs to named files inside _HELPERS
no idea where to put some of these procs, help is appreciated
made more files to contain some unique code, deleted unsorted.dm, we can rest now
2021-10-05 20:22:57 +01:00
Timberpoes
8593c55c3a Fix disky teleporting itself off the emergency shuttle on transit. (#61786)
Fixes #61782

Did a minor cleanup in the stationloving component to better represent what the proc the destination_in_bounds proc actually did. It is now atom_in_bounds since it's called after the atom has moved and works on the atom's turf. This doesn't fix the problem, but it obfuscated things a bit since it was deceptively named.

The issue is that when the e-shuttle leaves the station, for every turf on the shuttle it first moves the turf's contents to hyperspace, then moves the turf to hyperspace, then changes the area. Since the player holding disky enters Hyperspace first then has the shuttle turf constructed around them, disky teleports back to the station because it enters a non-whitelisted location.

Instead of whitelisting Hyperspace, I changed the order of operations to turf transfer, area transfer and finally atom transfer. This fixes the issue (as now disky moves from z=2 to z=12 /area/shuttle/escape, where escape shuttle is whitelisted instead of z=12 /area/transit, where /area/transit is not whitelisted).
2021-10-04 22:13:33 +01:00
Ghilker
682e7132b5 cleanup of _HELPERS/game.dm (#61859)
some more cleanup, game.dm this time
2021-10-03 16:51:52 -04:00
tralezab
d9329f3e8f Fixes spirit holding component not working on null rods by adding the subtype picker component to null rods (#60767)
Null rods were not calling parent on attack_self and thus not sending signals to the component. DUMB! STINKY!!!!

I have elected to make subtype picking a component itself so this mistake will never be remade

fixes #60712 (possessed blades cannot awaken a spirit)

also, fixes spirit holder not making sounds
2021-10-02 00:11:55 -07:00
Mooshimi
72c3e6811e Was/Were grammar fix on Knock Off (#61817)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
2021-10-01 23:38:46 -07:00
Watermelon914
1a507d23ed Refactors how circuit size is calculated. Fixed module circuit size not taking up capacity equal to the amount of circuit components inside of it. (#61554)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-09-30 11:09:42 -07:00
Jordan Brown
ccb75a554f Changes a bunch of New()s to Initialize()s (#61626) 2021-09-26 00:15:49 -07:00
Zephyr
091d07e601 Update acid.dm (#61684) 2021-09-24 18:44:23 -07:00
tralezab
6c01cc2c01 every case of initialize that should have mapload, does (#61623)
## About The Pull Request

stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it

for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

![](https://media.discordapp.net/attachments/823293417186000909/875122648605147146/image0.gif)

## Regex used:

procs without args, not even regex

`/Initialize()`

procs with args
`\/Initialize\((?!mapload)((.)*\w)?`

cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
2021-09-24 17:56:50 -04:00
AMonkeyThatCodes
1126f22073 Fixes ooze eating (#61029)
Oozes now properly communicates with the edible component to be able to eat objects.
2021-09-24 13:39:46 +01:00
Tim
e26a859016 Mapping DLC - Random Spawner Pack [MDB IGNORE] (#60522)
First off, I am aware of the Feature Freeze for this month. This PR was initially started in #60401 about a month ago to break the changes into smaller PRs. The end result for this PR is a poor man's attempt at roguelike procedural generation. Enjoy!

Link to the README for how the new spawner system works.

Added the following new random mapping spawners:

pen, crayon, stamp, paper, pamphlet, briefcase, folder, wardrobe closet, wardrobe closet colored, backpack, narcotics, permabrig_weapon, permabrig_gear, prison, material, carpet, ornament, generic decoration, statue, showcase, paint, tool, tool_advanced, tool_rare, material_cheap, material, material_rare, toolbox, flashlight, canister, tank, vending_restock, atmospherics_portable, tracking_beacon, musical_instrument, gambling, coin, money_small, money, money_large, drugs, dice, cigarette_pack, cigarette, cigar, wallet_lighter, lighter, wallet_storage, deck, toy, toy_figure, booze, snack, condiment, cups, minor_healing, injector, surgery_tool, surgery_tool_advanced, surgery_tool_rare, firstaid_rare, firstaid, patient_stretcher, medical supplies, crate, crate_abandoned, girder, grille, lattice, spare_parts, table_or_rack, table, table_fancy, tank_holder, crate_empty, crate_loot, closet_private, closet_hallway, closet_empty, closet_maintencne, chair, chair_maintence, chair_flipped, chair_comfy, barricade, data_disk, graffiti, mopbucket, caution_sign, bucket, soap, box, bin, janitor_supplies, soup, salad, dinner

Removed deprecated wizard trap, vault, and armory spawners.
2021-09-23 03:30:28 +01:00
JosephJomama
21bc0d9e3a Adds SEAFOOD foodtype, felinid diet changes (#61506) 2021-09-22 17:21:10 -07:00
Ghom
b195036881 Fixed hitting people accidentally with food if their mouth is covered. (#61601) 2021-09-21 17:03:50 -07:00
Ghom
a2d6c75f31 memories are no longer added if the target isn't aware of them. (#61375)
Fixing an oversight with the memories system. Memories shouldn't be added to people who aren't possibly aware of them.
2021-09-20 22:39:37 +01:00
Watermelon914
0c010b93b7 BCIs now come with one bci action (#61521)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-09-18 17:15:41 -07:00
tralezab
79f6030eba Post Sparring Sect Merge MISTAKE (#61527)
I forgot to push one last review, without it there will be like 2 runtimes but no real problem gamewise
2021-09-18 22:10:20 +01:00
Timberpoes
cbc6f35f54 Things that love the station may no longer leave the station, even when Dr. Anomaly says they should. (#61335)
Bluespace anomalies detonating Move() things. When something is Move()d, none of the logic in forceMove() or doMove() is called, and thus stationloving things can't tell when they've left the z-level (since that's where the logic for it is).

There are a number of approaches I could have taken: Refactoring anomalies to use different movement code. Refactoring Movement code to send more signals in various scenarios. Refactoring the stationloving component.

I settled on two steps. First, refactoring the component to bring it up to modern code standards. Second, moving the logic for COMSIG_MOVABLE_Z_CHANGED to Moved() so the signal always fires regardless of if Move() or forceMove() or doMove() is used, with an optional var for whether the z-change is communicated to contents. This means the ore box was changed to actually send the signal instead of just returning with no parent call or signal sent. Stationloving ore boxes when?

stationloving procs no longer call SIGNAL_HANDLERs directly. Var names are now more descriptive. Things are renamed and documented. At least for the parts of the code I know.

Probably some other code cleanups.
2021-09-18 17:29:55 +01:00
necromanceranne
25cfbef9cd Food decomposition can mold stuff into different items, and not just moldy messes. (#61233)
Originally the component only allowed food to decompose into the generic moldy mess. This PR changes the component so that what item the component decomposes something into can be changed per attached object. I've added a few examples; bread types > moldy bread, pizza slice types > moldy pizza slices, dead mice > moldy dead mice (they need a sprite still, I'll get to that later. Kinda catbrained rn.)

edit:
Makes sure that none of this moldy food touches cytology unnecessarily.

Rotten eggs have been added (decomposed eggs), along with rotten boiled eggs. The only way to determine if an egg is good or not requires using a container of water on the egg. If it floats, it's rotten! They also do not produce ants when they decompose, so chickens no longer get eaten alive by swarms of ants for producing all these eggs.

fixes #61188
2021-09-18 09:40:16 +01:00
tralezab
b69d87a76e Sparring Sect! (#61316)
Adds the sparring god. Your deity wants you to go out and spar people for self improvement.

Sparring
You can create contracts from paper as the chaplain. The contracts come with a set of conditions for the battle.

You can set which weapons are allowed.

You can set what you earn from winning.

You can set where you fight.

BOTH participants in the sparring match must agree to the terms for the fight to begin. Changing the terms will remove any other signatures on the contract, requiring them to review and willingly sign again.

Setting the stakes to be holy will give you favor for winning the fight. You can only do this once per person, so you can't farm points. You can use points on declaring new areas as arenas, or if you save up enough, buff your heart to keep fighting in dangerous conditions.
2021-09-17 21:04:47 +01:00
ATH1909
4dfcf865ac the negative moodlet from being held at gunpoint will no longer last indefinitely under certain conditions (#61395) 2021-09-14 18:34:21 -07:00
Ghom
1e2eab9f2e Fixes GetComponents() returning a list with a null entry when there's no component of a given type (#61267)
Fixes GetComponents() returning a list with a null entry when there's no component of a given type

This can cause runtimes. The lists should only contains instances of a specific component type.
2021-09-10 22:13:37 +01:00