diff --git a/game/engines/default/data/keybinds/inventory.lua b/game/engines/default/data/keybinds/inventory.lua
index 4f864c6df40b7333dfa0c5bc73d851dabff9a9d9..e8ae9a9db688a3c08e51b8b8115059979e9a3f87 100644
--- a/game/engines/default/data/keybinds/inventory.lua
+++ b/game/engines/default/data/keybinds/inventory.lua
@@ -37,7 +37,7 @@ defineAction{
 	name = _t"Pickup items",
 }
 defineAction{
-	default = { "sym:=d:false:false:false:false" },
+	default = { "sym:=d:false:true:false:false" },
 	type = "DROP_FLOOR",
 	group = "inventory",
 	name = _t"Drop items",
diff --git a/game/modules/tome/class/Party.lua b/game/modules/tome/class/Party.lua
index bdc27b54a2d9c163445a27d12e3211ea6f85a37f..4281c04849f3bf9e7bd9399605c11863082258bd 100644
--- a/game/modules/tome/class/Party.lua
+++ b/game/modules/tome/class/Party.lua
@@ -404,6 +404,9 @@ function _M:giveOrder(actor, order)
 		game:registerDialog(require("mod.dialogs.orders."..order:capitalize()).new(actor, def))
 	elseif order == "talents" then
 		game:registerDialog(require("mod.dialogs.orders."..order:capitalize()).new(actor, def))
+	elseif order == "dismiss" then
+		game.log("%s is dismissed!", actor:getName():capitalize())
+		actor:die(actor)
 
 	-------------------------------------------
 	-- Escort specifics
@@ -422,6 +425,8 @@ function _M:giveOrder(actor, order)
 
 		local dir = game.level.map:compassDirection(actor.escort_target.x - actor.x, actor.escort_target.y - actor.y)
 		actor:doEmote(("The portal is %s, to the %s."):tformat(dist, dir or "???"), 45)
+	else
+		self:triggerHook{"PartyOrder:execute", order=order, actor=actor}
 	end
 
 	return true
diff --git a/game/modules/tome/data/talents/spells/spells.lua b/game/modules/tome/data/talents/spells/spells.lua
index f2ecaba198abb8e69d9141b53c837cf914b40286..6ecac8334a841f5ca2a5cb629cebc6d6f85ff10c 100644
--- a/game/modules/tome/data/talents/spells/spells.lua
+++ b/game/modules/tome/data/talents/spells/spells.lua
@@ -244,10 +244,10 @@ function necroSetupSummon(self, def, x, y, level, turns, no_control)
 
 		m.remove_from_party_on_death = true
 		game.party:addMember(m, {
-			control=can_control and "full" or "no",
+			control=can_control and "full" or "order",
 			type="minion",
 			title=_t"Necrotic Minion",
-			orders = {target=true},
+			orders = {target=true, dismiss=true},
 		})
 	end
 	m:resolve() m:resolve(nil, true)
diff --git a/game/modules/tome/dialogs/PartyOrder.lua b/game/modules/tome/dialogs/PartyOrder.lua
index 545b94d692b785e0f16022cd313991630b81e2cc..d75693ea03d26af7a46a0a678b003ae03ab6de98 100644
--- a/game/modules/tome/dialogs/PartyOrder.lua
+++ b/game/modules/tome/dialogs/PartyOrder.lua
@@ -32,6 +32,7 @@ local orders = {
 	leash = {4, function(actor) return ("Set the leash distance [current: %d]"):tformat(actor.ai_state.tactic_leash) end},
 	talents = {5, function(actor) return (_t"Define tactical talents usage") end},
 	rename = {6, function(actor) return (_t"Rename") end},
+	dismiss = {7, function(actor) return (_t"Dismiss") end},
 }
 
 function _M:init(actor, def)
@@ -65,6 +66,11 @@ end
 function _M:generateList()
 	local list = {}
 
+	if not _M.additional_hook_fired then
+		_M.additional_hook_fired = true
+		self:triggerHook{"PartyOrder:define", orders=orders}
+	end
+
 	for o, _ in pairs(self.def.orders) do
 		if orders[o] then
 			list[#list+1] = {name=orders[o][2](self.actor), order=o, sort=orders[o][1]}