Last night I killed two player characters. Well, I technically didn't kill them: one of them was left behind, polymorphed into a frog, while the other accepted the anger of their wizardly patron.
It was a campaign that originally began as repeated explorations into the city's necropolis (I reskinned parts of Barrowmaze for it). We had four player characters, but two of them (an assassin and a barbarian) only showed up infrequently: the other two (a monk and a berserker) sat firmly in the driver's seat.
For the last two sessions we've been taking a break from the undead-infested necropolis and participated in some good old urban investigation. A slave escaped from an eccentric noble's palace and kidnapped his daughter. The players quickly realised that the daughter and the slave were lovers, and through some colourful interactions found them hiding in the Lunar Garden. Before confronting them, though, they returned a diamond ring to the noble (which the couple stole and sold to cover their expenses).
The initial "I'm giving you this quest" scene and this one surely have communicated that Phlianos wasn't a simple noble: he was hiding in a completely covered sedan chair carried by 8 bald servants with visible incision marks on their craniums. Also, the spokesperson conversed with the lord, not willing to show his visage, through a serpentine thread (like a thin plastic tube or something) that entered his brain through the ear. At any rate, they were paid for a job well done - apparently, the diamond ring was of greater importance than the daughter or the slave.
Still, the party learned that the noble-sorcerer would use the gem as a phylactery to achieve immortality: something they thought they should stop. So they learned of a rival sorceress, contacted her, and told her of the news. The sorcereress told them to steal it for her, and gave them an amulet ("When you have the gem, think of this place, and call my name out loud").
The players went back to the sorcerer with a terrible excuse to sniff around. A terrible reaction roll followed, and the players - instead of chancing an escape (which, for the matter, would totally have been possible) - went for an all-out assault. Sadly, the opposition won initiative, and the berserker failed his saving throw: he was instantly transformed into a frog. The monk threw a flask of oil, but it had little effect. In the next round, he decided to call out the sorcerer's name - so he was instantly teleported back to a safe place, leaving the polymorphed berserker behind (it was apparent that the player actually wanted to grab the frog immediately after activating the amulet; its power wasn't known, after all).
Since polymorph lasts indefinitely and the polymorphed creature assumes the behaviour and mannerisms of the new form, the berserker was assumed dead, unless a rescue mission would be attempted with haste. The sorceress was also greatly displeased. I informed the player that grovelling would surely convince her to spare his life, but he refused and accepted an off-screen death.
I don't think my portrayal of the sorcerer patron/villain was insufficient: the servants and especially the wire-tube were surely enough that it wasn't normal. Also, if a wizard is about to achieve immortality, one can assume it isn't some lucky novice but one with levels and items to back it up.
My players might have misinterpreted the poor reaction roll (result 2). The spokesperson was just yelling a solid get-the-fuck-out (had they complied, they would've let them leave the premises unharmed, although followed by watchful eyes), but of course they had to reach for the flasks of incendiary oil. I even gave the enemy a surprise check (I figured the spokesperson was furious enough to miss subtle movements), but they made it, and... the rest you already know.
The last bit I wanted to mention (truth be told, it was the first thing I wanted to, but I needed some context) is that after the monk's player accepted an off-screen punishment of his character, he offered an alternative ending: one in which the monk didn't use the amulet, and instead he was also polymorphed into a frog - and so the two frogs lived happily ever after in the sorcerer's garden of fountains.
Even though it totally could've happened (had the player not activated the amulet, the sorcerer would definitely have used his wand another time), the important thing is it didn't. Even though I am totally into negotiating fitting epilogues, I am firmly against changing events, even those of little consequence, that have already been established.
As I have already said it, we aren't crafting a story together: we are recognising a story as we look back at the events that unfolded.