aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_use.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/cmd_use.go')
-rw-r--r--internal/game/cmd_use.go30
1 files changed, 8 insertions, 22 deletions
diff --git a/internal/game/cmd_use.go b/internal/game/cmd_use.go
index a2cb135..975eddb 100644
--- a/internal/game/cmd_use.go
+++ b/internal/game/cmd_use.go
@@ -90,17 +90,10 @@ func (g *Game) useRoomObject(sess *net.Session, p *player.Player, input string)
g.startAction(sess, bt, def.Name)
return true
}
- for _, ui := range def.OnUse {
- if ui.Item != "" {
- continue
- }
- if ui.Condition != nil && !g.checkCondition(sess, ui.Condition) {
- continue
- }
- g.cancelAction(p)
- name := def.Name
- g.broadcastAction(sess, "%s uses the %s.", p.Name, name)
- g.runInteraction(sess, p, ui.Action, p.RoomID, scopePlayer, nil)
+ g.cancelAction(p)
+ name := def.Name
+ g.broadcastAction(sess, "%s uses the %s.", p.Name, name)
+ if g.runTrigger(sess, p, def.OnUse, p.RoomID, func(id string) bool { return false }, false) {
return true
}
if len(def.OnUse) > 0 {
@@ -276,17 +269,10 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName,
return
}
- for _, ui := range def.OnUse {
- if ui.Item != itemAID {
- continue
- }
- if ui.Condition != nil && !g.checkCondition(sess, ui.Condition) {
- continue
- }
- g.cancelAction(p)
- name := def.Name
- g.broadcastAction(sess, "%s uses the %s.", p.Name, name)
- g.runInteraction(sess, p, ui.Action, p.RoomID, scopePlayer, nil)
+ g.cancelAction(p)
+ name := def.Name
+ g.broadcastAction(sess, "%s uses the %s.", p.Name, name)
+ if g.runTrigger(sess, p, def.OnUse, p.RoomID, func(id string) bool { return id == itemAID }, false) {
return
}