* Teshari cultural food
* reorganized some file paths
* made the jerky a little more appetizing
* removed unnecessary text from the teshari food define
* Adds the installed message phrase for voice analyzers to logging (bonus runtime fix) (#70066)
* Adds the installed message phrase for voice analyzers to logging
Hey there,
Sometimes, it's CBT to figure out what exactly made a bomb go off, especially when a voice analyzer is involved. Now, when a voice analyzer is involved in TTV Bomb/Grenade explosions (already logged), it will also output the recorded phrase when present.
To do this, I just span up a quick `isvoice()` macro define to ensure that we would get the variable, and it would just append the message that we were already spitting out into logs. I rewrote how grenade logs currently operate a bit, let me know if I accidentally omitted something critical.
* Adds the installed message phrase for voice analyzers to logging (bonus runtime fix)
Co-authored-by: san7890 <the@san7890.com>
* Planks create barricades on doors/windows and can be crowbarred (#69676)
* Wooden planks can be used on doors/windows to barricade it, using a can_barricade Element.
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Planks create barricades on doors/windows and can be crowbarred
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
* Fixes a bunch of cult abilities not working (#70036)
* Fixes a bunch of cult abilities not working
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Removes canuserrotate from simple rotation's screentip (#70002)
Removes canuserrotate from rotation context
Removes the check on whether the user can rotate a chair or not, in the screentip context message.
We shouldn't check to see if a person can or can't rotate a chair or not, they will instead get the feedback when they try to rotate it if they fail, but it's better if the screentip let them know it's a mechanic that exists.
* Removes canuserrotate from simple rotation's screentip
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Fixes `async_fire_ranged_attack` failing to get `target_mob` for targeting body zone (#70001)
* fix var missing passed value in fire_ranged_attack, allowing glockroaches to fire again.
* Fixes `async_fire_ranged_attack` failing to get `target_mob` for targeting body zone
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Fixes voice of god runtime when a target resists the command (#69921)
* Fixes voice of god runtime when a target resisted your command and adds a grep to avoid it being a problem again in the future.
* Fixes voice of god runtime when a target resists the command
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Fixed USB ports not working (#69920)
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Fixed USB ports not working
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
* Fixes Bread Smite Causing Some Fucked Up Shit (#69853)
* Fixes Bread Smite Causing Some Fucked Up Shit
Hey there,
So basically, when you had the bread smite done on you, you were _just_ added to the contents of the bread. Nothing more. That means that you could pick it up. You couldn't add it to your bag (it would always return back into your hand(?)), but it would create some weird oddities that was just cursed in general. Let's make it so you can't hold the container that you are contained within by giving you HANDS_BLOCKED.
* actually we don't need the named arg
lets get rid of the cursed thing entirely
* removes sanity check
* we do a bit of component trolling
THIS TOOK ME TWO HOURS FUCK YOU
* removes cruft comment
* cleans up code a teeny bit, upgrades to incapacitated
* wait that named arg is still there wtf
* Review Time
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
* wrong operator and wrong order of operations
* null out the container
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* checks to see if container is qdeld
* weakref time
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Fixes Bread Smite Causing Some Fucked Up Shit
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Add Alt RMB and Ctrl RMB screentips (used for Simple Rotation) (#69726)
* Add Alt RMB and Ctrl RMB to screentips
* Add Ctrl and Alt RMB screentips to defines
* Add Alt RMB and Ctrl RMB screentips (used for Simple Rotation)
Co-authored-by: Tim <timothymtorres@gmail.com>
* Verbose Vote Initiation Feedback Tooltippery (#69763)
* Verbose Vote Initiation Feedback Tooltippery
Hey there,
So basically, the old implementation had it such that when a vote was disabled and you tried to trigger it, you could get a very nice message in your chat explaining why you could not trigger that vote in that moment. HOWEVER, there's a current fatal flaw in this logic:
You can't ever get that to_chat reason as to _why_ this vote is disabled since you can't click the button. I don't know if this ever worked, which is sad, because we had a lot of these nice messages that one would never see. So, let's leverage the power of TGUI and add messages.
The messages are applied per-datum singleton, and are a generic explanation of what the vote does when there is no specific reason assigned to it when the can_be_initiated() proc runs. If it can not be initiated, we change the message to reflect exactly why the player can not initiate the vote. It ends up looking something like this:
In order for this to work well for the restart vote and to lessen the amount of copy-pasting I might have to do, I created a new proc that checks to see if a valid admin is online, and uses that for both updating the message and restarting the server if the vote clears.
* fixes messages not resetting
* removes misleading section
the admin can always restart the server if they wish
* Verbose Vote Initiation Feedback Tooltippery
Co-authored-by: san7890 <the@san7890.com>
* Fixes bileworms being unable to act (#69874)
* Makes bileworm AI use weakrefs for targets
* Apply suggestions from code review
* Update code/datums/ai/basic_mobs/basic_ai_behaviors/try_mob_ability.dm
* question mark
Co-authored-by: ShizCalev <ShizCalev@ users.noreply.github.com>
* Fixes bileworms being unable to act
Co-authored-by: GoblinBackwards <22856555+GoblinBackwards@users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@ users.noreply.github.com>
* Fixes some cases of adjusting wound blood flow to use the helper (#69513)
Makes blood flow adjustments use the blood flow adjustment helper.
* Fixes some cases of adjusting wound blood flow to use the hlper
* modular
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
* Rocking The Boat, er, Map Vote (#69561)
* Rocking The Boat, er, Map Vote
Hey there,
A while ago, I spooke (typo intentional) to some other people. One frustration I heard was the fact that people would sometimes sneak through map votes during the very start of a shift, during a high-paced portion, or just as a meme. People in OOC would then flood the vote, putting in any given station. However, if a vote happens 10 minutes in- and the round goes for 70 minutes and not many of the original players are around, then it's not particularly fair to those who have to play next shift on a map they bemoan.
So, we can rock the vote! If a player isn't particularly chuffed with the hand they are given, they can poll the players to see if they want to change the map as well. If rocking the vote goes through, huzzah, you get the ability to vote for the map again. If it doesn't go through: tough luck. You can rock the vote one time per shift by default, and server operators can change the amount of times you can call to rock the map vote at their discretion. Calling to rock the vote either successfully or non-successfully counts as a "call", and when that limit is exceeded: no more calls.
Does this mean that we will only rotate between two maps because pissants will keep rocking the vote until they get what they like? Maybe? I still see people bemoan getting Tram or shit the bed over IceBox, but I think enough people get sick of bread-on-butter to take the server where it need to go. If operators don't really like seeing only two maps play, they can always adjust the config to ensure it doesn't happen.
* makes the grammar grammar
it would be "Rock the Vote vote" otherwise
* Rocking The Boat, er, Map Vote
Co-authored-by: san7890 <the@san7890.com>
* Sleeping Carp deflect works once more (#69821)
* Actually passes user in can_deflect in sleeping carp, making it work again.
* Sleeping Carp deflect works once more
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes some internal spelling of "auxillary" (#69789)
Today I tried searching for the code related to the auxillary base location remote.
Today I learned that I didn't know how to spell "auxiliary".
Fortunately, I learned that two other people made this same mistake, so I don't feel stupid.
Searching for other common mispellings of the word didn't show anything, and there are only so many ways to spell it wrong.
* Fixes some internal spelling of "auxillary"
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixed a bug that causes sliced food to have significantly fewer reagents than intended. (#69733)
* Fixed a bug that causes sliced food to have significantly fewer reagents than intended.
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
* fix xenbio bag (#69518)
A little earlier, it was gone to use bags of xenobiology on reproductive extracts, but now, after this change, the possibility is completely returned.
* fix xenbio bag
Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
* Faxing of unusual objects (#69651)
* Fax machines have a wire panel.
Fax machines can be hacked to allow unusual input, throw their contents on receipt, and be invisible to the network.
Fax machines will accept some additional paper-like items by default.
Fax icons moved to their own file.
* Unpunctuates screentips.
You can send cash now also.
* Removes unnecessary "var".
Adds salami to food list.
* Faxing of unusual objects
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Stray Meteor event, five new special meteors, and another reason to build meteor shields (#69550)
Adds the Stray Meteor random event, as well as a few new special meteors to be featured in it (as well as to meteor waves, but to a lesser degree). Other than these special meteors being a part of meteor waves, the meteor wave event itself is unchanged by this new event.
A single meteor is thrown somewhere in the vicinity of the station, accompanied by a brief warning announcement. To make things more interesting, five new special meteor types have been created to accompany the original three (flaming/irradiated/tunguska). The special meteors have been added to the meteor wave pools, but have lesser weight than the standard meteors. Enough about that though...
* Stray Meteor event, five new special meteors, and another reason to build meteor shields
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes hard-dels related to lua signal handlers (#69555)
When I changed the syntax of SS13.lua to account for the ability to properly index tables with datums, it turns out that the callbacks created for signal handlers and timeouts had circular references, resulting in hard-deletes.
My first solution was to make it so signal handler and timeout callbacks use weakrefs, which get resolved in lua_state/call_function, but it turns out that, when calling the signal cleanup function, a qdeleted-but-not-yet-garbage-collected datum's weakref resolves to null because datum.gc_collected is set to GC_CURRENTLY_BEING_QDELETED before COMSIG_PARENT_QDELETING gets sent.
To resolve this issue, Potato and Oranges both recommended that I make a snowflake variant of resolve which ignores whether the datum a weakref points to is qdeleted - only that it is null or it's weakref isn't the very weakref resolve was called on. This proc was given a lengthy autodoc comment describing when it should or shouldn't be used, to ensure it is only used in cases similar to the one I needed to create it for (needing to resolve a weakref to a datum in a COMSIG_PARENT_QDELETING handler registered on that very datum).
* Fixes hard-dels related to lua signal handlers
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Cows can eat wheat off the ground. If cows see wheat on the ground, they'll try to go eat it (+ moonicorns with galaxy thistle) (#69253)
About The Pull Request
Cows are now grazers, they love eatin' wheat and it even heals them if hurt. If they see it just on the ground, they might eat it all! Careful, botanists! While tamed, cows won't eat off the ground if they're busy ferrying you around.
FYI: this is going to conflict with #69247 and so thiss should not be merged until that is
Why It's Good For The Game
Wanted to add this with the original port of cows to basic mobs, didn't have the TECH to do so. Now I do, now it's done. I also wanted it ready for the future where mice and rats are ported, so they'd seek out cheese to eat. I also also think it's a neat way for a cow to heal.
* Cows can eat wheat off the ground. If cows see wheat on the ground, they'll try to go eat it (+ moonicorns with galaxy thistle)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Improvement to monkey AI's weapon selection ability. Won't attack With zero force items. (#69490)
Monkeys will now drop the item in their hand when selecting a weapon to attack with if it is worse than their basic bite attack, and will avoid picking up a weapon if they can't find one that's better than their basic bite attack.
Because of this, you can no longer completely disable monkeys by filling their hands with zero force items. This also means you can no longer trick monkeys into using sutures and other medical items on you.
* Improvement to monkey AI's weapon selection ability. Won't attack With zero force items.
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>