there were a lot of events recorded by gharchive.org of which 1,876,285 were push events containing 2,610,857 commit messages that amount to 140,848,284 characters filtered with words.py@e23d022007... to these 38 messages:
Added Omen Spontaneous Combustion and light tube and mirror effects (#77175)
Cursed crewmembers can randomly, extremely rarely, spontaneously combust for no reason.
Cursed crewmembers can get zapped by nearby light tubes.
Cursed crewmembers can freak out when passing by mirrors.
To make up for these, triggering a cursed effect is slightly less than half as likely now when walking around now.
Cursed is fun as hell, but after a certain point it gets kind of monotonous - it's airlocks, vending machines, and the rest is too rare to count. We need more ways to comically get hurt in the game.
You might dislike the 'reduced effects' bit but trust me it is incredibly frickin' common to have shit happen to you. Add to the occasional vending machine and airlock crushes the near-constant light tubes all over the station? Yeah, that needs a toning down else it will be just a tad too miserable to be funny. Also cause the poor janitor unneeded stress.
🆑 add: Cursed crewmembers can randomly, extremely rarely, spontaneously combust for no reason. add: Cursed crewmembers can get zapped by nearby light tubes. add: Cursed crewmembers can freak out when passing by mirrors. add: To make up for these, triggering a cursed effect is slightly less than half as likely now when walking around now. /🆑
Co-authored-by: MrMelbert [email protected] Co-authored-by: Ghom [email protected] Co-authored-by: Time-Green [email protected]
Merge pull request #2737 from Superlagg/you-know-what-fuck-you-(bitflags-your-item-slots)
fixes ID timer and mistyped box slot
Science Resprite! (With Sovl!) (#77314)
What a crusty department. These outfits are... Something.
How old are these now? I'm pretty sure they're unchanged since when I started playing years ago on other servers.... besides the RD Turtleneck and Roboticist suit of course. But they still did have some touch-ups to be made...
Regardless, I think this department deserves a little love! I've tried to stay true as I could to their current designs; this isn't a re-design, just a re-sprite. I used the base jumpsuit design from Medbay for most of these since it's the most modern suit that fit with the colored-spots style.
All of them have been touched up, and the RD's "alt" is now a subtype of the buttondown so it can easily inherit any sprite updates in the future.
These deserved some touch-ups and modernization, and while I'm not keen on entirely reworking them I figured I could at the least give them the update the Science Team deserves.
(The buttondown has an outdated obj sprite in this image! It's since been made smaller and more folded) Also labcoats for comparison
🆑 image: resprited the entirety of RnD! Genetics, Robotics, the RD, and the Science Team themselves will enjoy the fresh new looks but same great taste! No, wait, great STYLE! Don't eat these, they're covered in chemicals. /🆑
Duiffel Spotfix (#76442)
Gives duffelbags their proper slot count They inherited this from backpacks, but I sorta just forgot about that
Creates "levels" of locked objects, uses that to make locked duffels work
Turns locked into something that holds defines, this makes life a lot easier. Requires a lot of boilerplate because of how many uses of these procs there are and all the passthrough and shit.
Adds a few outfit subtypes to avoid this class of failure in future.
Renames the args in a few but not all touched procs, one thing at a time
Closes #76407 Closes #76430 Had the lock check in the wrong place Closes #76441 GOD I HATE TK SO MUCH
Wrote half the pr without glasses so if it's weird gimme some grace yeah?
🆑 fix: Fixes some fuck with duffelbags, them not holding enough + issues with spawning gear in them (job shit and all) /🆑
don't believe the hype: doctests suck and they are so annoying, and they have wasted hours upon hours of my life, i keep telling myself i won't try them again, but i keep doing it, please God grant me the serentiy and wisdom to know that i should just avoid trying them in the future
good it attained -> good is attained acu*vity -> activity plabsible -> plausible the,other -> the other Rut the -> But the othex -> other Ile -> The, or He be cause every -> because every life' -> life toolive -> to live unchgnueable -> unchangeable Aristotlb -> Aristotle frienship -> friendship goodwillthis -> goodwill this view& -> view sorrowis -> sorrow is seeme’ -> seems’ mat enjoy -> man enjoy ch95en -> chosen Ncxt -> Next .from -> . From or from activityas -> activity as .consequently -> , consequently
admit,of -> admit of
capacityis -> capacity is activity:s -> activity is appearse -> appears Ichief -> chief ).we -> ), we fat this -> that this wisdom.,This -> wisdom. This ultimqte -> ultimate [a-z]q[a-pr-tv-z] -> case by case fixes for q OCR
enerdies -> enemies lie lives -> he lives of -actions -> of actions conterLplation -> contemplation
Fixes bloody soles making jumpsuits that cover your feet bloody when you're wearing shoes (#77077)
Title says it all.
It basically made it so wearing something like a kilt would result in the kilt getting all bloody as soon as you walked over blood, even when you were wearing shoes, unless you wore something else that obscured shoes.
I debated with myself a lot over the implementation for this, I was thinking of adding some way to obscure feet in particular, but it's honestly so niche that it could only have caused more issues elsewhere if I tried to fix this issue that way.
MoodFlix
MoodFlix: A Movie Recommendation Engine by Lisa Marie Barnes
Overview:
MoodFlix is an innovative SQL-based movie recommendation engine, thoughtfully crafted by Lisa Marie Barnes, designed to match your mood with the perfect film. Whether you're feeling happy, sad, energetic, or nostalgic, MoodFlix provides personalized movie recommendations based on curated moods and genres.
- Mood-Based Recommendations: Unique selection criteria that offer movie suggestions based on various emotional states.
- Diverse Genre Catalog: A well-structured database including genres like Horror, Romance, Comedy, and more, each linked to different moods.
- Actor Details: Explore movies by your favorite actors with comprehensive actor information.
- Color-Coded Genres: Each genre comes with a distinctive color code, adding a visual dimension to your browsing experience.
- Flexible and Expandable: The schema is designed to accommodate future extensions, such as adding directors, producers, reviews, or even user profiles.
- SQL Scripts: Includes all the necessary SQL scripts to create tables, insert data, and run queries.
- Documentation: Comprehensive guide and instructions to understand and navigate the database.
MoodFlix can be an incredible asset for movie enthusiasts, developers working on personalized content delivery, or researchers exploring the intersection of emotions and entertainment. Whether you're developing an app, doing a research project, or just exploring your next movie night's options, MoodFlix is tailored to provide insightful recommendations.
Feel free to fork, modify, or contribute to MoodFlix.
When Space Dragons devour people they get .extinguish()ed (#77248)
When Space Dragons devour people they get extinguished, removing flames.
When Space Dragons devour people they get extinguished, removing flames.
I find it quite annoying that even after you die to a space dragon, the jackass melts not just your jumpsuit, your suit, your hat, your mask, he also melts your entire skin off, leaving your body husked with 400 million burn damage when and if the dragon finally dies. I don't think there's any real reason for this to be necessary, it doesn't help the dragon in any way - It's just kind of a middle finger to the dead guy, or more accurately, an oversight.
Worse, because the flame sprite is stupidly noisy, when a dragon DOES die the corpses are all thrown around randomly and they all look the exact same, which makes it easier to ignore them.
If there's a concern about tracking sensors, I can make it disable them, but honestly if you can do that with demons I don't see why this would be a problem. Not even accounting for the fact that many jumpsuits ingame are fireproof.
🆑 qol: When Space Dragons devour people they get extinguished, removing flames. /🆑
Life is one big road with lots of signs. So when you riding through the ruts, don't complicate your mind. Flee from hate, mischief and jealousy. Don't bury your thoughts, put your vision to reality. Wake Up and Live!
Add stores::Policy and start stubbing in auth{z,n}
This adds GitHub oauth login, a "Policy" system for constructing aggregate implementations of various required registry services, and the beginning of auth.
I've split authentication between "TokenAuthorizer" and "Authenticator"; I think there still needs to be a "UserStorage" trait as well. The idea is that Authenticator implements the CLI web auth using an OAuth flow, maintaining an in-memory map of "login registration sessions". Once the oauth flow is complete, we register the resulting internal User object with the appropriate login registration session. The next time the CLI polls for a user, the endpoint finds the user associated with the login registration session. The handler then registers the user with the token authorizer.
And this is where UserStorage would come in: between those two steps, we should store the user somewhere (and validate that we actually want to accept this user.)
Additionally: add a Configurator type to hold general configuration data. This is a little bit of a weird one! To explain: I've made some of the more-sensitive values async in order to provide a Vault or AWS Secrets Manager Configurator in the future. Yanno: for stuff you don't necessarily want floating around memory indefinitely.
I've added (and removed) the extism plugin. I think it will make its triumphant return soon -- I want to run accept/reject/transform plugins on package version modification (whether or not that's via mirroring) as well as user registration.
Anyway, my eyes are crossing as I write this.
mobo/denom shit
various content updates etc idk he sucks ass at giving change notes
More portable cades tweaks and buffs (#3967)
Despite making a lot of tweaks and changes to portable cades I barely touched them in the game until recently. Now I have more experience and can tweak it again.
-
You can now stack damaged cades and stack stores health of each cade. You can repair stacked cades but it will take longer time.
-
Miniengi pamphlet allows faster repairs but only when cade is folded.
-
You can quickly collapse portable cades with crowbar if you have at least miniengi skills.
-
You no longer need to have folded portable cade in hand in order to repair it, but if you do, you can move while repairing.
-
It's extremely annoying to repair each individual cade in order to stack them just because it got hit by a stray bullet once. Now you can just ignore damage and keep going.
-
Yeah it took 10 second for PFC to repair each single cade. Really long. Now it's 5 seconds, but only when folded and if you have miniengi skills. Makes miniengi pamphlet a bit more relevant.
-
It was intended, but turned out it was a bit inconvenient. It was faster to collapse by hand because you didn't need to deal with tools. Now it requires just a crowbar and slightly faster. Also requires miniengi skill to use crowbar.
-
First was just a bit annoying, second allows more mobility which is the point of portable barricades.
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 ihatethisengine balance: you can stack scratched portable cades if their HP at least 75%. Doing so will reduce the health of all barricades in the stack to the level of the most damaged. balance: you can repair stacked portable cades but it will take longer time depending on how many cades in stack. balance: miniengi skill makes repairs of folded portable cades faster (10 seconds to 5 seconds, same as engineer). balance: with engineering skill at least of miniengi you can collapse deployed portable barricade with a crowbar (wrench is no longer required, slightly faster (2 sec to 1.5 sec)). balance: you no longer need to have folded portable cade in hand in order to repair it. balance: if you have folded portable cade in hand, you can move while repairing it. /🆑
Co-authored-by: ihatethisengine [email protected]
sched/core: Fix ttwu() race
Paul reported rcutorture occasionally hitting a NULL deref:
sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM
Debugging showed that this only appears to happen when we take the new code-path from commit:
2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")
and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
this would've unconditionally hit:
smp_cond_load_acquire(&p->on_cpu, !VAL);
and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.
The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.
Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.
The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):
X->cpu = 1
rq(1)->curr = X
CPU0 CPU1 CPU2
// switch away from X
LOCK rq(1)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 9
switch_to(Z)
X->on_cpu = 0
UNLOCK rq(1)->lock
// migrate X to cpu 0
LOCK rq(1)->lock
dequeue_task(X)
set_task_cpu(X, 0)
X->cpu = 0
UNLOCK rq(1)->lock
LOCK rq(0)->lock
enqueue_task(X)
X->on_rq = 1
UNLOCK rq(0)->lock
// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
X->on_cpu = 1
UNLOCK rq(0)->lock
// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb(); // wake X
ttwu()
LOCK X->pi_lock
smp_mb__after_spinlock
if (p->state)
cpu = X->cpu; // =? 1
smp_rmb()
// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 0
if (p->on_rq)
smp_rmb();
if (p->on_cpu && ttwu_queue_wakelist(..)) [*]
smp_cond_load_acquire(&p->on_cpu, !VAL)
cpu = select_task_rq(X, X->wake_cpu, ...)
if (X->cpu != cpu)
switch_to(Y)
X->on_cpu = 0
UNLOCK rq(0)->lock
However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.
(Most of the previous ttwu() races were found on very large PowerPC)
Nevertheless, this fully explains the observed failure case.
Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.
Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Momo Belia Deviluke [email protected] Signed-off-by: Riko Dan Pajar [email protected]
windows: ignore empty PATH
elements
When looking up an executable via the _which
function, Git GUI
imitates the execlp()
strategy where the environment variable PATH
is interpreted as a list of paths in which to search.
For historical reasons, stemming from the olden times when it was uncommon to download a lot of files from the internet into the current directory, empty elements in this list are treated as if the current directory had been specified.
Nowadays, of course, this treatment is highly dangerous as the current
directory often contains files that have just been downloaded and not
yet been inspected by the user. Unix/Linux users are essentially
expected to be very, very careful to simply not add empty PATH
elements, i.e. not to make use of that feature.
On Windows, however, it is quite common for PATH
to contain empty
elements by mistake, e.g. as an unintended left-over entry when an
application was installed from the Windows Store and then uninstalled
manually.
While it would probably make most sense to safe-guard not only Windows
users, it seems to be common practice to ignore these empty PATH
elements only on Windows, but not on other platforms.
Sadly, this practice is followed inconsistently between different software projects, where projects with few, if any, Windows-based contributors tend to be less consistent or even "blissful" about it. Here is a non-exhaustive list:
Cygwin:
It specifically "eats" empty paths when converting path lists to
POSIX: https://github.com/cygwin/cygwin/commit/753702223c7d
I.e. it follows the common practice.
PowerShell:
It specifically ignores empty paths when searching the `PATH`.
The reason for this is apparently so self-evident that it is not
even mentioned here:
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables#path-information
I.e. it follows the common practice.
CMD:
Oh my, CMD. Let's just forget about it, nobody in their right
(security) mind takes CMD as inspiration. It is so unsafe by
default that we even planned on dropping `Git CMD` from Git for
Windows altogether, and only walked back on that plan when we
found a super ugly hack, just to keep Git's users secure by
default:
https://github.com/git-for-windows/MINGW-packages/commit/82172388bb51
So CMD chooses to hide behind the battle cry "Works as
Designed!" that all too often leaves users vulnerable. CMD is
probably the most prominent project whose lead you want to avoid
following in matters of security.
Win32 API (CreateProcess()
)
Just like CMD, `CreateProcess()` adheres to the original design
of the path lookup in the name of backward compatibility (see
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
for details):
If the file name does not contain a directory path, the
system searches for the executable file in the following
sequence:
1. The directory from which the application loaded.
2. The current directory for the parent process.
[...]
I.e. the Win32 API itself chooses backwards compatibility over
users' safety.
Git LFS:
There have been not one, not two, but three security advisories
about Git LFS executing executables from the current directory by
mistake. As part of one of them, a change was introduced to stop
treating empty `PATH` elements as equivalent to `.`:
https://github.com/git-lfs/git-lfs/commit/7cd7bb0a1f0d
I.e. it follows the common practice.
Go:
Go does not follow the common practice, and you can think about
that what you want:
https://github.com/golang/go/blob/go1.19.3/src/os/exec/lp_windows.go#L114-L135
https://github.com/golang/go/blob/go1.19.3/src/path/filepath/path_windows.go#L108-L137
Git Credential Manager:
It tries to imitate Git LFS, but unfortunately misses the empty
`PATH` element handling. As of time of writing, this is in the
process of being fixed:
https://github.com/GitCredentialManager/git-credential-manager/pull/968
So now that we have established that it is a common practice to ignore
empty PATH
elements on Windows, let's assess this commit's change
using Schneier's Five-Step Process
(https://www.schneier.com/crypto-gram/archives/2002/0415.html#1):
Step 1: What problem does it solve?
It prevents an entire class of Remote Code Execution exploits via
Git GUI's `Clone` functionality.
Step 2: How well does it solve that problem?
Very well. It prevents the attack vector of luring an unsuspecting
victim into cloning an executable into the worktree root directory
that Git GUI immediately executes.
Step 3: What other security problems does it cause?
Maybe non-security problems: If a project (ab-)uses the unsafe
`PATH` lookup. That would not only be unsafe, though, but
fragile in the first place because it would break when running
in a subdirectory. Therefore I would consider this a scenario
not worth keeping working.
Step 4: What are the costs of this measure?
Almost nil, except for the time writing up this commit message
;-)
Step 5: Given the answers to steps two through four, is the security measure worth the costs?
Yes. Keeping Git's users Secure By Default is worth it. It's a
tiny price to pay compared to the damages even a single
successful exploit can cost.
So let's follow that common practice in Git GUI, too.
Signed-off-by: Johannes Schindelin [email protected]
QualityScaler 2.0
NEW
- It is now possible to upscale images and videos in one shot
- The message box is now more "conversational"
- Now the app will save the upscaled files by adding the chosen resolution % tag. This allows you to try different % resolutions without the produced file overwriting the previous one. --- For example, an image with BSRGANx4 and Resolution 70%: --- QualityScaler 1.14 => image_BSRGANx4.png --- QualityScaler 2.0 => image_BSRGANx4_70%.png
- New GUI based on the splendid work of @customtkinter: --- it is now possible to select files via a "Select files" button instead of the Drag&Drop function that presented several problems --- this new library allows for much more organized and optimized code --- the new interface is fully resizable and so adaptable to any screen --- the new interface also allows more space to add new widgets (in the future) to customize the upscale operations
BUGFIX & IMPROVEMENTS
- A comprehensive restructuring of the code and many micro-optimizations: --- more than 50% of the code has been restructured to be faster and more readable
- Updated all dependencies
FOR DEVS
- With the new GUI based on @customtkinter, it is easier to run the app via python script and should give less headaches than the old GUI which needed more 3/4 different libraries
- Many more logs have been added in console (for those who use the app via Python code)
I want to sincerely thank the people who support and will support this work (financially and otherwise). Thank you for allowing me to learn how to develop these projects and at the same time be able to help my parents financially. ❤
Python: Import OpenAPI documents into the semantic kernel (#2297)
This allows us to import OpenAPI documents, including ChatGPT plugins, into the Semantic Kernel.
- The interface reads the operationIds of the openapi spec into a skill:
from semantic_kernel.connectors.openapi import register_openapi_skill
skill = register_openapi_skill(kernel=kernel, skill_name="test", openapi_document="url/or/path/to/openapi.yamlorjson")
skill['operationId'].invoke_async()
- Parse an OpenAPI document
- For each operation in the document, create a function that will execute the operation
- Add all those operations to a skill in the kernel
- Modified
import_skill
to accept a dictionary of functions instead of just class so that we can import dynamically created functions - Created unit tests
TESTING: I've been testing this with the following ChatGPT plugins:
- Semantic Kernel Starter's Python Flask plugin
- ChatGPT's example retrieval plugin
- This one was annoying to setup. I didn't get the plugin functioning, but I was able to send the right API requests
- Also, their openapi file was invalid. The "servers" attribute is misindented
- Google ChatGPT plugin
- Chat TODO plugin
- This openapi file is also invalid. I checked with an online validator. I had to remove"required" from the referenced request objects' properties: https://github.com/lencx/chat-todo-plugin/blob/main/openapi.yaml#L85
Then I used this python file to test the examples:
import asyncio
import logging
import semantic_kernel as sk
from semantic_kernel import ContextVariables, Kernel
from semantic_kernel.connectors.ai.open_ai import AzureTextCompletion
from semantic_kernel.connectors.openapi.sk_openapi import register_openapi_skill
# Example usage
chatgpt_retrieval_plugin = {
"openapi": # location of the plugin's openapi.yaml file,
"payload": {
"queries": [
{
"query": "string",
"filter": {
"document_id": "string",
"source": "email",
"source_id": "string",
"author": "string",
"start_date": "string",
"end_date": "string",
},
"top_k": 3,
}
]
},
"operation_id": "query_query_post",
}
sk_python_flask = {
"openapi": # location of the plugin's openapi.yaml file,
"path_params": {"skill_name": "FunSkill", "function_name": "Joke"},
"payload": {"input": "dinosaurs"},
"operation_id": "executeFunction",
}
google_chatgpt_plugin = {
"openapi": # location of the plugin's openapi.yaml file,
"query_params": {"q": "dinosaurs"},
"operation_id": "searchGet",
}
todo_plugin_add = {
"openapi": # location of the plugin's openapi.yaml file,
"path_params": {"username": "markkarle"},
"payload": {"todo": "finish this"},
"operation_id": "addTodo",
}
todo_plugin_get = {
"openapi": # location of the plugin's openapi.yaml file,
"path_params": {"username": "markkarle"},
"operation_id": "getTodos",
}
todo_plugin_delete = {
"openapi": # location of the plugin's openapi.yaml file,
"path_params": {"username": "markkarle"},
"payload": {"todo_idx": 0},
"operation_id": "deleteTodo",
}
plugin = todo_plugin_get # set this to the plugin you want to try
logger = logging.getLogger(__name__)
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
kernel = Kernel(log=logger)
deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
kernel.add_text_completion_service(
"dv", AzureTextCompletion(deployment, endpoint, api_key)
)
skill = register_openapi_skill(
kernel=kernel, skill_name="test", openapi_document=plugin["openapi"]
)
context_variables = ContextVariables(variables=plugin)
result = asyncio.run(
skill[plugin["operation_id"]].invoke_async(variables=context_variables)
)
print(result)
- The code builds clean without any errors or warnings
- The PR follows the SK Contribution Guidelines and the pre-submission formatting script raises no violations
- All unit tests pass, and I have added new tests where possible
- I didn't break anyone 😄
Co-authored-by: Abby Harrison [email protected]
[MIRROR] [MDB IGNORE] Science Resprite! (With Sovl!) (#7124)
Original PR: tgstation/tgstation#77314
What a crusty department. These outfits are... Something.
How old are these now? I'm pretty sure they're unchanged since when I started playing years ago on other servers.... besides the RD Turtleneck and Roboticist suit of course. But they still did have some touch-ups to be made...
Regardless, I think this department deserves a little love! I've tried to stay true as I could to their current designs; this isn't a re-design, just a re-sprite. I used the base jumpsuit design from Medbay for most of these since it's the most modern suit that fit with the colored-spots style.
All of them have been touched up, and the RD's "alt" is now a subtype of the buttondown so it can easily inherit any sprite updates in the future.
These deserved some touch-ups and modernization, and while I'm not keen on entirely reworking them I figured I could at the least give them the update the Science Team deserves.
(The buttondown has an outdated obj sprite in this image! It's since been made smaller and more folded) Also labcoats for comparison
🆑 image: resprited the entirety of RnD! Genetics, Robotics, the RD, and the Science Team themselves will enjoy the fresh new looks but same great taste! No, wait, great STYLE! Don't eat these, they're covered in chemicals. /🆑
Co-authored-by: OrionTheFox [email protected]
Auto merge of #114011 - RalfJung:place-projection, r=oli-obk
interpret: Unify projections for MPlaceTy, PlaceTy, OpTy
For ~forever, we didn't really have proper shared code for handling projections into those three types. This is mostly because PlaceTy
projections require &mut self
: they might have to force_allocate
to be able to represent a project part-way into a local.
This PR finally fixes that, by enhancing Place::Local
with an offset
so that such an optimized place can point into a part of a place without having requiring an in-memory representation. If we later write to that place, we will still do force_allocate
-- for now we don't have an optimized path in write_immediate
that would avoid allocation for partial overwrites of immediately stored locals. But in write_immediate
we have &mut self
so at least this no longer pollutes all our type signatures.
(Ironically, I seem to distantly remember that many years ago, Place::Local
did have an offset
, and I removed it to simplify things. I guess I didn't realize why it was so useful... I am also not sure if this was actually used to achieve place projection on &self
back then.)
The offset
had type Option<Size>
, where None
represent "no projection was applied". This is needed because locals can be unsized (when they are arguments) but Place::Local
cannot store metadata: if the offset is None
, this refers to the entire local, so we can use the metadata of the local itself (which must be indirect); if a projection gets applied, since the local is indirect, it will turn into a Place::Ptr
. (Note that even for indirect locals we can have Place::Local
: when the local appears in MIR, we always start with Place::Local
, and only check frame.locals
later. We could eagerly normalize to Place::Ptr
but I don't think that would actually simplify things much.)
Having done all that, we can finally properly abstract projections: we have a new Projectable
trait that has the basic methods required for projecting, and then all projection methods are implemented for anything that implements that trait. We can even implement it for ImmTy
! (Not that we need that, but it seems neat.) The visitor can be greatly simplified; it doesn't need its own trait any more but it can use the Projectable
trait. We also don't need the separate Mut
visitor any more; that was required only to reflect that projections on PlaceTy
needed &mut self
.
It is possible that there are some more &mut self
that can now become &self
... I guess we'll notice that over time.
r? @oli-obk
Fixes contraband detectors (whooooooooooops) (#1228)
-
whooooooooooooooooops
-
fixes for my fixes
-
fuck you
-
qdel(announce)
-
QDEL_NULL
Co-authored-by: TheDarkElites [email protected]
proc: fix missing conversion to 'iterate_shared'
I'm looking at the directory handling due to the discussion about f_pos locking (see commit 797964253d35: "file: reinstate f_pos locking optimization for regular files"), and wanting to clean that up.
And one source of ugliness is how we were supposed to move filesystems over to the '->iterate_shared()' function that only takes the inode lock for reading many many years ago, but several filesystems still use the bad old '->iterate()' that takes the inode lock for exclusive access.
See commit 6192269444eb ("introduce a parallel variant of ->iterate()") that also added some documentation stating
Old method is only used if the new one is absent; eventually it will
be removed. Switch while you still can; the old one won't stay.
and that was back in April 2016. Here we are, many years later, and the old version is still clearly sadly alive and well.
Now, some of those old style iterators are probably just because the filesystem may end up having per-inode mutable data that it uses for iterating a directory, but at least one case is just a mistake.
Al switched over most filesystems to use '->iterate_shared()' back when it was introduced. In particular, the /proc filesystem was converted as one of the first ones in commit f50752eaa0b0 ("switch all procfs directories ->iterate_shared()").
But then later one new user of '->iterate()' was then re-introduced by commit 6d9c939dbe4d ("procfs: add smack subdir to attrs").
And that's clearly not what we wanted, since that new case just uses the same 'proc_pident_readdir()' and 'proc_pident_lookup()' helper functions that other /proc pident directories use, and they are most definitely safe to use with the inode lock held shared.
So just fix it.
This still leaves a fair number of oddball filesystems using the old-style directory iterator (ceph, coda, exfat, jfs, ntfs, ocfs2, overlayfs, and vboxsf), but at least we don't have any remaining in the core filesystems.
I'm going to add a wrapper function that just drops the read-lock and takes it as a write lock, so that we can clean up the core vfs layer and make all the ugly 'this filesystem needs exclusive inode locking' be just filesystem-internal warts.
I just didn't want to make that conversion when we still had a core user left.
Signed-off-by: Linus Torvalds [email protected] Signed-off-by: Christian Brauner [email protected]
Arcane/Blood Barrage fixes, cleans up cult spell code, autofire barrage, more responsive/sane blood collection (#76852)
Refactors arcane barrage (the wizard spell) and blood barrage (the weird version of the same spell that cultists get) into the magic subtype. No longer are they rifles...for some reason. Also they have sprites once again! Yay. Fixes tgstation/tgstation#76561
So as to not replicate a really crappy system used to get the hand swapping working, I've just opted to take this opportunity to make arcane barrage an automatic fire weapon. Yes, this is kind of a feature, but it's...it's appropriate, don't you think? And I don't think meaningfully changes its fire rate?
Blood Barrage no longer harms cultists/constructs shot by it and now properly just heals them/injects them with unholy water. Why all this was shoved into the Bump() proc is beyond me, but it works now. Fixes tgstation/tgstation#76560
I've improved the variables for some of the cult spells, and I've also fixed what I think is one the most pesky parts of how drawing blood works. So, rather than using range(), it uses view(), which seems to cause the spell to be a bit funky with lighting? So if you're in darkness (gosh cultists in dim light, how unheard of), this spell struggles to gather up blood. Not anymore it doesn't!
Lastly, it only worked on blood pools or droplets, not blood trails. So, you could bleed a character out by dragging them around, but not sap up the blood they're dropping from doing so. Only the intermittent blood splatters or your own bloody footprints count.
Here is the funny thing with that. It still cleans up the blood trail. You just couldn't activate the blood draw from the trail or treat it as blood. Now you can. Blood trails now give you +5 charges, and you can activate the blood draw using blood trails.
Arcane Barrage/Blood Barrage:
This was some really old code and I'm still not sure why they were made as a separate spell to the madoka reference, which at this stage is still better than this spell. But at least it is using a sensible subtype with a reasonable, more modern component to facilitate the 'rapid firing barrage of magical bullet' image this spell is meant to invoke. As a result of all this nonsense, this spell had its sprites broken because it kept being attached to stuff in the rifles folder. Let's put a stop to that here and now and break it independently instead.
Oh also cultists getting shot by healing bullets that still killed them is both funny and dumb and the way it worked was bonkers.
Blood Draw: A cultist trying to determine, on the fly, what blood is a valid for the blood draw is nearly impossible from visual alone. You'd be convinced this part of the spell is broken just because having a splatter and a trail on the same tile massively obfuscates whether you're looking at valid sources of blood. I've struggled to understand as a player what was going on and why it was so selective about what was acceptable. Now I see that the problem was one of visual accuracy, bad type checking, and really, really outdated code that should have been improved with better procs.
Blood trails are also actually made from dragging out a creature's bloody corpse. For humans, the most common source of blood trails, this does actually mean they're losing blood to produce these trails. It stands to reason this should be a valid source (bloody footprints are, after all). I gave them a...somewhat minor amount of charge contribution just to keep it moderately sane for how much blood it generates.
🆑 refactor: Arcane Barrage and Blood Barrage are magic gun subtypes and not rifle subtypes. Also they have sprites again. qol: The barrage spells now use the automatic component to do its thing. fix: Blood Barrage once again heals cultists and constructs without hurting them. code: Cleans up how Blood Rites finds blood to draw in. You can now just click turfs as well as blood, and it should now be much more accurate about it. qol: Blood trails contribute to charges gained using Blood Rites. You can also activate Blood Rite's blood draw using blood trails. /🆑
Fixes some synthetic language oversights (#76846)
#76305 removed the knowledge of every language from silicons, but this had a couple of oversights. This language set was not only used by cyborgs but also bots and vending machines.
A couple of effects relied on them knowing all of those languages, specifically their emp_act and also the station trait which rerolled their languages. Now they actually learn a random language and start speaking it instead.
Also I fixed a related runtime which I noticed in testing where a bot would die as a result of being EMPed, delete itself, and then try and do a bunch more shit after it stopped existing. Annoying.
Why was I looking at bot languages? Haha don't worry about it 😇
Restores function of a funny feature.
🆑 fix: Station traits can once again allow vending machines and bots to speak a random language fix: EMPed bots and vending machines once again speak a random language /🆑
zecweekly54.md
Coinbase aims to dismiss SEC Lawsuit, Revolut to suspend US crypto services, Razzlekhan and husband found guilty of $4.5bn Bitcoin Laundering.
Curated by "Hardaeborla" (Hardaeborla)
Greetings Zcash enthusiasts!!! Welcome to another thrilling week where we bring you the latest updates from the world of cryptocurrency and the Zcash Ecosystem. In this edition, we'll be exploring the recent developments from ECC concerning the ongoing Zcon4 event, and we'll also provide you with valuable insights to kickstart your journey in the Cosmos Ecosystem. Stay tuned!
You can also be a contributor on ZecHub by helping us create our weekly Newsletter and get rewarded for your contribution. Learn more by clicking the link below 👇👇 Create ZecWeekly Newsletter
In this week educational piece we will be exploring a widely used wallet on the Cosmos Blockchain known as Keplr Wallet. The Cosmos Network stands as a decentralized network comprising Autonomous scalable and interconnected blockchains which serves as the laying the groundwork for a fresh token-based economic system.
Watch the tutorial video below to help you get started on the Cosmos Blockchain using Keplr Wallet 👇👇 Keplr Wallet Beginner Guide
Empowering and Amplifying the Zcash Community
The future of Zcash Ecosystem Grant Funding Discussion at Zcon4
Call for Sponsors - Zcash Crusader
Zcon4 Naija Viewing Party - Zcash Nigeria
Help Me Bring my PC Back to Life With Your Support
Zcon4 Was Amazing - Zcash Brazil
Open another wallet and Restore Backup
Broadcasting Live with Spanish Subtitle
Dizzy Wallet upgraded Features
Zashi Wallet - ECC Focus Areas
Stay Curious with ZecHub Wiki Page
Coinbase Moves to Dismiss SEC Lawsuit, Alleging Crypto Falls Out of Regulator's Oversight - Coindex
Revolut to suspend US crypto services - Cointelegraph
Razzlekhan and husband guilty of $4.5bn Bitcoin launder - BBC News
NFT Trading Is Ice Cold But Developers Are Still Hot for Web3 - CoinDesk
KPMG Bitcoin Report Marks 'A Milestone The Bitcoin Ecosystem Should Celebrate - Decrypt
Roosevelt Commends Zcash Brazil
Check out this amazing art generated by ZcashAI
Zcash Stands Out For it's Enhanced Privacy
I Gained Confidence in Crypto with Zcash Community
Add More Anonymity To Bitcoin Soon?
The Only Way To Stay Private From the Government
https://twitter.com/mbbevilacqua/status/1687638646638190592?t=YknlE4P-rXg7FaBHikblVg&s=19
[2z Logo Designer] (https://free2z.cash/birdify/zpage/hiring-need-2z-logo-with-transparency)
this code actually sucks ass god bless anyone who reads this 1.2.1 i'll need to clean this shit up lmao
hardsuit/firesuit cleanup (#18308)
-
real
-
hjoly fuck you guy sare annoying
-
fix cargo arbitrage idk why tf it changed from editing armor values but fuck my life i guess
-
why god
-
Update suits.yml
-
Update cargo_emergency.yml
Remove validation link from website
Having these links and icons was a fashion some years ago, but that seems to have mostly faded. And the placement on our website looks quite ugly (in my opinion). Moreover, HTML 4.01 Transitional is not the latest and greatest anymore, long live HTML 5!
Funnily enough, the added div actually introduces an error since commit 1edb8b3c85 removed the opening paragraph in the hosting_thanks that is still closed after the validator link. As far as I can tell, it is the only validation error...
bevy_audio: ECS-based API redesign (#8424)
Improve the bevy_audio
API to make it more user-friendly and
ECS-idiomatic. This PR is a first-pass at addressing some of the most
obvious (to me) problems. In the interest of keeping the scope small,
further improvements can be done in future PRs.
The current bevy_audio
API is very clunky to work with, due to how it
(ab)uses bevy assets to represent audio sinks.
The user needs to write a lot of boilerplate (accessing
Res<Assets<AudioSink>>
) and deal with a lot of cognitive overhead
(worry about strong vs. weak handles, etc.) in order to control audio
playback.
Audio playback is initiated via a centralized Audio
resource, which
makes it difficult to keep track of many different sounds playing in a
typical game.
Further, everything carries a generic type parameter for the sound source type, making it difficult to mix custom sound sources (such as procedurally generated audio or unofficial formats) with regular audio assets.
Let's fix these issues.
Refactor bevy_audio
to a more idiomatic ECS API. Remove the Audio
resource. Do everything via entities and components instead.
Audio playback data is now stored in components:
PlaybackSettings
,SpatialSettings
,Handle<AudioSource>
are now components. The user inserts them to tell Bevy to play a sound and configure the initial playback parameters.AudioSink
,SpatialAudioSink
are now components instead of special magical "asset" types. They are inserted by Bevy when it actually begins playing the sound, and can be queried for by the user in order to control the sound during playback.
Bundles: AudioBundle
and SpatialAudioBundle
are available to make it
easy for users to play sounds. Spawn an entity with one of these bundles
(or insert them to a complex entity alongside other stuff) to play a
sound.
Each entity represents a sound to be played.
There is also a new "auto-despawn" feature (activated using
PlaybackSettings
), which, if enabled, tells Bevy to despawn entities
when the sink playback finishes. This allows for "fire-and-forget" sound
playback. Users can simply
spawn entities whenever they want to play sounds and not have to worry
about leaking memory.
I think the current design is fine. I'd be happy for it to be merged.
It has some possibly-surprising usability pitfalls, but I think it is
still much better than the old bevy_audio
. Here are some discussion
questions for things that we could further improve. I'm undecided on
these questions, which is why I didn't implement them. We should decide
which of these should be addressed in this PR, and what should be left
for future PRs. Or if they should be addressed at all.
Currently, the audio sink components are inserted and the bundle components are kept. Should Bevy remove the bundle components? Something else?
The current design allows an entity to be reused for playing the same sound with the same parameters repeatedly. This is a niche use case I'd like to be supported, but if we have to give it up for a simpler design, I'd be fine with that.
As described above, currently, entities can be reused. Removing the
audio sink causes it to be "detached" (I kept the old Drop
impl), so
the sound keeps playing. However, if the audio bundle components are not
removed, Bevy will detect this entity as a "queued" sound entity again
(has the bundle compoenents, without a sink component), just like before
playing the sound the first time, and start playing the sound again.
This behavior might be surprising? Should we do something different?
We currently do not do that. PlaybackSettings
is just for the initial
settings when the sound starts playing. This is clearly documented.
Do we want to keep this behavior, or do we want to allow users to use
PlaybackSettings
instead of AudioSink
/SpatialAudioSink
to control
sounds during playback too?
I think I prefer for them to be kept separate. It is not a bad mental model once you understand it, and it is documented.
component type?
They provide a similar API (via the AudioSinkPlayback
trait) and it
might be annoying for users to have to deal with both of them. The
unification could be done using an enum that is matched on internally by
the methods. Spatial audio has extra features, so this might make it
harder to access. I think we shouldn't.
Transforms?
Should Bevy automatically apply changes to Transforms to spatial audio entities? How do we distinguish between listener and emitter? Which one does the transform represent? Where should the other one come from?
Alternatively, leave this problem for now, and address it in a future
PR. Or do nothing, and let users deal with it, as shown in the
spatial_audio_2d
and spatial_audio_3d
examples.
Added:
AudioBundle
/SpatialAudioBundle
, add them to entities to play sounds.
Removed:
- The
Audio
resource. AudioOutput
is no longerpub
.
Changed:
AudioSink
,SpatialAudioSink
are now components instead of assets.
// TODO: write a more detailed migration guide, after the "unsolved questions" are answered and this PR is finalized.
Before:
/// Need to store handles somewhere
#[derive(Resource)]
struct MyMusic {
sink: Handle<AudioSink>,
}
fn play_music(
asset_server: Res<AssetServer>,
audio: Res<Audio>,
audio_sinks: Res<Assets<AudioSink>>,
mut commands: Commands,
) {
let weak_handle = audio.play_with_settings(
asset_server.load("music.ogg"),
PlaybackSettings::LOOP.with_volume(0.5),
);
// upgrade to strong handle and store it
commands.insert_resource(MyMusic {
sink: audio_sinks.get_handle(weak_handle),
});
}
fn toggle_pause_music(
audio_sinks: Res<Assets<AudioSink>>,
mymusic: Option<Res<MyMusic>>,
) {
if let Some(mymusic) = &mymusic {
if let Some(sink) = audio_sinks.get(&mymusic.sink) {
sink.toggle();
}
}
}
Now:
/// Marker component for our music entity
#[derive(Component)]
struct MyMusic;
fn play_music(
mut commands: Commands,
asset_server: Res<AssetServer>,
) {
commands.spawn((
AudioBundle::from_audio_source(asset_server.load("music.ogg"))
.with_settings(PlaybackSettings::LOOP.with_volume(0.5)),
MyMusic,
));
}
fn toggle_pause_music(
// `AudioSink` will be inserted by Bevy when the audio starts playing
query_music: Query<&AudioSink, With<MyMusic>>,
) {
if let Ok(sink) = query.get_single() {
sink.toggle();
}
}
9 fucking hours of coding I'm gonna be dreaming about css to night..
Update README.md
Project Description: Welcome to the Tic-Tac-Toe Game Application repository! This project aims to create a fully-functioning and interactive Tic-Tac-Toe game that allows users to play against each other. The game not only analyzes the state of the field to determine the winner but also ensures that the field's current configuration is theoretically possible.
Features:
User Interaction: The program provides an interactive command-line interface that allows users to play the game by taking turns entering their moves.
Game State Management: The application tracks and updates the state of the game board after each move, making sure that the game progresses correctly.
Win Detection: The program analyzes the state of the field to determine if any player has achieved three in a row (horizontal, vertical, or diagonal), declaring the winner accordingly.
Theoretical Possibility Check: Before accepting a move, the program validates if the move is theoretically possible within the rules of Tic-Tac-Toe.
Error Handling: The application handles invalid inputs gracefully, guiding users to make valid moves and providing meaningful error messages.
Player Customization: Players can customize their markers (e.g., X or O) and names to make the game more personalized and enjoyable.
How to Contribute: We welcome contributions from the open-source community. To contribute to this project, follow these steps:
Fork the repository to your GitHub account. Create a new branch for each feature or bug fix you plan to work on. Commit your changes with clear and descriptive commit messages. Submit pull requests back to the main repository for review and inclusion. Communication: We encourage open communication and collaboration among contributors. Use the GitHub Issues section for bug reports, feature requests, and general discussions.
Goals:
Develop a user-friendly and interactive Tic-Tac-Toe game application. Ensure accuracy in analyzing the game state and detecting winners. Implement validation to ensure moves are within the rules of Tic-Tac-Toe. Foster community involvement and contributions. Get ready to challenge your friends and play an exciting game of Tic-Tac-Toe! The ultimate goal is to create an enjoyable gaming experience that brings people together in the spirit of friendly competition.
Create README.md
When learning a new language, it can be hard to remember all the new vocabulary, which is exactly where flashcards can help. Typically, flashcards show a hint (a task or a picture) on one side and the right answer on the other. Flashcards can be used to remember any sort of data.
Project Description: Welcome to the Flashcards-JBrains repository! This project aims to create a versatile flashcards application designed to aid language learners in memorizing new vocabulary effectively. Flashcards are a powerful tool for retaining information, and this application offers a user-friendly interface to help users remember various types of data.
Features:
Flashcard Creation: The application allows users to create flashcards with a hint or task on one side and the corresponding right answer on the other. Users can customize flashcards for different purposes, such as language vocabulary, mathematical equations, historical events, and more.
Deck Management: Users can organize their flashcards into decks, making it easy to group related content and access specific topics.
Flashcard Review: The application includes a flashcard review mode where users can flip through their created flashcards to practice and reinforce their learning.
Randomized Practice: Users can opt for randomized flashcard practice to challenge their memory and ensure a comprehensive understanding of the content.
Progress Tracking: The application tracks the user's progress by keeping count of the flashcards reviewed and the correct answers given, providing feedback on the learning journey.
Project Structure:
src: This directory contains the source code for the Flashcards-JBrains application, implemented in a user-friendly language.
docs: Documentation related to the project, including usage instructions, tutorials, and best practices for flashcard creation.
tests: Unit tests to ensure the functionality and accuracy of the flashcard application.
data: Sample data files for flashcards and decks.
LICENSE: A file containing the license details for the open-source nature of the project.
README.md: The README file provides comprehensive information on how to use the Flashcards-JBrains application, create and manage flashcards, and review progress.
How to Contribute: We welcome contributions from the community to improve and expand the capabilities of the flashcard application. To contribute, follow these steps:
Fork the repository to your GitHub account. Create a new branch for each feature or enhancement you plan to work on. Commit your changes with clear and descriptive commit messages. Submit pull requests back to the main repository for review and inclusion. Communication: We encourage open communication among contributors and language learners. Use the GitHub Issues section for feedback, suggestions, bug reports, and discussions related to the Flashcards-JBrains application.
Goals:
Develop a versatile flashcards application to aid language learners and memorization of various types of data. Offer a user-friendly interface for flashcard creation, management, and review. Facilitate effective learning and retention through randomized practice and progress tracking. With Flashcards-JBrains, language learning and data memorization become more enjoyable and efficient. Enhance your learning experience and master new vocabulary or information in no time!
Destroying Sprite Cruft Part One: Cruft Sucks (#2220)
Title
In total, the:
- IV Drip
- All-In-One Grinder
- Book Binder
- Book Scanner
- Water Cooler
- Tank Dispenser
Have all been successfully uncrufted. No more cruft. Just clean sprites now :D
Oh and dressers have directionals now at the request of @Bjarl
Credit goes to the original authors in the changelog.
begone cruft I fucking hate cruft
🆑 PositiveEntropy, Maxymax13, Wallemations, Kryson, Viro/Axietheaxolotl, MeyHaZah imageadd: Books, IV drips, tank dispensers, all-in-one grinders, water coolers, book binders and book scanners have been resprited! imageadd: Dressers now have directionals! /🆑
Science Annex Nightmare Inserts (#3288)
Apparently I'm the only one in CM who actually likes this fucking map, and like a year ago I told nanu I'd make NM for science annex and kutjevo. Also so help me God if this fucking lowers my GBP because i don't know how the shitty GBP economy works I'm going to have an aneurism.
Also I'm not on the discord, if you have comments leave them on the PR. Nor will I be rejoining. That place sucks and I don't like interacting with the retards on it. Sorry sweeties, but daddy has no desire to rejoin that shitshow. You have no idea how freeing it is to not hear people crying about everything at all times.
This PR adds 4 new NM to the map Science Annex.
WRONG WE'RE AT 10 NOW BABY!!!!!!!!!
Lan Party 20% Chance
This insert features an epic lan party between the prisoners and the prison staff, who will win in this epic competition? Xenos.
Pizza Palace 30% Chance
This insert changes the kitchen to be a pizza palace. Mamma Mia! (The pizza time is replacing the sentry spawn, its so fricken thematic)
Pool Party 20% Chance
Woah dude, prison's out man heh surf's up dude! Come and hang out with your best pals while everyone else around the station dies.
Warden Office - Redecorated 15% Chance
The warden has found God, well a god, the god of HEFA and chose to sacrifice himself to bring the pain! The knights said he had a change of heart, but too bad!
POD HOLD BABY 10% Chance
Oh yeah baby! I heard you've never even heard of this SOULFUL HOLD!!!! Don't worry, with the NEW CHANGES coming to it, its now 25% better! Better hope that medium chance sentry actually does spawn, though.
Engineering Office 30% Chance
Thought it would be cool if they didn't demolish the office, so here it is repaired and with new minor stuff like a cool beret to tempt you to check it out. Also don't read the paper.
Research Cells Containment 25% Chance
The prison staff assumed that whoever was the cause of the outbreak was in these cells. Unfortunately for everyone, they ended up being wrong. You get to witness what's left over in the research cellblock if they walls weren't destroyed from the beginning!
Emergency Medical Practice 20% Chance
Shit really started hitting the fan, so the medical staff set up a temporary treatment area in the triage zone. Strangely, the sounds of men screaming in agony attracts xenos, who knew?
Scav Ship Hold 10% Chance
I heard you liked single man suicide holds? Awesome news then, I've got another one for you. This one even comes with elite mercenary gear to help you survive. Only problem is the guy who owned it before you didn't maintain it, and its not that protective now. One might say the slow down of the armor will kill you, I say drip or drown loser. Go out in style!
Looted Armory 15% Chance
You know what they say, the early bird gets the worm. Well in this case, the early prisoners got all the gear. Help yourself to what's leftover, it's not much!
Miscellaneous changes
The sentry gun in the park is gone. This shit still massacres new surv players and they don't know what happened. Call it baby sitting, I don't care. I intended to remove it when I changed LZ1 and forgot, so it goes bye bye now!
This piece of shit console now no longer blocks movement. The META DEFINING pod hold is now slightly stronger. Honestly, 70% of the people reading this probably don't even know where this is located and 100% don't go into it. Listen, it bugs me that this shit blocks you being able to move. Imagine having an extra dude to FF you in the now 4x4 box of hell. The possibilities are endless, not really, but I'd like to think so.
Nanu asked me to make NM for this map and kutjevo. I like this map more than kutjevo, so I made some for here first. It adds character, who doesn't want to sacrifice the warden for HEFA?
Sentry change is QOL for new players. It had literally 0 impact outside of killing new players. Its funny, but we have to protect the children. Call this the protect the children change and it will pass through the dev team, I guarantee it.
The console change is a QOL change for me because its so fucking annoying that this little piece of shit can stop me from moving. LOOK AT IT, IT'S AGAINST THE FUCKING WALL, HOW DOES IT BLOCK THE ENTIRE TILE?!
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 mapadd: added 4 new NM inserts to Science Annex maptweak: sentry in the park no longer terrorizes new players, and the stupid fucking console doesn't block movement. /🆑
qcacld-3.0: Defer HDD initialization.
-
ALso rely on userspace writing to /dev/wlan, Wi-Fi HAL writes "ON" or "OFF" to /dev/wlan.
-
Use this method to initialize hdd as it's a safer way to ensure both wlan_mac.bin and WCNSS_qcom_cfg.ini are ready to be read.
-
This also eliminates the needs for horrible hacks to read the userspace file.
Change-Id: I648f1a107c095e50a64f44c39e78d6b6f917e190 Signed-off-by: Cyber Knight [email protected]
don't care + didn't ask + ratio + you fell off + cope + seethe + mald + dilate + L + hoes mad + W + cry about it + stay mad + touch grass + pound sand + skill issue + quote tweet + get real + no bitches? + banned + cancelled + suspended + terminated + deleted + kys + you're* + not funny didn't laugh + radio + the audacity + go outside + cringe + get clapped + triggered + ggez + cap + whipped and nae nae'd + i own u + fatherless + motherless + brotherless + motherless + familyless
Post Test Tweaks for early July (#2410)
- makes alcohol tolerance not stupid
yea
- bit of a PA nerfy
Just on lower end PA so like the frame and T-45
- Forage respawn time increase + herbal remedy tweak
yea
- ciggy tweaks and spawn fixes
yea
- actually tested it and made proper changes lol!
woo!!
- god I hate TG
this is insane
Rename User Entity 'surname' and 'name' properties. In my opinion, project suffered from these badly chosen names. My mistake was not thinking through these two attributes' meanings as closely as I should've been. Result was vague 'name' property which could cause havoc as project progressed. Hence, I stepped on its tail ASAP here in this commit and made sure it's properly named: "first_name". Therefore, it clearly states it's purpose in User. Same goes for new "last_name" which replaces suboptimal obsolete "surname". (#6)
Add files via upload
🚀 Introducing GPT Talker, a cutting-edge project that bridges the gap between voice interaction and artificial intelligence!
🎙️ What Is GPT Talker? GPT Talker is a web-based application that takes voice prompts from users and communicates with OpenAI's models to provide intelligent responses. It's a seamless integration of voice recognition and AI-powered insights, all presented in a user-friendly interface.
💻 Technology Stack:
JavaScript: The core of the application, handling voice input and processing the interaction with OpenAI. HTML & CSS: Crafting a sleek and intuitive user interface that ensures a smooth user experience. OpenAI Prompt: Leveraging OpenAI's advanced models to interpret voice prompts and generate accurate and context-aware responses. 🌟 Features:
Voice Interaction: Speak naturally, and GPT Talker will understand and respond to your queries. AI-Powered Insights: Get accurate and insightful answers powered by OpenAI. Responsive Design: Enjoy a seamless experience across devices, thanks to a responsive design. 🔗 Why GPT Talker? In a world where voice interaction is becoming increasingly prevalent, GPT Talker stands as a testament to the potential of combining voice technology with AI. Whether you're seeking information, assistance, or just curious exploration, GPT Talker is here to engage and enlighten.