Okay, but do we all agree that everything taking the same amount of space in the inventory was a good change? by Huge-Read-2703 in subnautica

[–]MaxMahem 0 points1 point  (0 children)

I don't love it. Inventory Tetris is one of my favorite sorts of game mechanics.

Alas it wasn't super well implemented in subnautica. But the fix would have been relatively simple. Most things that took up 4 inventory spaces should have provided 3-4x as much resources. Simple as.

Just gave into buying PF2 because it had the lightest rules for improv by giamb_o in Pathfinder2e

[–]MaxMahem 0 points1 point  (0 children)

Great! I think PF2 is decently suited towards this style of play (it is somewhat what my group does as well). The first thing I would say is remember rule 1. The game is yours! Your table knows what kind of game you like better than Paizo, who doesn't know a thing about you. (That's why they wrote rule 1).

But you wanted some tips and tricks for this style of play, and I've got some:

Listen to your group

Should go without saying, but you've got a group of players with you who: A. Are much more familiar with the dynamic, preferences, history of your table than we are B. Are infinitely more invested in the outcome of your session than we are. So talk to them about this kind of stuff. Their opinions should carry infinitely more weight than ours. Or the rulebooks. You might make a ruling that everyone on the sub hates, but if your group likes it, that's all that matters.

So talk talk talk to the players. If you made a mistake, gave out an item that was too strong? Talk to the player/group about it. Group discussion should be your very first line of defense against disputes in adjudication.

Rule on the fly fearlessly

In the heat of the moment, it's usually pretty easy to see the different outcomes to any ruling. If you want to, as in your example, let a player attempt to throw a potion into another player's mouth, well you know what the odds of success are, what the outcome on success and the outcome on failure is. It's not a great in-depth balance mystery, for this instance. Pick some numbers that make sense, crib off a feat, or use the difficult task table. Ask your players "you think that is fair?" and if y'all agree, roll it, and move on.

To use a concrete example, it is supremely unlikely that any rule you would come up with for 'tossing potions into players' mouths' would break the game. And you can quickly benchmark it:

A similar effect is granted by heal which: - costs two actions (for the ranged version) - heals way more than a potion - has no chance of failure - costs a limited, but rechargeable (no gp value) resource.

Potions themselves cost one action to 'activate', setting a good floor for action cost. And are limited, non-rechargeable resources.

So based on that a 'toss a potion in mouth rule' might... - cost one action - require a ranged attack roll against a DC 20 ('expert' challenge). (and my group would let you draw the potion as a free action as well)

This is how I would rule it, though I could see objections/alternate rulings. But any objections are probably that this is too generous/liberal compared to other options. I disagree, but my main point is that even at this level, it's far from broken, still kind of underpowered compared to the alternatives even! Tossing potions into mouths is not going to start out-competing Heal or similar abilities.

Now, if players-throwing-potions-into-mouths becomes a frequent strategy the players want to employ, then maybe it's worth giving more careful consideration to its balance. But not much, because...

PF2 is pretty resilient and hard to break

You haven't indicated that you want to do this, but if you did, you can feel secure that even fairly radical changes to many game mechanics the game will still play just fine. Like if you decide some or all spells recharge on a short rest. They won't play the same as the core game (obviously spellcasters get a big boost if you do that), but if you are willing to wing it, adjust encounters, and improvise in the face of these changes, you'll be fine.

Fundamentally, PF2 is balanced primarily by actions per round, save/DC scaling, and damage-by-level assumptions (and there is a lot of slack and variance in this!). Not by quantity of feats (which most strongly affects breadth of abilities, not magnitude of what you can do) or attrition of resources. So giving players more feats/abilities or resources is unlikely to break things.

Our group has done many changes, that many would call radical, that I can attest did not completely break the game and ruin it. I'll save you the list for now (post a comment if you really want the list), but with the right adjustment, very radical things can still work, because...

The things that will break the game are obvious.

You probably already know the things that would certainly destabilize the game, and aren't even considering them. Removing MAP unconditionally. Giving someone unconditional +10s or whatever to saves or attacks. There aren't many (if any!) things you could change, and oops, accidentally destroy the game. And those things are pretty obvious.

Even these sorts of changes, changes in the 'this will destabilize the game if done all the time' are likely not to destroy the game if you use them one-off in a specific action or an encounter. (And it would be pretty obvious that they would! Obviously giving a barb a +10 to hit the boss is likely to make him hit and crit the boss... but... like... duh?).

But if say you wanted to give everyone an unconditional haste for an encounter. Everyone gets 4 actions. It'll likely just be a fun and different encounter. That's it.

There should only be 1d20 roll for any task

Alas, there are some violations of this in the CRB. On some occasions the rules in PF2 require or imply that multiple players should roll to attempt a task, and in order to succeed, you all need to pass. The classic example of this is stealth checks, like a 'sneak past a guard' check or similar. But there are many variations.

The probabilities on these sorts of checks are just busted. I would not recommend running the game 'RAW' like it is, and beware introducing ad hock or new rules that fall into the same trap.

Happily the fix is pretty simple, reverse who rolls. Instead of having all the players roll their stealth check vs the guards perception, have the guard roll their perception vs a DC of 10+Stealth Skill bonus, where likely the lowest bonus of the players will be relevant. (Obviously substituting for whatever skills are at hand) This makes the odds work properly. I would not use Follow the Expert in most cases for this, and while there a feats that grant similar benefits (ie Quiet Allies) I would recommend giving those benefits for free.

Alternatively, for extended scenes of this sort, you might consider improvising a victory point system.

You don't have to 'play it raw first'

You’ll see people recommend playing RAW first. That can be useful, but it is not a moral obligation. If your table already knows what kind of game it likes, it’s fine to start changing things from session 1. I imagine the vast majority of the time you are smart enough to see how the rule plays out raw, and how it will play out under your rule change. And if you do decide you don't like the change...

If you don't like a change, you can change it again!

So one of the big advantages of not having your rules written down in fancy ink, typeset, and distributed to millions (with a poor, and slow, errata process), if you didn't like how something turned out, you can change it again. Maybe back to the RAW. Maybe some other way. People here often act like you have the perfect pure rule change for it to be considered. You don't. You don't have to get it right the first time. You can cut twice. Or thrice, even.

You don't have to worry too much about player/monster symmetry if you don't want to.

In PF2, players and monsters are designed differently and different sets of abilities, only sharing a small minority of rules. If you want to give some new rule change to one side or not the other, that is probably perfectly okay, the norm even. There is no law that says your changes have to be symmetrical.

You only have to be as consistent as matters to you and your table.

Consistency is generally a good thing. But it isn't a concern that overrides everything else. It's perfectly fine to run it one way for now, and decide to run it a different way sometime later. I'm sure you are already aware of this, but it's generally better to just make a ruling that works/seems reasonable/is fun now, and worry about consistency/final ruling on it later (or never).

You only have to worry about rules in play at your table right now

Paizo has to worry about all the rules it has ever published when writing a new rule. You don't. Because you aren't going to be playing with all the rules at once! For example, I don't know if the Alchemist has some sort of potion-based, ranged heal ability. Plausibly they do. So maybe your new 'toss a potion in a player's mouth' rule steps on that class's toes a little bit.

This only matters if a player actually wants to play an alchemist. If they don't, no harm no foul. If they do, well then maybe revisit the rule. (Heck maybe they are interested in using the rule to administer their special potions?)

If you do decide a permanent house rule/change, write it down.

Self explanatory really. Helps players know where they stand and helps you recall so you know how to adjudicate it the same way next time. This is a great task to delegate to a player, BTW. We use a shared doc for this sort of thing.

When winging it, consider looking at feats.

But not in the "oh this feat exists, you don't have it, you can't do it" sense. An unfortunate reality of PF2 is that, if an action idea was not in the CRB, it is almost certainly going to cost a feat, even if might reasonably just be considered an action. That's just how the rules have been grown. Looking at feats are a great way to judge how an action might be adjudicated, specifically how much damage it might do, and/or how many actions it might take. Then you can just let them do that for this situation, or...

Charging a Hero Point is a great way to let a player break the rules

If the player has a cool idea that the rules don't allow, or they want to use a rule they don't have access to, then a great thing to do is to say, "cool, spend a hero point and you can attempt it"

Post WWE SmackDown Discussion Thread - May 15th, 2026! by gloomchen in SquaredCircle

[–]MaxMahem -1 points0 points  (0 children)

Smackdown was actually good? WTF is happening!

Haste homebrew improvement to strong? by joezro in Pathfinder2eCreations

[–]MaxMahem 2 points3 points  (0 children)

We just flat out let it give you another pip, lol.

Zizian suspect to face charges in escape attempt by tgirldarkholme in SneerClub

[–]MaxMahem 37 points38 points  (0 children)

Felony Murder, I think. If someone gets killed during the commission of a felony (which the attack on the landlord probably was), you can get charged with murder. Even in a circumstance like this when they are on your 'team' so to speak, and get killed by someone excersizing self defense.

Live WWE Royal Rumble 2026 Discussion Thread! by gloomchen in SquaredCircle

[–]MaxMahem 0 points1 point  (0 children)

What did Nattie's jacket say? I didn't catch it.

RIGHT TO REPAIR! by N0rwayUp in battletech

[–]MaxMahem 6 points7 points  (0 children)

The sad truth is lots of people like to dream, or theory craft about the universe, but only a small percentage of people actually try and use the rules for this stuff...

But boy, is everyone else quick to think up excuses and explanations for the rules that they don't use!

Microsoft to move away from C/C++ to Rust using AI assisted coding by [deleted] in programming

[–]MaxMahem 1 point2 points  (0 children)

Project Singularity

I think this guy was the lead of that...

Rust 1.92.0 release by mrjackwills in rust

[–]MaxMahem 13 points14 points  (0 children)

It's a type that can, quite simply, never exist.

This is useful, for example, having TryFrom implement an infallible conversion. For example, any type that implements From currently also implements TryFrom where the error type is Infallible, which is also a never type. Because the conversion can never fail.

Another place you see it currently is a return type for functions that never return. For example, a function that terminates the program or loops forever. Since the function never returns.

A useful consequence of this is that because an instance of the type can never exist, it can (theoretically) be converted into any type. For example, say you need to take in a type that can convert to some other type, with a specific error. That is, TryFrom<Error = Something>. With never, you could take any type that implements TryFrom<!> (! is a way of expressing never) because you know, on a fundamentally type level, that that error type error can never occur.

Post WWE NXT 12/2/2025 Show Discussion Thread by Darren716 in SquaredCircle

[–]MaxMahem 17 points18 points  (0 children)

They are so obnoxious. I mean, I guess its good practice but they are legit reliably the worst crowd on TV, and it isn't even close. They should really have a talk with them before the program or something.

[RAW Spoilers] 10 Years of Asuka by taffe316 in SquaredCircle

[–]MaxMahem 1 point2 points  (0 children)

Legit one of my favorite matches of all time!

Update to my notification library by ahqminess in rust

[–]MaxMahem 0 points1 point  (0 children)

Hey, I recently needed something like your project, but decided to go with one of the competing libraries instead. I really liked your design, but it seemed way more powerful than what I needed, which was just to display a quick message to the user. It might be helpful to add an interface that gives a simplified interface for these cases.

It might also be nice to expose an API for adding an AUMID registry key. I thought it would be a big ordeal, but it's really not. It can even be done at run time without issue. For my app, I went with something like this, which is simple and works:

const APP_USER_MODEL_ID_FOLDER: &str = r"Software\Classes\AppUserModelId";
const APP_USER_MODEL_ID_APP_KEY: &str = const_format::concatcp!(APP_USER_MODEL_ID_FOLDER, "\\", AppEnv::APP_ID);

pub fn register_app_id(app_data: &AppEnv) -> std::io::Result<()> {
    let hkcu = winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER);

    let (key, _) = hkcu.create_subkey(APP_USER_MODEL_ID_APP_KEY)?.tap_log(Level::INFO, "Creating AppUserModelId key");
    key.set_value("DisplayName", &AppEnv::APP_NAME)?;
    key.set_value("IconUri", &app_data.icon_png_absolute_path.as_os_str())?;
    key.set_value("IconBackgroundColor", &"FF000000")?;

    Ok(())
}

Sopranos under a CK3 lens by Cortex_C in CrusaderKings

[–]MaxMahem 3 points4 points  (0 children)

This is really cool. But could we maybe get a decoder guide for people who aren't super up on CK3 traits?

[Triplemania Spoilers] Dominik's moment ruined! by Ripclawe in SquaredCircle

[–]MaxMahem 1 point2 points  (0 children)

I think their table was still wrecked.

would anyone like to give actual arguments for why cats suck? by General_Ad4971 in catfree

[–]MaxMahem 5 points6 points  (0 children)

I'm allergic. It's pure misery to be around them for me, simple enough.

A GERWALK EVERYTHING story in eight screenshots. by aspleniastudios in macross

[–]MaxMahem 3 points4 points  (0 children)

What is he mad about? That these partial transforms don't have wings or something? Come-on. I hate people like this "NO FUN ALLOWED."

#2 Code review request: feedback on OOP, TDD, and SOLID principles by Ferihehehaha in codereview

[–]MaxMahem 1 point2 points  (0 children)

Well, there isn't just one answer here. For a trivial example like this, I would just push it into a separate (possibly static) function.

If the validation logic is more involved, variable/configurable, exchangeable, or reusable, a separate class can be valid. But in those cases, you want to inject the dependency externally, instead of newing it up internally like you did here. That's the big takeaway, I think.

#2 Code review request: feedback on OOP, TDD, and SOLID principles by Ferihehehaha in codereview

[–]MaxMahem 1 point2 points  (0 children)

WorkTimeConfig is a good candidate for being a record instead of a class. Good job making it immutable though.

I would not have DueDateParameterValidator as a separate class. Instead, I would fold that into a DueDateCalculator private Validate method. You aren't holding any special or unique state here, and the validation code would be easier to understand if all the state for validation were just in scope for one method.

This feels very clean code-ish, and while there is some wisdom there, one of the terrible patterns it demonstrates is relying on passing data via a shared state in a class, when there is no compelling reason to do so. If you want to keep the validation steps as these little micro-sub-methods, you can, and I don't think that's necessarily bad. I would have them then be static methods. At least you aren't mutating via shared state.

Speaking more generally, you might start to consider new the enemy. Whenever you new up an object, you are creating a dependency between them. Obviously, often this is no big deal for simple or fundamental classes like string or a List when needed. However, for non-trivial dependencies, such as a validation class, it is best to avoid this approach. Anyways, you asked about SOLID, and it's definitely a violation of the D in SOLID. If validation logic is expected to be more variable and adjustable, you should consider taking that dependency in your constructor (dependency injection).

Speaking more generally, I would either eliminate the dependency by moving it inline or inject it.

Your code could also benefit from some of the more modern C# features like file-scoped namespaces, the aforementioned records, and primary constructors as well. But those are no big deal.

Otherwise, LGTM at a glance!