2 HedgewarsScriptLoad("/Scripts/Params.lua") |
2 HedgewarsScriptLoad("/Scripts/Params.lua") |
3 |
3 |
4 local gravity = 100 |
4 local gravity = 100 |
5 local mingravity |
5 local mingravity |
6 local maxgravity |
6 local maxgravity |
|
7 local mingravity_normal |
|
8 local maxgravity_normal |
|
9 local mingravity_low |
|
10 local maxgravity_low |
7 local delta = 0 |
11 local delta = 0 |
8 local period |
12 local period |
9 local periodtimer = 0 |
13 local periodtimer = 0 |
10 local wdGameTicks = 0 |
14 local wdGameTicks = 0 |
11 local wdTTL = 0 |
15 local wdTTL = 0 |
12 local mln = 1000000 |
16 local mln = 1000000 |
|
17 local lowGravityUsed = false |
13 |
18 |
14 local script2_onNewTurn |
19 local script2_onNewTurn |
15 local script2_onGameTick20 |
20 local script2_onGameTick20 |
16 local script2_onGameStart |
21 local script2_onGameStart |
|
22 local script2_onHogAttack |
17 |
23 |
18 |
24 |
19 function grav_onNewTurn() |
25 function grav_onNewTurn() |
|
26 lowGravityUsed = false |
|
27 if maxgravity_normal == nil then |
|
28 gravity = mingravity_normal |
|
29 else |
|
30 mingravity = mingravity_normal |
|
31 maxgravity = maxgravity_normal |
|
32 if period > 0 then |
|
33 delta = div(maxgravity_normal - mingravity_normal, period) |
|
34 end |
|
35 end |
20 if delta ~= nil and period == nil then |
36 if delta ~= nil and period == nil then |
21 SetGravity(gravity) |
37 SetGravity(gravity) |
22 else |
38 else |
23 SetGravity(div(gravity, mln)) |
39 SetGravity(div(gravity, mln)) |
24 end |
40 end |
70 end |
86 end |
71 |
87 |
72 function onParameters() |
88 function onParameters() |
73 parseParams() |
89 parseParams() |
74 |
90 |
75 gravity = params["g"] |
91 gravity = tonumber(params["g"]) or 100 |
76 |
92 |
77 mingravity = gravity |
93 mingravity_normal = gravity |
78 maxgravity = params["g2"] |
94 if mingravity_normal > 0 then |
|
95 mingravity_low = div(mingravity_normal, 2) |
|
96 else |
|
97 mingravity_low = mingravity_normal * 2 |
|
98 end |
|
99 mingravity = mingravity_normal |
|
100 if type(tonumber(params["g2"])) == "number" then |
|
101 maxgravity_normal = tonumber(params["g2"]) |
|
102 if maxgravity_normal > 0 then |
|
103 maxgravity_low = div(maxgravity_normal, 2) |
|
104 else |
|
105 maxgravity_low = maxgravity_normal * 2 |
|
106 end |
|
107 maxgravity = maxgravity_normal |
|
108 end |
79 period = params["period"] |
109 period = params["period"] |
80 |
110 |
81 if mingravity ~= nil and maxgravity ~= nil then |
111 if type(mingravity) == "number" and type(maxgravity) == "number" then |
82 if period ~= nil then |
112 if period ~= nil then |
83 period = div(period, 40) |
113 period = div(period, 40) |
84 else |
114 else |
85 period = 125 |
115 period = 125 |
86 end |
116 end |
87 |
117 |
88 mingravity = mingravity * mln |
118 mingravity = mingravity * mln |
|
119 mingravity_normal = mingravity_normal * mln |
|
120 mingravity_low = mingravity_low * mln |
89 maxgravity = maxgravity * mln |
121 maxgravity = maxgravity * mln |
90 |
122 maxgravity_normal = maxgravity_normal * mln |
91 -- note: mingravity and maxgravity MUST NOT be strings at this point |
123 maxgravity_low = maxgravity_low * mln |
|
124 |
92 if mingravity > maxgravity then |
125 if mingravity > maxgravity then |
93 mingravity, maxgravity = maxgravity, mingravity |
126 mingravity, maxgravity = maxgravity, mingravity |
|
127 mingravity_normal, maxgravity_normal = maxgravity_normal, mingravity_normal |
|
128 mingravity_low, maxgravity_low = maxgravity_low, mingravity_low |
94 end |
129 end |
95 |
130 |
96 gravity = mingravity |
131 gravity = mingravity |
97 |
132 |
98 if period > 0 then |
133 if period > 0 then |
99 delta = div(maxgravity - mingravity, period) |
134 delta = div(maxgravity_normal - mingravity_normal, period) |
100 else |
135 else |
101 period = -period |
136 period = -period |
102 delta = nil |
137 delta = nil |
103 end |
138 end |
104 end |
|
105 |
|
106 if gravity == nil then |
|
107 gravity = 100 |
|
108 end |
139 end |
109 |
140 |
110 secondScript = params["script2"] |
141 secondScript = params["script2"] |
111 |
142 |
112 if secondScript ~= nil then |
143 if secondScript ~= nil then |
114 HedgewarsScriptLoad("/Scripts/Multiplayer/" .. secondScript .. ".lua") |
145 HedgewarsScriptLoad("/Scripts/Multiplayer/" .. secondScript .. ".lua") |
115 |
146 |
116 script2_onNewTurn = onNewTurn |
147 script2_onNewTurn = onNewTurn |
117 script2_onGameTick20 = onGameTick20 |
148 script2_onGameTick20 = onGameTick20 |
118 script2_onGameStart = onGameStart |
149 script2_onGameStart = onGameStart |
|
150 script2_onHogAttack = onHogAttack |
119 |
151 |
120 if onParameters ~= nil then |
152 if onParameters ~= nil then |
121 onParameters() |
153 onParameters() |
122 end |
154 end |
123 end |
155 end |
124 |
156 |
125 onNewTurn = grav_onNewTurn |
157 onNewTurn = grav_onNewTurn |
126 onGameTick20 = grav_onGameTick20 |
158 onGameTick20 = grav_onGameTick20 |
127 onGameStart = grav_onGameStart |
159 onGameStart = grav_onGameStart |
|
160 onHogAttack = grav_onHogAttack |
128 end |
161 end |
129 |
162 |
130 function grav_onGameStart() |
163 function grav_onGameStart() |
|
164 DisableGameFlags(gfLowGravity) |
|
165 |
131 if delta == nil then |
166 if delta == nil then |
132 v = string.format(loc("random in range from %i%% to %i%% with period of %i msec"), div(mingravity, mln), div(maxgravity, mln), period * 40) |
167 v = string.format(loc("random in range from %i%% to %i%% with period of %i msec"), div(mingravity_normal, mln), div(maxgravity_normal, mln), period * 40) |
133 elseif period ~= nil then |
168 elseif period ~= nil then |
134 v = string.format(loc("changing range from %i%% to %i%% with period of %i msec"), div(mingravity, mln), div(maxgravity, mln), period * 40) |
169 v = string.format(loc("changing range from %i%% to %i%% with period of %i msec"), div(mingravity_normal, mln), div(maxgravity_normal, mln), period * 40) |
135 else |
170 else |
136 v = gravity .. "%" |
171 v = gravity .. "%" |
137 end |
172 end |
138 |
173 |
139 ShowMission(loc("Gravity"), |
174 ShowMission(loc("Gravity"), |
146 if script2_onGameStart ~= nil then |
181 if script2_onGameStart ~= nil then |
147 script2_onGameStart() |
182 script2_onGameStart() |
148 end |
183 end |
149 end |
184 end |
150 |
185 |
151 |
186 function grav_onHogAttack(ammoType) |
|
187 if ammoType == amLowGravity then |
|
188 lowGravityUsed = true |
|
189 if maxgravity_normal == nil then |
|
190 gravity = mingravity_low |
|
191 else |
|
192 mingravity = mingravity_low |
|
193 maxgravity = maxgravity_low |
|
194 if period > 0 then |
|
195 delta = div(maxgravity_low - mingravity_low, period) |
|
196 end |
|
197 end |
|
198 end |
|
199 if script2_onHogAttack ~= nil then |
|
200 script2_onHogAttack() |
|
201 end |
|
202 end |