func execMinion(a *Ai) lua.GoFunction { return func(L *lua.State) int { if !game.LuaNumParamsOk(L, 1, "ExecMinion") { return 0 } ent := game.LuaToEntity(L, a.game, -1) if ent == nil { game.LuaDoError(L, "Tried to ExecMinion on an invalid entity.") return 0 } if ent.HauntEnt == nil || ent.HauntEnt.Level != game.LevelMinion { game.LuaDoError(L, "Tried to ExecMinion on a non-minion.") return 0 } if !ent.Ai.Active() { game.LuaDoError(L, fmt.Sprintf("Tried to ExecMinion '%s', who is not active.", ent.Name)) return 0 } exec := <-ent.Ai.ActionExecs() if exec != nil { a.execs <- exec } <-a.pause return 0 } }
func execIntruder(a *Ai) lua.GoFunction { return func(L *lua.State) int { if !game.LuaNumParamsOk(L, 1, "ExecIntruder") { return 0 } ent := game.LuaToEntity(L, a.game, -1) if ent == nil { game.LuaDoError(L, "Tried to ExecIntruder on an invalid entity.") return 0 } if ent.ExplorerEnt == nil { game.LuaDoError(L, "Tried to ExecIntruder on a non-intruder.") return 0 } if !ent.Ai.Active() { game.LuaDoError(L, fmt.Sprintf("Tried to ExecIntruder '%s', who is not active.", ent.Name)) return 0 } exec := <-ent.Ai.ActionExecs() if exec != nil { a.execs <- exec } <-a.pause return 0 } }