155 GL_TEXTURE_PRIORITY = $8066; |
167 GL_TEXTURE_PRIORITY = $8066; |
156 {$ENDIF} |
168 {$ENDIF} |
157 |
169 |
158 cVisibleWater : LongInt = 128; |
170 cVisibleWater : LongInt = 128; |
159 cTeamHealthWidth : LongInt = 128; |
171 cTeamHealthWidth : LongInt = 128; |
|
172 cGearContourThreshold : LongInt = 179; // if water opacity is higher than this, draw contour for some gears when in water |
160 |
173 |
161 cifRandomize = $00000001; |
174 cifRandomize = $00000001; |
162 cifTheme = $00000002; |
175 cifTheme = $00000002; |
163 cifMap = $00000002; // either theme or map (or map+theme) |
176 cifMap = $00000002; // either theme or map (or map+theme) |
164 cifAllInited = cifRandomize or cifTheme or cifMap; |
177 cifAllInited = cifRandomize or cifTheme or cifMap; |
165 |
178 |
166 RGB_LUMINANCE_RED = 0.212671; |
179 RGB_LUMINANCE_RED = 0.212671; |
167 RGB_LUMINANCE_GREEN = 0.715160; |
180 RGB_LUMINANCE_GREEN = 0.715160; |
168 RGB_LUMINANCE_BLUE = 0.072169; |
181 RGB_LUMINANCE_BLUE = 0.072169; |
169 |
182 |
170 cMaxTeams = 8; |
183 // hedgehog info |
171 cMaxHHIndex = 7; |
184 cMaxTeams = 8; // maximum number of teams |
172 cMaxHHs = 48; |
185 cMaxHHIndex = 7; // maximum hedgehog index (counting starts at 0) |
|
186 // NOTE: If you change cMaxHHIndex, also change cMaxHogHealth! |
|
187 cMaxHHs = cMaxTeams * (cMaxHHIndex+1); // maximum number of hogs |
|
188 |
|
189 cClanColors = 9; // number of possible clan colors |
173 |
190 |
174 cMaxEdgePoints = 32768; |
191 cMaxEdgePoints = 32768; |
175 |
192 |
176 cHHRadius = 9; |
193 cBorderWidth = 6; // width of indestructible border |
|
194 // width of 3 allowed hogs to be knocked through with grenade |
|
195 |
|
196 cHHRadius = 9; // hedgehog radius |
177 cHHStepTicks = 29; |
197 cHHStepTicks = 29; |
178 |
198 |
|
199 cMaxHogHealth = 268435455; // maximum hedgehog health |
|
200 // cMaxHogHealth was calculated by: High(LongInt) div (cMaxHHIndex+1); |
|
201 |
|
202 ouchDmg = 55; // least amount of damage a hog must take in one blow for sndOuch to play |
|
203 |
|
204 // Z levels |
179 cHHZ = 1000; |
205 cHHZ = 1000; |
180 cCurrHHZ = Succ(cHHZ); |
206 cCurrHHZ = Succ(cHHZ); |
181 |
207 |
182 cBarrelHealth = 60; |
208 // some gear constants |
183 cShotgunRadius = 22; |
209 cBarrelHealth = 60; // initial barrel health |
184 cBlowTorchC = 6; |
210 cShotgunRadius = 22; // radius of land a shotgun shot destroys |
185 cakeDmg = 75; |
211 cBlowTorchC = 6; // blow torch gear radius component (added to cHHRadius to get the full radius) |
186 |
212 cakeDmg = 75; // default cake damage |
|
213 |
|
214 // key stuff |
187 cKeyMaxIndex = 1600; |
215 cKeyMaxIndex = 1600; |
188 cKbdMaxIndex = 65536;//need more room for the modifier keys |
216 cKbdMaxIndex = 65536;//need more room for the modifier keys |
189 |
217 |
|
218 // font stuff |
190 cFontBorder = 2 * HDPIScaleFactor; |
219 cFontBorder = 2 * HDPIScaleFactor; |
191 cFontPadding = 2 * HDPIScaleFactor; |
220 cFontPadding = 2 * HDPIScaleFactor; |
192 |
221 |
193 cDefaultBuildMaxDist = 256; |
222 cDefaultBuildMaxDist = 256; // default max. building distance with girder/rubber |
|
223 cResurrectorDist = 100; // effect distance of resurrector |
|
224 cSeductionDist = 250; // effect distance of seduction |
|
225 |
|
226 ExtraTime = 30000; // amount of time (ms) given for using Extra Time |
194 |
227 |
195 // do not change this value |
228 // do not change this value |
196 cDefaultZoomLevel = 2.0; |
229 cDefaultZoomLevel = 2.0; // 100% zoom |
197 |
230 |
198 cBaseChatFontHeight = 12; |
231 cBaseChatFontHeight = 12; |
199 cChatScaleRelDelta = 0.1; |
232 cChatScaleRelDelta = 0.1; |
200 cMinChatScaleValue = 0.8; |
233 cMinChatScaleValue = 0.8; |
201 cMaxChatScaleValue = 20.0; |
234 cMaxChatScaleValue = 20.0; |
202 |
235 |
203 cDefaultUIScaleLevel = 1.0; |
236 cDefaultUIScaleLevel = 1.0; |
204 |
237 |
205 // game flags |
238 // game flags |
206 gfAny = $FFFFFFFF; |
239 gfAny = $FFFFFFFF; // mask for all possible gameflags |
207 gfOneClanMode = $00000001; // used in trainings |
240 gfOneClanMode = $00000001; // Game does not end if there's only one clan in play. For missions |
208 gfMultiWeapon = $00000002; // used in trainings |
241 gfMultiWeapon = $00000002; // Enter multishoot mode after attack with infinite shots. For target practice |
209 gfSolidLand = $00000004; |
242 gfSolidLand = $00000004; // (almost) indestrutible land |
210 gfBorder = $00000008; |
243 gfBorder = $00000008; // border at top, left and right |
211 gfDivideTeams = $00000010; |
244 gfDivideTeams = $00000010; // each clan spawns their hogs on own side of terrain |
212 gfLowGravity = $00000020; |
245 gfLowGravity = $00000020; // low gravity |
213 gfLaserSight = $00000040; |
246 gfLaserSight = $00000040; // laser sight for all |
214 gfInvulnerable = $00000080; |
247 gfInvulnerable = $00000080; // invulerable for all |
215 gfResetHealth = $00000100; |
248 gfResetHealth = $00000100; // heal hogs health up to InitialHealth each turn |
216 gfVampiric = $00000200; |
249 gfVampiric = $00000200; // vampirism for all |
217 gfKarma = $00000400; |
250 gfKarma = $00000400; // receive damage you deal |
218 gfArtillery = $00000800; |
251 gfArtillery = $00000800; // hogs can't walk |
219 gfSwitchHog = $00001000; |
252 gfSwitchHog = $00001000; // free switch hog at turn start |
220 gfRandomOrder = $00002000; |
253 gfRandomOrder = $00002000; // hogs play in random order |
221 gfKing = $00004000; |
254 gfKing = $00004000; // King Mode |
222 gfPlaceHog = $00008000; |
255 gfPlaceHog = $00008000; // place all hogs at game start |
223 gfSharedAmmo = $00010000; |
256 gfSharedAmmo = $00010000; // ammo is shared per-clan |
224 gfDisableGirders = $00020000; |
257 gfDisableGirders = $00020000; // disable land girders |
225 gfDisableLandObjects = $00040000; |
258 gfDisableLandObjects = $00040000; // disable land objects |
226 gfAISurvival = $00080000; |
259 gfAISurvival = $00080000; // AI is revived |
227 gfInfAttack = $00100000; |
260 gfInfAttack = $00100000; // infinite attack |
228 gfResetWeps = $00200000; |
261 gfResetWeps = $00200000; // reset weapons each turn |
229 gfPerHogAmmo = $00400000; |
262 gfPerHogAmmo = $00400000; // each hog has its own ammo |
230 gfDisableWind = $00800000; |
263 gfDisableWind = $00800000; // don't automatically change wind |
231 gfMoreWind = $01000000; |
264 gfMoreWind = $01000000; // wind influences most gears |
232 gfTagTeam = $02000000; |
265 gfTagTeam = $02000000; // hogs of same clan share their turn time |
233 gfBottomBorder = $04000000; |
266 gfBottomBorder = $04000000; // border at bottom |
234 gfShoppaBorder = $08000000; |
267 gfShoppaBorder = $08000000; // Surround terrain with fancy "security border". Pure eye candy |
235 // NOTE: When adding new game flags, ask yourself |
268 // NOTE: When adding new game flags, ask yourself |
236 // if a "game start notice" would be useful. If so, |
269 // if a "game start notice" would be useful. If so, |
237 // add one in uWorld.pas - look for "AddGoal". |
270 // add one in uWorld.pas - look for "AddGoal". |
238 |
271 |
239 // gear states |
272 // gear states |
240 gstDrowning = $00000001; |
273 gstDrowning = $00000001; // drowning |
241 gstHHDriven = $00000002; |
274 gstHHDriven = $00000002; // hog is controlled by current player |
242 gstMoving = $00000004; |
275 gstMoving = $00000004; // moving |
243 gstAttacked = $00000008; |
276 gstAttacked = $00000008; // after attack |
244 gstAttacking = $00000010; |
277 gstAttacking = $00000010; // while attacking |
245 gstCollision = $00000020; |
278 gstCollision = $00000020; // it has *just* collided |
246 gstChooseTarget = $00000040; |
279 gstChooseTarget = $00000040; // choosing target |
247 gstHHJumping = $00000100; |
280 gstHHJumping = $00000100; // hog is doing long jump |
248 gsttmpFlag = $00000200; |
281 gsttmpFlag = $00000200; // temporary wildcard flag, use it for anything you want |
249 gstHHThinking = $00000800; |
282 gstHHThinking = $00000800; // AI hog is thinking |
250 gstNoDamage = $00001000; |
283 gstNoDamage = $00001000; // gear is immune to damage |
251 gstHHHJump = $00002000; |
284 gstHHHJump = $00002000; // hog is doing high jump |
252 gstAnimation = $00004000; |
285 gstAnimation = $00004000; // hog is playing an animation |
253 gstHHDeath = $00008000; |
286 gstHHDeath = $00008000; // hog is dying |
254 gstWinner = $00010000; // this, along with gstLoser, is good for indicating hedgies know they screwed up |
287 gstWinner = $00010000; // indicates if hog did well |
255 gstWait = $00020000; |
288 gstWait = $00020000; |
256 gstNotKickable = $00040000; |
289 gstNotKickable = $00040000; // gear cannot be pushed by forces |
257 gstLoser = $00080000; |
290 gstLoser = $00080000; // indicates if hog screwed up |
258 gstHHGone = $00100000; |
291 gstHHGone = $00100000; // hog is gone (teamgone event) |
259 gstInvisible = $00200000; |
292 gstInvisible = $00200000; // invisible |
260 gstSubmersible = $00400000; |
293 gstSubmersible = $00400000; // can survive in water |
261 gstFrozen = $00800000; |
294 gstFrozen = $00800000; // frozen |
262 gstNoGravity = $01000000; |
295 gstNoGravity = $01000000; // ignores gravity |
|
296 gstInBounceEdge = $02000000; // spawned in bounce edge |
263 |
297 |
264 // gear messages |
298 // gear messages |
265 gmLeft = $00000001; |
299 gmLeft = $00000001; // left |
266 gmRight = $00000002; |
300 gmRight = $00000002; // right |
267 gmUp = $00000004; |
301 gmUp = $00000004; // up |
268 gmDown = $00000008; |
302 gmDown = $00000008; // down |
269 gmSwitch = $00000010; |
303 gmSwitch = $00000010; // switch hedgehog |
270 gmAttack = $00000020; |
304 gmAttack = $00000020; // attack |
271 gmLJump = $00000040; |
305 gmLJump = $00000040; // long jump |
272 gmHJump = $00000080; |
306 gmHJump = $00000080; // high jump |
273 gmDestroy = $00000100; |
307 gmDestroy = $00000100; // request to self-destruct |
274 gmSlot = $00000200; // with param |
308 gmSlot = $00000200; // slot key; with param |
275 gmWeapon = $00000400; // with param |
309 gmWeapon = $00000400; // direct weapon selection (SetWeapon); with param |
276 gmTimer = $00000800; // with param |
310 gmTimer = $00000800; // set timer; with param |
277 gmAnimate = $00001000; // with param |
311 gmAnimate = $00001000; // start animation; with param |
278 gmPrecise = $00002000; |
312 gmPrecise = $00002000; // precise aim |
279 |
313 |
280 gmRemoveFromList = $00004000; |
314 // gmAddToList and gmRemoveFromList are used when changing order of gears in the gear list. They are used together when changing a gear's Z (drawing order) |
281 gmAddToList = $00008000; |
315 gmRemoveFromList = $00004000; // remove gear from gear list |
282 gmDelete = $00010000; |
316 gmAddToList = $00008000; // add gear to gear list |
|
317 |
|
318 gmDelete = $00010000; // delete gear |
283 gmAllStoppable = gmLeft or gmRight or gmUp or gmDown or gmAttack or gmPrecise; |
319 gmAllStoppable = gmLeft or gmRight or gmUp or gmDown or gmAttack or gmPrecise; |
284 |
320 |
285 cMaxSlotIndex = 10; |
321 // ammo slots |
|
322 cMaxSlotIndex = 10; // maximum slot index (including hidden slot) (row in ammo menu) |
286 cHiddenSlotIndex = cMaxSlotIndex; // slot for hidden ammo types, not visible and has no key |
323 cHiddenSlotIndex = cMaxSlotIndex; // slot for hidden ammo types, not visible and has no key |
287 cMaxSlotAmmoIndex = 6; |
324 cMaxSlotAmmoIndex = 5; // maximum index for ammos per slot (column in ammo menu) |
288 |
325 |
289 // ai hints |
326 // AI hints to be set for any gear |
290 aihUsualProcessing = $00000000; |
327 aihUsualProcessing = $00000000; // treat gear as usual |
291 aihDoesntMatter = $00000001; |
328 aihDoesntMatter = $00000001; // ignore gear in attack calculations and don't intentionally attack it |
292 |
329 |
293 // ammo properties |
330 // ammo properties |
294 ammoprop_Timerable = $00000001; |
331 ammoprop_Timerable = $00000001; // can set timer |
295 ammoprop_Power = $00000002; |
332 ammoprop_Power = $00000002; // can power up fire strength |
296 ammoprop_NeedTarget = $00000004; |
333 ammoprop_NeedTarget = $00000004; // must select target |
297 ammoprop_ForwMsgs = $00000008; |
334 ammoprop_ForwMsgs = $00000008; // received gear messages are forwarded to the spawned gear |
298 ammoprop_AttackInMove = $00000010; |
335 ammoprop_AttackInMove = $00000010; // can attack while moving / in mid-air |
299 ammoprop_DoesntStopTimerWhileAttacking |
336 ammoprop_DoesntStopTimerWhileAttacking |
300 = $00000020; |
337 = $00000020; // doesn't stop timer while attacker is attacking |
301 ammoprop_NoCrosshair = $00000040; |
338 ammoprop_NoCrosshair = $00000040; // no crosshair rendered |
302 ammoprop_AttackingPut = $00000080; |
339 ammoprop_AttackingPut = $00000080; // selecting a target is considered an attack |
303 ammoprop_DontHold = $00000100; |
340 ammoprop_DontHold = $00000100; // don't keep ammo selected in next turn |
304 ammoprop_AltAttack = $00000200; |
341 ammoprop_AltAttack = $00000200; // ammo can equip alternate ammo (ammoprop_AltUse) |
305 ammoprop_AltUse = $00000400; |
342 ammoprop_AltUse = $00000400; // ammo can be equipped by an ammo with ammoprop_AltAttack |
306 ammoprop_NotBorder = $00000800; |
343 ammoprop_NotBorder = $00000800; // ammo is not available if map has border |
307 ammoprop_Utility = $00001000; |
344 ammoprop_Utility = $00001000; // ammo is considered an utility instead of a weapon |
308 ammoprop_Effect = $00002000; |
345 ammoprop_Effect = $00002000; // ammo is considered an effect like extra time or vampirism |
309 ammoprop_SetBounce = $00004000; |
346 ammoprop_SetBounce = $00004000; // can set bounciness |
310 ammoprop_NeedUpDown = $00008000;//Used by TouchInterface to show or hide up/down widgets |
347 ammoprop_NeedUpDown = $00008000; // used by TouchInterface to show or hide up/down widgets |
311 ammoprop_OscAim = $00010000; |
348 ammoprop_OscAim = $00010000; // oscillating aim |
312 ammoprop_NoMoveAfter = $00020000; |
349 ammoprop_NoMoveAfter = $00020000; // can't move after attacking |
313 ammoprop_Track = $00040000; |
350 ammoprop_Track = $00040000; // ammo follows the landscape, used by AI |
314 ammoprop_DoesntStopTimerInMultiShoot |
351 ammoprop_DoesntStopTimerInMultiShoot |
315 = $00080000; |
352 = $00080000; // doesn't stop timer after entering multi-shoot mode |
316 ammoprop_DoesntStopTimerWhileAttackingInInfAttackMode |
353 ammoprop_DoesntStopTimerWhileAttackingInInfAttackMode |
317 = $00100000; |
354 = $00100000; // doesn't stop timer while Attacking gear msg is set and inf. attack mode is on |
318 ammoprop_ForceTurnEnd = $00200000; |
355 ammoprop_ForceTurnEnd = $00200000; // always ends turn after usage, ignoring inf. attack |
319 ammoprop_NoTargetAfter= $00400000; |
356 ammoprop_NoTargetAfter= $00400000; // disable target selection after attack |
320 ammoprop_NoRoundEnd = $10000000; |
357 ammoprop_NoWrapTarget = $00800000; // allow to select target beyond wrap world edge limits |
321 |
358 ammoprop_ShowSelIcon = $01000000; // show icon when selected |
322 AMMO_INFINITE = 100; |
359 ammoprop_NoRoundEnd = $10000000; // ammo doesn't end turn |
323 AMMO_FINITE_MAX = 99; |
360 |
|
361 AMMO_INFINITE = 100; // internal representation of infinite ammo count |
|
362 AMMO_FINITE_MAX = 99; // maximum possible finite ammo count |
|
363 |
|
364 JETPACK_FUEL_INFINITE : LongInt = Low(LongInt); // internal representation of infinite jetpack fuel |
|
365 BIRDY_ENERGY_INFINITE : LongInt = Low(LongInt); // as above, but for Birdy |
|
366 |
|
367 // Special msgParam value used internally for invalid/non-existing value |
|
368 // Must not be sent over the network! |
|
369 MSGPARAM_INVALID = High(LongWord); |
|
370 |
|
371 // raw probability values for crate drops |
|
372 probabilityLevels: array [0..8] of LongWord = (0,20,30,60,100,200,400,600,800); |
|
373 |
|
374 // raw bounciness values for each of the player-selectable bounciness levels |
|
375 defaultBounciness = 1000; |
|
376 bouncinessLevels: array [0..4] of LongWord = (350, 700, defaultBounciness, 2000, 4000); |
324 |
377 |
325 // explosion flags |
378 // explosion flags |
|
379 // By default, an explosion removes land, damages and pushes gears, |
|
380 // spawns an explosion animation and plays no sound. |
326 //EXPLAllDamageInRadius = $00000001; Completely unused for ages |
381 //EXPLAllDamageInRadius = $00000001; Completely unused for ages |
327 EXPLAutoSound = $00000002; |
382 EXPLAutoSound = $00000002; // enable sound (if appropriate) |
328 EXPLNoDamage = $00000004; |
383 EXPLNoDamage = $00000004; // don't damage gears |
329 EXPLDoNotTouchHH = $00000008; |
384 EXPLDoNotTouchHH = $00000008; // don't push hogs |
330 EXPLDontDraw = $00000010; |
385 EXPLDontDraw = $00000010; // don't remove land |
331 EXPLNoGfx = $00000020; |
386 EXPLNoGfx = $00000020; // don't spawn visual effects |
332 EXPLPoisoned = $00000040; |
387 EXPLPoisoned = $00000040; // poison hogs in effect radius |
333 EXPLDoNotTouchAny = $00000080; |
388 EXPLDoNotTouchAny = $00000080; // don't push anything |
334 |
389 EXPLForceDraw = $00000100; // remove land even with gfSolidLand |
335 posCaseAmmo = $00000001; |
390 |
336 posCaseHealth = $00000002; |
391 // Pos flags for gtCase |
337 posCaseUtility = $00000004; |
392 posCaseAmmo = $00000001; // ammo crate |
338 posCaseDummy = $00000008; |
393 posCaseHealth = $00000002; // health crate |
339 posCaseExplode = $00000010; |
394 posCaseUtility = $00000004; // utility crate |
340 posCasePoison = $00000020; |
395 posCaseDummy = $00000008; // dummy crate |
|
396 posCaseExplode = $00000010; // crate explodes when touched |
|
397 posCasePoison = $00000020; // crate poisons hog when touched |
341 |
398 |
342 cCaseHealthRadius = 14; |
399 cCaseHealthRadius = 14; |
343 |
400 |
344 // hog tag mask |
401 // hog tag mask |
345 //htNone = $00; |
402 //htNone = $00; |
346 htTeamName = $01; |
403 htTeamName = $01; |
347 htName = $02; |
404 htName = $02; |
348 htHealth = $04; |
405 htHealth = $04; |
349 htTransparent = $08; |
406 htTransparent = $08; |
350 |
407 |
351 NoPointX = Low(LongInt); |
408 NoPointX = Low(LongInt); // special value for CursorX/CursorY if cursor's disabled |
352 cTargetPointRef : TPoint = (x: NoPointX; y: 0); |
409 cTargetPointRef : TPoint = (x: NoPointX; y: 0); |
353 |
410 |
354 kSystemSoundID_Vibrate = $00000FFF; |
411 kSystemSoundID_Vibrate = $00000FFF; |
355 |
412 |
356 cMinPlayWidth = 200; |
413 cMinPlayWidth = 200; |
357 cWorldEdgeDist = 200; |
414 cWorldEdgeDist = 200; |
358 |
415 |
|
416 cMaxLaserSightWraps = 1; // maximum number of world wraps of laser sight |
|
417 |
|
418 cMaxTurnTime = Pred(High(LongInt)); // maximum possible turn time |
|
419 |
359 implementation |
420 implementation |
360 |
421 |
361 end. |
422 end. |