How close can you get to enemies before having to roll stealth?

The following situation: 2 Members of the party try to sneak up on distracted enemies. The other two, not stealth proficient players want to stay 20 feet behind, not roll stealth and join after the others. The approach is fine by me, but I am really confused about how near they can get before being noticed. This is important because I need to know how long they will take to join the fight afterward.

If I had to guess, I would say there is a detection range, how far a creature can detect others. Is there any rule for that or does the DM have to arbitrarily decide every time? Also, how does the alertness of the detecting creature and the environment (i.e. reverberation in a dungeon) factor into this?

How can I better show players that enemies are not friends?

I’m a new GM playing Pathfinder with other newbies.

The problem I’m facing is that the group tries to be friends with almost every humanoid that they meet. It’s not that they dislike combat, it’s just that they sometimes are able to talk their way out of situations.

Obviously if they’re having fun, and it doesn’t destroy the game – then I should let them talk their way out of as much as they like. But it’s become a bit cumbersome and is slowing the game down that I have to create full dialog etc for every single goblin or orc that they come across.

Any advice on how I can help suggest to the players that the encounter is a fight and not a negotiation?

How do Shadowdancer’s Hide in Plain Sight, Hellcat Stealth, and enemies’ darkvision interact?

I recently had a game where there was some uncertainty, so I’m here to ask you how this interaction works.

I have a character, a Shadowdancer. This character has also got the Hellcat Stealth feat. The character sneaks in pure darkness, no light at all, on an enemy with Darkvision. There is no cover. Does the character stealth with Hide in Plain Sight, Hellcat Stealth, or the character cannot attempt to stealth? Or does the character stealth with Hide in Plain Sight but with a penalty similar to Hellcat Stealth?

One of my players want to carry his familiar on his body and says it should not be targeted by enemies because it can hide on his body?

One of my players (of a rogue) said that he heard of DM’s allowing the familiar to be carried on the players body. He use his familiar to help him in combat and get advantage on the attack roll.

I said it’s okay for me and allowed it. But later in fight I played a goblin and obviously attacked his familiar in his pocket, to take his advantage away. He said that it shouldn’t be possibly because his familiar hides in a pocket and can’t be targeted. I didn’t allow that because it would obviously break the game. He said that many DM’s bend the rule like this and allow this.

I would like to hear whether anyone has ever allowed this change of the rules, and whether it did or will break the game.

How many enemies will challenge my party of four 1st-level characters, but not result in certain death?

I was asked to DM for a one-shot with people wanting to try and learn the game. I have created a not-too-complicated world in which they can run around and interact with its inhabitants.

The problem I face is the number and strength of foes that can be encountered. How do I prepare a challenge to the players while they learn the game? I want them to be a little afraid while still having chance of saving the town/rescuing the princess or prince/find the treasure.

  • These are completely new players, there will be 4 of them.
  • They will play level 1 characters: a paladin, barbarian, rogue and sorcerer.
  • I play a separate campaign with other people but have never been a DM before.
  • We expect to play for about 4 hours – unless everyone is having fun and wants to continue, of course.
  • Based on decisions, the enemies will be either goblins or pirates. I tend to keep these enemies around the same level.
  • I would like to introduce one “boss” in the shape of a goblin chief/pirate captain.

How many enemies, based on the information above, would make for a balanced and fun game? I don’t really want everyone to bite the dust on their first game ever, but also want to keep it interesting at the same time.

How can I destroy all enemies with the click of a button?

I want to add a booster. For example, when the score is 50, I draw a Texture. When the user clicks on this Texture, I want the enemies on the screen to disappear and return to the original speed. I have completed the drawing process. How can I get this new texture to destroy all enemies on the screen when clicked? Should I do it under public boolean touchDown?

public class Game extends ApplicationAdapter implements InputProcessor { SpriteBatch batch;  Texture background;   Texture health;  Texture virus;  Texture bigvirus;  Texture medicine;  Texture radiation; Texture booster;  //new things to try private Vector2 vector2; Sprite boosterSprite;      BitmapFont font; FreeTypeFontGenerator fontGen;  Random random = new Random(); Array<Items> itemsArray = new Array<Items>();             int lives = 0; int score = 0;  float genCounter = 0; private final float startGenSpeed = 1.1f;  //başlatma hızı float genSpeed = startGenSpeed;   private double currentTime; private double gameOverTime = -1.0f;      @Override public void create () {     batch = new SpriteBatch();     background = new Texture("backgroundlungs.png");     health = new Texture("health.png");     virus = new Texture("virus.png");     bigvirus = new Texture("bigvirus.png");     medicine = new Texture("medicine.png");     radiation = new Texture("radiation.png");     booster = new Texture("booster.png");        vector2=new Vector2();     boosterSprite=new Sprite(booster);     boosterSprite.setPosition((*9,( 10)*8);         Items.radius = Math.max(, / 13f;   //resim boyutları buradan ayarlanıyor     Gdx.input.setInputProcessor(this);      fontGen = new FreeTypeFontGenerator(Gdx.files.internal("robotobold.ttf"));     FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter();     params.color = Color.WHITE;     params.size = 50;     params.characters = "0123456789 ScreCutoplay:.+-";     font = fontGen.generateFont(params);  }    @Override public void render () {     batch.begin();     batch.draw(background,0,0,,;       double newTime = TimeUtils.millis() / 1000.0;     System.out.println("newTime: " + newTime);     double frameTime = Math.min(newTime - currentTime,0.3);     System.out.println("frameTime: " + frameTime);     float deltaTime = (float) frameTime;     System.out.println("deltaTime: " + deltaTime);     currentTime = newTime;       if (lives <= 0 && gameOverTime == 0f) {         //gameo         gameOverTime = currentTime;     }      if (lives > 0 ) {         //game mode          genSpeed -= deltaTime * 0.0075f;    //item yoğunluğunu buradan ayarliyoruz.          System.out.println("genspeed: " + genSpeed);         System.out.println("gencounter: " + genCounter);          if (genCounter <= 0f) {             genCounter = genSpeed;             addItem();         } else {             genCounter -= deltaTime;         }          for (int i = 0; i< lives; i++) {             batch.draw(health,i*30f + 20f,,25f,25f);         }          for (Items items : itemsArray) {             items.update(deltaTime);              switch (items.type) { //dikdörtgen sıkıntı yapabilir.                 case REGULAR:                     batch.draw(virus,items.getPos().x, items.getPos().y, Items.radius,Items.radius);                     break;                 case EXTRA:                     batch.draw(bigvirus,items.getPos().x, items.getPos().y, Items.radius,Items.radius);                     break;                 case ENEMY:                     batch.draw(radiation,items.getPos().x, items.getPos().y, Items.radius,Items.radius);                     break;                 case LIFE:                     batch.draw(medicine,items.getPos().x, items.getPos().y, Items.radius,Items.radius);                     break;               }               if ( lives > 0 && score >= 10 ) {                  boosterSprite.draw(batch);              }                       boolean holdives = false;         Array<Items> toRemove = new Array<Items>();         for (Items items: itemsArray) {             if (items.outOfScreen()) {                 toRemove.add(items);                  if ( && items.type == REGULAR) {                     lives--;                     holdives = true;                     break;                 }              }         }          if (holdives) {             for (Items f : itemsArray) {        = false;             }         }          for (Items f : toRemove) {             itemsArray.removeValue(f,true);         }        }        font.draw(batch,"Score: " + score, 40,50);     if (lives <= 0) {         font.draw(batch,"Cut to play",*0.43f,*0.5f);     }       batch.end(); }  private  void addItem() {     float pos = random.nextFloat() * Math.max(,;      Items item = new Items(new Vector2(pos,-Items.radius),new Vector2(( * 0.5f - pos) * 0.3f + (random.nextFloat() - 0.5f),*0.5f));      float type = random.nextFloat();     if (type > 0.98) {         item.type = Items.Type.LIFE;     }else if (type > 0.88) {         item.type = Items.Type.EXTRA;     }else if (type > 0.809) {         item.type = Items.Type.ENEMY;       }       itemsArray.add(item);      }      @Override public void dispose () {     batch.dispose();     font.dispose();     fontGen.dispose();   }  @Override public boolean keyDown(int keycode) {     return false; }  @Override public boolean keyUp(int keycode) {     return false; }  @Override public boolean keyTyped(char character) {     return false; }    @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) {           return false;  }   @Override public boolean touchUp(int screenX, int screenY, int pointer, int button) {       return false; }  @Override public boolean touchDragged(int screenX, int screenY, int pointer) {         if (lives <= 0  && currentTime - gameOverTime > 2f ) {         //menu mode          gameOverTime = 0f;         score = 0;         lives = 4;         genSpeed = startGenSpeed;         itemsArray.clear();          }else {         //game mode          Array<Items> toRemove = new Array<Items>();         Vector2 pos = new Vector2(screenX, - screenY);         int plusScore =0;         for (Items f: itemsArray) {              System.out.println("distance: " + pos.dst2(f.pos));             System.out.println("distance: " + f.clicked(pos));             System.out.println("distance: "+ Items.radius * Items.radius + 1);                if (f.clicked(pos)) {                 toRemove.add(f);                  switch (f.type) {                     case REGULAR:                         plusScore++;                         break;                     case EXTRA:                         plusScore+=2;                         score++;                         break;                     case ENEMY:                         lives--;                         break;                     case LIFE:                         lives++;                         break;                   }             }         }            score += plusScore * plusScore;          for (Items f : toRemove) {             itemsArray.removeValue(f,true);          }           }      return false;      }    @Override public boolean mouseMoved(int screenX, int screenY) {     return false; }  @Override public boolean scrolled(float amountX, float amountY) {     return false; } 


public class Items {

public static float radius = 60f; Vector2 vector2; public static int boostX = / 10; public static int boostY= ( 10)*9;   public enum Type {     REGULAR, EXTRA, ENEMY, LIFE, BOOSTER }  Type type; Vector2 pos,velocity;    public boolean living =true;    Items (Vector2 pos, Vector2 velocity) {     this.pos = pos;       this.velocity = velocity;      type = Type.REGULAR;  }   public boolean clicked(Vector2 click) {     if (pos.dst2(click) <= radius * radius + 1) {         return true;      }      return false; }  public final Vector2 getPos() {     return pos; }  public boolean outOfScreen() {     return (pos.y < -2f * radius); }  public void update(float dt) {     velocity.y -= dt * ( * 0.2f);     velocity.x -= dt * Math.signum(velocity.x) * 4f;       pos.mulAdd(velocity,dt); } 


Do enemies know that a character is using the Sentinel Feat

As far as I can see there is no "official" answer so I am looking for the community’s consensus. If you can point me to a rules as written answer that would be great.

If a character has the sentinel feat would enemies know so that they avoid attacking someone else or disengaging. Or when/how would the find out if they don’t start knowing.

My thoughts are that an enemy would not know unless they also had the sentinel feat (or other martial prowess?). One without the feat would figure it out after being attacked (or maybe hit?) by a use of the feat.

Sentinel Feat

You have mastered techniques to take advantage of every drop in any enemy’s guard, gaining the following benefits:

  • When you hit a creature with an opportunity attack, the creature’s speed becomes 0 for the rest of the turn.
  • Creatures provoke opportunity attacks from you even if they take the Disengage action before leaving your reach.
  • When a creature within 5 feet of you makes an attack against a target other than you (and that target doesn’t have this feat), you can use your reaction to make a melee weapon attack against the attacking creature.

Do enemies who have Posessed a character gain access to their Feats?

The Ghost ability Possession (Recharge 6) gives this guidance:

The ghost now controls the body but doesn’t deprive the target of awareness. The ghost can’t be targeted by any Attack, spell, or other Effect, except ones that turn Undead, and it retains its Alignment, Intelligence, Wisdom, Charisma, and immunity to being Charmed and Frightened. It otherwise uses the possessed target’s Statistics, but doesn’t gain access to the target’s knowledge, Class Features, or Proficiencies.

It is unclear to me if Feats counts as a thing they do not gain access to.