MCPcopy Create free account
hub / github.com/GoMudEngine/GoMud / TryPlayerDownedEvent

Function TryPlayerDownedEvent

internal/scripting/mob.go:51–91  ·  view source on GitHub ↗
(mobInstanceId int, downedPlayerId int)

Source from the content-addressed store, hash-verified

49}
50
51func TryPlayerDownedEvent(mobInstanceId int, downedPlayerId int) (bool, error) {
52 sMob := GetActor(0, mobInstanceId)
53 if sMob == nil {
54 return false, fmt.Errorf("mob not found")
55 }
56
57 vmw, err := getMobVM(sMob)
58 if err != nil {
59 return false, err
60 }
61
62 tUser := GetActor(downedPlayerId, 0)
63 if tUser == nil {
64 return false, fmt.Errorf("player not found")
65 }
66
67 timestart := time.Now()
68 defer func() {
69 mudlog.Debug("TryPlayerDownedEvent()", "mobInstanceId", mobInstanceId, "downedPlayerId", downedPlayerId, "time", time.Since(timestart))
70 }()
71
72 if onCommandFunc, ok := vmw.GetFunction(`onPlayerDowned`); ok {
73
74 sRoom := GetRoom(sMob.GetRoomId())
75
76 res, err := runCallable(vmw, scriptRoomTimeout, onCommandFunc,
77 vmw.VM.ToValue(sMob),
78 vmw.VM.ToValue(tUser),
79 vmw.VM.ToValue(sRoom),
80 )
81 if err != nil {
82 return false, fmt.Errorf("onPlayerDowned(): %w", err)
83 }
84
85 if boolVal, ok := res.Export().(bool); ok {
86 return boolVal, nil
87 }
88 }
89
90 return false, ErrEventNotFound
91}
92
93func TryMobScriptEvent(eventName string, mobInstanceId int, sourceId int, sourceType string, details map[string]any) (bool, error) {
94

Callers 1

HandlePlayerDropFunction · 0.92

Calls 7

DebugFunction · 0.92
GetActorFunction · 0.85
getMobVMFunction · 0.85
GetRoomFunction · 0.85
runCallableFunction · 0.85
GetFunctionMethod · 0.80
GetRoomIdMethod · 0.45

Tested by

no test coverage detected