If a wildshaped druid somehow got Undead Fortitude, would this prevent them from reverting?

I believe this is completely outside the realms of RAW as I don’t know of any way for a PC to gain Undead Fortitude beside homebrew,

Undead Fortitude reads:

If damage reduces the creature to 0 hit points, it must make a Constitution saving throw with a DC of 5 + the damage taken, unless the damage is radiant or from a critical hit. On a success, the creature drops to 1 hit point instead.

and Wild Shape reads

You automatically revert if you fall unconscious, drop to 0 hit points, or die.

So with these two wordings, if you drop to 0 hit points while wildshaped, and since you retain any features from your race, while wildshaped, does that mean that Undead Fortitude could prevent a wildshaped druid from turning back into its non-beast form?

What should the rarity rating be for this homebrew Healing Brick?

I read about this item on reddit (with a different name) a while ago and planned to implement this in my campaign, but I’m unsure what its rarity should be.

Healing Brick

As an action, make either melee or ranged attack roll against target. It is treated as improvised weapon (1d4+STR dmg) with 20/60 range. On a hit, target is healed by 2d4+2 HP, then takes the damage from the attack. On a hit or a miss, the brick loses its magic.

The main thing I’m concerned about is being able to wake knocked out allies from afar, without exposing the user to danger.

Should this item be common like a Healing Potion? Or it should have a higher rarity?

Is this statement of P = NP in Agda correct?

Looking for a completely formal and self-contained statement of P = NP in type theory, I stumbled upon this short Agda formalization (a cleaned up version is reproduced below).

The statement here does seem to express the problem correctly but I’m not entirely sure as the code is not well-commented. So my question is: is this an accurate statement of P = NP and if not how would one fix it?

 open import Data.Nat                              using    (ℕ; suc; zero; _+_; _*_; _≤_; _^_) open import Data.Bool                             using    (Bool; true; false; if_then_else_; _∨_) open import Data.List                             using    (List; _∷_; []; length) open import Data.Vec                              using    (Vec; _∷_; []) open import Data.Product                          using    (Σ-syntax; _,_) open import Data.Sum                              using    (_⊎_; inj₁; inj₂) open import Data.Empty                            using    (⊥) open import Relation.Binary.PropositionalEquality using    (_≡_; refl)  iterate : {A : Set} → ℕ → A → (A → A) → A iterate zero    z s = z iterate (suc n) z s = s (iterate n z s)  is-poly : (ℕ → ℕ) → Set is-poly f = Σ[ m ∈ ℕ ] ((n : ℕ) → f n ≤ 2 ^ m)  is-inj₂ : {A B : Set} → A ⊎ B → Bool is-inj₂ (inj₁  _) = false is-inj₂ (inj₂ _) = true  data fn : ℕ → Set where     fz : {n : ℕ} → fn (suc n)     fs : {n : ℕ} → fn n → fn (suc n)  ref : {A : Set} {n : ℕ} → fn n → Vec A n → A ref fz (a ∷ _) = a ref (fs m) (_ ∷ rest) = ref m rest  subs : {A : Set} {n : ℕ} → fn n → A → Vec A n → Vec A n subs fz a (_ ∷ rest) = a ∷ rest subs (fs m) a (b ∷ rest) = b ∷ subs m a rest  replicate : {A : Set} → (n : ℕ) → A → Vec A n replicate zero a = [] replicate (suc n) a = a ∷ replicate n a  data command (stacks : ℕ) (states : ℕ) : Set where   push   : fn stacks → Bool → fn states → command stacks states   pop    : fn stacks → fn states → fn states → fn states          → command stacks states   return : Bool → command stacks states  record machine : Set where   field     stacks : ℕ     states : ℕ     commands : Vec (command stacks states) states     initial-command : fn states  command-mach : machine → Set command-mach m = command (machine.stacks m) (machine.states m)  record state (m : machine) : Set where   constructor mkState   field     stacks : Vec (List Bool) (machine.stacks m)     current : fn (machine.states m)  step : (m : machine) → state m → (state m) ⊎ Bool exec : {m : machine} → command-mach m → state m → (state m) ⊎ Bool  step m s = exec (ref (state.current s) (machine.commands m)) s exec (return b) _ = inj₂ b exec (push i b c) s =   let     prev-stack : List Bool     prev-stack = ref i (state.stacks s)   in     inj₁ (mkState (subs i (b ∷ prev-stack) (state.stacks s)) c)  exec (pop i ct cf ce) s with ref i (state.stacks s) ... | []           = inj₁ (mkState (state.stacks s) ce) ... | true  ∷ rest = inj₁ (mkState (subs i rest (state.stacks s)) ct) ... | false ∷ rest = inj₁ (mkState (subs i rest (state.stacks s)) cf)  step-or-halted : (m : machine) → (state m) ⊎ Bool → (state m) ⊎ Bool step-or-halted m (inj₂ b) = inj₂ b step-or-halted m (inj₁ s) = step m s  nsteps : {m : machine} → ℕ → state m → (state m) ⊎ Bool nsteps {m} n s = iterate n (inj₁ s) (step-or-halted m)  initial-state : (m : machine) → List Bool → state m initial-state m l =   mkState (replicate (machine.stacks m) l) (machine.initial-command m)  record poly-time-machine : Set where   inductive   field     m : machine     runtime : ℕ → ℕ     poly : is-poly runtime     is-runtime : (l : List Bool)                → (is-inj₂ (nsteps (runtime (length l)) (initial-state m l))) ≡ true  get-inj₂ : {A B : Set} → (e : A ⊎ B) → is-inj₂ e ≡ true → B get-inj₂ (inj₁ x) () get-inj₂ (inj₂ x) _ = x  run-poly-time-machine : poly-time-machine → List Bool → Bool run-poly-time-machine m inp = get-inj₂ _ (poly-time-machine.is-runtime m inp)  np-machine : Set np-machine = poly-time-machine  search : ℕ → poly-time-machine → List Bool → Bool search zero    m inp = run-poly-time-machine m inp search (suc n) m inp = search n m (false ∷ inp) ∨ search n m (true ∷ inp)  run-np-machine : np-machine → List Bool → Bool run-np-machine m inp = search (length inp) m inp  P=NP : Set P=NP =   (m-np : np-machine) →     Σ[ m-p ∈ poly-time-machine ]       (((inp : List Bool) → run-poly-time-machine m-p inp ≡ run-np-machine m-np inp)) ``` 

How can I make this labyrinth feel more alive/Daedalian and less like an RNG?


I am a big fan of the Angry GM, so I wrote in to “Ask Angry” recently. I don’t really expect a timely response, though, as “Ask Angry” hasn’t made an appearance in a while. So I’m asking this community too.

Spoilers follow about the new D&D 5e starter kit from Hasbro/Netflix (Stranger Things).


Dear Angry,

I’ve recently bought the Stranger Things-themed D&D 5e Starter Kit. I’m a vet of the edition, but thought it could make an interesting thematic introduction to D&D for some friends. The module promises to be interesting, but I am concerned about one section.

The Cursed Labyrinth is supposed to be a Daedalian-style, changes-every-time-you look-back labyrinth. (Think Percy Jackson, but not the movies.) The module asks me to “use the table below to figure out what they find next. If the characters turn around, the maze remains the same until they go around a corner or open a door. Form that point on, the labyrinth makes a new random path.”

Then there’s a d20 table, with 12-14 being “random encounters.” You are to encounter each one up to and only once. One of those 6 encounters (the others are scenic, treasure, traps, or combat) is necessary to the progression of the game: The Lost Knight advances plot and adventure.

My concern:

  1. The labyrinth mechanics do an OK job making wandering around feel somewhat intelligent, if I don’t reveal its randomness and let the players figure it out. That said, I have to roll constantly to generate a hall way or a dead end or a door. (Also, what’s behind the doors? Unknown.)

I would really like to provide the feeling in the Percy Jackson labyrinth, where you know the labyrinth is playing tricks on you, and you have to keep forging ahead. It needs to feel almost alive. And I want to present decision points that are meaningful, not just “left v. right.” Advice?

  1. How do I handle the random encounters, one of which is entirely necessary? My gut says to just decide at an appropriate time point that it happens. The book basically wants me to roll it out, which I am not a fan of, unless it can help the players feel truly lost.

A good answer will…

  • address (1) by suggesting a good way to make the labyrinth come to life, in a tricksy, Stranger-Things-horror-related way;
  • address (2) by suggesting a good way to deal with these “random” encounters; and
  • support suggestions with evidence of how a similar situation was handled and its outcomes, or for how this module was run

A good frame challenge will…

  • explain why the RNG-style labyrinth achieves my goals; or
  • explain why my concerns are unnecessary

It will also

  • support arguments with evidence from the running of this module or another similar situation

Keeping passwords in plain text in “value” attribute. Addons can use this for password leaking

Either there is a security hole or I’m missing information about something.

While I was testing how Surfingkeys addon works I’ve noticed that it has command yf to copy form content on current web page. I though about testing it on “Sign In” and “Log In” forms on few websites to see if it would be able to retrieve typed passwords in plain text. It was successful if standardized <form> tags were used.

Then I’ve noticed that in most web applications password is kept in <input value=""> attribute in plain text which to me seems like by-standard security hole for whole W3 stack (HTML, CSS, JS, etc.). If this addon was able to get password from DOM then any addon can do that. The only piece missing is sending that data to server of a 3rd party who are owners of such malicious addon – such situation already had place with Stylish.

So attack scenario looks like this:

  1. Company “mal1c1ous” buys popular web addon.

  2. They add to addon generic <form> parser script which retrieves data from <input value="">.

  3. For each known website they make their addon “decorate” submit buttons with script which on click 1st sends request with credentials to their server and then to host of that website. Or they just send requests each time parser script is able to get new data.

  4. After some time they perform an attack using gathered credentials.

I find that scenario possible show me that it can’t happen. Also my question is: given that is Web security flawed by design?

The thing is that no one discourages from using <input value=""> as a password holder it seems that there is no other option by standard. Web developers can only come up with their own ideas to obfuscate where a password is stored before request is made.

Is this homebrew race balanced?

This is my first attempt at a homebrew, and I’ve never DMed before so my knowledge of the Player’s Handbook is what I’ve managed to find online.

My question is this: at a glance is this race overpowered compared to the standard races? (in relation to the racial traits/sub-race traits)

Race traits:

Resistance: cold damage
Climbing speed: 25
Natural weapons (1d6 + strength modifier)
Seeking perfection (gain 2 from investigation, nature, religion, insight, medicine, perception, survival)
Languages: Speak Eiri, plus broken Common if living off mountain less than a year

Sub race traits:

Eir (young):
Dex +2
Proficiency: Athletics
Nimble claws (use bonus action to use claws as thief’s tools or similar if hand is free)
Start with feat: mobile

Str +1 and Con +1
Size: large
Natural armor (6 when unarmored, ac = 10 + nat armor + dex mod)(maybe changing that to con mod?)
Start with feat: grappler
Relentless endurance (if not killed outright, instead of going to 0hp, go to 1, once per long rest)

Race descriptions nicely formatted: click thumbnails for larger images.

Eir race description page 1 Eir race description page 2

Stampede: How does this custom spell compare to Cloudkill, another 5th level spell?

Is this stampede spell (a proposed custom spell for Druids and Rangers in my upcoming campaign) as strong as, or weaker than, the 5th level spell cloudkill? I used a similar base damage, the duration is reduced from 10 minutes to 1 minute, and the “persistent” effect of the poison is replaced by a chance to be trampled if knocked prone. I reduced the directional control somewhat.

Spell level 5 (conjuration)
Casting Time: 1 action
Range: 120 feet
Components: V, S Duration: Concentration, up to 1 minute

You create a 40′ wide, 20’deep, line of spiritual herd animals1 (buffalo, horses, giraffes, zebras, etc) at a point you choose within range. The animals stampede in the direction that you choose and will continue in that direction until either the spell ends or you cease concentration on it. The stampede moves at a speed of 40′.
Effects on Creatures
Any creature in the spell’s area of effect on the caster’s turn takes 5d8 bludgeoning damage on a failed Dexterity saving throw, and is knocked prone. On a successful save, the creature takes half damage and is not knocked prone.
Any creature knocked prone takes an additional 2d4+3 bludgeoning2 damage unless the saving throw roll would have succeeded on a DC 12 Dexterity save3.
Effects on Objects
Objects in the path of the stampede take 5d8 bludgeoning damage. Objects not destroyed by the bludgeoning damage cause the stampede to flow around the object. Any creature caught in the area of that flow around an object has to make a saving throw, but the spell’s bludgeoning damage is reduced by half.
Effects of Terrain on the Spell
The herd will plunge through rivers, go over cliffs, or try to flow around a cliff base’s face (likewise with castle walls that are not knocked down, gigantic rock outcroppings, etc). Difficult terrain will not reduce the speed of the stampede.

At Higher Levels. When you cast this spell using a spell slot of 6th level or higher, the damage increases by 1d8 for each slot level above 5th.

In trying to get the flavor right, I am not sure if the relative power level of the spell is retained at 5th level. Is this comparably powered to cloudkill at 5th level?

1 These herd animals are similar to what is summoned by spirit guardians, rather than creatures that are summoned by the conjure animals (Druid, level 3)(Response to @MikeQ). There isn’t a stat block for a herd in the way that there is for a swarm.

2 This is based on MM/PHB riding horse hoof damage.

3 The fiddly bit was intended to avoid making two saving throws. One roll covers it. Some spells do have multiple save chances, so an alternative would be that the second roll is DC 12 Constitution or Dexterity to avoid trample damage, or to use “if the saving throw result is 6 or lower, take the additional damage” which is similar to how the Sprite’s put them to sleep ability works.

Is this homebrew “marble” race balanced?

Is the following homebrew race balanced?


Physical appearance: milky orb with 4 smooth tentacles. Absorbs food and water through its skin.

Ability score increase:

+1 to Dexterity and +2 to Wisdom


Marbles live 200 years.


Small. You are 2 feet in diameter and weight 100 pounds.


You can hover and have a flying speed of 35 feet. You do not need to breathe, but you do need food and water.

Natural armor:

When you aren’t wearing armor, your AC is 12 + your Dexterity modifier.

Damage resistances:

You are resistant to fire damage.


You have truesight to 20 feet, but are blind beyond that range.

Innate Spellcasting:

You know the ray of frost cantrip.
At level 3, you can cast silent image twice per day.
At level 8, you can cast major image once per day.

Is this modification of the Vicious Mockery cantrip overpowered?

New DM here. One of my players wants to be able to cast vicious mockery without doing damage (because his character became a pacifist after death and resurrection). I’m considering allowing him to cast it with a bonus-action casting time in exchange for the damage.

The only changes to the spell would be to its casting time (1 bonus action, instead of 1 action), and to its effect (it no longer does damage but still imposes disadvantage):

Choose a target you can see. If it can hear you, it must succeed on a Wisdom saving throw or have disadvantage on the next attack roll it makes before the end of its next turn.

Would this be overpowered?