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]}