Skip to content

Latest commit

 

History

History
3613 lines (2621 loc) · 169 KB

2023-08-11.md

File metadata and controls

3613 lines (2621 loc) · 169 KB

< 2023-08-11 >

there were a lot of events recorded by gharchive.org of which 2,266,917 were push events containing 3,346,364 commit messages that amount to 244,661,598 characters filtered with words.py@e23d022007... to these 68 messages:

Friday 2023-08-11 00:06:51 by c0ntradicti0n

Automated TOC Commit: 3/1/1/2/.Syntax.md 2/1/2/2/.Gender.md 3/3/2/1/_Form-Content.md 2/1/1/3/.Clothing.md 2/2/3/1/2/.Play.md 3/1/1/1/_Voiced-Unvoiced.md 3/2/1/2/.Curriculum.md 2/3/1/3/.Duties.md 3/3/2/1/.Design.md 3/1/1/1/.Phonology.md 2/2/3/2/.Performances.md 2/1/1/1/.Food.md 2/1/1/1/_Thirst-Hydration.md 3/3/2/1/.Sculpture.md 3/1/1/2/.Morphology.md 3/1/2/3/.Timing.md 1/2/3/1/2/.Starboard.md Analysis.md" 2/2/3/1/3/.Hobby.md 2/1/3/3/.Ownership.md 2/2/1/3/.Reasoning.md Thinking.md" 3/3/2/3/_Choreography-Improvisation.md Approximation.md" 2/2/3/2/.Efficiency.md 3/3/1/3/.Agnosticism.md 1/2/3/2/3/.Future.md 3/3/1/3/_Belief-Doubt.md Production.md" Epics.md" 2/3/2/3/.Disciplines.md 3/1/2/1/_Dissonance-Consonance.md 3/1/1/1/.Phonetics.md 3/1/2/3/.Beat.md 2/3/1/2/_Legal-Illegal.md 2/3/1/3/_Obligation-Choice.md 3/1/2/2/.Chords.md Fallacies.md" 2/3/1/2/.Judgments.md 2/3/2/3/_Discovery-Creation.md 2/3/1/3/.Responsibilities.md 2/3/1/2/.Laws.md 2/2/3/1/.Activity.md 2/3/2/1/_Old-New.md 2/2/2/3/_Logical-Emotional.md 1/2/3/2/_Historical-NonHistorical.md 3/2/1/2/_Practical-Theoretical.md concrete.md" 3/2/3/3/_Monarchy-Democracy.md 2/2/2/1/.Ethics.md 3/1/1/3/.Pragmatics.md 2/3/1/1/.Innovation.md 2/3/2/2/.Uprisings.md 2/2/3/2/_Fast-Slow.md 3/3/2/2/.Narrative.md 2/3/1/1/_Discovery-Invention.md 2/1/2/2/_Hetero-Homo.md 2/3/2/1/.Customs.md 1/2/3/1/_Metrical-Triangular,.md 3/1/3/3/.Dialogue.md 3/1/1/2/_Free-Bound.md 2/1/2/3/.Reproduction.md 3/3/2/2/_Plot-Character.md 3/3/1/2/.Animism.md Prophecies.md" 2/2/2/1/.Morality.md Orientation.md" 3/1/3/3/_Speaker-Listener.md 1/2/3/1/1/.Port.md 3/1/3/3/.Mediation.md 3/2/3/2/.Socio-economics.md 2/3/2/2/_Resistance-Adoption.md 1/3/3/3/_Mutation-Selection.md 2/1/3/3/_Individual-Common.md 3/3/2/3/.Ballet.md Dimensions.md" 2/1/3/3/.Distribution.md 3/1/2/1/.Rhythm.md Poetry.md" 2/1/1/1/.Drinking.md Evolution.md" 2/2/3/1/_Success-Failure.md 3/3/1/2/_Spiritual-Material.md 2/1/2/3/.Fertility.md 2/3/1/1/.Inventions.md 3/3/2/3/.Dance.md 2/1/3/2/_Social-Private.md 2/1/1/3/_Vanity-Pragmatic.md 3/1/2/1/.Tune.md 3/2/1/3/.Pedagogy.md Shapes.md" 3/2/1/3/_Visual-Auditory.md 2/2/3/1/_Labor-Leisure.md Chain.md" 3/3/3/3/_Decay-Renewal.md 2/2/3/1/.Competitions.md 3/1/2/2/_Stable-Unstable.md 1/3/3/3/.Adaptation.md 2/3/2/3/.Achievements.md 2/3/2/2/.Revolutions.md 3/3/3/1/_Beginning-End.md 3/1/2/3/_Syncopated-Regular.md Theories.md" stern.md" 2/1/1/3/.Shelter.md 2/2/3/3/.Sanitation.md 2/2/2/3/.Fallacies.md 2/2/3/3/_Sickness-Wellness.md 3/3/1/1/.Polytheism.md 3/3/1/2/.Pantheism.md 1/2/3/2/.Chronology.md 1/2/3/1/_Static-Dynamic.md Stories.md" 3/1/2/2/.Harmonics.md Dimensions.md" Prophecies.md" Philosophy.md" 3/3/3/2/_Trial-Triumph.md 1/2/3/2/_Past-Future.md 2/1/2/3/_Sterile-Fertile.md 1/2/3/2/1/.Past.md 2/3/2/1/.Traditions.md Myths.md" 2/2/3/1/1/.Work.md 1/2/3/1/.Coursing.md 3/1/1/3/_Signifier-Signified.md 3/1/1/3/.Semiotics.md 2/2/3/3/.Healthcare.md 3/2/3/2/_Capitalism-Socialism.md Styles.md" 3/3/1/1/.Deism.md 3/3/1/3/.Atheism.md Economy.md" 3/3/1/1/_Transcendent-Immanent.md Methods.md" 1/2/3/2/2/.Present.md


Friday 2023-08-11 00:23:31 by KM-Catman

Slight redesign of Valhalla Vendors and Chemistry. Adds FC and Synth to Valhalla. (#13612)

  • Valhalla Fixes

Start room is now all Hulls, adds a Friend, Materializes the Chaplain's chained demon, and adds more Xeno Huds.

  • FC and Synth Added. Slight readjustment.

  • Changed the vendor section as per Grayson's request

  • Adds three new Warning Stripes.

Adds a FCDR, Synth, and Mech warning stripe. Adds them in front of the prep rooms

  • Duct Taped Space

  • Removed random bedsheet (Goddamn you hotkeys)


Friday 2023-08-11 01:00:39 by Johannes Schindelin

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]


Friday 2023-08-11 01:17:44 by David Hildenbrand

smaps: use vm_normal_page_pmd() instead of follow_trans_huge_pmd()

We shouldn't be using a GUP-internal helper if it can be avoided.

Similar to smaps_pte_entry() that uses vm_normal_page(), let's use vm_normal_page_pmd() that similarly refuses to return the huge zeropage.

In contrast to follow_trans_huge_pmd(), vm_normal_page_pmd():

(1) Will always return the head page, not a tail page of a THP.

If we'd ever call smaps_account with a tail page while setting "compound = true", we could be in trouble, because smaps_account() would look at the memmap of unrelated pages.

If we're unlucky, that memmap does not exist at all. Before we removed PG_doublemap, we could have triggered something similar as in commit 24d7275ce279 ("fs/proc: task_mmu.c: don't read mapcount for migration entry").

This can theoretically happen ever since commit ff9f47f6f00c ("mm: proc: smaps_rollup: do not stall write attempts on mmap_lock"):

(a) We're in show_smaps_rollup() and processed a VMA (b) We release the mmap lock in show_smaps_rollup() because it is contended (c) We merged that VMA with another VMA (d) We collapsed a THP in that merged VMA at that position

If the end address of the original VMA falls into the middle of a THP area, we would call smap_gather_stats() with a start address that falls into a PMD-mapped THP. It's probably very rare to trigger when not really forced.

(2) Will succeed on a is_pci_p2pdma_page(), like vm_normal_page()

Treat such PMDs here just like smaps_pte_entry() would treat such PTEs. If such pages would be anonymous, we most certainly would want to account them.

(3) Will skip over pmd_devmap(), like vm_normal_page() for pte_devmap()

As noted in vm_normal_page(), that is only for handling legacy ZONE_DEVICE pages. So just like smaps_pte_entry(), we'll now also ignore such PMD entries.

Especially, follow_pmd_mask() never ends up calling follow_trans_huge_pmd() on pmd_devmap(). Instead it calls follow_devmap_pmd() -- which will fail if neither FOLL_GET nor FOLL_PIN is set.

So skipping pmd_devmap() pages seems to be the right thing to do.

(4) Will properly handle VM_MIXEDMAP/VM_PFNMAP, like vm_normal_page()

We won't be returning a memmap that should be ignored by core-mm, or worse, a memmap that does not even exist. Note that while walk_page_range() will skip VM_PFNMAP mappings, walk_page_vma() won't.

Most probably this case doesn't currently really happen on the PMD level, otherwise we'd already be able to trigger kernel crashes when reading smaps / smaps_rollup.

So most probably only (1) is relevant in practice as of now, but could only cause trouble in extreme corner cases.

Let's move follow_trans_huge_pmd() to mm/internal.h to discourage future reuse in wrong context.

Link: https://lkml.kernel.org/r/[email protected] Fixes: ff9f47f6f00c ("mm: proc: smaps_rollup: do not stall write attempts on mmap_lock") Signed-off-by: David Hildenbrand [email protected] Acked-by: Mel Gorman [email protected] Cc: Hugh Dickins [email protected] Cc: Jason Gunthorpe [email protected] Cc: John Hubbard [email protected] Cc: Linus Torvalds [email protected] Cc: liubo [email protected] Cc: Matthew Wilcox (Oracle) [email protected] Cc: Mel Gorman [email protected] Cc: Paolo Bonzini [email protected] Cc: Peter Xu [email protected] Cc: Shuah Khan [email protected] Signed-off-by: Andrew Morton [email protected]


Friday 2023-08-11 01:30:39 by ShamanSliph

[Modular] Adds the Tactical Maid Outfit for Donors. (#441)

About The Pull Request

This time with revengence.

Adds the full Syndicate maid outfit to the loadout but without its stats bonus and syndicate part replaced with tactical. Suggested changes are welcome and I will do them as soon as possible. This item was requested by skyefree.

This was in another PR, but I think I broke the actual rebasing and wasn't sure if I was doing it right. So I closed that PR and made this one since It was much easier to just make a new branch based on the up to date master and just quickly put the new files in.

Original PR was Bubberstation/Bubberstation#307

Sorry about the hassle. I'm not that experienced with using Git.

Changelog

🆑 add: Adds Donor Items: Tactical Maid Outfit/Sleeves/Headband. /🆑


Friday 2023-08-11 01:56:30 by Xexxa

Base: Improve emoji

Remove unnecessary left/right padding

❣️ - U+2763 HEART EXCLAMATION 🚶 - U+1F6B6 PERSON WALKING 🚴 - U+1F6B4 PERSON BIKING 🌻 - U+1F33B SUNFLOWER 🪻 - U+1FABB HYACINTH 🍉 - U+1F349 WATERMELON 🍍 - U+1F34D PINEAPPLE 🫒 - U+1FAD2 OLIVE 🌽 - U+1F33D EAR OF CORN 🌯 - U+1F32F BURRITO 🍘 - U+1F358 RICE CRACKER 🧁 - U+1F9C1 CUPCAKE 🍫 - U+1F36B CHOCOLATE BAR 🍭 - U+1F36D LOLLIPOP 🍼 - U+1F37C BABY BOTTLE 🧋 - U+1F9CB BUBBLE TEA 🧃 - U+1F9C3 BEVERAGE BOX 🥢 - U+1F962 CHOPSTICKS 💈 - U+1F488 BARBER POLE 🌛 - U+1F31B FIRST QUARTER MOON FACE 🌜 - U+1F31C LAST QUARTER MOON FACE 🌡️ - U+1F321 THERMOMETER 🪐 - U+1FA90 RINGED PLANET ⚡ - U+26A1 HIGH VOLTAGE 💧 - U+1F4A7 DROPLET 🧨 - U+1F9E8 FIRECRACKER 🥇 - U+1F947 1ST PLACE MEDAL 🥈 - U+1F948 2ND PLACE MEDAL 🥉 - U+1F949 3RD PLACE MEDAL 🏓 - U+1F3D3 PING PONG 🪀 - U+1FA80 YO-YO ♟️ - U+265F CHESS PAWN 🧦 - U+1F9E6 SOCKS 💄 - U+1F484 LIPSTICK 📱 - U+1F4F1 MOBILE PHONE 🔌 - U+1F50C ELECTRIC PLUG 💡 - U+1F4A1 LIGHT BULB 📍 - U+1F4CD ROUND PUSHPIN 🔩 - U+1F529 NUT AND BOLT 🪝 - U+1FA9D HOOK 🧪 - U+1F9EA TEST TUBE 🔭 - U+1F52D TELESCOPE 🩸 - U+1FA78 DROP OF BLOOD 💊 - U+1F48A PILL 🩹 - U+1FA79 ADHESIVE BANDAGE 🧼 - U+1F9FC SOAP 🪥 - U+1FAA5 TOOTHBRUSH ♀️ - U+2640 FEMALE SIGN ♂️ - U+2642 MALE SIGN ➕ - U+2795 PLUS ➗ - U+2797 DIVIDE ❓ - U+2753 RED QUESTION MARK ❔ - U+2754 WHITE QUESTION MARK ❕ - U+2755 WHITE EXCLAMATION MARK ❗ - U+2757 RED EXCLAMATION MARK ◼️ - U+25FC BLACK MEDIUM SQUARE ◻️ - U+25FB WHITE MEDIUM SQUARE ◾ - U+25FE BLACK MEDIUM-SMALL SQUARE ◽ - U+25FD WHITE MEDIUM-SMALL SQUARE ▪️ - U+25AA BLACK SMALL SQUARE ▫️ - U+25AB WHITE SMALL SQUARE 🚩 - U+1F6A9 TRIANGULAR FLAG


Friday 2023-08-11 02:05:52 by nevimer

Restores Low end Space sprites (#442)

About The Pull Request

tgstation made (awful) changes recently that made space look like THIS

dreamseeker_YuYFvv77q1

Then like THIS (not live yet on skyrat).

dreamseeker_AgEEkhRDkR

For what? shaving a whole fraction of a second off, hypothetically, of init time? The job of the server is to pre-bake things as client-side rendering is pretty much non-existent beyond filters and other particular things. Not everyone likes the parralax, feels comfortable with the parallax or even otherwise can run it on their hardware at cost. We don't need to shave a fraction of a second off init because it's pretty damn fast anyways, and, once I am done BENCHMARKING on a CELERON TABLET I will prove it silly. I personally think init time saves like this are fetishized when it throws the user experience out of the fucking window, especially for broke/third world gamers who run systems with like, 2GB of memory. We have players running truly destitute systems.

Before

dreamseeker_vT1uJeDmgx

After

dreamseeker_lBhaey7ZFd

I could brand this as saving 4 seconds of init time, to be deceiving. This is with 64GB of ram on a Ryzen 5800H, Samsung 980 EVO NVME with lowmememorymode defined.

How This Contributes To The Skyrat Roleplay Experience

This readds a decent looking space option for those seeking every ounce of performance in their client in exchange for the server using a fraction of a second more CPU during init.

Proof of Testing

Screenshots/Videos

dreamseeker_lBhaey7ZFd

Changelog

🆑 add: Old space returns for those who choose it. /🆑


Friday 2023-08-11 02:23:11 by carlarctg

Added Omen Spontaneous Combustion and light tube and mirror effects (#77175)

About The Pull Request

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.

Why It's Good For The Game

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.

Changelog

🆑 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]


Friday 2023-08-11 02:58:13 by carlarctg

Restricts Scrapheap & Lepton Violet behind conditions, alters Rollerdome (#77277)

About The Pull Request

Lepton Violet (wabbajack) shuttle must be unlocked by having some form of polymorph happen in-game first (Pride Mirror or the cursed springs are the most accessible sources)

Scrapheap shuttle can only be bought if the Cargo budget is below 600 credits, and the shuttle has just less than half of its usual refueling time left. However, it gives the cargo budget an influx of 3000 credits!

Uncle Pete's Rollerdome has had its price increased, and the disco machine is no longer unbreakable.

Why It's Good For The Game

First off, here is my reasoning for why these need altering at all.

Players will always naturally gravitate to the wackiest and most-out-there options, in this case this applies to shuttles. It's why the Monastery or the Asteroid or Daniel are reasonably common sights, more common than some of the 'boring' shuttle options that don't need unlock with an emag.

The problem here, as I see it, is that there is no incentive what-so-ever to NOT purchase these 'wacky' shuttles. Some of the shuttles in the code are just way too stupid to be seen on most or even some rounds (Arena, Disco Inferno?), so they require rare unlocks to occur. Wacky shuttles being spammed round after round are bad due to several reasons:

  1. Players will run every joke to the ground. Wacky conditionless shuttles take up a large amount of space in the shuttle memeplex, so they are disproportionately seen in comparison to any of the less-extravagant but more grounded and actually interesting options. (Medisim? Monkeys anyone?). This ends up making the wacky shuttles actually less wacky and just the stale and boring options.
  2. Wacky shuttles affect the end-round quite a lot. This is fine, of course, but not when these wacky shuttles can be seen every round.
  3. These wacky shuttles don't have proper facilities. None of them have a good medical section, or emergency supplies, or enough room. This gets pretty annoying pretty fast.
  4. One Funny Guy (the quintessential example being the clown with a dead captain's ID) is all but guaranteed to try to buy the funniest and most annoying shuttle to piss off the rest of the crew. With how Funny and Annoying these shuttles are, not to mention how dirt-cheap they are (or literally give you money!), they're easily the most seen alternate shuttles, which isn't good when they alter how the round-end plays so heavily.

Lepton Violet (wabbajack) shuttle must be unlocked by having some form of polymorph happen in-game first (Pride Mirror is the most accessible source)

The Wabbajack has a endless source of voluntary Polymorphs with a comically low price, which means it is purchased endlessly by crew, not to mention being literally a source of free syndiborgs and xenos. While I'm not a balanceposter, this does come with some annoyances especially for antagonists who just randomly get blown up by an assault borg. This is fine and fun every so often, but not as a common occurrence, not as a guaranteed every-round option. I think it's an excellent candidate for an unlock condition.

Scrapheap shuttle can only be bought if the Cargo budget is below 600 credits, and the emergency shuttle is more than halfway refueled. However, it gives the cargo budget an influx of 3000 credits!

This is LITERALLY 'haha grief shuttle', I have no idea how it even got in as a condition-less shuttle. You see the captain buy it For No Raisin Lul 2 minutes in, sigh to yourself, and secure an EVA suit when the shuttle lands to try to survive in the unbelievably cramped space. (Someone always blows it up.)

Instead of being JUST Grief Shuttle, now it has some interesting reasons to exist. Revs and you're dirt-poor? Nukies just declared war after the Clown bought ten crates of creampie dufflebags? Buy this shuttle and get an influx of money.

Uncle Pete's Rollerdome has had its price increased, and the disco machine is no longer unbreakable.

This one isn't as egregious as the above, but I believe my personal dislike of it extends to a game design level, to an extent. One person can buy this shuttle and the crew as a whole are left to groan as they prepare for a noisy, confusing shuttle in which everyone is ten tiles shifted to their left as their sprite does the most ridiculous dance seen in SS13 history. 'Just turn the music off!': I'm glad this is an option, but it doesn't change how much this shuttle alters things. It's fine as a sendoff to a nice, chill greenshift, but as a constant sight in red shifts it's just... frustrating. And purchased BECAUSE it's frustrating, to the short-lived schadenfreude of one person and the frustration of others.

And then the unbreakable disco machine. Why is it unbreakable. If the crew doesn't want to listen to the thing, let them break it? Buy Disco Inferno if you want an unbreakable disco.

Some of these changes are probably over-the-top, but remember that these will still be seen in-game, just a bit rarer. Worst case scenario the shuttle replacement event will let them have their time in the limelight.

Changelog

🆑 balance: Lepton Violet (wabbajack) shuttle must be unlocked by having some form of polymorph happen in-game first (Pride Mirror or the cursed springs are the most accessible sources) balance: Scrapheap shuttle can only be bought if the Cargo budget is below 600 credits, and the shuttle has just less than half of its usual refueling time left. However, it gives the cargo budget an influx of 3000 credits! qol: Uncle Pete's Rollerdome has had its price increased, and the disco machine is no longer unbreakable. /🆑


Friday 2023-08-11 03:17:57 by SkyratBot

[MIRROR] Drill module automatically disables if it's about to drill into gibtonite [MDB IGNORE] (#22990)

  • Drill module automatically disables if it's about to drill into gibtonite (#77385)

About The Pull Request

Drill module automatically disables if it's about to drill into gibtonite.

Why It's Good For The Game

Drill module automatically disables if it's about to drill into gibtonite

There's not enough time to react, the mining scanner is surprisingly slow sometimes and it means you drill straight into gibtonite, which primes it the first drill and blows it up the second, which is a lot more of a pain than it sounds because drilling is night-instant. These explosions are usually enough to crit you, and if they don't, the stun and area clear means any fauna can wander in and finish you off.

The auto-disable still makes it an annoyance to stumble upon gibtonite, but it won't round end you for using modsuits.

Changelog

🆑 qol: Drill module automatically disables if it's about to drill into gibtonite /🆑

  • Drill module automatically disables if it's about to drill into gibtonite

Co-authored-by: carlarctg [email protected]


Friday 2023-08-11 03:27:06 by EOBGames

Martian Food: A Taste of the Red Planet (#75988)

About The Pull Request

Adds a selection of new foods and drinks based around Mars. More information on Mars can be found here: https://github.com/tgstation/common_core/blob/master/Interesting%20Planets/Human%20Space/The%20Sol%20System.md To summarise for the general audience, Mars is a vital colony of the Terran Federation, having been primarily settled (at least originally) by Cybersun Industries to harvest its lucrative supplies of plasma, the second largest in human space behind Lavaland. This has given Mars a diverse culture evolving from the mostly East Asian colonists, and their food reflects this.

Thanks to Melbert for their work on the soup portion of this PR.

The food: Martian cuisine draws upon the culinary traditions of East Asia, and adds in fusion cuisine from the later colonists. Expect classics such as ramen, curry, noodles and donburi, as well as new takes on the formula like the Croque-Martienne, Peanut Butter Ice Cream Mochi, and the Kitzushi- chilli cheese and rice inside a fried tofu casing. Oh, and lots of pineapple. The Martians love pineapple:

image Also included are some foods for Ethereals, which may or may not be hinting at something I've got planned...

The drinks: Four new base drinks make their way to the game, bringing with them a host of new cocktails: enjoy new ventures in bartending with Coconut Rum, Shochu/Soju, Yuyake (our favourite legally-distinct melon liqueur), and Mars' favourite alcoholic beverage, rice beer. Each is available in the dispenser, as well as bottles in the booze-o-mat:

image

The recipes: To make your (and the wiki editors) lives easier, please find below the recipes for both foods and drinks: Food: https://hackmd.io/@EOBGames/BkVFU0w9Y Drinks: https://hackmd.io/@EOBGames/rJ1OhnsJ2

Why It's Good For The Game

Another lot of variety for the chef and bartender, as well as continuing the work started with lizard and moth food in getting Common Core into the game in a tangible and fun way.

Changelog

🆑 EOBGames, MrMelbert add: Mars celebrates the 250th anniversary of the Martian Concession this year, and this has brought Martian cuisine to new heights of popularity. Find a new selection of Martian foods and drinks available in your crafting menu today! /🆑


Co-authored-by: MrMelbert [email protected]


Friday 2023-08-11 03:30:46 by Sealed101

Fixes things about goliaths: wallhacks/range hacks(no, really) and tentacles not spawning in mineral turfs; also fixes find_potential_targets wallhacks (#77393)

About The Pull Request

Goliath's sand digging behaviour could potentially target a turf that's actually unreachable by the goliath, e.g.

G#
#T

where G - goliath # - wall T - target turf. fixed that, but i think there could be something easier here, maybe instead grabbing turfs in goliath's view()? unsure

The component goliaths use to telegraph their attacks (basic_mob_attack_telegraph) casts a do_after() to perform the attack, but it was not actually checking for the target staying in melee range, as it was using the source goliath as both user and target, so it didn't actually care at all for the target. Implemented an extra_checks to Adjacent() since that's the closest we get for melee range shenanigans I suppose This still allows the source basicmob to attack the target if the target moves around the source basicmob.

!Goliaths were also able to summon tentacles on a target that moved into cover and still stayed in the find_potential_targets target range. Which meant more wallhacks. This was a thing for the base find_potential_targets, meaning that every basic mob using it was a dirty haxxor (or very vengeful). Fixed that by making find_potential_targets also check for can_see() before proceeding further down find_potential_targets/perform(). ! The only exception to this check currently are bileworms.

!Goliath tentacles were not spawning in mineral turfs as their Initialize() checked for closed turfs before handling mineral turf mining. Fixed that as well.

Why It's Good For The Game

Dr__Hax_by_Didgeridoo_Dealer

Changelog

🆑 fix: fixed goliaths digging sand that they can't actually reach (behind windows or inbetween closed turfs) fix: fixed goliaths melee attacking their target despite the target running away from goliath melee range fix: fixed goliath tentacles not spawning in mineral turfs fix: fixed goliaths summoning tentacles on targets that moved behind cover but stayed in their targeting range. this applies for most basic mobs, really, so if any basic mob was targeting you despite you hauling ass behind cover, they shouldn't anymore /🆑


Friday 2023-08-11 03:53:41 by Meghna Si

Update README.md

Ambitious student of software engineering and enthusiast in cyber security and ethical hacking. Currently on track to become an AI engineer. I’m living the dream.

I’ve always been a problem solver, an independent ambivert, and a technophile obsessed with the latest devices. Today, I’m getting familiar with modern technologies ...and I get to show off all these elements of who I am.

I started learning to code when I was a teenager, though it was always more of a hobby than a career focus. After higher school education in pure science, and continuing to pursue that hobby, I realized software engineering was the right field for me.

I’m familiar with a variety of programming languages, including JavaScript, HTML, CSS, Python, C, C++, but I’m always adding new skills to my repertoire. I’m also eager to meet other software engineers in the area.. Connect with me!”


Friday 2023-08-11 03:58:12 by Nazar

Hard russian computer science tasks (#1323)

Thank you for contributing an eval! ♥️

🚨 Please make sure your PR follows these guidelines, failure to follow the guidelines below will result in the PR being closed automatically. Note that even if the criteria are met, that does not guarantee the PR will be merged nor GPT-4 access be granted. 🚨

PLEASE READ THIS:

In order for a PR to be merged, it must fail on GPT-4. We are aware that right now, users do not have access, so you will not be able to tell if the eval fails or not. Please run your eval with GPT-3.5-Turbo, but keep in mind as we run the eval, if GPT-4 gets higher than 90% on the eval, we will likely reject it since GPT-4 is already capable of completing the task.

We plan to roll out a way for users submitting evals to see the eval performance on GPT-4 soon. Stay tuned! Until then, you will not be able to see the eval performance on GPT-4. Starting April 10, the minimum eval count is 15 samples, we hope this makes it easier to create and contribute evals.

Also, please note that we're using Git LFS for storing the JSON files, so please make sure that you move the JSON file to Git LFS before submitting a PR. Details on how to use Git LFS are available here.

Eval details 📑

Eval name

hard_russian_computer_science_tasks

Eval description

Challenging computer science problems primarily sourced from Russian academic and competitive programming contexts. The problems cover various subfields of computer science, including data structures, algorithms, computational mathematics, and more.

What makes this a useful eval?

Russian computer science education and competitive programming are known for their rigorous and complex problem sets. These problems can be used to assess an GPT's ability to solve high-level, challenging problems.

Criteria for a good eval ✅

Below are some of the criteria we look for in a good eval. In general, we are seeking cases where the model does not do a good job despite being capable of generating a good response (note that there are some things large language models cannot do, so those would not make good evals).

Your eval should be:

  • [ + ] Thematically consistent: The eval should be thematically consistent. We'd like to see a number of prompts all demonstrating some particular failure mode. For example, we can create an eval on cases where the model fails to reason about the physical world.
  • [ + ] Contains failures where a human can do the task, but either GPT-4 or GPT-3.5-Turbo could not.
  • [ + ] Includes good signal around what is the right behavior. This means either a correct answer for Basic evals or the Fact Model-graded eval, or an exhaustive rubric for evaluating answers for the Criteria Model-graded eval.
  • [ + ] Include at least 15 high-quality examples.

If there is anything else that makes your eval worth including, please document it below.

Unique eval value

Insert what makes your eval high quality that was not mentioned above. (Not required)

Eval structure 🏗️

Your eval should

  • [ + ] Check that your data is in evals/registry/data/{name}
  • [ + ] Check that your YAML is registered at evals/registry/evals/{name}.yaml
  • [ + ] Ensure you have the right to use the data you submit via this eval

(For now, we will only be approving evals that use one of the existing eval classes. You may still write custom eval classes for your own cases, and we may consider merging them in the future.)

Final checklist 👀

Submission agreement

By contributing to Evals, you are agreeing to make your evaluation logic and data under the same MIT license as this repository. You must have adequate rights to upload any data used in an Eval. OpenAI reserves the right to use this data in future service improvements to our product. Contributions to OpenAI Evals will be subject to our usual Usage Policies (https://platform.openai.com/docs/usage-policies).

  • [ + ] I agree that my submission will be made available under an MIT license and complies with OpenAI's usage policies.

Email address validation

If your submission is accepted, we will be granting GPT-4 access to a limited number of contributors. Access will be given to the email address associated with the commits on the merged pull request.

  • [ + ] I acknowledge that GPT-4 access will only be granted, if applicable, to the email address used for my merged pull request.

Limited availability acknowledgment

We know that you might be excited to contribute to OpenAI's mission, help improve our models, and gain access to GPT-4. However, due to the requirements mentioned above and the high volume of submissions, we will not be able to accept all submissions and thus not grant everyone who opens a PR GPT-4 access. We know this is disappointing, but we hope to set the right expectation before you open this PR.

  • [ + ] I understand that opening a PR, even if it meets the requirements above, does not guarantee the PR will be merged nor GPT-4 access be granted.

Submit eval

  • [ + ] I have filled out all required fields of this form
  • [ + ] I have used Git LFS for the Eval JSON data
  • (Ignore if not submitting code) I have run pip install pre-commit; pre-commit install and have verified that mypy, black, isort, and autoflake are running when I commit and push

Failure to fill out all required fields will result in the PR being closed.

Eval JSON data

Since we are using Git LFS, we are asking eval submitters to add in as many Eval Samples (at least 5) from their contribution here:

View evals in JSON

Eval

{"input": [{"role": "system", "content": "Алёна очень любит алгебру.
Каждый день, заходя на свой любимый алгебраический форум, она с
вероятностью $\\frac14$ находит там новую интересную задачу про группы,
а с вероятностью $\\frac{1}{10}$ интересную задачку про кольца. С
вероятностью $\\frac{13}{20}$ новых задач на форуме не окажется. Пусть
$X$ — это минимальное число дней, за которые у Алёны появится хотя бы
одна новая задача про группы и хотя бы одна про кольца. Найдите
распределение случайной величины $X$. В ответе должны участвовать только
компактные выражения (не содержащие знаков суммирования, многоточий и
пр.)."}], "ideal": "Нам нужно найти $ P[X = k] $. Для этого надо понять
на пальцах, в каком случае $ X = k $. Первый случай — когда в каждый из
предыдущих $ k - 1 $ дней либо не было задач, либо были только про
группы, а в $k$-ый попалась задача про кольца. Второй случай — когда в
каждый из предыдущих $ k - 1 $ дней либо не было задач, либо были только
про кольца, а в $k$-ый попалась задача про группы. На самом деле мы оба
раза учли не подходящий случай, когда все предыдущие $k-1$ дней задач не
было вообще. С поправкой на это ответ будет таким: $P[x=k]=\\left
(\\left (\\frac{13}{20}+\\frac{1}{4}\\right )^{k-1}-\\left
(\\frac{13}{20} \\right )^{k-1}\\right )\\cdot\\frac{1}{10}+\\left
(\\left (\\frac{13}{20}+\\frac{1}{10}\\right )^{k-1}-\\left
(\\frac{13}{20} \\right )^{k-1}\\right )\\cdot\\frac{1}{4}$"}
{"input": [{"role": "system", "content": "В множестве из $n$ человек
каждый может знать или не знать другого (если $A$ знает $B$, отсюда не
следует, что $B$ знает $A$). Все знакомства заданы булевой матрицей
$n×n$. В этом множестве может найтись или не найтись знаменитость —
человек, который никого не знает, но которого знают все. Предложите
алгоритм, который бы находил в множестве знаменитость или говорил, что
ее в этом множестве нет. Сложность по времени — $O(n)$, сложность по
памяти — $O(1)$."}], "ideal": "Для определенности положим
$K_{ij}=\\left\\{\\begin{matrix}1, \\text{если i-й знает j-ого;}
\\\\0\\text{,иначе.}\\end{matrix}\\right.$.\nЗаметим, что если
$K_{ij}=1$, то $i$-ый не может быть знаменитостью, а если $K_{ij}=0$, то
$j$-ый не может быть знаменитостью. Таким образом, за одну проверку
можно исключить одного человека из кандидатов в знаменитости.\nСначала
пусть $s=1$, а $l$ пробегает значения от $22$ до $n$. Если в какой-то
момент $K_{sl}=1$, то приравниваем $s=l$. Тогда значение $s$ после
последней проверки — номер единственного оставшегося кандидата. Чтобы
проверить, является ли этот кандидат знаменитостью, нужно провести еще
$n−1$ проверок, знают ли его остальные, и $n−1$ проверок, знает ли он
остальных. Всего будет проведено $3(n−1)$ проверок, следовательно,
сложность по времени — $O(n)$. Поскольку мы использовали только $2$
переменные, сложность по памяти — $O(1)$."}
{"input": [{"role": "system", "content": "В двумерном полукруге есть n
неизвестных нам точек. Разрешается задавать вопросы вида «каково
расстояние от точки X до ближайшей из этих точек?» Если расстояние
оказывается нулевым, точка считается угаданной. Докажите, что хотя бы
одну из этих точек можно угадать не более чем за $2n+1$ вопрос."}],
"ideal": "Возьмем на диаметре полукруга $n+1$ точку. Точки назовем
$A_1$, $A_2$, … $A_{n+1} и для каждой из них зададим наш вопрос. По
принципу Дирихле, для каких-то двух соседних точек ближайшая точка будет
одна и та же и полученное расстояние было бы до одной и той точки из
множества загаданных точек. Теперь мы рассматриваем точки $B+i$
пересечения окружностей с центрами в точках $A_i$ и $A_{i+1}, $i=1, … ,
n и радиусами равными ответам полученным на предыдущем шаге. По принципу
Дирихле, хотя бы одна из загаданных точек совпадает с одной из точек
$B_i$. Тогда за n вопросов для каждой точки $B_i$ мы получим хотя бы
один ответ 0. Итого нам потребовалось не более (n+1)+n=2n+1 вопросов."}
{"input": [{"role": "system", "content": "В равностороннем треугольнике
$ABC$ площади $1$ выбираем точку $M$. Найти математическое ожидание
площади $ABM$."}], "ideal": "Заметим, что
$M(S_{ABM}+S_{BCM}+S_{CAM})=1$. Тогда из линейности матожидания и
равенства матожиданий площадей треугольников $ABM$, $BCM$ и $CAM$
получим $M(S_{ABM})=\\frac{1}{3}$."}
{"input": [{"role": "system", "content": "Верно ли, что всякая нечетная
непрерывная функция, \nудовлетворяющая условию $f(2x) = 2f(x)$,
линейна."}], "ideal": "Контрпример: $f(x) = x \\cos(2\\pi
\\log_2(|x|))$.\nНеверно."}
{"input": [{"role": "system", "content": "Верно ли, что rank AB = rank
BA для любых квадратных матриц A и B?"}], "ideal": "Пусть
$A=\\begin{pmatrix} 0& 1 \\\\ 1& 0 \\\\ \\end{pmatrix}$, а
$B=\\begin{pmatrix} 1& 0 \\\\ 1& 0 \\\\ \\end{pmatrix}$. Тогда rank AB =
0, но rank BA = 1. Неверно."}
{"input": [{"role": "system", "content":
"Вычислите $\\int_{0}^{2π}(\\sin x)^8dx$."}], "ideal": "Заметим, что
$\\int_{0}^{2\\pi} (\\sin x)^n dx=-\\int_{0}^{2\\pi} (\\sin x)^{n-1}
d(\\cos x)=(n-1)\\int_{0}^{2\\pi} (\\cos x)^2(\\sin x)^{n-2}
dx$.\nИспользуя основное тригонометрическое тождество,
получаем:\n$\\int_{0}^{2\\pi} (\\sin x)^n
dx=\\frac{n-1}{n}\\int_{0}^{2\\pi} (\\sin x)^{n-2}dx$.\nТогда
$\\int_{0}^{2\\pi} (\\sin x)^8 dx=2\\pi
\\prod_{\\substack{k=2\\\\k+=2}}^{8}\\frac{k-1}{k}=\\frac{35\\pi}{64}$."}
{"input": [{"role": "system", "content": "Дан массив из $n$ чисел.
Предложите алгоритм, позволяющий за $O(n)$ операций определить, является
ли этот массив перестановкой чисел от $1$ до $n$. Дополнительной памяти
не более $O(1)$."}], "ideal": "Идея состоит в том, чтобы рассматривать
массив $A$ как подстановку. Пусть индекс $i$ пробегает значения от $0$
до $n−1$. Когда мы встречаем положительный элемент $A[i]$, переходим от
него к элементу $A[A[i]−1]$, от элемента $A[A[i]−1]$ к элементу
$A[A[A[i]−1]−1]$ и так далее, пока мы не не вернемся к $A[i]$, либо не
сможем совершить очередной шаг (в таком случае, массив перестановкой не
является). В процессе меняем знак всех пройденных элементов на
отрицательный. Поскольку на каждом элементе массива мы можем оказаться
максимум два раза, итоговая сложность — $O(n)$. Дополнительная память —
$O(1)$."}
{"input": [{"role": "system", "content": "Дан неориентированный непустой
граф $G$ без петель. Пронумеруем все его вершины. Матрица смежности
графа $G$ с конечным числом вершин $n$ (пронумерованных числами
от 11 до $n$) — это квадратная матрица $A$ размера $n$, в которой
значение элемента $a_{ij}$ равно числу ребер из $i$-й вершины графа
в $j$-ю вершину. Докажите, что матрица $A$ имеет отрицательное
собственное значение."}], "ideal": "Заметим, что $A$ — симметрическая
ненулевая матрица с неотрицательными элементами и нулями на диагонали.
Докажем, что у такой матрицы есть отрицательное собственное
значение.\nИзвестный факт, что симметрическая матрица диагонализуема в
вещественном базисе (все собственные значения вещественны). Допустим,
что все собственные значения $A$ неотрицательны. Рассмотрим квадратичную
форму $q$ с матрицей $A$ в базисе $\\{e1,…,en\\}$. Тогда эта
квадратичная форма неотрицательно определена, так как все собственные
значения неотрицательны. То есть $\\forall v:q(v)⩾0$. С другой стороны,
пусть $a_{ij}≠0$. Тогда $q(e_i−e_j)=a_{ii}−2a_{ij}+a_{jj}=−2a_{ij}<0$.
Это противоречит неотрицательной определенности $q$. Значит, исходное
предположение неверно, и у $A$ есть отрицательное собственное
значение."}
{"input": [{"role": "system", "content": "Дана матрица из нулей и
единиц, причем для каждой строки матрицы верно следующее: если в строке
есть единицы, то они все идут подряд (неразрывной группой из единиц).
Докажите, что определитель такой матрицы может быть равен только $\\pm1$
или $0$."}], "ideal": "Переставляя строки, мы можем добиться того, чтобы
позиции первых (слева) единиц не убывали сверху вниз. При этом
определитель либо не изменится, либо поменяет знак. Если у двух строк
позиции первых единиц совпадают, то вычтем ту, в которой меньше единиц
из той, в которой больше. Определитель при этом не меняется. Такими
операциями мы можем добиться того, что позиции первых единиц строго
возрастают сверху вниз. При этом либо матрица окажется вырожденной, либо
верхнетреугольной с единицами на диагонали. То есть, определитель станет
либо $0$, либо $1$. Так как определитель при наших операциях либо не
менялся, либо поменял знак, изначальный определитель был $\\pm1$ или
$0$."}

Friday 2023-08-11 04:04:40 by decryller

oh my god.

fixed big fucking oopsie i didnt know you couldnt prototype templates


Friday 2023-08-11 04:22:03 by treckstar

People listen up don't stand so close, I got somethin that you all should know. Holy matrimony is not for me, I'd rather die alone in misery.


Friday 2023-08-11 04:29:19 by Yaroslav Furman

power/supply: Force disable frame pointers and optimize for size

Holy fucking shit this is so retarded, it doesn't boot with frame pointers and this is possibly breaking the DS28E16 verification driver.

Signed-off-by: Yaroslav Furman [email protected] Change-Id: Ie3023c569516593d0224d416c95ada98efbc66d1


Friday 2023-08-11 04:30:55 by necromanceranne

Nukies Update 7: Hats (Also massive uplink standardization, weapon kits and ammo changes) (#77330)

About The Pull Request

Massively overhauls and standardizes the nuclear operative uplink.

Weapon Kits

Essentially, all the main weapons of the uplink have been changed to instead come as 'weapon kits', which are essentially cases containing a weapon loadout to enable operatives to easily start operating on only just one item purchase, without the fuss of worrying whether or not operatives are getting spare ammo, or getting relevant equipment for success. Consider this a pseudo-loadout, though without necessarily restricting the purchasing of more weapon kits.

All kits come in three categories: Low Cost (8 TC), Medium Cost (14 TC) and High Cost (18 TC). This is also matched by categorized ammo costs; Basic Ammo (2 TC), Hollow Point and Armour Penetrating (4 TC), Incendiary (3 TC) and Special (or anything that does not easily fit these categories and does something real extra) (5 TC). Weapons that lacked these ammos have gained these ammo types to fill the gaps.

There is may one exception to this in disruptor ammo, which is priced as basic ammo if only because it isn't _quite_ good enough to justify pricing at 5 tc and I can see an op wanting to use it as a basic ammo type instead of normal .50 BMG against, say, a silicon/mech heavy opposition. Since it cannot kill organics on its own, I'll consider this mostly basic-adjacent
The kits have also been labelled based on potential difficulty. This reflects possible difficulties in using the item, how conducive it is to success for how much game knowledge needed to actually use it, and how likely an op is to succeed using it. I don't expect ops to win using nothing but a rocket launcher, but I think ops should get a fair shake at trying, yeah?

The kits are as below:

Low-Cost

Bulldog (Moderate): Shotgun and three magazines of standard ammo. Ansem (Easy/Spare): Pistol and three spare magazines of standard ammo.

Medium Cost

C-20r (Easy): SMG and three spare magazines of standard ammo. Energy Sword and Shield (Very Hard): Energy sword and shield. (Also a special hat) Revolver (Moderate): Revolver and three speedloaders of standard ammo. Rocket Launcher (Hard): Rocket launcher with three spare rockets.

High Cost

L6 SAW (Moderate): LMG, and that's it. No spare ammo. M-90gl (Hard): Rifle, two spare magazines of standard ammo and a box of rubber grenades. Sniper (Hard): Sniper rifle, two spare magazine of standard ammo, and one magazine of disruptor ammo. Also suit and tie. CQC (Very Hard): Comes with a stealth implant and a bandana. Double-Energy Sword (Very Hard): Double-energy sword, syndicate soap, antislip module, meth injector and a prisoner jumpsuit. NEW Grenadier's Kit (Hard): Grenadier's belt and grenade launcher (the one that launchers chem grenades). (I replaced the shit acid grenade with another flashbang in the belt)

Surplus SMG (Flukie difficulty) has been unchanged. It just now comes with two rations.

Includes two new revolver ammo types: Phasic, which goes through walls and armor, but has significantly less damage as a result (I've equalized the revolver damage and the rifle version's damage to 30 for both). And Heartseeker, which has homing bullets. Both are Special ammo, and are priced at 5 TC a speedloader.

Other Gear

The other items in the uplink have also been consolidated and standardized in various ways.

Grenades

Most now cost 15 TC for three grenades of any given type (including the full fungal tuberculous). This is pretty much identical to the previous price, just more consistent overall and front-loaded in cost.

Reinforcements

All the various reinforcements now cost 35 TC and all refundable, equalizing cost to the average across the reinforcements. This is primarily because I feel like all these options should be weighed equally, and not one of these options are necessarily worse or better than the other in their current balance. They're largely inaccessible for normal ops regardless, and typically come out when there is a discount or war ops. I took the average value and went with it. Not much more to say.

Mechs

They're just cheaper. These things still suck and they need help. They've always needed help. A slightly less excessive value for the mechs may help see people willing to spend the TC on them. I doubt it. I seriously suggest not buying these still. I keep them in primarily because they are big stompy mechs and are kind of iconic 'war ops' gear.

Bundles

Since I've implemented weapon kits, gun bundles are rather redundant. So the bulldog weapon and ammo bundle, the c20-r weapon and ammo bundle and technically the sniper bundle were removed. The sniper bundle is now the weapon kit, obviously.

Nothing else here really. Except for one....

Implants

Not much changed here. I standardized the implant prices to 8 TC a pop. This is in accordance with traitor implants, which ops also get. So everything in this category bar a few exceptions (like macro/microbombs) are around 8 TC. Makes sense to me, really.

Importantly, I made the Implant bundle 25 TC, and I unrandomized the contents. Who in the right fucking mind would spend 40 TC just to get five reviver implants is beyond me. But instead, you get one of each of the cybernetic implants except thermal eyes (you can just buy thermals and get the benefit of both vision types; x-ray and thermal vision, if you want to use smokescreens a lot).

Base Keys

They're all now 15 TC, except the fridge which is 5 TC. It's weird they're valued differently when they are taken mostly to do gimmicks like xenobio and toxins in a hurry before hitting the station. So we've standardized it.

Hat Crate

YES, GOOD SIR, YOU TOO CAN ORDER A HAT CRATE FROM THE SYNDICATE STORE FOR ONLY 5 TC!

NO NEED FOR A KEY, JUST BUY IT AND PULL IT OPEN WITH YOUR STANDARD ISSUE CROWBAR!

ENJOY YOUR NEW CRATE! ENJOY YOUR NEW HAT!

PUT IT ON USING THE FREE HAT STABILIZERS WE INCLUDED WITH THE HATS!

NO REFUNDS IF YOU GET BLOOD ON YOUR HAT!

There is a 1% chance to instagib people with direct hits from a rocket. This does the crit effect.

Why It's Good For The Game

The uplink needed more spring cleaning and standardization.

With this, I've partially implemented my older idea for ammo consistency and initial allowance for nukies. Ammo is kind of over-priced and often where a good chunk of TC goes towards without really pushing nukies towards meaningful success. And it is often what is tripping up new players who didn't think to get any. Now, when they get a gun, they get ammo in their case. On top of this, the weapon kit category is both at the top of the uplink AND has a little label to say 'Recommend', so that these new players will hopefully know they should be looking there first.

In addition, it is the gateway towards a concept that is currently being worked on. Nuclear operatives having some degree of predefined loadouts for players to select if they aren't sure what they want, or don't know what to get. Nukies is very confusing for many players. So giving them a fighting chance with some premade setups can help ease them into the role without needing too much player knowledge in how to apply the items. This is only one step towards that, so that players can identify what gear they need to help succeed based on their skill.

I wanted to implement a difficulty warning so that players can choose gear loadouts that are actually conducive to their skill and knowledge. I based it on how much players would need to know to engage in combat with it, and how much fiddling is required to get something to work properly (overly involved reloading is a consideration, for example, as well as precise button presses). In addition, how much of a force multiplier some weapons can be for their ease of use.

Most people recognize the c20-r as the most new player friendly weapon, as an example. So it would be good to steer players towards taking that gun because of how easy it is to use, understand and succeed with it.

And most importantly of all; Having standards within the uplink is important. Most of the values in the uplink are just completely random. Nobody has a good grasp of what is too much or too little. Even just a hint of consistency, and people will stick to it (see implants for what I mean). And there is still some work to be done even there. A good start is weapons. Price for power can be meaningful when decided whether we want some weapons to come out more often than others. Players do enjoy making informed decisions and choices, and having affordability be a draw to some otherwise less powerful weapons (looking at you, Bulldog) can actually be a worthwhile and meaningful difference.

I thought it would tick off the gun nerds to change the calibers on the guns.

I also thought adding hats would be funny given the release of TF2's most recent update.

Changelog

🆑 balance: Standardizes some of the nuclear operative entries to have more consistent pricing within their respective categories. add: Adds some new categories so that players have an easier time navigating the nuclear operative uplink. balance: Many items have had prices reduced or adjusted to make them more desirable or more consistent within their category. add: Weapon kits have replaced almost all the individual weapons in the uplink. You now buy these instead of the individual weapon. These often come with spare ammo or relevant gear for success. add: Most ammo types have been standardized in price. refactor; Removes a lot of redundant item entry code and tidies up the actual code part of the nuclear uplink so that it is much easier to find things within it. add: Added 40 new cosmetic items to the Syndicate Store. Buy them now from the Hat Crate, only 5 TC! code: Updated the nuclear operative uplink files. /🆑


Friday 2023-08-11 04:30:55 by necromanceranne

Dissection experiments are handled by autopsy surgery. Removes redundant dissection surgery. You can repeat an autopsy on someone who has come back to life. (#77386)

About The Pull Request

TRAIT_DISSECTED has had the surgical speed boost moved over to TRAIT_SURGICALLY_ANALYZED.

TRAIT_DISSECTED now tracks if we can do an autopsy on the same body again, and blocks further autopsies if it is on the mob. A mob that comes back to life loses TRAIT_DISSECTED. This allows for mobs to be autopsied once again.

Since it is completely redundant now (and was the whole time TBH), dissections have been removed in favour of just having the experiment track autopsies.

Fixes tgstation/tgstation#76775

Why It's Good For The Game

Today I showed up to a round where someone autopsied all the bodies in the morgue, not realizing they were using the wrong surgery. Since I couldn't redo the surgery, this rendered all these bodies useless. This was not out of maliciousness, they just didn't know better. There are two autopsies in the surgery list, but only one is valid for the experiment and doing the wrong one blocks both surgeries. Dissection is completely useless outside of experiments. This same issue also prevents additional autopsies on the same person, even if they had come back to life and died again after you had done the initial autopsy. Surely you would want to do more than one autopsy, right? That's two separate deaths!

This resolves that by giving you a method of redoing any screwups on the same corpse if necessary. It only matters if the experiment is available anyway, so there isn't much reason to punish players unduly just because they weren't aware science hadn't hit a button on their side (especially since it isn't communicated to the coroner in any way to begin with). It also removes a completely useless surgery and ties in the experiment to what the coroner is already going to be doing. They can dissect their corpses to their hearts content without worrying about retribution from science for doing so.

In addition, someone repeatedly dying can continue to have autopsies done on them over the course of the round. The surgery bonus only applies once, so the only reason to do autopsies after the first is to discover what might have killed someone. No reason this should block further surgeries, just block surgeries when the person remains a corpse.

Changelog

🆑 fix: You can do autopsies on people who were revived and died again after they had already been dissected. qol: Autopsies have become the surgery needed to complete the dissection experiments. As a result, the dissection surgery has been removed as it is now redundant. qol: A coroner knows whether someone has been autopsied and recently dissected (and thus hasn't been revived) by examining them. /🆑


Co-authored-by: Jacquerel [email protected]


Friday 2023-08-11 04:39:28 by Pickle-Coding

Changeling armblade gets 35% armour penetration + better wounding. (#77416)

About The Pull Request

Gives the changeling armblade an armour penetration of 35%. Sets their bare_wound_bonus to 10 (from 20), and a wound_bonus of 10 (from -20).

Why It's Good For The Game

The wound bonuses basically gave massive punishment if they attacked anything but the skin. It honestly felt kinda lame. The better wounding potential will help bring a bloodier and more exciting atmosphere when a changeling whips out the blade.

The armour penetration will help reduce dragged out fights that get a little silly, while keeping the wounding more consistent.

Changelog

🆑 balance: Changeling arm blade has an armour penetration of 35%. balance: Changeling arm blade has a wound bonus of 10, from -20. balance: Changeling has a bare wound bonus of 10, from 20. /🆑


Friday 2023-08-11 05:07:01 by spicywheatbread

Add files for SFX (#39)

  • Basic SFX Added

Added placeholder sound effects to things like jumping and dying.

(cherry picked from commit e721f5ff4a91ac3e89c323e4e900a352f9b02ebf)

  • More SFX

Added new page flip sound, added sounds to return buttons in menus, more work to be done on this but just uploading so I can work on this from my laptop at school

(cherry picked from commit 17ef3bacf1a95b3778570ce80ec9582177c4649c)

  • SFX files and settings menu

Added some sound files for sfx and light changes for the settings menu to continue to work on later.

(cherry picked from commit 571e9bcd4503ab057ca9b09099a4f41f4f9d562f)

  • Sorry this is a bunch of random changes lmao. Added ambiences to NathanP2, the Prefab to play Ambience. Also, added new respawnManager to respawn necesasry objects like OrangeObjects and ScribbleWall. Moved some scripts into folders. Random level fixes for Mike, Claire, etc from playtesting.

(cherry picked from commit b1b9afbf29567d345e08e4a96ca4f4da3b63e885)

  • sfx added + slider func

Added some more sound effects, sliders in settings menu now play a sound to reflect their real volumes, added looping sound to drawing canvases.

(cherry picked from commit 8007a22b04b5dde97c5cbfba0ebc9ccc8ab904c2)

  • I'm not gonna lie. I don't remember what I changed about the levels, but I'm PRETTY sure it's something. Mostly, Stickman now stops walking animation when walking into a wall and stops playing footstepSFX as well. PageflipSFX when finishing level. Quick logic fix for levelendtrigger b/c it would call loadnextscene multiple times. Made audiosystem global so it's easier to code.

(cherry picked from commit 65a49121750f5d3fb48a452b08b4d0063a770bdd)

  • Forgot to commit the change for the animation controller update.

(cherry picked from commit b6cd4de1442639ee872adb574f27acf95450c4dd)

  • Delete it.

I hate it. new page flip wav meta


Friday 2023-08-11 05:28:39 by Andrew Sutherland

Allow diagramming C++ includes in both directions; adds calls-from and UI.

We make it possible to visualize C++ includes by:

  • Hackily attaching context/contextsym to file includes in crossref. This is something that MozsearchIndexer.cpp could/should instead generate but that's a follow-up.
  • Creating a synthetic "structured" record for files as we ingest them in the crossref. This is also something that I guess the indexers could create, although there is the interesting situation that we could add information about the generators to the structured records, and there's no way that the C++ indexer would know that, so there may be an argument for not bothering with that.
  • For the generated HTML, adding a weird looking "(file symbol)" after the breadcrumbs that you can click on to get a context menu to be able to request the diagrams.
    • This also required a change to make sure we always insert the jumpref for the file in the file, otherwise we wouldn't have the symbol data.
  • I also messed up and reformatted "output.rs", but frankly this is a good test of the new token-centric diff magic, so I'm going to leave it in.
  • I added calls-from which I was scared of exposing before because I had such bad experiences with this being useless in the fancy-branch prototype. This will probably need a follow-up to make sure that by default it avoids calls out of the current sub-system or at least into XPCOM and MFBT, as those were the real problems and required marking some code as explicitly boring. Maybe that could come from the ontology mechanism now that we have it. We declare some modules as infra/etc.

Friday 2023-08-11 06:06:43 by microsounds

notes/figures: suruga-ya.com (not .jp) order got canceled cus they suck

(is this a stupid blogpost? probably, i don't feel like putting it on the main site tho)

so basically i ordered 2 scale figures and 10 nendoroids with free shipping during a free int'l shipping promotion, the DHL shipping alone would have probably cost them ¥70,000 alone, just slightly more than my order total, and obviously they refused to honor it and they ended the promotion early (meant to run until aug 10th) so nobody would have a chance to reorder in time, also they increased prices of everything on their site 10-25% to screw with us dirty gaijins, just use the japanese domestic site (.jp) and a forwarding service, suruga-ya.com sucks hard and you have zero reason to use it, they have a tiny fraction of the .jp site's merchandise anyway.

they were running a free shipping sale for international customers at the time (july 27-aug 2, 2023) and were hemhoraging money shipping international DHL and looking for any excuse to cancel large orders, including dumb things like CC billing address not matching shipping address or large orders over ¥7,000 being made on a new account with no prior order history being "autocanceled" by their fraud protection, incompetent fucks literally tied up their own inventory (marked as sold out) for 2 weeks and probably even boxed it up too before they decided to actually attempt billing and subsequently cancel my order

in any case, this is literally never happening again and was very likely a mistake on their end that they even canceled the sale early, they were sending the same size boxes they use for domestic japanese orders and it doesn't matter usually because japan post charges by weight and not package volume, not so in international air parcels! These cost a shit-ton to ship DHL or EMS to the U.S., imagine blowing ¥44,500 to ship a 40x30x18cm, 1kg box containing ¥1,100 in goods. Why don't they offer surface mail, I don't mind the 3-4mo wait really.


Friday 2023-08-11 06:51:03 by Josh Story

Implement new forking technique for vendored packages. (#51083)

Vendoring

Updates all module resolvers (node, webpack, nft for entrypoints, and nft for next-server) to consider whether vendored packages are suitable for a given resolve request and resolves them in an import semantics preserving way.

Problem

Prior to the proposed change, vendoring has been accomplished but aliasing module requests from one specifier to a different specifier. For instance if we are using the built-in react packages for a build/runtime we might replace require('react') with require('next/dist/compiled/react').

However this aliasing introduces a subtle bug. The React package has an export map that considers the condition react-server and when you require/import 'react' the conditions should be considered and the underlying implementation of react may differ from one environment to another. In particular if you are resolving with the react-server condition you will be resolving the react.shared-subset.js implementation of React. This aliasing however breaks these semantics because it turns a bare specifier resolution of react with path '.' into a resolution with bare specifier next with path '/dist/compiled/react'. Module resolvers consider export maps of the package being imported from but in the case of next there is no consideration for the condition react-server and this resolution ends up pulling in the index.js implementation inside the React package by doing a simple path resolution to that package folder.

To work around this bug there is a prevalence of encoding the "right" resolution into the import itself. We for instance directly alias react to next/dist/compiled/react/react.shared-subset.js in certain cases. Other times we directly specify the runtime variant for instance react-server-dom-webpack/server.edge rather than react-server-dom-wegbpack/server, bypassing the export map altogether by selecting the runtime specific variant. However some code is meant to run in more than one runtime, for instance anything that is part of the client bundle which executes on the server during SSR and in the browser. There are workaround like using require conditionally or import(...) dynamically but these all have consequences for bundling and treeshaking and they still require careful consideration of the environment you are running in and which variant needs to load.

The result is that there is a large amount of manual pinning of aliases and additional complexity in the code and an inability to trust the package to specify the right resolution potentially causing conflicts in future versions as packages are updated.

It should be noted that aliasing is not in and of itself problematic when we are trying to implement a sort of lightweight forking based on build or runtime conditions. We have good examples of this for instance with the next/head package which within App Router should export a noop function. The problem is when we are trying to vendor an entire package and have the package behave semantically the same as if you had installed it yourself via node_modules

Solution

The fix is seemingly straight forward. We need to stop aliasing these module specifiers and instead customize the resolution process to resolve from a location that will contain the desired vendored packages. We can then start simplifying our imports to use top level package resources and generally and let import conditions control the process of providing the right variant in the right context.

It should be said that vendoring is conditional. Currently we only vendor react pacakges for App Router runtimes. The implementation needs to be able to conditionally determine where a package resolves based on whether we're in an App Router context vs a Page Router one.

Additionally the implementation needs to support alternate packages such as supporting the experimental channel for React when using features that require this version.

Implementation

The first step is to put the vendored packages inside a node_modules folder. This is essential to the correct resolving of packages by most tools that implement module resolution. For packages that are meant to be vendored, meaning whole package substitution we move the from next/(src|dist)/compiled/... to next/(src|dist)/vendored/node_modules. The purpose of this move is to clarify that vendored packages operate with a different implementation. This initial PR moves the react dependencies for App Router and client-only and server-only packages into this folder. In the future we can decide which other precompiled dependencies are best implemented as vendored packages and move them over.

It should be noted that because of our use of JestWorker we can get warnings for duplicate package names so we modify the vendored pacakges for react adding either -vendored or -experimental-vendored depending on which release channel the package came from. While this will require us to alter the request string for a module specifier it will still be treating the react package as the bare specifier and thus use the export map as required.

module resolvers

The next thing we need to do is have all systems that do module resolution implement an custom module resolution step. There are five different resolvers that need to be considered

node runtime

Updated the require-hook to resolve from the vendored directory without rewriting the request string to alter which package is identified in the bare specifier. For react packages we only do this vendoring if the process.env.__NEXT_PRIVATE_PREBUNDLED_REACT envvar is set indicating the runtime is server App Router builds. If we need a single node runtime to be able to conditionally resolve to both vendored and non vendored versions we will need to combine this with aliasing and encode whether the request is for the vendored version in the request string. Our current architecture does not require this though so we will just rely on the envvar for now

webpack runtime

Removed all aliases configured for react packages. Rely on the node-runtime to properly alias external react dependencies. Add a resolver plugin NextAppResolverPlugin to preempt perform resolution from the context of the vendored directory when encountering a vendored eligible package.

turbopack runtime

updated the aliasing rules for react packages to resolve from the vendored directory when in an App Router context. This implementation is all essentially config b/c the capability of doing the resolve from any position (i.e. the vendored directory) already exists

nft entrypoints runtime

track chunks to trace for App Router separate from Pages Router. For the trace for App Router chunks use a custom resolve hook in nft which performs the resolution from the vendored directory when appropriate.

nft next-server runtime

The current implementation for next-server traces both node_modules and vendored version of packages so all versions are included. This is necessary because the next server can run in either context (App vs Page router) and may depend on any possible variants. We could in theory make two traces rather than a combined one but this will require additional downstream changes so for now it is the most conservative thing to do and is correct

Once we have the correct resolution semantics for all resolvers we can start to remove instances targeting our precompiled instances for instance making import ... from "next/dist/compiled/react-server-dom-webpack/client" and replacing with import ... from "react-server-dom-webpack/client"

We can also stop requiring runtime specific variants like import ... from "react-server-dom-webpack/client.edge" replacing it with the generic export "react-server-dom-webpack/client"

There are still two special case aliases related to react

  1. In profiling mode (browser only) we rewrite react-dom to react-dom/profiling and scheduler/tracing to scheduler/tracing-profiling. This can be moved to using export maps and conditions once react publishses updates that implement this on the package side.
  2. When resolving react-dom on the server we rewrite this to react-dom/server-rendering-stub. This is to avoid loading the entire react-dom client bundle on the server when most of it goes unused. In the next major react will update this top level export to only contain the parts that are usable in any runtime and this alias can be dropped entirely

There are two non-react packages currently be vendored that I have maintained but think we ought to discuss the validity of vendoring. The client-only and server-only packages are vendored so you can use them without having to remember to install them into your project. This is convenient but does perhaps become surprising if you don't realize what is happening. We should consider not doing this but we can make that decision in another discussion/PR.

Webpack Layers

One of the things our webpack config implements for App Router is layers which allow us to have separate instances of packages for the server components graph and the client (ssr) graph. The way we were managing layer selection was a but arbitrary so in addition to the other webpack changes the way you cause a file to always end up in a specific layer is to end it with .serverlayer, .clientlayer or .sharedlayer. These act as layer portals so something in the server layer can import foo.clientlayer and that module will in fact be bundled in the client layer.

Packaging Changes

Most package managers are fine with this resolution redirect however yarn berry (yarn 2+ with PnP) will not resolve packages that are not defined in a package.json as a dependency. This was not a problem with the prior strategy because it was never resolving these vendored packages it was always resolving the next package and then just pointing to a file within it that happened to be from react or a related package.

To get around this issue vendored packages are both committed in src and packed as a tgz file. Then in the next package.json we define these vendored packages as optionalDependency pointing to these tarballs. For yarn PnP these packed versions will get used and resolved rather than the locally commited src files. For other package managers the optional dependencies may or may not get installed but the resolution will still resolve to the checked in src files. This isn't a particularly satisfying implemenation and if pnpm were to be updated to have consistent behavior installing from tarballs we could actually move the vendoring entirely to dependencies and simplify our resolvers a fair bit. But this will require an upstream chagne in pnpm and would take time to propogate in the community since many use older versions

Upstream Changes

As part of this work I landed some other changes upstream that were necessary. One was to make our packing use npm to match our publishing step. This also allows us to pack node_modules folders which is normally not supported but is possible if you define the folder in the package.json's files property.

See: #52563

Additionally nft did not provide a way to use the internal resolver if you were going to use the resolve hook so that is now exposed

See: vercel/nft#354

additional PR trivia

  • When we prepare to make an isolated next install for integration tests we exclude node_modules by default so we have a special case to allow /vendored/node_modules

  • The webpack module rules were refactored to be a little easier to reason about and while they do work as is it would be better for some of them to be wrapped in a oneOf rule however there is a bug in our css loader implementation that causes these oneOf rules to get deleted. We should fix this up in a followup to make the rules a little more robuts.

Edits

  • I removed .sharedlayer since this concept is leaky (not really related to the client/server boundary split) and it is getting refactored anyway soon into a precompiled runtime.

Friday 2023-08-11 07:44:49 by Petre Ro

9.2 Our problem is that we need to add the .js. It turns out that leaving the .js off is a Node thing... and it works if you're programming in Node. But in true JavaScript environments, like in your browser, you do need to include it.

If we refresh now... that was it! It was really my editor's fault that the .js was missing when it autocompleted it. Fortunately, we can fix that! Go into your PhpStorm settings and search for "use file extension". Under "Code Style" and "JavaScript", change "Use file extension" to "Always".

This time... if we say import Vinyl and hit "tab", nice! We get the .js.

Automatic Importmap Entries

  • But the fun doesn't stop: there's something interesting happening behind the scenes. Click into this console.log()... just as an easy way to see the source of the final app.js file.

Yup, its contents look exactly like the original file, including the import from './lib/vinyl.js'. There's just one problem: that's not the final filename for vinyl.js!

Pop over to the Network tools, select "JS", and search for "vinyl". All files served by AssetMapper have a versioned part of their file name, and we see that for vinyl.js. But then... how the heck does our browser read ./lib/vinyl.js and know that it should download this long filename?

The answer, if you view the page source, is... dramatic drumroll... the importmap. And I love this. The importmap is constructed from two sources. The first source is obvious: importmap.php. And we'll add more entries to it soon. The second source is more subtle. Whenever our JavaScript imports another JavaScript file using a relative path, that imported file is automatically added.

This is powerful. It means that our final code can look like it originally does: ./lib/vinyl.js. But thanks to the importmap, our browser will smartly download the real file with the long version part in the name. This is really an internal detail, but it's cool to see how it works.

Okay, we've talked about importmaps a little... but we haven't seen its biggest superpower: using third party packages. Let's explore that next.


Friday 2023-08-11 07:44:49 by Petre Ro

9.1 JavaScript & importmap

Remove the tag, so we can see our normal page. Don't worry about our little penguin guy: we still have him up here in the logo.

When we refresh the page, notice that we do have a console.log() message... which says it's coming from assets/app.js. If we head over to assets/app.js... yup! There it is!

8 lines assets/app.js console.log('This log comes from assets/app.js - welcome to AssetMapper! 🎉')

How assets/app.js is Loaded

  • We know that we can write modern ES6 code in here, as well as import other files. We're going to do all of that. But first: How and why is this file even being executed? Our CSS is being loaded thanks to this nice, boring tag. We don't see a <script> tag for app.js... but we do see this importmap() function. And that's the key.

Back over on the site, View the page source. Down here... this is what importmap adds. We're going to talk about each part, but the most important thing right now is at the bottom:

<script type="module">import 'app';</script>

Earlier, when we created an app.js file inside the public/ directory, this is almost exactly the code we wrote to load it. We used import and then the path to that file. But... this time, it just says app. Shouldn't it say something like /assets/app.12345.js"? How does it know that app refers to the final version of this file? This is where the importmap part, up here, shines.

The Wonderful importmap

  • This section is generated from an importmap.php file inside our project. The file isn't super-interesting yet: it'll be more useful soon when we talk about third party JavaScript. But it does have this app key that points to our assets/app.js file using its logical path.

22 lines importmap.php return [ 'app' => [ 'path' => 'app.js', 'preload' => true, ], ]; Thanks to that, this <script type="importmap"> dumps onto the page. When you import something that doesn't start with a ".", "/", or "../", that's called a bare import. We usually see this for third-party libraries. In the browser environment, when it sees a "bare import", your browser looks for an importmap on the page to find a matching entry. Our browser sees import 'app', finds this key here, and that's the path it downloads. It effectively copies this path here and pastes it down there. That's why our app.js file is being executed: it's team work between the importmap and the extra <script type="module"> that bootstraps our app!

The greatest thing about importmap is that it's not a Symfony thing: it's just an internet thing. It's how your browser works. We do have this importmap.php file, which is a Symfony thing. But once this is on the page, your browser is the star.

The importmap shim + Older Browsers

  • And importmap works in... most browsers. If you go to "caniuse.com" and search for "importmap"... it currently works in about 81% of browsers. That would be a huge problem, except that the importmap() function also dumps a shim. You can see that here. Thanks to this, if a browser doesn't support importmap, this adds that functionality. So, it's just going to work.

Importing Relative JavaScript Files

  • Head into app.js: let's write some modern code. In assets/, first create a new directory called lib/. And inside that, a new file called vinyl.js. You can organize things however you want, and this is one example of isolating some code into its own file.

I'll paste in the same class we had earlier. Back over in app.js, import that: import Vinyl and I can hit "tab" to autocomplete the from './lib/vinyl' part. Instantiate this using the same code as before... and then console.log(mix.describe()).

Using .js when Importing

  • I love it! We're coding like normal and using ./ to import. But when we go over and refresh... it doesn't work. Check out the 404: /assets/lib/vinyl coming from app.js.

So... what's going on here? We'll talk more later about debugging, but here's a hint: if you ever notice that your browser is trying to download a path that doesn't include the "version" part in the filename, something is wrong with your path... and you should check for typos.


Friday 2023-08-11 07:45:06 by saltacc

Create LICENSE.md

add "DO WHAT THE FUCK YOU WANT TO" license


Friday 2023-08-11 07:57:28 by Billy Einkamerer

Created Text For URL [nypost.com/2023/08/10/my-ex-boyfriend-made-me-physically-sick-my-body-rejected-him/]


Friday 2023-08-11 08:15:55 by mef

(math/R-quantreg) Updated 5.88 to 5.96

(From: inst/ChangeLog) 5.89

  1. removed the anonymous function syntax in 5.87 #2 since it did provoke complaints from users.

  2. Fixed bootstrap methods for sparse X matrices for wild and pwy methods report by Tom Parker.

a mcmb is hopeless since it doesnt know about sparse matrices, will add something to man page b pwy problem was annoying in the sense that rbind(X,0) doesnt work in SparseM because 0 isnt sparse! Duh. c wild problem revealed an ecosystem of bugs, even in the non-sparse case there was a bug: hat(X) was called but should have specified hat(X, intercept = FALSE), when X is sparse I needed to cook up a special version of hat.

5.91

  1. CRAN is doing more severe checking about installed packages, so several changes were made to make calls to suggested packages conditional on their loading status. This is supposed to be checkable by setting the environment variable R_CHECK_DEPENDS_ONLY="true" R CMD check ... but I haven't yet gotten this to work.

5.93

  1. The problem referenced in 5.91 above was mainly due to the fact that packages were put in the system library not my personal library. This was fixed by reinstalling so that now:

Sys.getenv("R_LIBS_USER") [1] "/Users/roger/Library/R/x86_64/4.2/library"

and now adding to .Renviron

R_CHECK_DEPENDS_ONLY=true

I believe will trigger the checking without the dependencies as required.

5.94

  1. Albrecht Gebhardt has made a translation of the Renka interp functionality used for bivariate smoothing by rqss. This effectively eliminates the need for tripack in quantreg, and the code as been modified accordingly, thanks to Albrecht for all his efforts on this. This is all due to the unfortunate ACM TOMS licencing policy that is incompatible with R.

  2. Brian Ripley noted that the DOI for my CUP book was broken and I have urged them to fix this.

  3. Minor bug fix in crq for case that the user specifies a single tau value.

5.95

  1. modified rqss to use rgl.triangles3d instead of rgl.triangles as suggested by Duncan Murdock

  2. modified predict.rq and friends to adapt to na.action as suggested in email of [email protected] on 5 April 2023.

5.96

  1. Changed gtimer to return 0.0 at suggestion of BDR to facilitate compatibility with flang.

Friday 2023-08-11 08:52:07 by SkyratBot

[MIRROR] [NO GBP] Fixes clown car + deer collision [MDB IGNORE] (#22709)

  • [NO GBP] Fixes clown car + deer collision (#77076)

About The Pull Request

A not-so-long time ago I drunkenly coded #71488 which did not work as intended.

I return now, in a state of reflective sobriety, to rectify that.

The clown car will now not only crash like it should, but will also cause (additional) head injuries to some occupants and kill the deer on impact.

Content warnings: Animal death, vehicle collision, blood, DUI.

2023-07-24.15-49-41.mp4

Why It's Good For The Game

Fixes the product of a silly PR that never actually worked. Also gives it a bit more TLC in the event that this joke actually plays out on a live server.

Changelog

🆑 fix: Clown cars now properly collide with deer. sound: Violent, slightly glassy car impact sound. /🆑

  • [NO GBP] Fixes clown car + deer collision

Co-authored-by: Rhials [email protected]


Friday 2023-08-11 10:02:02 by Varun Latthe

Test fix for failing e2e tests

wrap login panel in NoSsr

actually fix authentication flow

hopefully this works

I think this might actually work...

this maybe actually works hopefully

Can I just wait?

Get rid of url checks and only check headings

fix dodgy rebase

fix use of useRouter

raise defaultCommandTimeout

does this work?

does this work??

final e2e test fix i think

???

fix lint

maybe this'll work

update workflow to include screenshots and videos

turn on video and screenshot capture

auto-delete artifacts and lower video compression ratio

re-implement NoSsr on the login panel

maybe a different login panel will work

simplify login panel

fix simplified login panel to work with tests

fix accessibility

wait for hydration

wait a second

fix lint

stop failing i stg

T.T

remove hydration marker

Add retry login

all my homies hate race conditions

If this doesn't work I'm not sure what I'm doing icl

sign in doesn't sign in

forgot I removed this

revert to original login panel

click the correct button

imagine this works

me when the fix doesn't work

when it works locally

I have a good feeling about this one

add another check idk anymore

this is an act of desparation

i feel like i'm trying the same things again and again

would be a shame if this works

wins all around

theoretically this works

give up

waiting...

this genuinely might actually work


Friday 2023-08-11 10:40:43 by peppinob-ol

[DOCS] Code Refactoring and content update of quickstart_workflow.ipynb (#3472)

Description

I found the quickstart workflow not as quick as it could be:

  • Cells cannot be run straightaway in google colab and need extra work (eg. libraries not imported).
  • Some important concepts (eg. records and datasets) are not clearly stated in text and code snippets
  • Text refers to the same steps more than once (no clear chain of thought)
  • Cells override the same variable (eg. record), so the feeling is more of a cheatsheet than of a tutorial notebook
  • Content is not updated (eg. ArgillaTrainer is not ever mentioned in the Train section)

I worked on a new version of the notebook with enhanced code and text cells.Ii added also code snippets for training examples which were only described textually.

One last suggestion: It's advisable that external files (data) are downloaded programmatically by running a cell (eg. using requests library). Snapchat_app_store_reviews.csv and kaffee_reviews.csv are taken from kaggle which requires sign-in, so it's not possible to download them directly. Possible solutions:

  • place a copy of the Kaggle datasets in Arggilla's GitHub repository (if permitted by Kaggle's terms of use)
  • select other datasets from another source.

Closes #3431

Type of change

(Please delete options that are not relevant. Remember to title the PR according to the type of change)

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactor (change restructuring the codebase without changing functionality)
  • Improvement (change adding some improvement to an existing functionality)
  • Documentation update

How Has This Been Tested

(Please describe the tests that you ran to verify your changes. And ideally, reference tests)

  • Test A: code run with latest google-colab (v.1.0.0)

Checklist

  • I added relevant documentation
  • follows the style guidelines of this project
  • I did a self-review of my code
  • I made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I filled out the contributor form (see text above)
  • I have added relevant notes to the CHANGELOG.md file (See https://keepachangelog.com/)

Co-authored-by: devorma [email protected] Co-authored-by: davidberenstein1957 [email protected]


Friday 2023-08-11 11:03:56 by SkyratBot

[MIRROR] Refactors Slaughter/Laughter Demons into Basic Mobs [MDB IGNORE] (#22801)

  • Refactors Slaughter/Laughter Demons into Basic Mobs (#77206)

About The Pull Request

On the tin, the former "imp" is now refactored into basic mob code. Very simple since these are only meant to be controlled by players, and all of their stuff was on Signal Handlers and Cooldown Actions anyways. Just lessens the amount of stupidity.

Did you know that we were trying to make demons spawn in a pop'd cat named "Laughter"? Embedded in the list? I've literally never seen this cat, so I'm under heavy suspicion that the code we were using was broken for the longest time (or may have never worked), and we now instead just do it a much more sane way of having a cat spawn on our demise.

Why It's Good For The Game

Cleaner code! Less simple mob jank to deal with. Trims down the list of simple animals to refactor. No more duplicated code that we were already doing on parent! It's so good man literally everything was seamless with a bit of retooling and tinkering. The typepath is also no longer imp, it's actually demon, which I'm happy with because there's no other demons to have it be confused with anymore.

We were also doing copypasta on both the demon spawner bottle and the demon spawning event so I also just unified that into the mob. I also reorganized the sprites to be a bit clearer and match their new nomenclature

Changelog

🆑 refactor: Slaughter and Laughter Demons have been refactored, please place an issue report for any unexpected things/hitches. fix: Laughter Demons should now actually drop a kitten. /🆑

  • Refactors Slaughter/Laughter Demons into Basic Mobs

Co-authored-by: san7890 [email protected]


Friday 2023-08-11 11:03:56 by SkyratBot

[MIRROR] Improves the RPG loot wizard event. [MDB IGNORE] (#22800)

  • Improves the RPG loot wizard event. (#77218)

About The Pull Request

As the title says. Adds a bunch more stat changes to various different items and a somewhat simple way of modifying them whilst minimizing side-effects as much as possible. Added a new negative curse of polymorph suffix that can randomly polymorph you once you pick up the item. Curse of hunger items won't start on items that are not on a turf. Curse of polymorph will only activate when equipped.

Bodyparts, two-handed melees, bags, guns and grenades, to name a few, have a bunch of type-specific stat changes depending on their quality.

Some items won't gain fantasy suffixes during the RPG loot event, like stacks, chairs and paper, to make gamifying the stats a bit harder. I'm sure there'll still be other ways to game the event, but it's not that big of a deal since these are the easiest ways to game it. High level items also have a cool unusual effect aura

Why It's Good For The Game

Makes the RPG item event cooler. Right now, it's a bit lame since everything only gains force value and wound bonus on attack. This makes the statistic increases more type-based and make it interesting to use

It's okay for some items to be powerful since this is a wizard event and a very impactful one too. By making the curse of hunger items not spawn on people, it'll also make it a less painful event too.

Changelog

🆑 add: Expanded the RPG loot wizard event by giving various different items their own statistic boost. /🆑


Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

  • Improves the RPG loot wizard event.

Co-authored-by: Watermelon914 [email protected] Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>


Friday 2023-08-11 11:04:20 by Average_Medal_Enjoyer

a lot of cosmetics

MVM Robot armor and helmets for a few classes

Shoestring Budget (Shared with Merc)

Toy Soldier

Gentle Manne's Service Medal

Furious Fukaamigasa (Shared with Merc)

Rimmed Raincatcher

Dangeresque, Too?

Tam O'Shanter

Tavish DeGroot Experience

Sultan's Ceremonial (Shared with Merc)

Melody Of Misery

Frag Proof Fragger

Head Banger (Shared with Merc)

Bomber's Bucket Hat

King of Scotland Cape

Menpo (Shared with Merc)

Bonk Helm

Planeswalker Goggles

El Jefe

Lucky No. 42

Stereoscopic Shades

Milkman

Boston Boom-Bringer

Beep Boy

Halloweiner

Death Racer's Helmet

Aloha Apparel

Electric Twanger

Pompous Privateer

Snowwing

Caffeine Cooler

"B'aaarrgh-n-Bicorne

Dillinger's Duffel

Robot Running Man

Messenger's Mail Bag

Towering Pillar of Hats (Shared with Merc)

The Merc's Muffler (Shared with Merc)


Friday 2023-08-11 11:47:43 by Adithya R

base: Switch to PixelPropsUtils

Play Protect was broken (uncertified device) on Realme X3. Reported to be broken on few other devices too, in other ROMs using PropImitationHooks. What's the point of having a clean implementation if it doesn't fucking work?

Imported PPU from PE 13. Full history: https://github.com/PixelExperience/frameworks_base/commits/8a940b5453ffd5adc9775f60b4b9b69662fe8e0d/core/java/com/android/internal/util/custom/PixelPropsUtils.java

Massively cleaned up code.

As an added bonus, we also get the new Material You UI for the GMS bits in setup wizard.

Co-authored-by: jhenrique09 [email protected] Co-authored-by: Pranav Vashi [email protected] Co-authored-by: Danny Lin [email protected] Signed-off-by: Adithya R [email protected] Signed-off-by: Nishant Kumar [email protected] Signed-off-by: ugly-kid-af [email protected]


Friday 2023-08-11 12:34:20 by timhjersted

Enemy Balance Pass 1 + Other Enemy Changes

-Health values for SHM enemy spawns have been equalized to roughly all be in the same range (1k-3k mostly, in increments of 500), that way, if these values are still too high they can be reduced by increments of 500 -Some health values for preHM & HM enemies were rounded up or down slightly to be less random -Soul drop values have been equalized roughly using a basic equation: life / 2 for preHM and HM, and life / 2.5 for SHM - these equations ended up being very close to existing values for most enemies: some enemies thus got an increase, some got a reduction, but the standardization should allow us to monitor the soul economy more easily (vanilla enemies weren't touched however, but should probably be handled differently due to their simplicity, like life / 3 or 4 etc) -Several enemies soul drops were adjusted differently or untouched based on their rarity, simplicity, or worm-multi-hit nature (worms were life / 2 / 2) -Many enemies got spawn rate buffs or nerfs based on feedback and a look through their current locations -Several enemies spawn in new locations -Basilisk enemies no longer can teleport by default and spawns were reduced slightly -All Hollow and Lothric enemies finally got damage scaling for HM and SHM, and a visual ring was added for lothric enemies to reveal their proximity debuffs -The Birds now are a bit more thematically distinct: On enrage, The Hunter goes invisible, The Rage gains a bit of life, and The Sorrow gains high defense (ice protection) -Red Knight gained SHM stats -Fighter AI enemies TP less often when hit -Added Black Knight event to SHM dungeon -The old Jungle Wyvern sprite folder was renamed OceanWyvern as a reminder to potentially add a mini-boss event in the Western Ocean


Friday 2023-08-11 12:34:47 by Matthew Treinish

Update tox configuration to use tox >= 4.4.0 (#851)

  • Update tox configuration to use tox >= 4.4.0

Tox 4.0.0 was released in December 2022 [1] and was a major rewrite of the internals of the package that included numerous backwards incompatible changes [2]. Along with that major rewrite was a long period of instability in the package with a flurry of 47 releases [3] since 4.0.0 (which has only been 3-4 months). At the time of the 4.0.0 release we pinned the tox version in CI with #761 to avoid this instability as our tox configuration was not compatible with tox 4.x.y and tox was actually not compatible with how we had things configured more generally. The hope was that tox would stabilize more, fix the issues that plagued the tox 4 release series and we'd be able to relax that pin without requiring bumping our minimum tox version to ensure users could use either the old version or the new version locally. However, since #761 that hope hasn't been realized the divergence between tox 3 and tox 4 has only widened and at least personally I'm not convinced of an improvement in stability to the tox 4 release series. That being said however, this is becoming a developer pain as by default when setting up a new build environment pip will install the latest version of tox and we don't have an effective mechanism to pin the tox version for users as you need to install tox manually as it's the primary python development entrypoint we use. The only only avenue to address this would be documentation updates in the CONTRIBUTING.md file, which we didn't update at the time in #761 because it was meant to be a version temporary pin that has turned out to not be so temporary.

Since it's been >3 months since we first pinned the tox version and that pin was meant to be temporary this commit removes that pin and bumps our minimum supported tox version to be 4.4.0, which despite not being compatible with tox < 4 as we originally hoped, at least seems to work fine with install rustworkx after updating the configuration file. This should hopefully ease the onboarding experience for developers when working with rustworkx and trying to bootstrap a local development environment. Longer term I expect we'll look at moving off of tox, as it no longer seems like a project we can rely on (especially as a key component for our development and CI infrastructure) for rustworkx and instead look at something like nox which I've heard good things about and know that PyO3 had moved to it a year or two ago.

Fixes #812

[1] https://pypi.org/project/tox/4.0.0/ [2] https://tox.wiki/en/latest/upgrading.html [3] https://pypi.org/project/tox/#history

  • Stop using tox for retworkx backwards compat jobs

Tox's isolated builder mechanism seems to be incompatible with our environment variable based package naming mechanism that we use to build the legacy retworkx package. This is causing CI to fail on the backwards compat jobs that are installing retworkx (which depends on rustworkx) to ensure that our backwards compatibility shim works as expected. Instead of trying to force tox to do the correct thing, it's just easier to stop using it for that one CI job and instead just manually install and run the tests.


Friday 2023-08-11 13:43:00 by Eric Arellano

Add Pytest and translations_test.py (#309)

Closes Qiskit/qiskit_sphinx_theme#305.

Both Pytest and Jest tests

We now have tests both in Python and JavaScript. That is because this is a multilingual repository, and we can only test code in the language it's written in.

The tests are organized into tests/{js,py}.

Changes tox -e py and adds tox -e docs

Before, tox -e py was used to build example_docs. But that is different than every single Qiskit project, where tox -e py normally runs tests and you use tox -e docs to build the docs.

This PR aligns us with the greater Qiskit ecosystem.

Uses Pytest rather than unittest

Most Qiskit projects use unittest/stestr (a way to parallelize unittest), although a few have switched to Pytest:

Yeah, there are a few projects using Pytest but indeed most use unittest/stestr

❯ rg pytest -g '*.txt' -l
qiskit-ionq/requirements-test.txt
mthree/requirements-dev.txt
qiskit-qasm3-import/requirements-dev.txt
qiskit-metal/requirements-dev.txt

If I remember correctly from when I first joined the project, Jake (or Matthew) was interested in eventually migrating more of Qiskit to Pytest and that they don't love stestr/unittest. But it's a bigger migration to do that

I've found that Pytest in general is more ergonomic & also more flexible than unittest. For example, it has neat support for parametrization to make it easy to write several similar tests.

And it's easier for developers to use because you only ever need to use assert <some condition>, rather than figuring out which to use between self.assertEqual vs self.assertTrue vs self.assertContains etc. Pytest will make the output of the assert useful for you automatically.


Friday 2023-08-11 13:45:57 by Adaeze

Update README.md

Step into my world through the pages of my portfolio, where words come alive and ideas dance off the screen. This collection is a curation of my thoughts, meticulously woven into write-ups that traverse the diverse landscapes of knowledge, experience, and imagination.

I invite you to explore my musings on topics ranging from the digital cosmos of technology to the intimate intricacies of human relationships. Each piece is a journey, a venture into the realms of creativity and analysis, where I unravel complex concepts with clarity and offer fresh perspectives on the familiar.

Through these write-ups, I aim not only to share my insights but also to ignite conversations and spark a symphony of thoughts. Whether you're seeking information, inspiration, or simply a moment of contemplation, I hope my portfolio leaves an indelible imprint on your intellectual and emotional canvas. Welcome, and enjoy the exploration.


Friday 2023-08-11 14:56:59 by SkyratBot

[MIRROR] Base Female sprite tweaks [MDB IGNORE] (#22924)

  • Base Female sprite tweaks (#77407)

About The Pull Request

ASS STUFF HAS BEEN REMOVED BUT I STILL HATE IT

This PR tones down the proportions of the female base sprites, as currently they have about SIX extra pixels on the ass and a random pixel missing from the neck, which breaks some hairstyles & makes the neck look quite stupid. It also adds a couple pixels to the male one because theirs was so stupidly SMALL it looked like they had no tailbone (still does, kind of).

Here is the current sprite

image & new sprite (only neck pixel removed)

image

Why It's Good For The Game

Fixes some hairs

image

Changelog

🆑 image: fixes weird inconsistency on the neck and butt of the female base sprite /🆑

  • Base Female sprite tweaks

Co-authored-by: Sheits [email protected]


Friday 2023-08-11 15:26:26 by Zavarski

Hydrothermic fuck you GitHub I will upload as much shit as I need


Friday 2023-08-11 15:31:53 by ATP-Engineer

Fixes issue where Turret Control sprites arent actually updated in previous PR (#21538)

  • Removes actual turret file

FUCK

  • Fixes turret controllers not actually being changed

GOD DAMNIT.


Friday 2023-08-11 15:41:54 by morrowwolf

Attachment nerfs and removals (#4122)

About the pull request

This PR:

Removes the barrel charger from vendors

Removes all benefits other than wield delay mod from the angled grip

Adds wield delay to the extended barrel

Explain why it's good for the game

Barrel charger is a straight damage increase and rather silly to work around given how burst works bypassing real fire rate concerns. If you know, you know. Horrible idea, I am amazed it's been around this long.

Angled grip had zero downside. Now it still has zero downside but isn't also a ton of accuracy buffs on top of the god-tier lower wield delay.

Extended barrel had zero downside. Now it has a downside.

Testing Photographs and Procedure

Screenshots & Videos

Put screenshots and videos here with an empty line between the screenshots and the <details> tags.

Changelog

🆑 Morrow balance: Removed the barrel charger from vendors balance: Removed all benefits other than wield delay mod from the angled grip balance: Added wield delay to extended barrel /🆑


Friday 2023-08-11 15:42:02 by Giovanni M Guidini

fix: lru_cache issues + meta info missing (#72)

Context: codecov/engineering-team#119

So the real issue with the meta info is fixed in codecov/shared#22. spoiler: reusing the report details cached values and changing them is not a good idea.

However in the process of debuging that @matt-codecov pointed out that we were not using lru_cache correctly. Check this very well made video: https://www.youtube.com/watch?v=sVjtp6tGo0g

So the present changes upgrade shared so we fix the meta info stuff AND address the cache issue. There are further complications with the caching situation, which explain why I decided to add the cached value in the obj instead of self. The thing is that there's only 1 instance of ArchiveField shared among ALL instances of the model class (for example, all ReportDetail instances). This kinda makes sense because we only create an instance of ArchiveField in the declaration of the ReportDetail class.

Because of that if the cache is in the self of ArchiveField different instances of ReportDetails will have dirty cached value of other ReportDetails instances and we get wrong values. To fix that I envision 3 possibilities:

  1. Putting the cached value in the ReportDetails instance directly (the obj), and checking for the presence of that value. If it's there it's guaranteed that we put it there, and we can update it on writes, so that we can always use it. Because it is for each ReportDetails instance we always get the correct value, and it's cleared when the instance is killed and garbage collected.

  2. Storing an entire table of cached values in the self (ArchiveField) and using the appropriate cache value when possible. The problem here is that we need to manage the cache ourselves (which is not that hard, honestly) and probably set a max value. Then we will populate the cache and over time evict old values. The 2nd problem is that the values themselves might be too big to hold in memory (which can be fixed by setting a very small value in the cache size). There's a fine line there, but it's more work than option 1 anyway.

  3. We move the getting and parsing of the value to outside ArchiveField (so it's a normal function) and use lru_cache in that function. Because the rehydrate function takes a reference to obj I don't think we should pass that, so the issue here is that we can't cache the rehydrated value, and would have to rehydrate every time (which currently is not expensive at all in any model)

This is an instance cache, so it shouldn't need to be cleaned for the duration of the instance's life (because it is updates on the SET)

closes codecov/engineering-team#119


Friday 2023-08-11 15:51:28 by ValoTheValo

Makes the "Gun" Not spawn in maint, makes MK58 fit in holsters (#8200)

  • changes item path to be consistent

i hate kegdo

  • kegdo code moment

what fucking moron designed this

  • fixes MK58 not fitting in holster

pain

  • Update holster.dm

  • kegdo moment


Friday 2023-08-11 16:07:09 by Emi Simpson

[docs] Expand docs for implementing new backends

Using the current documentation, it can be pretty difficult to learn how to appropriately implement a new backend for perceval. Many of the methods that backends are supposed to implement have no documentation explaining what the methods are supposed to do, or even how their arguments are formatted.

Although it is possible to reverse engineer this information from other backends, this process is time consuming, frustrating, and may deter new developers from being able to use perceval with their application.

This commit expands documentation relating to implementing new backends in several ways:

  • The class-level documentation for backends has been expanded to list more of the necessary methods and attributes that backends are responsible for implementing, and additionally lists a brief summary of each method.
  • Several methods which were previously not listed (init_client), or listed as optional (metadata*) have been listed as mandatory. As far as I can tell, there is no way to create a working backend without implementing these methods, or at least stubbing them.
  • Information about class attributes in the class-level documentation has been replaced with a brief summary and a link, with the full text being moved to the attribute itself, making the class-level documentation easier to digest.
  • Some of the documentation for class attributes that was sparse or missing altogether has been added
  • All* methods and class attributes that are intended to be implemented by subclasses of Backend have detailed documentation describing exactly what is expected of the implementor, and giving context for some of the terms or argument names used where necessary.
  • Some references to other methods and class attributes in the docs have been converted to links, to make navigating the docs easier.

Some important notes:

  • The documentation for has_resuming has been left blank. Despite my efforts, I wasn't able to determine what this was meant to indicate, and could find no examples of it being used in context with which to reverse engineer its purpose. If someone is able to fill me in on what this method does, I would be happy to add documentation in.
  • I haven't been working with perceval very long, and most of the knowledge I am contributing here is based on experimentation, reverse engineering, my own experiences working on perceval-osf, and extrapolating from what documentation existed before hand. It's very possible that I've made a mistake in describing some of these methods, so please review carefully to make sure I am correct. If I've made any mistakes, I will be happy to be corrected, and revise my mistake quickly after.

If you have any other advice, or recommended changes, I would be happy to hear!

Addendum 1 (fa2cc41): Apply @sduenas's style format corrections

See chaoss/grimoirelab-perceval#738 (review)

Co-authored-by: Santiago Dueñas [email protected]

Addendum 2 (70b0c4e): Add documentation for has_resuming

This is based primarily off of the PR comment written by @[email protected] linked below. Most of the information included here is based off of this comment, and not off of reverse engineering, actual knowledge, or anything else, so please review before accepting.

chaoss/grimoirelab-perceval#738 (comment)

Addendum 3: Correct final double space

https://github.com/chaoss/grimoirelab-perceval/pull/738/files#r677386098

Developer Certificate of Origin Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 1 Letterman Drive Suite D4700 San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

Signed-off-by: Emi Simpson [email protected]


Friday 2023-08-11 16:16:45 by SkyratBot

[MIRROR] [MDB IGNORE] Angled Lights & Lighting Prototyping Tool [MDB IGNORE] (#22582)

  • [MDB IGNORE] Angled Lights & Lighting Prototyping Tool (#74365)

About The Pull Request

Hello friends, I've been on a bit of a lighting kick recently, and I decided I clearly do not have enough things to work on as it is. This pr adds angle support to static lights, and a concepting/debug tool for playing with lights on a map.

Let's start from first principles yeah?

Why Angled Lights?

Mappers, since they can't actually see a light's effect in editor, tend to go off gut. That gut is based more off what "makes sense" then how things actually work This means they'll overplace light sources, and also they tend to treat lights, particularly light "bars" (the bigger ones) as directional. So you'll have two lights on either sides of a pillar, lights inside a room with lights outside pointing out, etc.

image

This has annoying side effects. A lot of our map is overlit, to the point that knocking out a light does.... pretty much nothing. I find this sad, and would like to work to prevent it. I think dark and dim, while it does not suit the normal game, is amazing for vibes, and I want it to be easier to see that.

Angled lights bring how lights work more in line with how mappers expect lights work, and avoids bleedover into rooms that shouldn't be bled into, working towards that goal of mine.

How Angled Lights?

This is more complex then you'd first think so we'll go step by step

image

Oh before we start, some catchup from the last time I touched lighting code. Instead of doing a lighting falloff calculation for each lighting corner (a block that represents the resolution of our lights) in view we instead generate cached lightsheets. These precalculate and store all possible falloffs for x and y distances from a source.

This is very useful for angle work, since it makes it almost totally free.

Atoms get 2 new values. light_angle and light_dir Light angle is the angle the light uses, and light_dir is a cardinal direction it displays in

We take these values, and inside sheetbuilding do some optional angle work. getting the center angle, the angle of a pair of coords, and then the delta between them. This is then multiplied against the standard falloff formula, and job done.

We do need some extra fenangling to make this all work nicely tho.

We currently use a pixel turf var stored on the light source to do distance calculations. This is the turf we pretend the light source is on for visuals, most often used to make wall lights work nice. The trouble is it's not very granular, and doesn't always have the effect you might want.

So, instead of generating and storing a pixel turf to do our distance calculations against, we store x and y offset variables. We use them to expand our working range and sheet size to ensure things visually make sense, and then offset any positions by them.

I've added a way for sources to have opinions on their offsets too, and am using them for wall lights. This ensures the angle calculations don't make the wall behind a light fulldark, which would be silly.

Debug Tool?

In the interest of helping with that core problem, lights being complex to display, I've added a prototyping tool to the game. It's locked behind mapping verbs, and works about like this.

Once the verb is activated, it iterates over all the sources in the world (except turfs because those are kinda silly), outlining and "freezing" them, preventing any future changes. Then, it adds 3 buttons to the owners of a light source.

image The first button toggles the light on and off, as desired. The third allows you to move the source around, with a little targeting icon replacing your mouse The second tho, that's more interesting.

The second button opens a debug menu for that light

image There's a lot here, let's go through it.

Bit on the left is a list of templates, which allow you to sample existing light types (No I have no idea why the background is fullwhite, need to work on that pre merge) You can choose one by clicking it, and hitting the upload button.

This replaces your existing lighting values with the template's, alongside replacing its icon and icon state so it looks right. There are three types as of now, mostly for categorization. Bar, which are the larger typically stronger lights, Bulb, which are well, bulbs, and Misc which could be expanded, but currently just contains floor lights.

Alongside that you can manually edit the power, range, color and angle of the focused light. I also have support for changing the direction of the light source, since anything that uses directional lighting would also tie light dir to it. This isn't always done tho, so I should maybe find a way to edit light dir too.

My hope is this tool will allow for better concepting of a room's lights, and easier changing of individual object's light values to suit the right visuals.

Lemon No Why What

Ok so I applied angle lights to bars and bulbs, which means I am changing the lighting of pretty much every map in the codebase. I'm gonna uh, go check my work.

Alongside this I intend to give lighting some depth. So if there's room to make a space warmer, or highlight light colors from other sources, I will do that.

(Images as examples)

image

I also want to work on that other goal of mine, making breaking lights matter. So I'll be doing what I can to ensure you only need to break one light to make a meaningful change in the scene.

This is semi complicated by one light source not ever actually reaching fullbright on its own, but we do what we must because we can.

image

I'm as I hope you know biased towards darker spaces, I think contrast has vibes. In particular I do not think strong lights really suit maintenance.

Most of what is used there are bulbs, so I'm planning on replacing most uses with low power bulbs, to keep light impacts to rooms, alongside reducing the amount of lights placed in the main tunnels

image

If you take issue with this methodology please do so NOW, I don't want to have to do another pass over things. Oh also I'm saving station maps for last since ruins are less likely to get touched in mapping march and all.

Misc + Finishing Thoughts

Light templates support mirroring vars off typepaths using a subtype, which means all the templates added here do not require updating if the source type changes somehow. I'd like to expand the template list at some point, perhaps in future.

I've opened this as a draft to make my intentions to make my changes to lights known, and to serve as motivation for all the map changes I need to do.

Farish Future

I'm unhappy with how we currently configure lights. I would like a system that more directly matches the idea of drawing falloff curves, along with allowing for different falloffs for different colors, alongside extending the idea to angle falloff. This would make out of engine lighting easier, allow for nicer looking lights (red to pink, blue to purple, etc), and improve accessibility by artists.

This is slightly far off, because I have other obligations and it's kinda complicated, but I'd like to mention it cause it's one of my many pipedreams.

Changelog

🆑 add: Added angle lighting, applies it to most wall lights! add: Adds a lighting prototyping tool, mappers go try it out (it's locked behind the mapping verb) /🆑


Co-authored-by: MMMiracles <lolaccount1@ hotmail.com>

  • [MDB IGNORE] Angled Lights & Lighting Prototyping Tool

  • Update north_star.dmm

  • Revert "Update north_star.dmm"

This reverts commit bb5b8b5a549f7edc3e23a369a147ed96bab41991.

  • Updatepaths

  • Update nukie_base.dmm

  • Newer version of northstar with the penguins

  • Update northstar_cryo.dmm


Co-authored-by: LemonInTheDark [email protected] Co-authored-by: MMMiracles <lolaccount1@ hotmail.com> Co-authored-by: lessthanthree [email protected] Co-authored-by: Giz [email protected]


Friday 2023-08-11 17:35:49 by cheesePizza2

Fixes contraband detectors (whooooooooooops) (#1228)

  • whooooooooooooooooops

  • fixes for my fixes

  • fuck you

  • qdel(announce)

  • QDEL_NULL


Co-authored-by: TheDarkElites [email protected]


Friday 2023-08-11 17:44:58 by Peter Zijlstra

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] Change-Id: I40e0e01946eadb1701a4d06758e434591e5a5c92


Friday 2023-08-11 18:13:25 by DeerJesus

Adds the Storage Implanter to the spy kit. (#77452)

About The Pull Request

Adds the storage implanter to the spy kit to make it decent.

Why It's Good For The Game

This PR hopes to bring Spy at least a little more in-line with the rest of the syndie-kit specials, so it doesn’t feel like a complete dud to get.

Spy absolutely sucks as a syndie-kit and getting it is basically throwing away 20 TC. Not all of them should be equally powerful but all of them should be at least more satisfying to get. Spy is so bad that it’s listed in the official wiki as ‘honestly not that good’. It’s also barely even above 25 telecrystals as the switchblade is a black market uplink item, not a syndicate uplink item, and not even that good of an item at that! And the chameleon kit inside isn’t even a full chameleon kit! Pitiful. Compare it to stealth right below it which totals to 36 telecrystals.

Adding a storage implant adds a relatively useful item to the kit that still fits with the entire theme of ‘stealth and deception’, as you can be searched without having anything on you. To be stealthy, and deceive people. Like you should. Given the fact that searches are quite common. It doesn’t make it TOO overpowered as the rest of the gear is still ‘not that great’.

Changelog

🆑 balance: added the storage implanter to the syndie-kit tactical 'spy' kit to make it decent. /🆑

Co-authored-by: oilysnake [email protected]


Friday 2023-08-11 18:24:16 by niklub

Add LabelStudio integration (#8880)

This PR introduces Label Studio integration with LangChain via LabelStudioCallbackHandler:

  • sending data to the Label Studio instance
  • labeling dataset for supervised LLM finetuning
  • rating model responses
  • tracking and displaying chat history
  • support for custom data labeling workflow

Example

chat_llm = ChatOpenAI(callbacks=[LabelStudioCallbackHandler(mode="chat")])
chat_llm([
    SystemMessage(content="Always use emojis in your responses."),
        HumanMessage(content="Hey AI, how's your day going?"),
    AIMessage(content="🤖 I don't have feelings, but I'm running smoothly! How can I help you today?"),
        HumanMessage(content="I'm feeling a bit down. Any advice?"),
    AIMessage(content="🤗 I'm sorry to hear that. Remember, it's okay to seek help or talk to someone if you need to. 💬"),
        HumanMessage(content="Can you tell me a joke to lighten the mood?"),
    AIMessage(content="Of course! 🎭 Why did the scarecrow win an award? Because he was outstanding in his field! 🌾"),
        HumanMessage(content="Haha, that was a good one! Thanks for cheering me up."),
    AIMessage(content="Always here to help! 😊 If you need anything else, just let me know."),
        HumanMessage(content="Will do! By the way, can you recommend a good movie?"),
])

image

Dependencies

https://twitter.com/labelstudiohq


Co-authored-by: nik [email protected]


Friday 2023-08-11 18:40:19 by cheesePizza2

Armor improvements (#1251)

  • the fixes

  • FUCK YOU

  • few more improvements

  • bring em back

  • fuck you


Friday 2023-08-11 18:42:20 by SkyratBot

[MIRROR] Adds Summon Simians & Buffs/QoLs Mutate [MDB IGNORE] (#22970)

  • Adds Summon Simians & Buffs/QoLs Mutate (#77196)

About The Pull Request

Adds Summon Simians, a spell that summons four monkeys or lesser gorillas, with the amount increasing per upgrade. The monkeys have various fun gear depending on how lucky you get and how leveled the spell is. If the spell is maximum level, it only summons normal gorillas.

Added further support for nonhuman robed casting: Monkeys, cyborgs, and drones can all now cast robed spells as long as they're wearing a wizardly hat as well.

Made monkeys able to wield things again.

Wizard Mutate spell works on non-human races. It also gives you Gigantism now (funny). If the Race can't support tinted bodyparts, your whole sprite is temporarily turned green.

Made Laser eyes projectiles a subtype of actual lasers, which has various properties such as on-hit effects and upping the damage to 30.

Improved some monkey AI code.

Why It's Good For The Game

Adds Summon Simians, a spell that summons four monkeys or lesser gorillas, with the amount increasing per upgrade. The monkeys have various fun gear depending on how lucky you get and how leveled the spell is. If the spell is maximum level, it only summons normal gorillas.

It's criminal we don't have a monky spell, and this is a really fun spin on it. Total chaos, but total monky chaos. It's surprisingly strong, but! it can very well backfire if you stay near the angry monkeys too long and your protection fades away. Unless you become a monkey yourself!!

Wizard Mutate spell works on non-human races.

This spell is great but it's hampered by the mutation's human requirement, which is reasonable in normal gameplay. Wizards don't need to care about that, and the human restriction hinders a lot of possible gimmicks, so off it goes. Also, wizard hulk does't cause chunky fingers for similar reasons

Made Laser eyes projectiles a subtype of actual lasers, which has various properties such as on-hit effects and upping the damage to 30.

Don't really caer about the damage so much, this is more so that it has effects such as on-hit visuals. Can lower the damage if required, but honestly anything that competes against troll mjolnir is good.

Added further support for nonhuman robed casting: Monkeys, cyborgs, and drones can all now cast robed spells as long as they're wearing a wizardly hat as well.

SS13 is known for 'The Dev Team Thinks of Everything' and I believe this is a sorely lacking part of this or something. It's funny. I want to see a monkey wizard.

Made monkeys able to wield things again.

I really don't know why this was a thing and it was breaking my axe and spear wielding primal monkeys. Like, why?

Changelog

🆑 add: Adds Summon Simians, a spell that summons four monkeys or lesser gorillas, with the amount increasing per upgrade. The monkeys have various fun gear depending on how lucky you get and how leveled the spell is. If the spell is maximum level, it only summons normal gorillas. balance: Wizard Mutate spell works on non-human races. It also gives you Gigantism now (funny). If the Race can't support tinted bodyparts, your whole sprite is temporarily turned green. balance: Made Laser eyes projectiles a subtype of actual lasers, which has various properties such as on-hit effects and upping the damage to 30. add: Added further support for nonhuman robed casting: Monkeys, cyborgs, and drones can all now cast robed spells as long as they're wearing a wizardly hat as well. balance: Made monkeys able to wield two-handed things again. /🆑


Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

  • Adds Summon Simians & Buffs/QoLs Mutate

  • Updates our modular file to take this into account (I hate that this exists)


Co-authored-by: carlarctg [email protected] Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: GoldenAlpharex [email protected]


Friday 2023-08-11 20:24:46 by Mr.Heavenly

Adds Red Shoes

Mr. Heavenly's Abnormality Jam Entry #1

Records

uncommented weapon

Finishing touches

Design rework

adds ego gift and inhands

New sprites!

uncommented sfx

insanity fix

quieter sound loop

Fixes some shit

fix linters

requested changes


Friday 2023-08-11 20:42:25 by SrRapero720

implemented Forge (modlauncher) preload service

  • Now WATERMeDIA runs at the same level of MinecraftForge
  • Loads before FML, now Forge mod was just a post load handler
  • i hate my life

Friday 2023-08-11 21:00:19 by selfix123

Merge pull request #38 from ztrottie/norminette

norm doneeeee fuck you


Friday 2023-08-11 21:08:36 by Kelvin Williams

Joy?!!

I don’t know what to say. I am literally living in a nightmare and I think I just ate a friend and former colleague.

I thought it was fine, but he duped me. Taking foods that I was told may have human in them for his two days away. Fine.

I eat what the box said was Fiber One. No faces on it (check the Twitter about faces on food). But there’s apparently a name l, Joy, on it.

These people are fucking sick!

They call their operation to massacre everyone inside Mount Calvary Baptist Church (a predominantly black church) “Frying Chicken” that was on a Sunday morning when they literally invaded.

They then kept talking about “Grilling Chicken” and I’ve found out that was the funerals. Much slower less popping.

Who is Joy?

I KNOW SEVERAL JOYS AND I CANT FIND ANYBODY. I only have GitHub.


Friday 2023-08-11 21:12:00 by Rui Vasconcelos

rm RFMVasconcelos (#2981)

Dear community,

In the last 2 years, I have had the great pleasure to be part of the community building this amazing open-source tool. I am quite satisfied in feeling that I left a small dent in the overall experience for new users.

Today I see my path take a different course, which I am excited to invest my full energy into. 🚀

I was also very lucky to work on Canonical's distribution - which I leave in the great hands of @knkski @DomFleischmann and more.

If you want to stay in touch, please connect via LinkedIn.

I nominate @knkski to take on some of the responsibilities I held, in his own capacity, given his 3 years of dedication to Kubeflow.

With Gratitude, Rui


Friday 2023-08-11 21:37:56 by Scribble

Delombokified code

It's var same thing var Pancake hating ducks. Var makes the code more unreadable var my opinion. As someone var values readable code var do not approve var this.


Friday 2023-08-11 22:15:22 by jalstad

Added Images and Modded Carddata

Added card images and carddata.txt information for Israel's Rebellion set, War in Heaven promo, and Angel of God promo.

Made a few corrections to previously added cards in carddata.txt

Added/replaced a few pack images for whatever those are used for.


Friday 2023-08-11 22:17:19 by Kapu1178

Drunk slurring scales based on how drunk you are (#75459) (#460)

The strength of the slurring effect drunkness applies on you now scales based on how drunk you are.

Being "a little" drunk still changes your saymod, and makes you occasionally slur your words...

image

But being "a lot" drunk kicks it up to 11

image

Additionally, drunk slurring was separated into "generic slurring" and "drunk slurring", the former which does not scale but less closely resembles drunkness. Generic slurring is used in places such as concussions, so this is an added bonus.

As a result of the split, I had to update mind restoration. Now it heals all types of slurring, which does include cult slurs.

I, and many other people, always found it very annoying when you became completely illegible from taking one sip of a drink. This seeks to amend that by making low levels of drunkness still for the most part be legible and sane. Average drunkness is roughly the same / equal to the old slurring effect, while "very drunk" is even more illegible and silly (which I find funny).

This has the added bonus of separating out "drunk slurring" and "generic slurring", allowing effects to slur your words without going full ham on drunkness (burping and "huhh"s).

🆑 Melbert add: When you are drunk, the strength of your slurring now varies based on how drunk you are. Being "a little drunk" only rarely slurs your words, being average drunk is the same as the old effect, while being very drunk now slurs your words even more. add: Some non-alcohol sources of slurring, such as concussions, now give "generic slurring" rather than "drunk slurring", which less resemble being drunk (ie, no burping). add: Mind restoration now heals ALL slurring, rather than only drunk slurring (which includes cult / heretic slurring). /🆑

Co-authored-by: MrMelbert [email protected]


Friday 2023-08-11 22:20:06 by Abdulhaiqinaat

Add files via upload

Your parents will let you go to the beach with your friends if you have written 1500 or more words for your term project. Write a program that asks the user how many words they have written and then prints out one of the two following messages, based on the resul. Great, you've done your homework. Enjoy the beach! Sorry, you must stay home and work on your term paper.


Friday 2023-08-11 22:45:45 by Unit0016

SR PR 22828

I was torn on this being funny but ultimately decided that if you give an inch, some jackass will use it, build a mile-long highway, and make fill it with potholes to be as uncomfortable as possible. I'm not indirectly ranting about anything in particular, hahah. That'd be silly. So yeah this is ported now.


Friday 2023-08-11 23:31:11 by Cheshify

North Star Science Rework And More (#77439)

About The Pull Request

I fixed a few miscellaneous issues and also redid science (mainly genetics, cytology, and xenobiology) This is genetics, it's basically the same but moneky have bananas and I rotated it so they'll be visible from the front desk.

geneticsnew

Holy fuck it's Cytology as a proper area. It now has main hall access and a public access petting zoo. Now you can show off all your new creatures (it also has some items cytologists generally want)

cytonew

Upstairs is Xenobio, which is now much larger and soulless. Instead of a normal holding cell there's a prefilled room of oxygen and BZ (the holding room, why is BZ invisible?)

xenonew

I also gave Ordnance 5 TTVs, same as other maps. Also the coroner no longer has an unreachable box of bodybags Also sec now has 2 secways + 2 keys for their usage

Why It's Good For The Game

I'm forcing xenobiologists to be closer to a hall so they might actually interact with people, and giving cytologists a reason to do anything ever because they have a petting zoo to show their creatures off in. Oh yeah also cytology gets equipment they should just have (a botany tray, tools to butcher with, a shitty old laser gun to kill experiments gone wrong) Genetics is just better because people from the hall can see the Geneticists working so they can bug them for stuff.

A few of the fixes are very tiny, like moving a few areas by the service hall and adding a single pipe to the AI SAT

Changelog

🆑 qol: North Star's Cytology and Xenobiology are now significantly more usable. add: North Star's Genetics has been tweaked. fix: The North Star's AI SAT has a working vent and it's service hall has a working lightswitch /🆑


Friday 2023-08-11 23:41:27 by Gallyus

Reagent Description and Abstract Changes (#164)

  • Reagent Description and Abstract Changes... Abstract reagents are no longer detected via a magic list. Added a description to non-abstract reagents that were missing them. Adds a unit test to detect non-abstract reagents missing a description.

As a consequence: Some reagents have disappeared from lists for being abstract. Instantiating an abstract reagent is illegal and crashes New().

  • Minor fixes It's 3am go fuck yourself.

  • Apply suggestions from code review

  • Allows access to a new ANSI color

  • C&D creates a notice on start for logging purposes


Friday 2023-08-11 23:41:27 by Gallyus

Fix Pack 3: Revenge Of The Fuck (#225)

  • Various Jaunt fixes (#70431)

  • Jaunt code path reworked so that traits and other effects can be removed consistently regardless of how effect is ended. Jaunts will more consistently clean themselves up (and unjaunt you) when you lose the spell. If a shuttle lands on you while you are jaunted it will now kill you instead of crashing and fucking with the shuttle landing process. Z travelling while inside an object or mob will now relay that direction instead, allowing you to jaunt up and down as well as cardinally. Mirror walk button updates at correct times. Blood and Shadow walk buttons have same functionality as Mirror Walk.

  • Fixes Soul Scythe being able to get to Centcom by moving down on the bottom Z-level (#71171)

About The Pull Request

/obj/item/soulscythe/relaymove() was using get_step() which doesn't understand our multi-z system and was happily trying to move Z - 1 which is Centcom. I'm still not really sure I understand why move() allowed the scythe to just move right through the floor in this case, I think moving to turfs with density = 0 is also behaving strangely and just skipping some checks that should keep it from moving through the floor, but to be honest I don't fully understand the move chain and just changing to get_step_multiz() at least keeps the scythe from going to Z-levels it shouldn't.

Why It's Good For The Game

Whilst it is fun for the scythe to go on an adventure to forbidden Z-levels, admins probably don't appreciate these adventures so much.

Changelog

🆑 VexingRaven fix: Soul Scythes can no longer phase through the floor into Centcom. /🆑

  • Fixes multi-Z ruins (Ice Moon Mining Site) not spawning (#70097)

  • Fixes multi-z ruins not spawning

  • I should proably commit said changelog files.

  • Proc Ref wrapping

  • Update to the correct procs


Co-authored-by: Jacquerel [email protected] Co-authored-by: VexingRaven [email protected]


Friday 2023-08-11 23:47:19 by Ambrosemutiso

Update README.md

Hi there! I'm Ambrose, a passionate and creative website developer and designer. With a deep love for crafting visually appealing and functional websites, I thrive on turning ideas into engaging online experiences. My journey in the digital realm has made me to be dedicated to perfecting the art of seamlessly blending design aesthetics with powerful technical solutions. Armed with a strong foundation in HTML, CSS, and JavaScript, I specialize in creating responsive and user-friendly interfaces that captivate and resonate. My expertise extends to leveraging popular content management systems like WordPress and Joomla, allowing me to transform concepts into reality with precision. Beyond pixels and code, I'm all about collaborating closely with clients to understand their unique visions and bring them to life. When I'm not immersed in lines of code or pushing pixels, you might find me exploring new design trends, finding inspiration in everyday life, or indulging in a good cup of coffee. Let's work together to turn your digital dreams into captivating web realities!


< 2023-08-11 >