1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
Index: ai.lua
===================================================================
RCS file: /cvsroot/stratagus-bos/data.bos/scripts/ai.lua,v
retrieving revision 1.7
retrieving revision 1.5
diff -u -r1.7 -r1.5
--- ai.lua 31 May 2004 16:13:05 -0000 1.7
+++ ai.lua 6 Mar 2004 18:57:15 -0000 1.5
@@ -26,7 +26,7 @@
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
--- $Id: ai.lua,v 1.7 2004/05/31 16:13:05 feb Exp $
+-- $Id: ai.lua,v 1.5 2004/03/06 18:57:15 feb Exp $
--
DefineAiHelper(
@@ -59,69 +59,73 @@
--
{"unit-limit", "unit-gen", "food"})
+local player
-Load("scripts/helpers.lua")
+function AiLoop(loop_funcs, loop_pos)
+ local ret
-function Loop()
- while true do
- print("Looping !");
- AiForce(1, {"unit-assault", 20})
- AiForce(2, {"unit-grenadier", 8})
- AiForce(3, {"unit-bazoo", 8})
- AiWaitForce(2)
- AiWaitForce(3) -- wait until attack party is completed
- AiSleep(200)
- AiAttackWithForce(1)
- AiAttackWithForce(2)
- AiAttackWithForce(3)
- end
+ player = AiPlayer() + 1
+ while (true) do
+ ret = loop_funcs[loop_pos[player]]()
+ if (ret) then
+ break
+ end
+ loop_pos[player] = loop_pos[player] + 1
+ end
+ return true
end
+ai_pos = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+ai_loop_pos = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
-function AiRun(player)
- AiDebug(false)
- AiSleep(AiGetSleepCycles())
- AiNeed("unit-vault")
- AiSet("unit-engineer", 10)
- AiWait("unit-vault")
- AiNeed("unit-camp")
- AiWait("unit-camp")
- AddMessage("You're gonna die")
- AiForce(0, {"unit-assault", 10})
- AiWaitForce(0)
- AiNeed("unit-camp")
- AiSleep(500)
- AiNeed("unit-camp")
+local ai_loop_funcs = {
+ function() print("Looping !"); return false end,
+ function() return AiForce(1, {"unit-assault", 20}) end,
+ function() return AiForce(2, {"unit-grenadier", 8}) end,
+ function() return AiForce(3, {"unit-bazoo", 8}) end,
+ function() return AiWaitForce(2) end,
+ function() return AiWaitForce(3) end, -- wait until attack party is completed
+ function() return AiSleep(200) end,
+ function() return AiAttackWithForce(1) end,
+ function() return AiAttackWithForce(2) end,
+ function() return AiAttackWithForce(3) end,
+ function() ai_loop_pos[player] = 0; return false end,
+}
+
+local ai_funcs = {
+ function() AiDebug(false) return false end,
+ function() return AiSleep(AiGetSleepCycles()) end,
+ function() return AiNeed("unit-vault") end,
+ function() return AiSet("unit-engineer", 10) end,
+ function() return AiWait("unit-vault") end,
+
+ function() return AiNeed("unit-camp") end,
+ function() return AiWait("unit-camp") end,
+ function() return AiForce(0, {"unit-assault", 10}) end,
+ function() return AiWaitForce(0) end,
+ function() return AiNeed("unit-camp") end,
+ function() return AiSleep(500) end,
+ function() return AiNeed("unit-camp") end,
- AiForce(1, {"unit-assault", 10})
- AiWaitForce(1)
- AiSleep(200)
- AiAttackWithForce(1)
-
- AiForce(0, {"unit-assault", 20})
- AiNeed("unit-rfac")
- AiResearch("upgrade-expl")
- AiForce(1, {"unit-assault", 20, "unit-grenadier", 8})
- AiWaitForce(1)
- AiAttackWithForce(1)
-
- AiResearch("upgrade-expl2")
- Loop()
-end
-
-co = {}
-for i = 1, 16 do
- co[i]=coroutine.create(AiRun)
-end
-
-function AiLoop()
- player = AiPlayer() + 1
- coroutine.resume(co[player], player)
- return true
-end
+ function() return AiForce(1, {"unit-assault", 10}) end,
+ function() return AiWaitForce(1) end,
+ function() return AiSleep(200) end,
+ function() return AiAttackWithForce(1) end,
+
+ function() return AiForce(0, {"unit-assault", 20}) end,
+ function() return AiNeed("unit-rfac") end,
+ function() return AiResearch("upgrade-expl") end,
+ function() return AiForce(1, {"unit-assault", 20, "unit-grenadier", 8}) end,
+ function() return AiWaitForce(1) end,
+ function() return AiAttackWithForce(1) end,
+
+ function() return AiResearch("upgrade-expl2") end,
+ function() return AiLoop(ai_loop_funcs, ai_loop_pos) end,
+}
function AiRush()
- return AiLoop()
+-- print(AiPlayer() .. " position ".. ai_pos[AiPlayer() + 1]);
+ return AiLoop(ai_funcs, ai_pos)
end
DefineAi("ai-rush", "*", "ai-rush", AiRush)
|