1 (* 2 * Hedgewars, a free turn based strategy game 3 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 *) 18 19 {$INCLUDE "options.inc"} 20 21 unit uVariables; 22 interface 23 24 uses SDLh, uTypes, uFloat, GLunit, uConsts, Math, uUtils{$IFDEF GL2}, uMatrix{$ENDIF}; 25 26 procedure initScreenSpaceVars(); 27 28 var 29 /////// init flags /////// 30 cMinScreenWidth : LongInt; 31 cMinScreenHeight : LongInt; 32 cFullscreenWidth : LongInt; 33 cFullscreenHeight : LongInt; 34 cWindowedWidth : LongInt; 35 cWindowedHeight : LongInt; 36 cWindowedMaximized : boolean; 37 cScreenWidth : LongInt; 38 cScreenHeight : LongInt; 39 cNewScreenWidth : LongInt; 40 cNewScreenHeight : LongInt; 41 cScreenResizeDelay : LongWord; 42 ipcPort : Word; 43 AprilOne : boolean; 44 cFullScreen : boolean; 45 cLanguageFName : shortstring; 46 cLanguage : shortstring; 47 cTimerInterval : LongInt; 48 PathPrefix : ansistring; 49 UserPathPrefix : ansistring; 50 cShowFPS : boolean; 51 cFlattenFlakes : boolean; 52 cFlattenClouds : boolean; 53 cIce : boolean; 54 cSnow : boolean; 55 isInChatMode : boolean; 56 57 cAltDamage : boolean; 58 cReducedQuality : LongWord; 59 cHolidaySilliness : boolean; 60 UserNick : shortstring; 61 recordFileName : shortstring; 62 cReadyDelay : Longword; 63 cStereoMode : TStereoMode; 64 cOnlyStats : boolean; 65 {$IFDEF USE_VIDEO_RECORDING} 66 RecPrefix : shortstring; 67 cAVFormat : shortstring; 68 cVideoCodec : shortstring; 69 cVideoFramerateNum : LongInt; 70 cVideoFramerateDen : LongInt; 71 cVideoQuality : LongInt; 72 cAudioCodec : shortstring; 73 {$ENDIF} 74 ////////////////////////// 75 cMapName : shortstring; 76 syncedPixelDigest : LongInt; 77 isCursorVisible : boolean; 78 isInLag : boolean; 79 isPaused : boolean; 80 isInMultiShoot : boolean; 81 isSpeed : boolean; 82 isAFK : boolean; 83 isShowMission : boolean; 84 isShowGearInfo : boolean; 85 isForceMission : boolean; 86 SpeedStart : LongWord; 87 88 fastUntilLag : boolean; 89 fastScrolling : boolean; 90 autoCameraOn : boolean; 91 92 CheckSum : LongWord; 93 CampaignVariable: shortstring; 94 MissionVariable : shortstring; 95 GameTicks : LongWord; 96 OuchTauntTimer : LongWord; // Timer which blocks sndOuch from being played too often and fast 97 GameState : TGameState; 98 GameType : TGameType; 99 InputMask : LongWord; 100 GameFlags : Longword; 101 WorldEdge : TWorldEdge; 102 LeftImpactTimer : LongWord; 103 RightImpactTimer: LongWord; 104 TurnTimeLeft : Longword; 105 TurnClockActive : boolean; 106 TagTurnTimeLeft : Longword; 107 ReadyTimeLeft : Longword; 108 IsGetAwayTime : boolean; 109 GameOver : boolean; 110 cSuddenDTurns : LongInt; 111 LastSuddenDWarn : LongInt; // last round in which the last SD warning appeared. -2 = no warning so far 112 cInitHealth : LongInt; // initial hedgehog health (from game scheme. note the real hog health is sent directly 113 // from frontend, this is only used to inform Lua scripts) 114 cDamagePercent : LongInt; 115 cMineDudPercent : LongWord; 116 cTemplateFilter : LongInt; 117 cFeatureSize : LongInt; 118 cMapGen : TMapGen; 119 cRopePercent : LongWord; 120 cRopeNodeStep : LongWord; 121 cRopeLayers : LongInt; 122 cGetAwayTime : LongWord; 123 124 cAdvancedMapGenMode: boolean; 125 126 cHedgehogTurnTime: Longword; 127 cMinesTime : LongInt; 128 cMaxAIThinkTime : Longword; 129 130 cHealthCaseProb : LongInt; 131 cHealthCaseAmount: LongInt; 132 cWaterRise : LongInt; 133 cHealthDecrease : LongInt; 134 135 cCloudsNumber : LongWord; 136 cSDCloudsNumber : LongWord; 137 138 cTagsMask : byte; 139 cPrevTagsMask : byte; 140 zoom : GLfloat; // current zoom 141 ZoomValue : GLfloat; // aimed zoom 142 UserZoom : GLfloat; // user-chosen initial and default zoom 143 144 cWaterLine : LongInt; 145 cGearScrEdgesDist: LongInt; 146 isAudioMuted : boolean; 147 148 // originally typed consts 149 ExplosionBorderColorR, 150 ExplosionBorderColorG, 151 ExplosionBorderColorB, 152 ExplosionBorderColorNoA, 153 ExplosionBorderColor: LongWord; 154 IceColor : LongWord; 155 IceEdgeColor : LongWord; 156 WaterOpacity: byte; 157 SDWaterOpacity: byte; 158 GrayScale: Boolean; 159 160 CountTexz: array[0..Pred(AMMO_INFINITE)] of PTexture; 161 LAND_WIDTH : LongInt; 162 LAND_HEIGHT : LongInt; 163 LAND_WIDTH_MASK : LongWord; 164 LAND_HEIGHT_MASK : LongWord; 165 166 ChefHatTexture : PTexture; 167 CrosshairTexture : PTexture; 168 GenericHealthTexture : PTexture; 169 170 cLeftScreenBorder : LongInt; 171 cRightScreenBorder : LongInt; 172 cScreenSpace : Longword; 173 174 cCaseFactor : Longword; 175 cMaxCaseDrops : Longword; // Max. number of crates which can be in the game when dropping 176 177 cLandMines : Longword; 178 cAirMines : Longword; 179 cExplosives : Longword; 180 181 cScriptName : shortstring; 182 cScriptParam : shortstring; 183 cSeed : shortstring; 184 cIsSoundEnabled : boolean; // If the sound system is enabled 185 cVolumeDelta : LongInt; 186 cVolumeUpKey : boolean; 187 cVolumeDownKey : boolean; 188 cMuteToggle : boolean; // Mute toggle requested 189 cHasFocus : boolean; 190 cInactDelay : Longword; 191 192 bBetweenTurns : boolean; 193 bWaterRising : boolean; 194 bDuringWaterRise: boolean; 195 196 CrosshairX : LongInt; 197 CrosshairY : LongInt; 198 CrosshairGear : PGear; 199 CursorMovementX : LongInt; 200 CursorMovementY : LongInt; 201 cWaveHeight : LongInt; 202 cDrownSpeed : hwFloat; 203 cDrownSpeedf : real; 204 cMaxWindSpeed : hwFloat; 205 cWindSpeed : hwFloat; 206 cWindSpeedf : real; 207 cElastic : hwFloat; 208 cGravity : hwFloat; 209 cGravityf : real; 210 cLowGravity : boolean; 211 cBuildMaxDist : LongInt; 212 cDamageModifier : hwFloat; 213 cLaserSighting : boolean; 214 cLaserSightingSniper : boolean; 215 cVampiric : boolean; 216 WeaponTooltipTex: PTexture; 217 AmmoMenuInvalidated: boolean; 218 AmmoRect : TSDL_Rect; 219 HHTexture : PTexture; 220 cMaxZoomLevel : real; 221 cMinZoomLevel : real; 222 cZoomDelta : real; 223 cZoomDeltaSmall : real; 224 cMinMaxZoomLevelDelta : real; 225 cDemoClockFPSOffsetY : LongInt; 226 227 228 flagMakeCapture : boolean; 229 flagDumpLand : boolean; 230 231 InitStepsFlags : Longword; 232 RealTicks : Longword; 233 AttackBar : LongInt; 234 235 WaterColorArray : array[0..7] of HwColor4f; 236 SDWaterColorArray : array[0..7] of HwColor4f; 237 ClanColorArray : array[0..Pred(cClanColors)] of Longword; 238 239 TargetCursorPoint : TPoint; 240 CursorPoint : TPoint; 241 CursorPointDelta : TPoint; 242 TargetPoint : TPoint; 243 244 ScreenFade : TScreenFade; 245 ScreenFadeValue : LongInt; 246 ScreenFadeSpeed : LongInt; 247 InCinematicMode : boolean; 248 CinematicSteps : LongInt; 249 CinematicBarH : LongInt; 250 CinematicScript : boolean; 251 252 UIDisplay : TUIDisplay; 253 LocalMessage : LongWord; 254 255 Theme : shortstring; 256 disableLandBack : boolean; 257 258 WorldDx: LongInt; 259 WorldDy: LongInt; 260 261 SpeechHogNumber: LongInt; 262 263 // for tracking the limits of the visible grid based on cScaleFactor 264 ViewLeftX, ViewRightX, ViewBottomY, ViewTopY, ViewWidth, ViewHeight: LongInt; 265 266 // for debugging the view limits visually 267 cViewLimitsDebug: boolean; 268 269 dirtyLandTexCount: LongInt; 270 271 hiTicks: Word; 272 273 LuaGoals : ansistring; 274 275 LuaTemplateNumber : LongWord; 276 277 // for EndTurn Lua call 278 LuaEndTurnRequested: boolean; 279 LuaNoEndTurnTaunts: boolean; 280 281 // whether Lua requested to pause the clock 282 LuaClockPaused: boolean; 283 284 // whether /lua command was used 285 LuaCmdUsed: boolean; 286 287 MaskedSounds : array[TSound] of boolean; 288 289 LastVoice : TVoice; 290 291 mobileRecord: TMobileRecord; 292 293 MaxTextureSize: LongInt; 294 295 SDLwindow: PSDL_Window; 296 SDLGLcontext: PSDL_GLContext; 297 298 ///////////////////////////////////// 299 //Buttons 300 {$IFDEF USE_TOUCH_INTERFACE} 301 buttonScale: GLFloat; 302 bounceButtonPressed: boolean; 303 304 arrowUp, arrowDown, arrowLeft, arrowRight : TOnScreenWidget; 305 firebutton, jumpWidget, AMWidget : TOnScreenWidget; 306 pauseButton, utilityWidget : TOnScreenWidget; 307 utilityWidget2 : TOnScreenWidget; 308 {$ENDIF} 309 310 311 var 312 // these consts are here because they would cause circular dependencies in uConsts/uTypes 313 cPathz: array[TPathType] of shortstring; 314 315 const 316 cPathzInit: array[TPathType] of shortstring = ( 317 '', // ptNone 318 '//', // ptData 319 '/Graphics', // ptGraphics 320 '/Themes', // ptThemes 321 '/Themes/Nature', // ptCurrTheme 322 '/Config', // ptConfig 323 '/Config/Teams', // ptTeams 324 '/Maps', // ptMaps 325 '', // ptMapCurrent 326 '/Demos', // ptDemos 327 '/Sounds', // ptSounds 328 '/Graphics/Graves', // ptGraves 329 '/Fonts', // ptFonts 330 '/Forts', // ptForts 331 '/Locale', // ptLocale 332 '/Graphics/AmmoMenu', // ptAmmoMenu 333 '/Graphics/Hedgehog', // ptHedgehog 334 '/Sounds/voices', // ptVoices 335 '/Graphics/Hats', // ptHats 336 '/Graphics/Flags', // ptFlags 337 '/Missions/Maps', // ptMissionMaps 338 '/Graphics/SuddenDeath', // ptSuddenDeath 339 '/Graphics/Buttons', // ptButton 340 '/Shaders', // ptShaders 341 '/Sounds/voices/Default', // ptDefaultVoice 342 '/misc' // ptMisc 343 ); 344 345 var 346 Fontz: array[THWFont] of THHFont; 347 348 const 349 FontzInit: array[THWFont] of THHFont = ( 350 (Handle: nil; 351 Height: 12*HDPIScaleFactor; 352 style: TTF_STYLE_NORMAL; 353 Name: 'DejaVuSans-Bold.ttf'), 354 (Handle: nil; 355 Height: 24*HDPIScaleFactor; 356 style: TTF_STYLE_NORMAL; 357 Name: 'DejaVuSans-Bold.ttf'), 358 (Handle: nil; 359 Height: 10*HDPIScaleFactor; 360 style: TTF_STYLE_NORMAL; 361 Name: 'DejaVuSans-Bold.ttf') 362 {$IFNDEF MOBILE}, // remove chinese fonts for now 363 (Handle: nil; 364 Height: 12*HDPIScaleFactor; 365 style: TTF_STYLE_NORMAL; 366 Name: 'wqy-zenhei.ttc'), 367 (Handle: nil; 368 Height: 24*HDPIScaleFactor; 369 style: TTF_STYLE_NORMAL; 370 Name: 'wqy-zenhei.ttc'), 371 (Handle: nil; 372 Height: 10*HDPIScaleFactor; 373 style: TTF_STYLE_NORMAL; 374 Name: 'wqy-zenhei.ttc') 375 {$ENDIF} 376 ); 377 378 var 379 SpritesData: array[TSprite] of TSpriteData; 380 381 const 382 SpritesDataInit: array[TSprite] of TSpriteData = ( 383 (FileName: 'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 384 Width: 0; Height: -1; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprWater 385 (FileName: 'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 386 Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCloud 387 (FileName: 'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 388 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBomb 389 (FileName: 'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 390 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigit 391 (FileName: 'BigDigitsGray'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 392 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigitGray 393 (FileName: 'BigDigitsGreen'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 394 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigitGreen 395 (FileName: 'BigDigitsRed'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 396 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigitRed 397 (FileName: 'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 398 Width: 4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFrame 399 (FileName: 'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 400 Width: 65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLag 401 (FileName: 'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 402 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCursor 403 (FileName:'BazookaShell'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 404 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBazookaShell 405 (FileName: 'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 406 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetP 407 (FileName: 'Bee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 408 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBee 409 (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 410 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeTrace 411 (FileName: 'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 412 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprRopeHook 413 (FileName: 'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 414 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosion50 415 (FileName: 'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 416 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOff 417 (FileName: 'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 418 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOn 419 (FileName: 'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 420 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineDead 421 (FileName: 'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 422 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCase 423 (FileName: 'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 424 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprFAid 425 (FileName: 'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 426 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDynamite 427 (FileName: 'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 428 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprPower 429 (FileName: 'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 430 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterBomb 431 (FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 432 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterParticle 433 (FileName: 'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 434 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlame 435 (FileName: 'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 436 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont 437 (FileName: 'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 438 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizontL 439 (FileName: 'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 440 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizontR 441 (FileName: 'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 442 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky 443 (FileName: 'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 444 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSkyL 445 (FileName: 'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil; 446 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSkyR 447 (FileName: 'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 448 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot 449 (FileName: 'Ammos_base'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 450 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMAmmos 451 (FileName: 'Ammos_bw_base'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 452 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprAMAmmosBW 453 (FileName: 'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 454 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlotKeys 455 (FileName: 'Corners'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 456 Width: 2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners 457 (FileName: 'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 458 Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFinger 459 (FileName: 'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 460 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirBomb 461 (FileName: 'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 462 Width: 256; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirplane 463 (FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 464 Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmAirplane 465 (FileName: 'amGirder'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 466 Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmGirder 467 (FileName: 'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 468 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHHTelepMask 469 (FileName: 'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 470 Width: 40; Height: 40; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSwitch 471 (FileName: 'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 472 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprParachute 473 (FileName: 'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 474 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTarget 475 (FileName: 'RopeNode'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 476 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprRopeNode 477 (FileName: 'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 478 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprQuestion 479 (FileName: 'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 480 Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPowerBar 481 (FileName: 'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 482 Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindBar 483 (FileName: 'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 484 Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindL 485 (FileName: 'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 486 Width: 80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindR 487 {$IFDEF USE_TOUCH_INTERFACE} 488 (FileName: 'firebutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 489 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprFireButton 490 (FileName: 'arrowup'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 491 Width: 100; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprArrowUp 492 (FileName: 'arrowdown'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 493 Width: 100; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprArrowDown 494 (FileName: 'arrowleft'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 495 Width: 100; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprArrowLeft 496 (FileName: 'arrowright'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 497 Width: 100; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprArrowRight 498 (FileName: 'forwardjump'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 499 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprAMWidget 500 (FileName: 'backjump'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 501 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprJumpWidget 502 (FileName: 'pause'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 503 Width: 120; Height: 100; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprPauseButton 504 (FileName: 'timerbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 505 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTimerButton 506 (FileName: 'targetbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 507 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprTargetButton 508 (FileName: 'switchbutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 509 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprSwitchButton 510 (FileName: 'bouncebutton'; Path: ptButtons; AltPath: ptNone; Texture: nil; Surface: nil; 511 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true), // sprBounceButton 512 {$ENDIF} 513 (FileName: 'Flake'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil; 514 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlake 515 (FileName: 'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 516 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandRope 517 (FileName: 'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 518 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBazooka 519 (FileName: 'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 520 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandShotgun 521 (FileName: 'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 522 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDEagle 523 (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 524 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandAirAttack 525 (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 526 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBaseball 527 (FileName: 'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 528 Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPHammer 529 (FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 530 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBlowTorch 531 (FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 532 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBlowTorch 533 (FileName: 'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 534 Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTeleport 535 (FileName: 'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 536 Width: 32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHHDeath 537 (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 538 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprShotgun 539 (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 540 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDEagle 541 (FileName: 'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 542 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHHIdle 543 (FileName: 'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 544 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMortar 545 (FileName: 'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil; 546 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTurnsLeft 547 (FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 548 Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKamikaze 549 (FileName: 'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 550 Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip 551 (FileName: 'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 552 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprKowtow 553 (FileName: 'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 554 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSad 555 (FileName: 'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 556 Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprWave 557 (FileName: 'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 558 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHurrah 559 (FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 560 Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLemonade 561 (FileName: 'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 562 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShrug 563 (FileName: 'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 564 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprJuggle 565 (FileName: 'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 566 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart 567 (FileName: 'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 568 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart2 569 (FileName: 'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 570 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeWalk 571 (FileName: 'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 572 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeDown 573 (FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 574 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWatermelon 575 (FileName: 'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 576 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprEvilTrace 577 (FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 578 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHellishBomb 579 (FileName: 'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 580 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSeduction 581 (FileName: 'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 582 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprDress 583 (FileName: 'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 584 Width: 64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprCensored 585 (FileName: 'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 586 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDrill 587 (FileName: 'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 588 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDrill 589 (FileName: 'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 590 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBallgun 591 (FileName: 'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 592 Width: 32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBalls 593 (FileName: 'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 594 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPlane 595 (FileName: 'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 596 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandPlane 597 (FileName: 'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 598 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprUtility 599 (FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 600 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprInvulnerable 601 (FileName: 'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 602 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprVampiric 603 (FileName: 'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 604 Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprGirder 605 (FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 606 Width: 12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechCorner 607 (FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 608 Width: 25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechEdge 609 (FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 610 Width: 25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechTail 611 (FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 612 Width: 49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtCorner 613 (FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 614 Width: 23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtEdge 615 (FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 616 Width: 45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtTail 617 (FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 618 Width: 34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutCorner 619 (FileName: 'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 620 Width: 30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutEdge 621 (FileName: 'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 622 Width: 30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutTail 623 (FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 624 Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSniperRifle 625 (FileName: 'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 626 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles 627 (FileName: 'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 628 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack 629 (FileName: 'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 630 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth 631 (FileName: 'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 632 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov 633 (FileName: 'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 634 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov 635 (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 636 Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke 637 (FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 638 Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeWhite 639 (FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 640 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprShell 641 (FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 642 Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDust 643 (FileName: 'SnowDust'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 644 Width: 22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSnowDust 645 (FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 646 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosives 647 (FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 648 Width: 48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosivesRoll 649 (FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 650 Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmTeleport 651 (FileName: 'Splash'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 652 Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSplash 653 (FileName: 'Droplet'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 654 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDroplet 655 (FileName: 'Birdy'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 656 Width: 75; Height: 75; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBirdy 657 (FileName: 'amCake'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 658 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCake 659 (FileName: 'amConstruction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 660 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandConstruction 661 (FileName: 'amGrenade'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 662 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandGrenade 663 (FileName: 'amMelon'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 664 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMelon 665 (FileName: 'amMortar'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 666 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMortar 667 (FileName: 'amSkip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 668 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSkip 669 (FileName: 'amCluster'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 670 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCluster 671 (FileName: 'amDynamite'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 672 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDynamite 673 (FileName: 'amHellish'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 674 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandHellish 675 (FileName: 'amMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 676 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMine 677 (FileName: 'amSeduction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 678 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSeduction 679 (FileName: 'amVamp'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 680 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandVamp 681 (FileName: 'BigExplosion'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 682 Width: 385; Height: 385; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigExplosion 683 (FileName: 'SmokeRing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 684 Width: 200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSmokeRing 685 (FileName: 'BeeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 686 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprBeeTrace 687 (FileName: 'Egg'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 688 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprEgg 689 (FileName: 'TargetBee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 690 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetBee 691 (FileName: 'amBee'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 692 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBee 693 (FileName: 'Feather'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 694 Width: 15; Height: 25; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFeather 695 (FileName: 'Piano'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 696 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPiano 697 (FileName: 'amSineGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 698 Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSineGun 699 (FileName: 'amPortalGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 700 Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortalGun 701 (FileName: 'Portal'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 702 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortal 703 (FileName: 'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 704 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese 705 (FileName: 'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 706 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese 707 (FileName: 'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 708 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower 709 (FileName: 'Chunk'; Path: ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil; 710 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk 711 (FileName: 'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 712 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote 713 (FileName: 'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 714 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff 715 (FileName: 'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 716 Width: 8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn 717 (FileName: 'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 718 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine 719 (FileName: 'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 720 Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprHammer 721 (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone; 722 Texture: nil; Surface: nil; Width: 32; Height: 32; 723 imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: 724 tpMedium; getDimensions: false; getImageDimensions: true), 725 //sprHandResurrector 726 (FileName: 'Cross'; Path: ptGraphics; AltPath: ptNone; 727 Texture: nil; Surface: nil; Width: 108; Height: 138; 728 imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: 729 tpMedium; getDimensions: false; getImageDimensions: true), 730 //sprCross 731 (FileName: 'AirDrill'; Path: ptGraphics; AltPath: ptNone; 732 Texture: nil; Surface: nil; Width: 16; Height: 16; 733 imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: 734 tpMedium; getDimensions: false; getImageDimensions: true), 735 // sprAirDrill 736 (FileName: 'NapalmBomb'; Path: ptGraphics; AltPath: ptNone; 737 Texture: nil; Surface: nil; Width: 16; Height: 16; 738 imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: 739 tpMedium; getDimensions: false; getImageDimensions: true), 740 // sprNapalmBomb 741 (FileName: 'BulletHit'; Path: ptGraphics; AltPath: ptNone; 742 Texture: nil; Surface: nil; Width: 32; Height: 32; 743 imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: 744 tpMedium; getDimensions: false; getImageDimensions: true), 745 // sprBulletHit 746 (FileName: 'Snowball'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 747 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnowball 748 (FileName: 'amSnowball'; Path: ptCurrTheme; AltPath: ptHedgehog; Texture: nil; Surface: nil; 749 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSnowball 750 (FileName: 'Snow'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 751 Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow 752 (FileName: 'SDFlake'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 753 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlake 754 (FileName: 'SDWater'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 755 Width: 0; Height: -2; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprSDWater 756 (FileName: 'SDClouds'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 757 Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloud 758 (FileName: 'SDSplash'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 759 Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSDSplash 760 (FileName: 'SDDroplet'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 761 Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDDroplet 762 (FileName: 'Timebox'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 763 Width: 50; Height: 81; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprTardis 764 (FileName: 'slider'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 765 Width: 3; Height: 17; imageWidth: 3; imageHeight: 17; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprSlider 766 (FileName: 'botlevels'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 767 Width: 22; Height: 15; imageWidth: 22; imageHeight: 15; saveSurf: true; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprBotlevels 768 (FileName: 'amCleaver'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 769 Width: 128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandKnife 770 (FileName: 'cleaver'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 771 Width: 64; Height: 64; imageWidth: 64; imageHeight: 128; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprKnife 772 (FileName: 'star'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 773 Width: 12; Height: 12; imageWidth: 12; imageHeight: 12; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprStar 774 (FileName: 'icetexture'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 775 Width: 128; Height: 128; imageWidth: 128; imageHeight: 128; saveSurf: true; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: true), // sprIceTexture 776 (FileName: 'amIceGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 777 Width: 32; Height: 32; imageWidth: 32; imageHeight: 32; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprIceGun 778 (FileName: 'amFrozenHog'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 779 Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprFrozenHog 780 (FileName: 'amRubber'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil; 781 Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprAmRubber 782 (FileName: 'boing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 783 Width: 101; Height: 97; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprBoing 784 (FileName: 'custom1'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 785 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom1 786 (FileName: 'custom2'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 787 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom2 788 (FileName: 'custom3'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 789 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom3 790 (FileName: 'custom4'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 791 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom4 792 (FileName: 'custom5'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 793 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom5 794 (FileName: 'custom6'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 795 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom6 796 (FileName: 'custom7'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 797 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom7 798 (FileName: 'custom8'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 799 Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: true; critical: true; checkSum: true; priority: tpLow; getDimensions: true; getImageDimensions: true), // sprCustom8 800 (FileName: 'FrozenAirMine'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 801 Width: 32; Height: 32; imageWidth: 32; imageHeight: 32; saveSurf: true; critical: true; checkSum: true; priority: tpHighest; getDimensions: false; getImageDimensions: true), // sprFrozenAirMine 802 (FileName: 'AirMine'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 803 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true), // sprAirMine 804 (FileName: 'amAirMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 805 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprHandAirMine 806 (FileName: 'FlakeL'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil; 807 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlakeL 808 (FileName: 'SDFlakeL'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil; 809 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlakeL 810 (FileName: 'CloudsL'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 811 Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCloudL 812 (FileName: 'SDCloudsL'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; 813 Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: false; checkSum: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloudL 814 // TODO: Rename creeper image 815 (FileName: 'Duck'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 816 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCreeper 817 // TODO: Rename creeper hand image 818 (FileName: 'amDuck'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 819 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprHandCreeper 820 (FileName: 'amMinigun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 821 Width: 64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprMinigun 822 (FileName: 'sliderInverted'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 823 Width: 3; Height: 17; imageWidth: 3; imageHeight: 17; saveSurf: false; critical: true; checkSum: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprSliderInverted 824 (FileName: 'FingerBack'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 825 Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprFingerBack 826 (FileName: 'FingerBackInv'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 827 Width: 32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFingerBackInv 828 (FileName: 'TargetpBack'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 829 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetPBack 830 (FileName: 'TargetpBackInv'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 831 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetPBackInv 832 (FileName: 'HealthHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 833 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHealthHud 834 (FileName: 'HealthPoisonHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 835 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHealthPoisonHud 836 (FileName: 'VampHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 837 Width: 24; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprVampHUD 838 (FileName: 'KarmaHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 839 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKarmaHUD 840 (FileName: 'MedicHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 841 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMedicHud 842 (FileName: 'MedicPoisonHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 843 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMedicPoisonHud 844 (FileName: 'HaloHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 845 Width: 22; Height: 11; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHaloHUD 846 (FileName: 'InvulnHUD'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 847 Width: 18; Height: 18; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprInvulnHUD 848 (FileName: 'amPiano'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 849 Width: 42; Height: 42; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmPiano 850 (FileName: 'amLandGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 851 Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprHandLandGun 852 (FileName: 'amShoryuken'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 853 Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFirePunch 854 (FileName: 'throughWrap'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; 855 Width: 16; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; critical: true; checkSum: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprTroughWrap 856 ); 857 858 859 const 860 Wavez: array [TWave] of record 861 Sprite: TSprite; 862 FramesCount: Longword; 863 Interval: Longword; 864 cmd: string[31]; 865 Voice: TSound; 866 VoiceDelay: LongWord; 867 end = ( 868 (Sprite: sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0), 869 (Sprite: sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0), 870 (Sprite: sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5), 871 (Sprite: sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0), 872 (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0), 873 (Sprite: sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0), 874 (Sprite: sprJuggle; FramesCount: 49; Interval: 38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0) 875 ); 876 877 type 878 TAmmozRec = record 879 NameId: TAmmoStrId; 880 NameTex: PTexture; 881 Probability, NumberInCase: Longword; 882 Ammo: TAmmo; 883 Slot: 0..cMaxSlotIndex; 884 TimeAfterTurn: Longword; 885 minAngle, maxAngle: Longword; 886 isDamaging: boolean; 887 SkipTurns: LongWord; 888 PosCount: Longword; 889 PosSprite: TSprite; 890 ejectX, ejectY: Longint; 891 end; 892 TAmmoCounts = array[TAmmoType] of Longword; 893 894 var 895 Ammoz: array [TAmmoType] of TAmmozRec; 896 InitialAmmoCounts: TAmmoCounts; 897 898 const 899 AmmozInit: array [TAmmoType] of TAmmozRec = ( 900 (NameId: sidNothing; 901 NameTex: nil; 902 Probability: 0; 903 NumberInCase: 0; 904 Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect; 905 Count: AMMO_INFINITE; 906 NumPerTurn: 0; 907 Timer: 0; 908 Pos: 0; 909 AmmoType: amNothing; 910 AttackVoice: sndNone; 911 Bounciness: defaultBounciness); 912 Slot: cHiddenSlotIndex; 913 TimeAfterTurn: 0; 914 minAngle: 0; 915 maxAngle: 0; 916 isDamaging: false; 917 SkipTurns: 0; 918 PosCount: 0; 919 PosSprite: sprWater; 920 ejectX: 0; 921 ejectY: 0), 922 923 // Grenade 924 (NameId: sidGrenade; 925 NameTex: nil; 926 Probability: 0; 927 NumberInCase: 1; 928 Ammo: (Propz: ammoprop_Timerable or 929 ammoprop_Power or 930 ammoprop_AltUse or 931 ammoprop_SetBounce or 932 ammoprop_NeedUpDown; 933 Count: AMMO_INFINITE; 934 NumPerTurn: 0; 935 Timer: 3000; 936 Pos: 0; 937 AmmoType: amGrenade; 938 AttackVoice: sndCover; 939 Bounciness: defaultBounciness); 940 Slot: 1; 941 TimeAfterTurn: 3000; 942 minAngle: 0; 943 maxAngle: 0; 944 isDamaging: true; 945 SkipTurns: 0; 946 PosCount: 0; 947 PosSprite: sprWater; 948 ejectX: 0; 949 ejectY: 0), 950 951 // ClusterBomb 952 (NameId: sidClusterBomb; 953 NameTex: nil; 954 Probability: 100; 955 NumberInCase: 3; 956 Ammo: (Propz: ammoprop_Timerable or 957 ammoprop_Power or 958 ammoprop_AltUse or 959 ammoprop_SetBounce or 960 ammoprop_NeedUpDown; 961 Count: 5; 962 NumPerTurn: 0; 963 Timer: 3000; 964 Pos: 0; 965 AmmoType: amClusterBomb; 966 AttackVoice: sndCover; 967 Bounciness: defaultBounciness); 968 Slot: 1; 969 TimeAfterTurn: 3000; 970 minAngle: 0; 971 maxAngle: 0; 972 isDamaging: true; 973 SkipTurns: 0; 974 PosCount: 0; 975 PosSprite: sprWater; 976 ejectX: 0; 977 ejectY: 0), 978 979 // Bazooka 980 (NameId: sidBazooka; 981 NameTex: nil; 982 Probability: 0; 983 NumberInCase: 1; 984 Ammo: (Propz: ammoprop_Power or 985 ammoprop_AltUse or 986 ammoprop_NeedUpDown; 987 Count: AMMO_INFINITE; 988 NumPerTurn: 0; 989 Timer: 0; 990 Pos: 0; 991 AmmoType: amBazooka; 992 AttackVoice: sndFire; 993 Bounciness: defaultBounciness); 994 Slot: 0; 995 TimeAfterTurn: 3000; 996 minAngle: 0; 997 maxAngle: 0; 998 isDamaging: true; 999 SkipTurns: 0; 1000 PosCount: 0; 1001 PosSprite: sprWater; 1002 ejectX: 0; //20; 1003 ejectY: -6), 1004 1005 // Bee 1006 (NameId: sidBee; 1007 NameTex: nil; 1008 Probability: 100; 1009 NumberInCase: 1; 1010 Ammo: (Propz: ammoprop_Power or 1011 ammoprop_NeedTarget or 1012 ammoprop_NoTargetAfter or 1013 ammoprop_NoWrapTarget or 1014 ammoprop_DontHold or 1015 ammoprop_AltUse or 1016 ammoprop_NeedUpDown; 1017 Count: 2; 1018 NumPerTurn: 0; 1019 Timer: 0; 1020 Pos: 0; 1021 AmmoType: amBee; 1022 AttackVoice: sndFire; 1023 Bounciness: defaultBounciness); 1024 Slot: 0; 1025 TimeAfterTurn: 3000; 1026 minAngle: 0; 1027 maxAngle: 0; 1028 isDamaging: true; 1029 SkipTurns: 0; 1030 PosCount: 2; 1031 PosSprite: sprTargetBee; 1032 ejectX: 0; //16; 1033 ejectY: 0), 1034 1035 // Shotgun 1036 (NameId: sidShotgun; 1037 NameTex: nil; 1038 Probability: 0; 1039 NumberInCase: 1; 1040 Ammo: (Propz: ammoprop_ForwMsgs or 1041 ammoprop_NeedUpDown or 1042 ammoprop_DoesntStopTimerInMultiShoot; 1043 Count: AMMO_INFINITE; 1044 NumPerTurn: 1; 1045 Timer: 0; 1046 Pos: 0; 1047 AmmoType: amShotgun; 1048 AttackVoice: sndNone; 1049 Bounciness: defaultBounciness); 1050 Slot: 2; 1051 TimeAfterTurn: 3000; 1052 minAngle: 0; 1053 maxAngle: 0; 1054 isDamaging: true; 1055 SkipTurns: 0; 1056 PosCount: 0; 1057 PosSprite: sprWater; 1058 ejectX: 0; //26; 1059 ejectY: -6), 1060 1061 // PickHammer 1062 (NameId: sidPickHammer; 1063 NameTex: nil; 1064 Probability: 0; 1065 NumberInCase: 1; 1066 Ammo: (Propz: ammoprop_ForwMsgs or 1067 ammoprop_AttackInMove or 1068 ammoprop_NoCrosshair or 1069 ammoprop_DontHold or 1070 ammoprop_DoesntStopTimerWhileAttackingInInfAttackMode; 1071 Count: 2; 1072 NumPerTurn: 0; 1073 Timer: 0; 1074 Pos: 0; 1075 AmmoType: amPickHammer; 1076 AttackVoice: sndNone; 1077 Bounciness: defaultBounciness); 1078 Slot: 6; 1079 TimeAfterTurn: 0; 1080 minAngle: 0; 1081 maxAngle: 0; 1082 isDamaging: false; 1083 SkipTurns: 0; 1084 PosCount: 0; 1085 PosSprite: sprWater; 1086 ejectX: 0; 1087 ejectY: 0), 1088 1089 // Skip 1090 (NameId: sidSkip; 1091 NameTex: nil; 1092 Probability: 0; 1093 NumberInCase: 1; 1094 Ammo: (Propz: ammoprop_NoCrosshair or 1095 ammoprop_AttackInMove or 1096 ammoprop_DontHold or 1097 ammoprop_ForceTurnEnd; 1098 Count: AMMO_INFINITE; 1099 NumPerTurn: 0; 1100 Timer: 0; 1101 Pos: 0; 1102 AmmoType: amSkip; 1103 AttackVoice: sndNone; 1104 Bounciness: defaultBounciness); 1105 Slot: 9; 1106 TimeAfterTurn: 0; 1107 minAngle: 0; 1108 maxAngle: 0; 1109 isDamaging: false; 1110 SkipTurns: 0; 1111 PosCount: 0; 1112 PosSprite: sprWater; 1113 ejectX: 0; 1114 ejectY: 0), 1115 1116 // Rope 1117 (NameId: sidRope; 1118 NameTex: nil; 1119 Probability: 100; 1120 NumberInCase: 3; 1121 Ammo: (Propz: ammoprop_NoRoundEnd or 1122 ammoprop_ForwMsgs or 1123 ammoprop_AttackInMove or 1124 ammoprop_Utility or 1125 ammoprop_AltAttack or 1126 ammoprop_NeedUpDown or 1127 ammoprop_DoesntStopTimerWhileAttacking; 1128 Count: 5; 1129 NumPerTurn: 0; 1130 Timer: 0; 1131 Pos: 0; 1132 AmmoType: amRope; 1133 AttackVoice: sndNone; 1134 Bounciness: defaultBounciness); 1135 Slot: 7; 1136 TimeAfterTurn: 0; 1137 minAngle: 0; 1138 maxAngle: cMaxAngle div 2; 1139 isDamaging: false; 1140 SkipTurns: 0; 1141 PosCount: 0; 1142 PosSprite: sprWater; 1143 ejectX: 0; 1144 ejectY: 0), 1145 1146 // Mine 1147 (NameId: sidMine; 1148 NameTex: nil; 1149 Probability: 100; 1150 NumberInCase: 1; 1151 Ammo: (Propz: ammoprop_NoCrosshair or 1152 ammoprop_AttackInMove or 1153 ammoprop_DontHold or 1154 ammoprop_AltUse or 1155 ammoprop_SetBounce; 1156 Count: 2; 1157 NumPerTurn: 0; 1158 Timer: 0; 1159 Pos: 0; 1160 AmmoType: amMine; 1161 AttackVoice: sndLaugh; 1162 Bounciness: defaultBounciness); 1163 Slot: 4; 1164 TimeAfterTurn: 5000; 1165 minAngle: 0; 1166 maxAngle: 0; 1167 isDamaging: true; 1168 SkipTurns: 0; 1169 PosCount: 0; 1170 PosSprite: sprWater; 1171 ejectX: 0; 1172 ejectY: 0), 1173 1174 // DEagle 1175 (NameId: sidDEagle; 1176 NameTex: nil; 1177 Probability: 20; 1178 NumberInCase: 2; 1179 Ammo: (Propz: ammoprop_NeedUpDown or ammoprop_DoesntStopTimerInMultiShoot; 1180 Count: 3; 1181 NumPerTurn: 3; 1182 Timer: 0; 1183 Pos: 0; 1184 AmmoType: amDEagle; 1185 AttackVoice: sndNone; 1186 Bounciness: defaultBounciness); 1187 Slot: 2; 1188 TimeAfterTurn: 3000; 1189 minAngle: 0; 1190 maxAngle: 0; 1191 isDamaging: true; 1192 SkipTurns: 0; 1193 PosCount: 0; 1194 PosSprite: sprWater; 1195 ejectX: 0; //23; 1196 ejectY: -6), 1197 1198 // Dynamite 1199 (NameId: sidDynamite; 1200 NameTex: nil; 1201 Probability: 100; 1202 NumberInCase: 1; 1203 Ammo: (Propz: ammoprop_NoCrosshair or 1204 ammoprop_AttackInMove or 1205 ammoprop_DontHold or 1206 ammoprop_AltUse; 1207 Count: 1; 1208 NumPerTurn: 0; 1209 Timer: 0; 1210 Pos: 0; 1211 AmmoType: amDynamite; 1212 AttackVoice: sndLaugh; 1213 Bounciness: defaultBounciness); 1214 Slot: 4; 1215 TimeAfterTurn: 5000; 1216 minAngle: 0; 1217 maxAngle: 0; 1218 isDamaging: true; 1219 SkipTurns: 0; 1220 PosCount: 0; 1221 PosSprite: sprWater; 1222 ejectX: 0; 1223 ejectY: 0), 1224 1225 // FirePunch 1226 (NameId: sidFirePunch; 1227 NameTex: nil; 1228 Probability: 0; 1229 NumberInCase: 1; 1230 Ammo: (Propz: ammoprop_NoCrosshair or 1231 ammoprop_ForwMsgs or 1232 ammoprop_AttackInMove; 1233 Count: AMMO_INFINITE; 1234 NumPerTurn: 0; 1235 Timer: 0; 1236 Pos: 0; 1237 AmmoType: amFirePunch; 1238 AttackVoice: sndNone; 1239 Bounciness: defaultBounciness); 1240 Slot: 3; 1241 TimeAfterTurn: 3000; 1242 minAngle: 0; 1243 maxAngle: 0; 1244 isDamaging: true; 1245 SkipTurns: 0; 1246 PosCount: 0; 1247 PosSprite: sprWater; 1248 ejectX: 0; 1249 ejectY: 0), 1250 1251 // Whip 1252 (NameId: sidWhip; 1253 NameTex: nil; 1254 Probability: 0; 1255 NumberInCase: 1; 1256 Ammo: (Propz: ammoprop_NoCrosshair; 1257 Count: AMMO_INFINITE; 1258 NumPerTurn: 0; 1259 Timer: 0; 1260 Pos: 0; 1261 AmmoType: amWhip; 1262 AttackVoice: sndNone; 1263 Bounciness: defaultBounciness); 1264 Slot: 3; 1265 TimeAfterTurn: 3000; 1266 minAngle: 0; 1267 maxAngle: 0; 1268 isDamaging: true; 1269 SkipTurns: 0; 1270 PosCount: 0; 1271 PosSprite: sprWater; 1272 ejectX: 0; 1273 ejectY: 0), 1274 1275 // BaseballBat 1276 (NameId: sidBaseballBat; 1277 NameTex: nil; 1278 Probability: 100; 1279 NumberInCase: 1; 1280 Ammo: (Propz: ammoprop_DontHold or 1281 ammoprop_NeedUpDown; 1282 Count: 1; 1283 NumPerTurn: 0; 1284 Timer: 0; 1285 Pos: 0; 1286 AmmoType: amBaseballBat; 1287 AttackVoice: sndNone; 1288 Bounciness: defaultBounciness); 1289 Slot: 3; 1290 TimeAfterTurn: 5000; 1291 minAngle: 0; 1292 maxAngle: cMaxAngle div 2; 1293 isDamaging: true; 1294 SkipTurns: 2; 1295 PosCount: 0; 1296 PosSprite: sprWater; 1297 ejectX: 0; 1298 ejectY: 0), 1299 1300 // Parachute 1301 (NameId: sidParachute; 1302 NameTex: nil; 1303 Probability: 100; 1304 NumberInCase: 1; 1305 Ammo: (Propz: ammoprop_NoRoundEnd or 1306 ammoprop_ForwMsgs or 1307 ammoprop_AttackInMove or 1308 ammoprop_NoCrosshair or 1309 ammoprop_DontHold or 1310 ammoprop_Utility or 1311 ammoprop_AltAttack or 1312 ammoprop_ShowSelIcon or 1313 ammoprop_NeedUpDown; 1314 Count: 2; 1315 NumPerTurn: 0; 1316 Timer: 0; 1317 Pos: 0; 1318 AmmoType: amParachute; 1319 AttackVoice: sndNone; 1320 Bounciness: defaultBounciness); 1321 Slot: 7; 1322 TimeAfterTurn: 0; 1323 minAngle: 0; 1324 maxAngle: 0; 1325 isDamaging: false; 1326 SkipTurns: 0; 1327 PosCount: 0; 1328 PosSprite: sprWater; 1329 ejectX: 0; 1330 ejectY: 0), 1331 1332 // AirAttack 1333 (NameId: sidAirAttack; 1334 NameTex: nil; 1335 Probability: 100; 1336 NumberInCase: 1; 1337 Ammo: (Propz: ammoprop_NoCrosshair or 1338 ammoprop_NeedTarget or 1339 ammoprop_AttackingPut or 1340 ammoprop_DontHold or 1341 ammoprop_NotBorder; 1342 Count: 1; 1343 NumPerTurn: 0; 1344 Timer: 0; 1345 Pos: 0; 1346 AmmoType: amAirAttack; 1347 AttackVoice: sndNone; // handled in doStepAirAttack 1348 Bounciness: defaultBounciness); 1349 Slot: 5; 1350 TimeAfterTurn: 0; 1351 minAngle: 0; 1352 maxAngle: 0; 1353 isDamaging: true; 1354 SkipTurns: 5; 1355 PosCount: 2; 1356 PosSprite: sprAmAirplane; 1357 ejectX: 0; 1358 ejectY: 0), 1359 1360 // MineStrike 1361 (NameId: sidMineStrike; 1362 NameTex: nil; 1363 Probability: 200; 1364 NumberInCase: 1; 1365 Ammo: (Propz: ammoprop_NoCrosshair or 1366 ammoprop_NeedTarget or 1367 ammoprop_AttackingPut or 1368 ammoprop_DontHold or 1369 ammoprop_NotBorder; 1370 Count: 1; 1371 NumPerTurn: 0; 1372 Timer: 0; 1373 Pos: 0; 1374 AmmoType: amMineStrike; 1375 AttackVoice: sndNone; // handled in doStepAirAttack 1376 Bounciness: defaultBounciness); 1377 Slot: 5; 1378 TimeAfterTurn: 0; 1379 minAngle: 0; 1380 maxAngle: 0; 1381 isDamaging: true; 1382 SkipTurns: 5; 1383 PosCount: 2; 1384 PosSprite: sprAmAirplane; 1385 ejectX: 0; 1386 ejectY: 0), 1387 1388 // BlowTorch 1389 (NameId: sidBlowTorch; 1390 NameTex: nil; 1391 Probability: 100; 1392 NumberInCase: 2; 1393 Ammo: (Propz: ammoprop_ForwMsgs or 1394 ammoprop_NeedUpDown or 1395 ammoprop_DoesntStopTimerWhileAttackingInInfAttackMode; 1396 Count: 1; 1397 NumPerTurn: 0; 1398 Timer: 0; 1399 Pos: 0; 1400 AmmoType: amBlowTorch; 1401 AttackVoice: sndNone; 1402 Bounciness: defaultBounciness); 1403 Slot: 6; 1404 TimeAfterTurn: 3000; 1405 minAngle: 804; 1406 maxAngle: 1327; 1407 isDamaging: false; 1408 SkipTurns: 0; 1409 PosCount: 0; 1410 PosSprite: sprWater; 1411 ejectX: 0; 1412 ejectY: 0), 1413 1414 // Girder 1415 (NameId: sidGirder; 1416 NameTex: nil; 1417 Probability: 150; 1418 NumberInCase: 3; 1419 Ammo: (Propz: ammoprop_NoRoundEnd or 1420 ammoprop_NoCrosshair or 1421 ammoprop_NeedTarget or 1422 ammoprop_Utility or 1423 ammoprop_AttackingPut; 1424 Count: 1; 1425 NumPerTurn: 0; 1426 Timer: 0; 1427 Pos: 0; 1428 AmmoType: amGirder; 1429 AttackVoice: sndNone; 1430 Bounciness: defaultBounciness); 1431 Slot: 6; 1432 TimeAfterTurn: 3000; 1433 minAngle: 0; 1434 maxAngle: 0; 1435 isDamaging: false; 1436 SkipTurns: 0; 1437 PosCount: 8; 1438 PosSprite: sprAmGirder; 1439 ejectX: 0; 1440 ejectY: 0), 1441 1442 // Teleport 1443 (NameId: sidTeleport; 1444 NameTex: nil; 1445 Probability: 200; 1446 NumberInCase: 1; 1447 Ammo: (Propz: ammoprop_ForwMsgs or 1448 ammoprop_NoCrosshair or 1449 ammoprop_NeedTarget or 1450 ammoprop_AttackingPut or 1451 ammoprop_AttackInMove or 1452 ammoprop_Utility or 1453 ammoprop_DontHold; 1454 Count: 2; 1455 NumPerTurn: 0; 1456 Timer: 0; 1457 Pos: 0; 1458 AmmoType: amTeleport; 1459 AttackVoice: sndNone; 1460 Bounciness: defaultBounciness); 1461 Slot: 7; 1462 TimeAfterTurn: 0; 1463 minAngle: 0; 1464 maxAngle: 0; 1465 isDamaging: false; 1466 SkipTurns: 0; 1467 PosCount: 2; 1468 PosSprite: sprAmTeleport; 1469 ejectX: 0; 1470 ejectY: 0), 1471 1472 // Switch 1473 (NameId: sidSwitch; 1474 NameTex: nil; 1475 Probability: 100; 1476 NumberInCase: 1; 1477 Ammo: (Propz: ammoprop_NoRoundEnd or 1478 ammoprop_ForwMsgs or 1479 ammoprop_NoCrosshair or 1480 ammoprop_Utility or 1481 ammoprop_ShowSelIcon or 1482 ammoprop_DontHold; 1483 Count: 3; 1484 NumPerTurn: 0; 1485 Timer: 0; 1486 Pos: 0; 1487 AmmoType: amSwitch; 1488 AttackVoice: sndNone; 1489 Bounciness: defaultBounciness); 1490 Slot: 9; 1491 TimeAfterTurn: 0; 1492 minAngle: 0; 1493 maxAngle: 0; 1494 isDamaging: false; 1495 SkipTurns: 0; 1496 PosCount: 0; 1497 PosSprite: sprWater; 1498 ejectX: 0; 1499 ejectY: 0), 1500 1501 // Mortar 1502 (NameId: sidMortar; 1503 NameTex: nil; 1504 Probability: 100; 1505 NumberInCase: 4; 1506 Ammo: (Propz: ammoprop_NeedUpDown; 1507 Count: 4; 1508 NumPerTurn: 0; 1509 Timer: 0; 1510 Pos: 0; 1511 AmmoType: amMortar; 1512 AttackVoice: sndNone; 1513 Bounciness: defaultBounciness); 1514 Slot: 0; 1515 TimeAfterTurn: 3000; 1516 minAngle: 0; 1517 maxAngle: 0; 1518 isDamaging: true; 1519 SkipTurns: 0; 1520 PosCount: 0; 1521 PosSprite: sprWater; 1522 ejectX: 0; //20; 1523 ejectY: -6), 1524 1525 // Kamikaze 1526 (NameId: sidKamikaze; 1527 NameTex: nil; 1528 Probability: 100; 1529 NumberInCase: 1; 1530 Ammo: (Propz: ammoprop_ForwMsgs or 1531 ammoprop_DontHold or 1532 ammoprop_NeedUpDown or 1533 ammoprop_AttackInMove or 1534 ammoprop_ForceTurnEnd; 1535 Count: 1; 1536 NumPerTurn: 0; 1537 Timer: 0; 1538 Pos: 0; 1539 AmmoType: amKamikaze; 1540 AttackVoice: sndNone; 1541 Bounciness: defaultBounciness); 1542 Slot: 3; 1543 TimeAfterTurn: 0; 1544 minAngle: 0; 1545 maxAngle: 0; 1546 isDamaging: true; 1547 SkipTurns: 0; 1548 PosCount: 0; 1549 PosSprite: sprWater; 1550 ejectX: 0; 1551 ejectY: 0), 1552 1553 // Cake 1554 (NameId: sidCake; 1555 NameTex: nil; 1556 Probability: 100; 1557 NumberInCase: 1; 1558 Ammo: (Propz: ammoprop_ForwMsgs or 1559 ammoprop_NoCrosshair or 1560 ammoprop_DontHold or 1561 ammoprop_Track; 1562 Count: 1; 1563 NumPerTurn: 0; 1564 Timer: 0; 1565 Pos: 0; 1566 AmmoType: amCake; 1567 AttackVoice: sndLaugh; 1568 Bounciness: defaultBounciness); 1569 Slot: 4; 1570 TimeAfterTurn: 0; 1571 minAngle: 0; 1572 maxAngle: 0; 1573 isDamaging: true; 1574 SkipTurns: 4; 1575 PosCount: 0; 1576 PosSprite: sprWater; 1577 ejectX: 0; 1578 ejectY: 0), 1579 1580 // Seduction 1581 (NameId: sidSeduction; 1582 NameTex: nil; 1583 Probability: 100; 1584 NumberInCase: 1; 1585 Ammo: (Propz: ammoprop_ForwMsgs or 1586 ammoprop_DontHold or 1587 ammoprop_NoCrosshair; 1588 Count: 1; 1589 NumPerTurn: 0; 1590 Timer: 0; 1591 Pos: 0; 1592 AmmoType: amSeduction; 1593 AttackVoice: sndNone; 1594 Bounciness: defaultBounciness); 1595 Slot: 3; 1596 TimeAfterTurn: 0; 1597 minAngle: 0; 1598 maxAngle: 0; 1599 isDamaging: false; 1600 SkipTurns: 0; 1601 PosCount: 0; 1602 PosSprite: sprWater; 1603 ejectX: 0; 1604 ejectY: 0), 1605 1606 // Watermelon 1607 (NameId: sidWatermelon; 1608 NameTex: nil; 1609 Probability: 400; 1610 NumberInCase: 1; 1611 Ammo: (Propz: ammoprop_Timerable or 1612 ammoprop_Power or 1613 ammoprop_NeedUpDown or 1614 ammoprop_AltUse; 1615 Count: 0; 1616 NumPerTurn: 0; 1617 Timer: 3000; 1618 Pos: 0; 1619 AmmoType: amWatermelon; 1620 AttackVoice: sndMelon; 1621 Bounciness: defaultBounciness); 1622 Slot: 1; 1623 TimeAfterTurn: 3000; 1624 minAngle: 0; 1625 maxAngle: 0; 1626 isDamaging: true; 1627 SkipTurns: 0; 1628 PosCount: 0; 1629 PosSprite: sprWater; 1630 ejectX: 0; 1631 ejectY: 0), 1632 1633 // HellishBomb ("Hellish Hand-Grenade") 1634 (NameId: sidHellishBomb; 1635 NameTex: nil; 1636 Probability: 400; 1637 NumberInCase: 1; 1638 Ammo: (Propz: ammoprop_Power or 1639 ammoprop_NeedUpDown or 1640 ammoprop_AltUse; 1641 Count: 0; 1642 NumPerTurn: 0; 1643 Timer: 5000; 1644 Pos: 0; 1645 AmmoType: amHellishBomb; 1646 AttackVoice: sndWatchThis; 1647 Bounciness: defaultBounciness); 1648 Slot: 1; 1649 TimeAfterTurn: 3000; 1650 minAngle: 0; 1651 maxAngle: 0; 1652 isDamaging: true; 1653 SkipTurns: 0; 1654 PosCount: 0; 1655 PosSprite: sprWater; 1656 ejectX: 0; 1657 ejectY: 0), 1658 1659 // Napalm 1660 (NameId: sidNapalm; 1661 NameTex: nil; 1662 Probability: 100; 1663 NumberInCase: 1; 1664 Ammo: (Propz: ammoprop_NoCrosshair or 1665 ammoprop_NeedTarget or 1666 ammoprop_AttackingPut or 1667 ammoprop_DontHold or 1668 ammoprop_NotBorder; 1669 Count: 1; 1670 NumPerTurn: 0; 1671 Timer: 0; 1672 Pos: 0; 1673 AmmoType: amNapalm; 1674 AttackVoice: sndNone; // handled in doStepAirAttack 1675 Bounciness: defaultBounciness); 1676 Slot: 5; 1677 TimeAfterTurn: 0; 1678 minAngle: 0; 1679 maxAngle: 0; 1680 isDamaging: true; 1681 SkipTurns: 7; 1682 PosCount: 2; 1683 PosSprite: sprAmAirplane; 1684 ejectX: 0; 1685 ejectY: 0), 1686 1687 // Drill ("Drill Rocket") 1688 (NameId: sidDrill; 1689 NameTex: nil; 1690 Probability: 300; 1691 NumberInCase: 1; 1692 Ammo: (Propz: ammoprop_Power or 1693 ammoprop_NeedUpDown or 1694 ammoprop_AltUse; 1695 Count: AMMO_INFINITE; 1696 NumPerTurn: 0; 1697 Timer: 0; 1698 Pos: 0; 1699 AmmoType: amDrill; 1700 AttackVoice: sndFire; 1701 Bounciness: defaultBounciness); 1702 Slot: 0; 1703 TimeAfterTurn: 3000; 1704 minAngle: 0; 1705 maxAngle: 0; 1706 isDamaging: true; 1707 SkipTurns: 0; 1708 PosCount: 0; 1709 PosSprite: sprDrill; 1710 ejectX: 0; //20; 1711 ejectY: -6), 1712 1713 // Ballgun 1714 (NameId: sidBallgun; 1715 NameTex: nil; 1716 Probability: 400; 1717 NumberInCase: 1; 1718 Ammo: (Propz: ammoprop_ForwMsgs or 1719 ammoprop_NeedUpDown or 1720 ammoprop_DontHold; 1721 Count: AMMO_INFINITE; 1722 NumPerTurn: 0; 1723 Timer: 5001; 1724 Pos: 0; 1725 AmmoType: amBallgun; 1726 AttackVoice: sndNone; 1727 Bounciness: defaultBounciness); 1728 Slot: 4; 1729 TimeAfterTurn: 0; 1730 minAngle: 0; 1731 maxAngle: 0; 1732 isDamaging: true; 1733 SkipTurns: 0; 1734 PosCount: 0; 1735 PosSprite: sprWater; 1736 ejectX: 0; //20; 1737 ejectY: -3), 1738 1739 // RC-Plane 1740 (NameId: sidRCPlane; 1741 NameTex: nil; 1742 Probability: 200; 1743 NumberInCase: 1; 1744 Ammo: (Propz: ammoprop_ForwMsgs or 1745 ammoprop_NeedUpDown{ or 1746 ammoprop_DontHold or 1747 ammoprop_AltAttack}; 1748 Count: 1; 1749 NumPerTurn: 0; 1750 Timer: 0; 1751 Pos: 0; 1752 AmmoType: amRCPlane; 1753 AttackVoice: sndNone; 1754 Bounciness: defaultBounciness); 1755 Slot: 4; 1756 TimeAfterTurn: 0; 1757 minAngle: 0; 1758 maxAngle: 0; 1759 isDamaging: true; 1760 SkipTurns: 4; 1761 PosCount: 0; 1762 PosSprite: sprWater; 1763 ejectX: 0; 1764 ejectY: 0), 1765 1766 // LowGravity 1767 (NameId: sidLowGravity; 1768 NameTex: nil; 1769 Probability: 20; 1770 NumberInCase: 1; 1771 Ammo: (Propz: ammoprop_NoRoundEnd or 1772 ammoprop_NoCrosshair or 1773 ammoprop_DontHold or 1774 ammoprop_AltUse or 1775 ammoprop_ShowSelIcon or 1776 ammoprop_Utility or 1777 ammoprop_Effect; 1778 Count: 1; 1779 NumPerTurn: 0; 1780 Timer: 0; 1781 Pos: 0; 1782 AmmoType: amLowGravity; 1783 AttackVoice: sndNone; 1784 Bounciness: defaultBounciness); 1785 Slot: 9; 1786 TimeAfterTurn: 0; 1787 minAngle: 0; 1788 maxAngle: 0; 1789 isDamaging: false; 1790 SkipTurns: 0; 1791 PosCount: 0; 1792 PosSprite: sprWater; 1793 ejectX: 0; 1794 ejectY: 0), 1795 1796 // ExtraDamage 1797 (NameId: sidExtraDamage; 1798 NameTex: nil; 1799 Probability: 15; 1800 NumberInCase: 1; 1801 Ammo: (Propz: ammoprop_NoRoundEnd or 1802 ammoprop_NoCrosshair or 1803 ammoprop_DontHold or 1804 ammoprop_AltUse or 1805 ammoprop_ShowSelIcon or 1806 ammoprop_Utility or 1807 ammoprop_Effect; 1808 Count: 1; 1809 NumPerTurn: 0; 1810 Timer: 0; 1811 Pos: 0; 1812 AmmoType: amExtraDamage; 1813 AttackVoice: sndNone; 1814 Bounciness: defaultBounciness); 1815 Slot: 9; 1816 TimeAfterTurn: 0; 1817 minAngle: 0; 1818 maxAngle: 0; 1819 isDamaging: false; 1820 SkipTurns: 0; 1821 PosCount: 0; 1822 PosSprite: sprWater; 1823 ejectX: 0; 1824 ejectY: 0), 1825 1826 // Invulnerable 1827 (NameId: sidInvulnerable; 1828 NameTex: nil; 1829 Probability: 20; 1830 NumberInCase: 1; 1831 Ammo: (Propz: ammoprop_NoRoundEnd or 1832 ammoprop_NoCrosshair or 1833 ammoprop_DontHold or 1834 ammoprop_AltUse or 1835 ammoprop_ShowSelIcon or 1836 ammoprop_Utility or 1837 ammoprop_Effect; 1838 Count: 1; 1839 NumPerTurn: 0; 1840 Timer: 0; 1841 Pos: 0; 1842 AmmoType: amInvulnerable; 1843 AttackVoice: sndNone; 1844 Bounciness: defaultBounciness); 1845 Slot: 8; 1846 TimeAfterTurn: 0; 1847 minAngle: 0; 1848 maxAngle: 0; 1849 isDamaging: false; 1850 SkipTurns: 0; 1851 PosCount: 0; 1852 PosSprite: sprWater; 1853 ejectX: 0; 1854 ejectY: 0), 1855 1856 // ExtraTime 1857 (NameId: sidExtraTime; 1858 NameTex: nil; 1859 Probability: 30; 1860 NumberInCase: 1; 1861 Ammo: (Propz: ammoprop_NoRoundEnd or 1862 ammoprop_NoCrosshair or 1863 ammoprop_DontHold or 1864 ammoprop_AltUse or 1865 ammoprop_ShowSelIcon or 1866 ammoprop_Utility or 1867 ammoprop_Effect; 1868 Count: 1; 1869 NumPerTurn: 0; 1870 Timer: 0; 1871 Pos: 0; 1872 AmmoType: amExtraTime; 1873 AttackVoice: sndNone; 1874 Bounciness: defaultBounciness); 1875 Slot: 9; 1876 TimeAfterTurn: 0; 1877 minAngle: 0; 1878 maxAngle: 0; 1879 isDamaging: false; 1880 SkipTurns: 0; 1881 PosCount: 0; 1882 PosSprite: sprWater; 1883 ejectX: 0; 1884 ejectY: 0), 1885 1886 // LaserSight 1887 (NameId: sidLaserSight; 1888 NameTex: nil; 1889 Probability: 15; 1890 NumberInCase: 1; 1891 Ammo: (Propz: ammoprop_NoRoundEnd or 1892 ammoprop_NoCrosshair or 1893 ammoprop_DontHold or 1894 ammoprop_AltUse or 1895 ammoprop_ShowSelIcon or 1896 ammoprop_Utility or 1897 ammoprop_NeedUpDown or 1898 ammoprop_Effect; 1899 Count: 1; 1900 NumPerTurn: 0; 1901 Timer: 0; 1902 Pos: 0; 1903 AmmoType: amLaserSight; 1904 AttackVoice: sndNone; 1905 Bounciness: defaultBounciness); 1906 Slot: 8; 1907 TimeAfterTurn: 0; 1908 minAngle: 0; 1909 maxAngle: 0; 1910 isDamaging: false; 1911 SkipTurns: 0; 1912 PosCount: 0; 1913 PosSprite: sprWater; 1914 ejectX: 0; 1915 ejectY: 0), 1916 1917 // Vampiric 1918 (NameId: sidVampiric; 1919 NameTex: nil; 1920 Probability: 15; 1921 NumberInCase: 1; 1922 Ammo: (Propz: ammoprop_NoRoundEnd or 1923 ammoprop_NoCrosshair or 1924 ammoprop_DontHold or 1925 ammoprop_AltUse or 1926 ammoprop_Utility or 1927 ammoprop_Effect; 1928 Count: 1; 1929 NumPerTurn: 0; 1930 Timer: 0; 1931 Pos: 0; 1932 AmmoType: amVampiric; 1933 AttackVoice: sndNone; 1934 Bounciness: defaultBounciness); 1935 Slot: 8; 1936 TimeAfterTurn: 0; 1937 minAngle: 0; 1938 maxAngle: 0; 1939 isDamaging: false; 1940 SkipTurns: 0; 1941 PosCount: 0; 1942 PosSprite: sprWater; 1943 ejectX: 0; 1944 ejectY: 0), 1945 1946 // SniperRifle 1947 (NameId: sidSniperRifle; 1948 NameTex: nil; 1949 Probability: 20; 1950 NumberInCase: 2; 1951 Ammo: (Propz: ammoprop_NeedUpDown or 1952 ammoprop_OscAim or 1953 ammoprop_NoMoveAfter or 1954 ammoprop_DoesntStopTimerInMultiShoot; 1955 Count: 2; 1956 NumPerTurn: 1; 1957 Timer: 0; 1958 Pos: 0; 1959 AmmoType: amSniperRifle; 1960 AttackVoice: sndNone; 1961 Bounciness: defaultBounciness); 1962 Slot: 2; 1963 TimeAfterTurn: 3000; 1964 minAngle: 0; 1965 maxAngle: 0; 1966 isDamaging: true; 1967 SkipTurns: 0; 1968 PosCount: 0; 1969 PosSprite: sprWater; 1970 ejectX: 0; //40; 1971 ejectY: -5), 1972 1973 // Jetpack ("Flying Saucer") 1974 (NameId: sidJetpack; 1975 NameTex: nil; 1976 Probability: 20; 1977 NumberInCase: 1; 1978 Ammo: (Propz: ammoprop_NoRoundEnd or 1979 ammoprop_ForwMsgs or 1980 ammoprop_AttackInMove or 1981 ammoprop_DontHold or 1982 ammoprop_Utility or 1983 ammoprop_NeedUpDown or 1984 ammoprop_ShowSelIcon or 1985 ammoprop_AltAttack; 1986 Count: 1; 1987 NumPerTurn: 0; 1988 Timer: 0; 1989 Pos: 0; 1990 AmmoType: amJetpack; 1991 AttackVoice: sndNone; 1992 Bounciness: defaultBounciness); 1993 Slot: 7; 1994 TimeAfterTurn: 3000; 1995 minAngle: 0; 1996 maxAngle: 0; 1997 isDamaging: false; 1998 SkipTurns: 0; 1999 PosCount: 0; 2000 PosSprite: sprWater; 2001 ejectX: 0; 2002 ejectY: 0), 2003 2004 // Molotov 2005 (NameId: sidMolotov; 2006 NameTex: nil; 2007 Probability: 0; 2008 NumberInCase: 1; 2009 Ammo: (Propz: ammoprop_Power or 2010 ammoprop_NeedUpDown or 2011 ammoprop_AltUse; 2012 Count: AMMO_INFINITE; 2013 NumPerTurn: 0; 2014 Timer: 3000; 2015 Pos: 0; 2016 AmmoType: amMolotov; 2017 AttackVoice: sndWatchThis; 2018 Bounciness: defaultBounciness); 2019 Slot: 1; 2020 TimeAfterTurn: 3000; 2021 minAngle: 0; 2022 maxAngle: 0; 2023 isDamaging: true; 2024 SkipTurns: 0; 2025 PosCount: 0; 2026 PosSprite: sprWater; 2027 ejectX: 0; 2028 ejectY: 0), 2029 2030 // Birdy 2031 (NameId: sidBirdy; 2032 NameTex: nil; 2033 Probability: 20; 2034 NumberInCase: 1; 2035 Ammo: (Propz: ammoprop_ForwMsgs or 2036 ammoprop_NoCrosshair or 2037 ammoprop_NeedUpDown or 2038 ammoprop_ShowSelIcon or 2039 ammoprop_DontHold; 2040 Count: 1; 2041 NumPerTurn: 0; 2042 Timer: 0; 2043 Pos: 0; 2044 AmmoType: amBirdy; 2045 AttackVoice: sndNone; 2046 Bounciness: defaultBounciness); 2047 Slot: 7; 2048 TimeAfterTurn: 3000; 2049 minAngle: 0; 2050 maxAngle: 0; 2051 isDamaging: true; 2052 SkipTurns: 0; 2053 PosCount: 0; 2054 PosSprite: sprWater; 2055 ejectX: 0; 2056 ejectY: 0), 2057 2058 // PortalGun 2059 (NameId: sidPortalGun; 2060 NameTex: nil; 2061 Probability: 20; 2062 NumberInCase: 1; 2063 Ammo: (Propz: ammoprop_NoRoundEnd or 2064 ammoprop_AttackInMove or 2065 ammoprop_DontHold or 2066 ammoprop_NeedUpDown or 2067 ammoprop_Utility; 2068 Count: 1; 2069 NumPerTurn: 3; 2070 Timer: 0; 2071 Pos: 0; 2072 AmmoType: amPortalGun; 2073 AttackVoice: sndNone; 2074 Bounciness: defaultBounciness); 2075 Slot: 7; 2076 TimeAfterTurn: 0; 2077 minAngle: 0; 2078 maxAngle: 0; 2079 isDamaging: false; 2080 SkipTurns: 0; 2081 PosCount: 0; 2082 PosSprite: sprWater; 2083 ejectX: -5; //29; 2084 ejectY: -7), 2085 2086 // Piano 2087 (NameId: sidPiano; 2088 NameTex: nil; 2089 Probability: 100; 2090 NumberInCase: 1; 2091 Ammo: (Propz: ammoprop_NoCrosshair or 2092 ammoprop_NeedTarget or 2093 // NoTargetAfter is handled manually in doStepPiano 2094 ammoprop_AttackingPut or 2095 ammoprop_DontHold or 2096 ammoprop_NotBorder or 2097 ammoprop_ForceTurnEnd; 2098 Count: 1; 2099 NumPerTurn: 0; 2100 Timer: 0; 2101 Pos: 0; 2102 AmmoType: amPiano; 2103 AttackVoice: sndNone; // handled in doStepPiano 2104 Bounciness: defaultBounciness); 2105 Slot: 5; 2106 TimeAfterTurn: 0; 2107 minAngle: 0; 2108 maxAngle: 0; 2109 isDamaging: true; 2110 SkipTurns: 7; 2111 PosCount: 1; 2112 PosSprite: sprAmPiano; 2113 ejectX: 0; 2114 ejectY: 0), 2115 2116 // GasBomb 2117 (NameId: sidGasBomb; 2118 NameTex: nil; 2119 Probability: 0; 2120 NumberInCase: 1; 2121 Ammo: (Propz: ammoprop_Timerable or 2122 ammoprop_Power or 2123 ammoprop_AltUse or 2124 ammoprop_NeedUpDown or 2125 ammoprop_SetBounce; 2126 Count: AMMO_INFINITE; 2127 NumPerTurn: 0; 2128 Timer: 3000; 2129 Pos: 0; 2130 AmmoType: amGasBomb; 2131 AttackVoice: sndCover; 2132 Bounciness: defaultBounciness); 2133 Slot: 1; 2134 TimeAfterTurn: 3000; 2135 minAngle: 0; 2136 maxAngle: 0; 2137 isDamaging: true; 2138 SkipTurns: 0; 2139 PosCount: 0; 2140 PosSprite: sprWater; 2141 ejectX: 0; 2142 ejectY: 0), 2143 2144 // SineGun 2145 (NameId: sidSineGun; 2146 NameTex: nil; 2147 Probability: 20; 2148 NumberInCase: 2; 2149 Ammo: (Propz: ammoprop_AttackInMove or 2150 ammoprop_NeedUpDown; 2151 Count: 1; 2152 NumPerTurn: 0; 2153 Timer: 0; 2154 Pos: 0; 2155 AmmoType: amSineGun; 2156 AttackVoice: sndNone; 2157 Bounciness: defaultBounciness); 2158 Slot: 2; 2159 TimeAfterTurn: 0; 2160 minAngle: 0; 2161 maxAngle: 0; 2162 isDamaging: true; 2163 SkipTurns: 0; 2164 PosCount: 0; 2165 PosSprite: sprWater; 2166 ejectX: 0; 2167 ejectY: 0), 2168 2169 // Flamethrower 2170 (NameId: sidFlamethrower; 2171 NameTex: nil; 2172 Probability: 20; 2173 NumberInCase: 1; 2174 Ammo: (Propz: ammoprop_ForwMsgs or 2175 ammoprop_NeedUpDown or 2176 ammoprop_DontHold; 2177 Count: 1; 2178 NumPerTurn: 0; 2179 Timer: 5001; 2180 Pos: 0; 2181 AmmoType: amFlamethrower; 2182 AttackVoice: sndNone; 2183 Bounciness: defaultBounciness); 2184 Slot: 6; 2185 TimeAfterTurn: 0; 2186 minAngle: 0; 2187 maxAngle: 0; 2188 isDamaging: true; 2189 SkipTurns: 0; 2190 PosCount: 0; 2191 PosSprite: sprWater; 2192 ejectX: 0; //20; 2193 ejectY: -3), 2194 2195 // Sticky Mine 2196 (NameId: sidSMine; 2197 NameTex: nil; 2198 Probability: 100; 2199 NumberInCase: 1; 2200 Ammo: (Propz: ammoprop_Power or 2201 ammoprop_AltUse or 2202 ammoprop_NeedUpDown; 2203 Count: 1; 2204 NumPerTurn: 1; 2205 Timer: 0; 2206 Pos: 0; 2207 AmmoType: amSMine; 2208 AttackVoice: sndLaugh; 2209 Bounciness: defaultBounciness); 2210 Slot: 4; 2211 TimeAfterTurn: 5000; 2212 minAngle: 0; 2213 maxAngle: 0; 2214 isDamaging: true; 2215 SkipTurns: 0; 2216 PosCount: 0; 2217 PosSprite: sprWater; 2218 ejectX: 0; 2219 ejectY: 0), 2220 2221 // Hammer 2222 (NameId: sidHammer; 2223 NameTex: nil; 2224 Probability: 0; 2225 NumberInCase: 1; 2226 Ammo: (Propz: ammoprop_NoCrosshair; 2227 Count: 1; 2228 NumPerTurn: 0; 2229 Timer: 0; 2230 Pos: 0; 2231 AmmoType: amHammer; 2232 AttackVoice: sndNone; 2233 Bounciness: defaultBounciness); 2234 Slot: 3; 2235 TimeAfterTurn: 3000; 2236 minAngle: 0; 2237 maxAngle: 0; 2238 isDamaging: true; 2239 SkipTurns: 0; 2240 PosCount: 0; 2241 PosSprite: sprWater; 2242 ejectX: 0; 2243 ejectY: 0), 2244 2245 // Resurrector 2246 (NameId: sidResurrector; 2247 NameTex: nil; 2248 Probability: 0; 2249 NumberInCase: 1; 2250 Ammo: (Propz: ammoprop_NoCrosshair or 2251 ammoprop_Utility or 2252 ammoprop_NoRoundEnd or 2253 ammoprop_DoesntStopTimerWhileAttacking; 2254 Count: 1; 2255 NumPerTurn: 0; 2256 Timer: 0; 2257 Pos: 0; 2258 AmmoType: amResurrector; 2259 AttackVoice: sndNone; 2260 Bounciness: defaultBounciness); 2261 Slot: 8; 2262 TimeAfterTurn: 3000; 2263 minAngle: 0; 2264 maxAngle: 0; 2265 isDamaging: true; 2266 SkipTurns: 0; 2267 PosCount: 0; 2268 PosSprite: sprWater; 2269 ejectX: 0; 2270 ejectY: 0), 2271 2272 // DrillStrike 2273 (NameId: sidDrillStrike; 2274 NameTex: nil; 2275 Probability: 200; 2276 NumberInCase: 1; 2277 Ammo: (Propz: ammoprop_NoCrosshair or 2278 ammoprop_NeedTarget or 2279 ammoprop_AttackingPut or 2280 ammoprop_DontHold or 2281 ammoprop_Timerable or 2282 ammoprop_NotBorder; 2283 Count: 1; 2284 NumPerTurn: 0; 2285 Timer: 5000; 2286 Pos: 0; 2287 AmmoType: amDrillStrike; 2288 AttackVoice: sndNone; // handled in doStepAirAttack 2289 Bounciness: defaultBounciness); 2290 Slot: 5; 2291 TimeAfterTurn: 0; 2292 minAngle: 0; 2293 maxAngle: 0; 2294 isDamaging: true; 2295 SkipTurns: 6; 2296 PosCount: 2; 2297 PosSprite: sprAmAirplane; 2298 ejectX: 0; 2299 ejectY: 0), 2300 2301 // Snowball/Mudball 2302 (NameId: sidSnowball; 2303 NameTex: nil; 2304 Probability: 0; 2305 NumberInCase: 1; 2306 Ammo: (Propz: ammoprop_Power or 2307 ammoprop_AltUse or 2308 ammoprop_NeedUpDown or 2309 ammoprop_NoRoundEnd; 2310 Count: 2; 2311 NumPerTurn: 0; 2312 Timer: 0; 2313 Pos: 0; 2314 AmmoType: amSnowball; 2315 AttackVoice: sndNone; 2316 Bounciness: defaultBounciness); 2317 Slot: 0; 2318 TimeAfterTurn: 3000; 2319 minAngle: 0; 2320 maxAngle: 0; 2321 isDamaging: false; 2322 SkipTurns: 0; 2323 PosCount: 0; 2324 PosSprite: sprWater; 2325 ejectX: 0; 2326 ejectY: 0), 2327 2328 // Tardis 2329 (NameId: sidTardis; 2330 NameTex: nil; 2331 Probability: 200; 2332 NumberInCase: 1; 2333 Ammo: (Propz: ammoprop_ForwMsgs or 2334 ammoprop_NoCrosshair or 2335 ammoprop_Utility or 2336 ammoprop_ShowSelIcon or 2337 ammoprop_DontHold or 2338 ammoprop_ForceTurnEnd; 2339 Count: 2; 2340 NumPerTurn: 0; 2341 Timer: 0; 2342 Pos: 0; 2343 AmmoType: amTardis; 2344 AttackVoice: sndNone; 2345 Bounciness: defaultBounciness); 2346 Slot: 8; 2347 TimeAfterTurn: 0; 2348 minAngle: 0; 2349 maxAngle: 0; 2350 isDamaging: false; 2351 SkipTurns: 0; 2352 PosCount: 2; 2353 PosSprite: sprAmTeleport; 2354 ejectX: 0; 2355 ejectY: 0), 2356 2357 // Land Gun 2358 (NameId: sidLandGun; 2359 NameTex: nil; 2360 Probability: 20; 2361 NumberInCase: 1; 2362 Ammo: (Propz: ammoprop_NoRoundEnd or 2363 ammoprop_NeedUpDown or 2364 ammoprop_Utility; 2365 Count: 1; 2366 NumPerTurn: 0; 2367 Timer: 5001; 2368 Pos: 0; 2369 AmmoType: amLandGun; 2370 AttackVoice: sndNone; 2371 Bounciness: defaultBounciness); 2372 Slot: 6; 2373 TimeAfterTurn: 0; 2374 minAngle: 0; 2375 maxAngle: 0; 2376 isDamaging: true; 2377 SkipTurns: 0; 2378 PosCount: 0; 2379 PosSprite: sprWater; 2380 ejectX: 0; //20; 2381 ejectY: -3), 2382 // Freezer 2383 (NameId: sidIceGun; 2384 NameTex: nil; 2385 Probability: 20; 2386 NumberInCase: 1; 2387 Ammo: (Propz: ammoprop_ForwMsgs or 2388 ammoprop_NeedUpDown or 2389 ammoprop_DontHold; 2390 Count: 1; 2391 NumPerTurn: 0; 2392 Timer: 5001; 2393 Pos: 0; 2394 AmmoType: amIceGun; 2395 AttackVoice: sndNone; 2396 Bounciness: defaultBounciness); 2397 Slot: 2; 2398 TimeAfterTurn: 0; 2399 minAngle: 0; 2400 maxAngle: 0; 2401 isDamaging: false; 2402 SkipTurns: 0; 2403 PosCount: 0; 2404 PosSprite: sprWater; 2405 ejectX: 0; //20; 2406 ejectY: -3), 2407 // Knife 2408 (NameId: sidKnife; 2409 NameTex: nil; 2410 Probability: 100; 2411 NumberInCase: 1; 2412 Ammo: (Propz: ammoprop_Power or 2413 ammoprop_AltUse or 2414 ammoprop_NeedUpDown; 2415 Count: 1; 2416 NumPerTurn: 1; 2417 Timer: 0; 2418 Pos: 0; 2419 AmmoType: amKnife; 2420 AttackVoice: sndWatchThis; 2421 Bounciness: defaultBounciness); 2422 Slot: 0; 2423 TimeAfterTurn: 3000; 2424 minAngle: 0; 2425 maxAngle: 0; 2426 isDamaging: true; 2427 SkipTurns: 0; 2428 PosCount: 0; 2429 PosSprite: sprWater; 2430 ejectX: 0; 2431 ejectY: 0), 2432 // Rubber 2433 (NameId: sidRubber; 2434 NameTex: nil; 2435 Probability: 150; 2436 NumberInCase: 1; 2437 Ammo: (Propz: ammoprop_NoRoundEnd or 2438 ammoprop_NoCrosshair or 2439 ammoprop_NeedTarget or 2440 ammoprop_Utility or 2441 ammoprop_AttackingPut; 2442 Count: 1; 2443 NumPerTurn: 0; 2444 Timer: 0; 2445 Pos: 0; 2446 AmmoType: amRubber; 2447 AttackVoice: sndNone; 2448 Bounciness: defaultBounciness); 2449 Slot: 6; 2450 TimeAfterTurn: 3000; 2451 minAngle: 0; 2452 maxAngle: 0; 2453 isDamaging: false; 2454 SkipTurns: 0; 2455 PosCount: 4; 2456 PosSprite: sprAmRubber; 2457 ejectX: 0; 2458 ejectY: 0), 2459 // Air Mine 2460 (NameId: sidAirMine; 2461 NameTex: nil; 2462 Probability: 100; 2463 NumberInCase: 1; 2464 Ammo: (Propz: ammoprop_Power or 2465 ammoprop_AltUse or 2466 ammoprop_NeedUpDown; 2467 Count: 2; 2468 NumPerTurn: 0; 2469 Timer: 0; 2470 Pos: 0; 2471 AmmoType: amAirMine; 2472 AttackVoice: sndLaugh; 2473 Bounciness: defaultBounciness); 2474 Slot: 5; 2475 TimeAfterTurn: 5000; 2476 minAngle: 0; 2477 maxAngle: 0; 2478 isDamaging: true; 2479 SkipTurns: 0; 2480 PosCount: 0; 2481 PosSprite: sprWater; 2482 ejectX: 0; 2483 ejectY: 0), 2484 // Creeper 2485 (NameId: sidCreeper; 2486 NameTex: nil; 2487 Probability: 100; 2488 NumberInCase: 1; 2489 Ammo: (Propz: ammoprop_NoCrosshair or 2490 ammoprop_AttackInMove or 2491 ammoprop_DontHold or 2492 ammoprop_AltUse; 2493 Count: 2; 2494 NumPerTurn: 0; 2495 Timer: 15000; 2496 Pos: 0; 2497 AmmoType: amCreeper; 2498 AttackVoice: sndNone; 2499 Bounciness: defaultBounciness); 2500 // Slot chosen to prevent ammo column overflow 2501 // TODO: Change slot when creeper is finished 2502 Slot: 8; 2503 TimeAfterTurn: 3000; 2504 minAngle: 0; 2505 maxAngle: 0; 2506 isDamaging: true; 2507 SkipTurns: 0; 2508 PosCount: 0; 2509 PosSprite: sprWater; 2510 ejectX: 15; 2511 ejectY: -7), 2512 // Minigun 2513 (NameId: sidMinigun; 2514 NameTex: nil; 2515 Probability: 100; 2516 NumberInCase: 1; 2517 Ammo: (Propz: ammoprop_NeedUpDown; 2518 Count: 1; 2519 NumPerTurn: 0; 2520 Timer: 0; 2521 Pos: 0; 2522 AmmoType: amMinigun; 2523 AttackVoice: sndNone; 2524 Bounciness: defaultBounciness); 2525 Slot: 2; 2526 TimeAfterTurn: 3000; 2527 minAngle: cMaxAngle div 6; 2528 maxAngle: 5 * cMaxAngle div 6; 2529 isDamaging: true; 2530 SkipTurns: 0; 2531 PosCount: 0; 2532 PosSprite: sprWater; 2533 ejectX: 0; //23; 2534 ejectY: 0) //-6; 2535 ); 2536 2537 var 2538 Land: TCollisionArray; 2539 LandPixels: TLandArray; 2540 LandDirty: TDirtyTag; 2541 hasBorder: boolean; 2542 hasGirders: boolean; 2543 playHeight, playWidth, leftX, rightX, topY: LongInt; // idea is that a template can specify height/width. Or, a map, a height/width by the dimensions of the image. If the map has pixels near top of image, it triggers border. 2544 MaxHedgehogs: LongWord; 2545 LandBackSurface: PSDL_Surface; 2546 CurAmmoGear: PGear; 2547 lastGearByUID: PGear; 2548 GearsList: PGear; 2549 AllInactive: boolean; 2550 PrvInactive: boolean; 2551 KilledHHs: Longword; 2552 SuddenDeath: Boolean; // If the Sudden Death check has been made 2553 SuddenDeathActive: Boolean; // Is in Sudden Death with any gameplay effect 2554 SuddenDeathDmg: Boolean; // Is in Sudden Death with damage 2555 SpeechType: Longword; 2556 SpeechText: shortstring; 2557 PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress 2558 PlacingKings: boolean; // a convenience flag to indicate placement of kings in King Mode is still in progress 2559 StepSoundTimer: LongInt; 2560 StepSoundChannel: LongInt; 2561 2562 CurrentTeam: PTeam; 2563 PreviousTeam: PTeam; 2564 MissionTeam: PTeam; 2565 CurrentHedgehog: PHedgehog; 2566 TeamsArray: array[0..Pred(cMaxTeams)] of PTeam; 2567 TeamsCount: Longword; // number of teams on game start 2568 VisibleTeamsCount: Longword; // number of teams visible in team bar 2569 ClansArray, SpawnClansArray: TClansArray; 2570 ClansCount: Longword; 2571 LocalTeam: LongInt; // last non-bot, non-extdriven clan first team 2572 LocalAmmo: LongInt; // last non-bot, non-extdriven clan's first team's ammo index, updated to next upcoming hog for per-hog-ammo 2573 CurMinAngle, CurMaxAngle: Longword; 2574 2575 FollowGear: PGear; 2576 WindBarWidth: LongInt; 2577 bShowAmmoMenu: boolean; 2578 bSelected: boolean; 2579 bShowFinger: boolean; 2580 bShowSwitcher: boolean; 2581 Frames: Longword; 2582 WaterColor, DeepWaterColor: TSDL_Color; 2583 SDTint, SkyColor, RQSkyColor, SDSkyColor: TSDL_Color; 2584 SkyOffset: LongInt; 2585 {$IFDEF COUNTTICKS} 2586 cntTicks: LongWord; 2587 {$ENDIF} 2588 2589 2590 PauseTexture, 2591 AFKTexture, 2592 SyncTexture, 2593 ConfirmTexture: PTexture; 2594 cScaleFactor: GLfloat; 2595 cStereoDepth: GLfloat; 2596 SupportNPOTT: Boolean; 2597 Step: LongInt; 2598 MissionIcons: PSDL_Surface; 2599 ropeIconTex: PTexture; 2600 2601 // stereoscopic framebuffer and textures 2602 framel, framer, depthl, depthr: GLuint; 2603 texl, texr: GLuint; 2604 2605 // video recorder framebuffer and texture 2606 defaultFrame, depthv: GLuint; 2607 texv: GLuint; 2608 2609 lastVisualGearByUID: PVisualGear; 2610 vobFrameTicks, vobFramesCount, vobCount: Longword; 2611 vobVelocity, vobFallSpeed: LongInt; 2612 vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword; 2613 vobSDVelocity, vobSDFallSpeed: LongInt; 2614 watFrames, watFrameTicks: Longword; 2615 watMove: LongInt; 2616 watSDFrames, watSDFrameTicks: Longword; 2617 watSDMove: LongInt; 2618 2619 DefaultBinds : TBinds; 2620 2621 lastTurnChecksum : Longword; 2622 2623 mModelview: TMatrix4x4f; 2624 mProjection: TMatrix4x4f; 2625 vBuffer: GLuint; // vertex buffer 2626 tBuffer: GLuint; // texture coords buffer 2627 cBuffer: GLuint; // color buffer 2628 2629 uCurrentMVPLocation: GLint; 2630 2631 uMainMVPLocation: GLint; 2632 uMainTintLocation: GLint; 2633 2634 uWaterMVPLocation: GLint; 2635 2636 aVertex: GLint; 2637 aTexCoord: GLint; 2638 aColor: GLint; 2639 2640 lDecimalSeparator: Char; 2641 2642 var trammo: array[TAmmoStrId] of ansistring; // name of the weapon 2643 trammoc: array[TAmmoStrId] of ansistring; // caption of the weapon 2644 trammod: array[TAmmoStrId] of ansistring; // description of the weapon 2645 trluaammo: array[TAmmoStrId] of ansistring; // name of the weapon (Lua overwrite) 2646 trluaammoc: array[TAmmoStrId] of ansistring; // caption of the weapon (Lua overwrite) 2647 trluaammod: array[TAmmoStrId] of ansistring; // description of the weapon (Lua overwrite) 2648 trluaammoa: array[TAmmoStrId] of ansistring; // description appendix of the weapon (Lua only) 2649 trluaammoe: array[TAmmoStrId] of boolean; // whether to render extra text (Lua overwrite) 2650 trmsg: array[TMsgStrId] of ansistring; // message of the event 2651 trgoal: array[TGoalStrId] of ansistring; // message of the goal 2652 trcmd: array[TCmdHelpStrId] of ansistring; // chat command help 2653 cTestLua : Boolean; 2654 2655 procedure preInitModule; 2656 procedure initModule; 2657 procedure freeModule; 2658 2659 implementation 2660 2661 procedure preInitModule; 2662 begin 2663 // initialisation flags - they are going to be overwritten by program args 2664 2665 cFullscreenWidth := 0; 2666 cFullscreenHeight := 0; 2667 cWindowedWidth := 1024; 2668 cWindowedHeight := 768; 2669 cWindowedMaximized:= false; 2670 cScreenWidth := cWindowedWidth; 2671 cScreenHeight := cWindowedHeight; 2672 2673 cShowFPS := false; 2674 cAltDamage := false; 2675 cHolidaySilliness := true; 2676 cTimerInterval := 8; 2677 cReducedQuality := rqNone; 2678 cLanguageFName := 'en.txt'; 2679 cFullScreen := false; 2680 2681 UserPathPrefix := ''; 2682 ipcPort := 0; 2683 recordFileName := ''; 2684 UserNick := ''; 2685 cStereoMode := smNone; 2686 GrayScale := false; 2687 PathPrefix := './'; 2688 GameType := gmtLocal; 2689 cOnlyStats := False; 2690 cScriptName := ''; 2691 cScriptParam := ''; 2692 cTestLua := False; 2693 2694 UserZoom := cDefaultZoomLevel; 2695 zoom := cDefaultZoomLevel; 2696 ZoomValue := cDefaultZoomLevel; 2697 2698 {$IFDEF MOBILE} 2699 cMaxZoomLevel := 0.5; 2700 cMinZoomLevel := 3.5; 2701 cZoomDelta := 0.20; 2702 cZoomDeltaSmall := 0.10; 2703 {$ELSE} 2704 cMaxZoomLevel := 1.0; 2705 cMinZoomLevel := 3.0; 2706 cZoomDelta := 0.25; 2707 cZoomDeltaSmall := 0.125; 2708 {$ENDIF} 2709 2710 {$IFDEF USE_VIDEO_RECORDING} 2711 RecPrefix := ''; 2712 cAVFormat := ''; 2713 cVideoCodec := ''; 2714 cVideoFramerateNum := 0; 2715 cVideoFramerateDen := 0; 2716 cVideoQuality := 0; 2717 cAudioCodec := ''; 2718 {$ENDIF} 2719 2720 cTagsMask:= htTeamName or htName or htHealth; 2721 cPrevTagsMask:= cTagsMask; 2722 end; 2723 2724 procedure initScreenSpaceVars(); 2725 begin 2726 // those values still are not perfect 2727 cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth); 2728 cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH); 2729 cScreenSpace:= cRightScreenBorder - cLeftScreenBorder; 2730 end; 2731 2732 procedure initModule; 2733 var s: shortstring; 2734 i: integer; 2735 t: TSound; 2736 a: TAmmoStrId; 2737 begin 2738 // init LastVoice 2739 LastVoice.snd:= sndNone; 2740 LastVoice.voicepack:= nil; 2741 2742 // init arrays 2743 Move(cPathzInit, cPathz, sizeof(cPathz)); 2744 Move(FontzInit, Fontz, sizeof(Fontz)); 2745 Move(SpritesDataInit, SpritesData, sizeof(SpritesData)); 2746 Move(AmmozInit, Ammoz, sizeof(Ammoz)); 2747 2748 2749 cLanguage:= cLanguageFName; 2750 SplitByChar(cLanguage, s, '.'); 2751 2752 cFlattenFlakes := false; 2753 cFlattenClouds := false; 2754 cIce := false; 2755 cSnow := false; 2756 lastVisualGearByUID := nil; 2757 lastGearByUID := nil; 2758 cReadyDelay := 5000; 2759 isInChatMode := false; 2760 2761 {* REFERENCE 2762 4096 -> $FFFFF000 2763 2048 -> $FFFFF800 2764 1024 -> $FFFFFC00 2765 512 -> $FFFFFE00 *} 2766 if (cReducedQuality and rqLowRes) <> 0 then 2767 begin 2768 LAND_WIDTH:= 2048; 2769 LAND_HEIGHT:= 1024; 2770 LAND_WIDTH_MASK:= $FFFFF800; 2771 LAND_HEIGHT_MASK:= $FFFFFC00; 2772 end 2773 else 2774 begin 2775 LAND_WIDTH:= 4096; 2776 LAND_HEIGHT:= 2048; 2777 LAND_WIDTH_MASK:= $FFFFF000; 2778 LAND_HEIGHT_MASK:= $FFFFF800 2779 end; 2780 2781 // default water 2782 WaterColorArray[0].r := 52; 2783 WaterColorArray[0].g := 60; 2784 WaterColorArray[0].b := 125; 2785 WaterColorArray[0].a := 255; 2786 WaterColorArray[2]:= WaterColorArray[0]; 2787 WaterColorArray[4]:= WaterColorArray[0]; 2788 WaterColorArray[6]:= WaterColorArray[0]; 2789 // water surface 2790 WaterColorArray[1].r := 84; 2791 WaterColorArray[1].g := 92; 2792 WaterColorArray[1].b := 157; 2793 WaterColorArray[1].a := 255; 2794 WaterColorArray[3]:= WaterColorArray[1]; 2795 WaterColorArray[5]:= WaterColorArray[1]; 2796 WaterColorArray[7]:= WaterColorArray[1]; 2797 2798 WaterOpacity:= $80; 2799 2800 // default clan colors 2801 // always keep in sync with QTfrontend/hwconsts.h 2802 2803 ClanColorArray[0] := $ffff0204; 2804 ClanColorArray[1] := $ff4980c1; 2805 ClanColorArray[2] := $ff1de6ba; 2806 ClanColorArray[3] := $ffb541ef; 2807 ClanColorArray[4] := $ffe55bb0; 2808 ClanColorArray[5] := $ff20bf00; 2809 ClanColorArray[6] := $fffe8b0e; 2810 ClanColorArray[7] := $ff8f5902; 2811 ClanColorArray[8] := $ffffff01; 2812 2813 // default sudden death water 2814 2815 // deep water 2816 SDWaterColorArray[0].r := 150; 2817 SDWaterColorArray[0].g := 112; 2818 SDWaterColorArray[0].b := 169; 2819 SDWaterColorArray[0].a := 255; 2820 SDWaterColorArray[2]:= SDWaterColorArray[0]; 2821 SDWaterColorArray[4]:= SDWaterColorArray[0]; 2822 SDWaterColorArray[6]:= SDWaterColorArray[0]; 2823 // water surface 2824 SDWaterColorArray[1].r := 182; 2825 SDWaterColorArray[1].g := 144; 2826 SDWaterColorArray[1].b := 201; 2827 SDWaterColorArray[1].a := 255; 2828 SDWaterColorArray[3]:= SDWaterColorArray[1]; 2829 SDWaterColorArray[5]:= SDWaterColorArray[1]; 2830 SDWaterColorArray[7]:= SDWaterColorArray[1]; 2831 2832 SDWaterOpacity:= $80; 2833 2834 SDTint.r := $80; 2835 SDTint.g := $80; 2836 SDTint.b := $80; 2837 SDTint.a := $FF; 2838 2839 ExplosionBorderColorR:= 80; 2840 ExplosionBorderColorG:= 80; 2841 ExplosionBorderColorB:= 80; 2842 ExplosionBorderColor:= $FF808080; 2843 ExplosionBorderColorNoA:= ExplosionBorderColor and (not AMask); 2844 IceColor:= ($44 shl RShift) or ($97 shl GShift) or ($A9 shl BShift) or ($A0 shl AShift); 2845 IceEdgeColor:= ($8A shl RShift) or ($AF shl GShift) or ($B2 shl BShift) or ($FF shl AShift); 2846 2847 WaterOpacity:= $80; 2848 2849 cWaveHeight := 32; 2850 cDrownSpeed.QWordValue := 257698038; // 0.06 2851 cDrownSpeedf := 0.06; 2852 cMaxWindSpeed.QWordValue:= 1073742; // 0.00025 2853 cWindSpeed.QWordValue := 0; // 0.0 2854 cWindSpeedf := 0.0; 2855 cElastic := _0_9; 2856 cGravity := cMaxWindSpeed * 2; 2857 cGravityf := 0.00025 * 2; 2858 cLowGravity := false; 2859 cBuildMaxDist := cDefaultBuildMaxDist; 2860 cDamageModifier := _1; 2861 TargetPoint := cTargetPointRef; 2862 2863 aVertex:= 0; 2864 aTexCoord:= 1; 2865 aColor:= 2; 2866 2867 lDecimalSeparator := '.'; 2868 2869 2870 cMinMaxZoomLevelDelta:= cMaxZoomLevel - cMinZoomLevel; 2871 2872 cDemoClockFPSOffsetY := 0; 2873 2874 // int, longint longword and byte 2875 CursorMovementX := 0; 2876 CursorMovementY := 0; 2877 GameTicks := 0; 2878 OuchTauntTimer := 0; 2879 CheckSum := 0; 2880 cWaterLine := LAND_HEIGHT; 2881 cGearScrEdgesDist := 240; 2882 2883 InputMask := $FFFFFFFF; 2884 GameFlags := 0; 2885 WorldEdge := weNone; 2886 LeftImpactTimer := 0; 2887 RightImpactTimer := 0; 2888 TurnTimeLeft := 0; 2889 IsGetAwayTime := false; 2890 GameOver := false; 2891 TurnClockActive := true; 2892 TagTurnTimeLeft := 0; 2893 cSuddenDTurns := 15; 2894 LastSuddenDWarn := -2; 2895 cInitHealth := 100; 2896 cDamagePercent := 100; 2897 cRopePercent := 100; 2898 cRopeNodeStep := 4; 2899 cRopeLayers := 1; 2900 cGetAwayTime := 100; 2901 cMineDudPercent := 0; 2902 cTemplateFilter := 0; 2903 cFeatureSize := 12; 2904 cMapGen := mgRandom; 2905 cHedgehogTurnTime := 45000; 2906 cMinesTime := 3000; 2907 cMaxAIThinkTime := 9000; 2908 cCloudsNumber := 9; 2909 cSDCloudsNumber := 9; 2910 cHealthCaseProb := 35; 2911 cHealthCaseAmount := 25; 2912 cWaterRise := 47; 2913 cHealthDecrease := 5; 2914 cAdvancedMapGenMode := false; 2915 2916 InitStepsFlags := 0; 2917 RealTicks := 0; 2918 AttackBar := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon 2919 cCaseFactor := 5; {0..9} 2920 cMaxCaseDrops := 5; 2921 cLandMines := 4; 2922 cAirMines := 0; 2923 cExplosives := 2; 2924 2925 GameState := Low(TGameState); 2926 WeaponTooltipTex:= nil; 2927 cLaserSighting := false; 2928 cLaserSightingSniper := false; 2929 cVampiric := false; 2930 flagMakeCapture := false; 2931 flagDumpLand := false; 2932 bBetweenTurns := false; 2933 bWaterRising := false; 2934 bDuringWaterRise:= false; 2935 isCursorVisible := false; 2936 isInLag := false; 2937 isPaused := false; 2938 isInMultiShoot := false; 2939 isSpeed := false; 2940 isAFK := false; 2941 isShowMission := false; 2942 isShowGearInfo := false; 2943 isForceMission := false; 2944 SpeedStart := 0; 2945 fastUntilLag := false; 2946 fastScrolling := false; 2947 autoCameraOn := true; 2948 cSeed := ''; 2949 cIsSoundEnabled := false; 2950 cVolumeDelta := 0; 2951 cVolumeUpKey := false; 2952 cVolumeDownKey := false; 2953 cMuteToggle := false; 2954 cHasFocus := true; 2955 cInactDelay := 100; 2956 ReadyTimeLeft := 0; 2957 2958 disableLandBack := false; 2959 ScreenFade := sfNone; 2960 InCinematicMode := false; 2961 CinematicSteps := 0; 2962 CinematicBarH := 0; 2963 CinematicScript := false; 2964 2965 initScreenSpaceVars(); 2966 2967 dirtyLandTexCount:= 0; 2968 2969 vobFrameTicks:= 0; 2970 vobFramesCount:= 4; 2971 vobCount:= 0; 2972 vobVelocity:= 10; 2973 vobFallSpeed:= 100; 2974 watFrames:= 1; 2975 watFrameTicks:= 0; 2976 watMove:= 100; 2977 2978 vobSDFrameTicks:= 0; 2979 vobSDFramesCount:= 4; 2980 vobSDCount:= 30 * cScreenSpace div LAND_WIDTH; 2981 vobSDVelocity:= 15; 2982 vobSDFallSpeed:= 250; 2983 watSDFrames:= 1; 2984 watSDFrameTicks:= 0; 2985 watSDMove:= 100; 2986 2987 {$IFDEF MOBILE} 2988 cMinScreenWidth := min(cScreenWidth, 480); 2989 cMinScreenHeight := min(cScreenHeight, 320); 2990 {$ELSE} 2991 cMinScreenWidth := min(cScreenWidth, 640); 2992 cMinScreenHeight := min(cScreenHeight, 480); 2993 {$ENDIF} 2994 2995 cNewScreenWidth := cScreenWidth; 2996 cNewScreenHeight := cScreenHeight; 2997 cScreenResizeDelay := 0; 2998 2999 // make sure fullscreen resolution is always initialised somehow 3000 if cFullscreenWidth = 0 then 3001 cFullscreenWidth:= min(cWindowedWidth, 640); 3002 if cFullscreenHeight = 0 then 3003 cFullscreenHeight:= min(cWindowedHeight, 480); 3004 3005 SpeechHogNumber:= -1; 3006 3007 LuaGoals:= ''; 3008 cMapName:= ''; 3009 syncedPixelDigest:= 1; 3010 3011 LuaTemplateNumber:= 0; 3012 3013 LuaEndTurnRequested:= false; 3014 LuaNoEndTurnTaunts:= false; 3015 3016 LuaCmdUsed:= false; 3017 3018 for t:= Low(TSound) to High(TSound) do 3019 MaskedSounds[t]:= false; 3020 3021 for a:= Low(TAmmoStrId) to High(TAmmoStrId) do 3022 trluaammoe[a]:= true; 3023 3024 UIDisplay:= uiAll; 3025 LocalMessage:= 0; 3026 3027 cStereoDepth:= 0; 3028 cViewLimitsDebug:= false; 3029 AprilOne := false; 3030 3031 // initialize pointers to nil 3032 // (don't rely on implicit init of fpc, because that one only happens ONCE when used as lib) 3033 CurAmmoGear:= nil; 3034 lastGearByUID:= nil; 3035 GearsList:= nil; 3036 CurrentTeam:= nil; 3037 PreviousTeam:= nil; 3038 MissionTeam:= nil; 3039 CurrentHedgehog:= nil; 3040 FollowGear:= nil; 3041 lastVisualGearByUID:= nil; 3042 3043 ChefHatTexture:= nil; 3044 CrosshairTexture:= nil; 3045 GenericHealthTexture:= nil; 3046 WeaponTooltipTex:= nil; 3047 HHTexture:= nil; 3048 LandBackSurface:= nil; 3049 ConfirmTexture:= nil; 3050 MissionIcons:= nil; 3051 ropeIconTex:= nil; 3052 3053 SDLWindow:= nil; 3054 SDLGLContext:= nil; 3055 3056 for i:= Low(ClansArray) to High(ClansArray) do 3057 begin 3058 ClansArray[i]:= nil; 3059 end; 3060 3061 SpawnClansArray:= ClansArray; 3062 3063 for i:= Low(TeamsArray) to High(TeamsArray) do 3064 begin 3065 TeamsArray[i]:= nil; 3066 end; 3067 3068 for i:= Low(CountTexz) to High(CountTexz) do 3069 begin 3070 CountTexz[i]:= nil; 3071 end; 3072 3073 end; 3074 3075 procedure freeModule; 3076 begin 3077 end; 3078 3079 end. 3080