hedgewars/uConsts.pas
branchexperimental3D
changeset 4004 b1c2c2f6fc5e
parent 3696 6009d8378422
parent 4000 ddc4a09889e7
child 4343 19cbea33e4d2
equal deleted inserted replaced
3698:793386610068 4004:b1c2c2f6fc5e
    31 
    31 
    32 type
    32 type
    33     HwColor4f = record
    33     HwColor4f = record
    34         r, g, b, a: byte
    34         r, g, b, a: byte
    35         end;
    35         end;
    36         
    36 
    37     TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
    37     TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
    38 
    38 
    39     TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
    39     TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
    40 
    40 
    41     TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
    41     TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
    42             ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
    42             ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
    43             ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags);
    43             ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps);
    44 
    44 
    45     TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
    45     TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
    46             sprLag, sprArrow, sprGrenade, sprTargetP, sprBee,
    46             sprLag, sprArrow, sprGrenade, sprTargetP, sprBee,
    47             sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
    47             sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
    48             sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
    48             sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
    69             sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
    69             sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
    70             sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll,
    70             sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll,
    71             sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction,
    71             sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction,
    72             sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster,
    72             sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster,
    73             sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp,
    73             sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp,
    74             sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, 
    74             sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee,
    75             sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal,
    75             sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal,
    76             sprCheese, sprHandCheese, sprHandFlamethrower
    76             sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
       
    77             sprSMineOff, sprSMineOn, sprHandSMine, sprHammer, sprHandResurrector
    77             );
    78             );
    78     
    79 
    79     // Gears that interact with other Gears and/or Land
    80     // Gears that interact with other Gears and/or Land
    80     TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtGrave, gtBee, // 4
    81     TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtGrave, gtBee, // 4
    81             gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9
    82             gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9
    82             gtDEagleShot, gtDynamite, gtClusterBomb, gtCluster, gtShover, // 14
    83             gtDEagleShot, gtDynamite, gtClusterBomb, gtCluster, gtShover, // 14
    83             gtFlame, gtFirePunch, gtATStartGame, gtATSmoothWindCh, // 18
    84             gtFlame, gtFirePunch, gtATStartGame, gtATSmoothWindCh, // 18
    84             gtATFinishGame, gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, // 23
    85             gtATFinishGame, gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, // 23
    85             gtGirder, gtTeleport, gtSwitcher, gtTarget, gtMortar, // 28
    86             gtGirder, gtTeleport, gtSwitcher, gtTarget, gtMortar, // 28
    86             gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34
    87             gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34
    87             gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40
    88             gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40
    88             gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45
    89             gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45
    89             gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower); // 51
    90             gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51
       
    91             gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector);
    90 
    92 
    91     // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.)
    93     // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.)
    92     TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
    94     TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
    93             vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
    95             vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
    94             vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell,
    96             vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell,
    95             vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg,
    97             vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg,
    96             vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion,
    98             vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion,
    97             vgtBigExplosion);
    99             vgtBigExplosion, vgtChunk, vgtNote);
    98 
   100 
    99     TGearsType = set of TGearType;
   101     TGearsType = set of TGearType;
   100 
   102 
   101     TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison);
   103     TDamageSource = (dsUnknown, dsFall, dsBullet, dsExplosion, dsShove, dsPoison);
   102 
   104 
   118             sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity,
   120             sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity,
   119             sndHellishImpact1, sndHellishImpact2, sndHellishImpact3, sndHellishImpact4,
   121             sndHellishImpact1, sndHellishImpact2, sndHellishImpact3, sndHellishImpact4,
   120             sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket,
   122             sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket,
   121             sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater,
   123             sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater,
   122             sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8,
   124             sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8,
   123             sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3);
   125             sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack,
   124 
   126             sndComeonthen, sndParachute, sndBump, sndResurrector);
   125     TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer,
   127 
   126             amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
   128     TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6
   127             amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
   129             amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, // 13
   128             amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
   130             amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, // 18
   129             amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun,
   131             amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, // 24
   130             amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
   132             amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, // 30
   131             amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun,
   133             amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35
   132             amPiano, amGasBomb, amSineGun, amFlamethrower);
   134             amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42
   133 
   135             amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48
   134     THWFont = (fnt16, fntBig, fntSmall, CJKfnt16, CJKfntBig, CJKfntSmall);
   136             amResurrector);
       
   137 
       
   138     TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
       
   139 
       
   140     THWFont = (fnt16, fntBig, fntSmall {$IFNDEF IPHONEOS}, CJKfnt16, CJKfntBig, CJKfntSmall{$ENDIF});
   135 
   141 
   136     TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
   142     TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
   137             capgrpMessage, capgrpAmmostate);
   143             capgrpMessage, capgrpAmmostate);
   138 
   144 
   139     TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
   145     TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
   140             siClanHealth, siTeamStats);
   146             siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage,
       
   147             siMaxTeamKills, siMaxTurnSkips );
   141 
   148 
   142     TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
   149     TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
   143 
   150 
   144     TRenderMode = (rmDefault, rmLeftEye, rmRightEye);
   151     TRenderMode = (rmDefault, rmLeftEye, rmRightEye);
   145     TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical, smAFR);
   152     TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical, smAFR);
   155     TAmmo = record
   162     TAmmo = record
   156             Propz: LongWord;
   163             Propz: LongWord;
   157             Count: LongWord;
   164             Count: LongWord;
   158 (* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess.
   165 (* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess.
   159 For example, say, a mode where the weaponset is reset each turn, or on sudden death *)
   166 For example, say, a mode where the weaponset is reset each turn, or on sudden death *)
   160             InitialCount: LongWord; 
       
   161             NumPerTurn: LongWord;
   167             NumPerTurn: LongWord;
   162             Timer: LongWord;
   168             Timer: LongWord;
   163             Pos: LongWord;
   169             Pos: LongWord;
   164             AmmoType: TAmmoType;
   170             AmmoType: TAmmoType;
   165             AttackVoice: TSound;
   171             AttackVoice: TSound;
   181             priority: GLfloat;
   187             priority: GLfloat;
   182             vb, tb: array [0..3] of TVertex2f;
   188             vb, tb: array [0..3] of TVertex2f;
   183             PrevTexture, NextTexture: PTexture;
   189             PrevTexture, NextTexture: PTexture;
   184             end;
   190             end;
   185 
   191 
   186     THogEffect = (heInvulnerable, hePoisoned);
   192     THogEffect = (heInvulnerable, heResurrectable, hePoisoned);
   187 
   193 
   188     TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite);
   194     TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite);
   189 const sfMax = 1000;
   195 const
       
   196     sfMax = 1000;
       
   197     cDefaultParamNum = 17;
   190 
   198 
   191     // message constants
   199     // message constants
   192     errmsgCreateSurface   = 'Error creating SDL surface';
   200     errmsgCreateSurface   = 'Error creating SDL surface';
   193     errmsgTransparentSet  = 'Error setting transparent color';
   201     errmsgTransparentSet  = 'Error setting transparent color';
   194     errmsgUnknownCommand  = 'Unknown command';
   202     errmsgUnknownCommand  = 'Unknown command';
   195     errmsgUnknownVariable = 'Unknown variable';
   203     errmsgUnknownVariable = 'Unknown variable';
   196     errmsgIncorrectUse    = 'Incorrect use';
   204     errmsgIncorrectUse    = 'Incorrect use';
   197     errmsgShouldntRun     = 'This program shouldn''t be run manually';
   205     errmsgShouldntRun     = 'This program shouldn''t be run manually';
   198     errmsgWrongNumber     = 'Wrong parameters number';
   206     errmsgWrongNumber     = 'Wrong parameters number';
   199     errmsgSlotsOverflow   = 'CurSlot overflowed';
       
   200 
   207 
   201     msgLoading           = 'Loading ';
   208     msgLoading           = 'Loading ';
   202     msgOK                = 'ok';
   209     msgOK                = 'ok';
   203     msgFailed            = 'failed';
   210     msgFailed            = 'failed';
   204     msgFailedSize        = 'failed due to size';
   211     msgFailedSize        = 'failed due to size';
   221     // reducedquality flags
   228     // reducedquality flags
   222     rqNone        = $00000000;  // don't reduce quality
   229     rqNone        = $00000000;  // don't reduce quality
   223     rqLowRes      = $00000001;  // use half land array
   230     rqLowRes      = $00000001;  // use half land array
   224     rqBlurryLand  = $00000002;  // downscaled terrain
   231     rqBlurryLand  = $00000002;  // downscaled terrain
   225     rqNoBackground= $00000004;  // don't draw background
   232     rqNoBackground= $00000004;  // don't draw background
   226     rqSimpleRope  = $00000008;  // avoid drawing rope
   233     rqSimpleRope  = $00000008;  // draw rope using lines only
   227     rq2DWater     = $00000010;  // disabe 3D water effect
   234     rq2DWater     = $00000010;  // disable 3D water effect
   228     rqFancyBoom   = $00000020;  // no fancy explosion effects
   235     rqFancyBoom   = $00000020;  // no fancy explosion effects
   229     rqKillFlakes  = $00000040;  // no flakes
   236     rqKillFlakes  = $00000040;  // no flakes
   230     rqSlowMenu    = $00000080;  // ammomenu appears with no animation
   237     rqSlowMenu    = $00000080;  // ammomenu appears with no animation
   231     rqPlainSplash = $00000100;  // no droplets
   238     rqPlainSplash = $00000100;  // no droplets
   232     rqClampLess   = $00000200;  // don't clamp textures
   239     rqClampLess   = $00000200;  // don't clamp textures
   257     cMaxPower     = 1500;
   264     cMaxPower     = 1500;
   258     cMaxAngle     = 2048;
   265     cMaxAngle     = 2048;
   259     cPowerDivisor = 1500;
   266     cPowerDivisor = 1500;
   260 
   267 
   261     MAXNAMELEN = 192;
   268     MAXNAMELEN = 192;
   262     
   269 
   263     // some opengl headers do not have these macros
   270     // some opengl headers do not have these macros
   264     GL_BGR              = $80E0;
   271     GL_BGR              = $80E0;
   265     GL_BGRA             = $80E1;
   272     GL_BGRA             = $80E1;
   266     GL_CLAMP_TO_EDGE    = $812F;
   273     GL_CLAMP_TO_EDGE    = $812F;
   267     GL_TEXTURE_PRIORITY = $8066;
   274     GL_TEXTURE_PRIORITY = $8066;
   268     
   275 
   269     cSendCursorPosTime  : LongWord = 50;
   276     cSendCursorPosTime  : LongWord = 50;
   270     cVisibleWater       : LongInt = 128;
   277     cVisibleWater       : LongInt = 128;
   271     cCursorEdgesDist    : LongInt = 100;
   278     cCursorEdgesDist    : LongInt = 100;
   272     cTeamHealthWidth    : LongInt = 128;
   279     cTeamHealthWidth    : LongInt = 128;
   273     cWaterOpacity       : byte = $80;
   280     cWaterOpacity       : byte = $80;
   299     cShotgunRadius = 22;
   306     cShotgunRadius = 22;
   300     cBlowTorchC    = 6;
   307     cBlowTorchC    = 6;
   301 
   308 
   302     cKeyMaxIndex = 1023;
   309     cKeyMaxIndex = 1023;
   303 
   310 
       
   311     // do not change this value
   304     cDefaultZoomLevel = 2.0;
   312     cDefaultZoomLevel = 2.0;
       
   313 
   305 {$IFDEF IPHONEOS}
   314 {$IFDEF IPHONEOS}
   306     cMaxZoomLevel = 0.5;
   315     cMaxZoomLevel = 0.5;
   307     cMinZoomLevel = 3.5;
   316     cMinZoomLevel = 3.5;
   308     cZoomDelta = 0.20;
   317     cZoomDelta = 0.20;
   309 {$ELSE}
   318 {$ELSE}
   311     cMinZoomLevel = 3.0;
   320     cMinZoomLevel = 3.0;
   312     cZoomDelta = 0.25;
   321     cZoomDelta = 0.25;
   313 {$ENDIF}
   322 {$ENDIF}
   314 
   323 
   315     cSendEmptyPacketTime = 1000;
   324     cSendEmptyPacketTime = 1000;
   316 
       
   317     // from uTriggers
       
   318     trigTurns = $80000001;
   325     trigTurns = $80000001;
   319 
   326 
   320     // Training Flags
   327     // Training Flags
   321     tfNone          = $00000000;
   328     tfNone          = $00000000;
   322     tfTimeTrial     = $00000001;
   329     tfTimeTrial     = $00000001;
   323     tfRCPlane       = $00000002;
   330     tfRCPlane       = $00000002;
   324     tfSpawnTargets  = $00000004;
   331     tfSpawnTargets  = $00000004;
   325     tfIgnoreDelays  = $00000008;
   332     tfIgnoreDelays  = $00000008;
   326     tfTargetRespawn = $00000010;
   333     tfTargetRespawn = $00000010;
   327     
   334 
   328     gfAny            = $FFFFFFFF;
   335     gfAny                = $FFFFFFFF;
   329     gfForts          = $00000001;
   336     gfOneClanMode        = $00000001;           // used in trainings
   330     gfMultiWeapon    = $00000002;
   337     gfMultiWeapon        = $00000002;           // used in trainings
   331     gfSolidLand      = $00000004;
   338     gfSolidLand          = $00000004;
   332     gfBorder         = $00000008;
   339     gfBorder             = $00000008;
   333     gfDivideTeams    = $00000010;
   340     gfDivideTeams        = $00000010;
   334     gfLowGravity     = $00000020;
   341     gfLowGravity         = $00000020;
   335     gfLaserSight     = $00000040;
   342     gfLaserSight         = $00000040;
   336     gfInvulnerable   = $00000080;
   343     gfInvulnerable       = $00000080;
   337     gfMines          = $00000100;
   344     gfMines              = $00000100;           // redundant? same effect as 'landadds 0'
   338     gfVampiric       = $00000200;
   345     gfVampiric           = $00000200;
   339     gfKarma          = $00000400;
   346     gfKarma              = $00000400;
   340     gfArtillery      = $00000800;
   347     gfArtillery          = $00000800;
   341     gfOneClanMode    = $00001000;
   348     gfForts              = $00001000;
   342     gfRandomOrder    = $00002000;
   349     gfRandomOrder        = $00002000;
   343     gfKing           = $00004000;
   350     gfKing               = $00004000;
   344     gfPlaceHog       = $00008000;
   351     gfPlaceHog           = $00008000;
   345     gfSharedAmmo     = $00010000;
   352     gfSharedAmmo         = $00010000;
   346     gfDisableGirders = $00020000;
   353     gfDisableGirders     = $00020000;
   347     gfExplosives     = $00040000;
   354     gfDisableLandObjects = $00040000;
   348     gfDisableLandObjects = $00080000;
   355     gfAISurvival         = $00080000;
       
   356     gfInfAttack          = $00100000;
       
   357     gfResetWeps          = $00200000;
       
   358     gfPerHogAmmo         = $00400000;
   349     // NOTE: When adding new game flags, ask yourself
   359     // NOTE: When adding new game flags, ask yourself
   350     // if a "game start notice" would be useful. If so,
   360     // if a "game start notice" would be useful. If so,
   351     // add one in uWorld.pas - look for "AddGoal".
   361     // add one in uWorld.pas - look for "AddGoal".
   352 
   362 
   353     gstDrowning       = $00000001;
   363     gstDrowning       = $00000001;
   368     gstWait           = $00020000;
   378     gstWait           = $00020000;
   369     gstNotKickable    = $00040000;
   379     gstNotKickable    = $00040000;
   370     gstLoser          = $00080000;
   380     gstLoser          = $00080000;
   371     gstHHGone         = $00100000;
   381     gstHHGone         = $00100000;
   372 
   382 
   373     gm_Left   = $00000001;
   383     gmLeft   = $00000001;
   374     gm_Right  = $00000002;
   384     gmRight  = $00000002;
   375     gm_Up     = $00000004;
   385     gmUp     = $00000004;
   376     gm_Down   = $00000008;
   386     gmDown   = $00000008;
   377     gm_Switch = $00000010;
   387     gmSwitch = $00000010;
   378     gm_Attack = $00000020;
   388     gmAttack = $00000020;
   379     gm_LJump  = $00000040;
   389     gmLJump  = $00000040;
   380     gm_HJump  = $00000080;
   390     gmHJump  = $00000080;
   381     gm_Destroy= $00000100;
   391     gmDestroy= $00000100;
   382     gm_Slot   = $00000200; // with param
   392     gmSlot   = $00000200; // with param
   383     gm_Weapon = $00000400; // with param
   393     gmWeapon = $00000400; // with param
   384     gm_Timer  = $00000800; // with param
   394     gmTimer  = $00000800; // with param
   385     gm_Animate= $00001000; // with param
   395     gmAnimate= $00001000; // with param
   386     gm_Precise= $00002000;
   396     gmPrecise= $00002000;
   387     gmAllStoppable = gm_Left or gm_Right or gm_Up or gm_Down or gm_Attack or gm_Precise;
   397     gmAllStoppable = gmLeft or gmRight or gmUp or gmDown or gmAttack or gmPrecise;
   388 
   398 
   389     cMaxSlotIndex       = 9;
   399     cMaxSlotIndex       = 9;
   390     cMaxSlotAmmoIndex   = 5;
   400     cMaxSlotAmmoIndex   = 5;
   391 
   401 
   392     ammoprop_Timerable    = $00000001;
   402     ammoprop_Timerable    = $00000001;
   401     ammoprop_AltUse       = $00000400;
   411     ammoprop_AltUse       = $00000400;
   402     ammoprop_NotBorder    = $00000800;
   412     ammoprop_NotBorder    = $00000800;
   403     ammoprop_Utility      = $00001000;
   413     ammoprop_Utility      = $00001000;
   404     ammoprop_Effect       = $00002000;
   414     ammoprop_Effect       = $00002000;
   405     ammoprop_NoRoundEndHint=$10000000;
   415     ammoprop_NoRoundEndHint=$10000000;
   406     
   416 
   407     AMMO_INFINITE = 100;
   417     AMMO_INFINITE = 100;
   408 
   418 
   409     EXPLAllDamageInRadius = $00000001;
   419     EXPLAllDamageInRadius = $00000001;
   410     EXPLAutoSound         = $00000002;
   420     EXPLAutoSound         = $00000002;
   411     EXPLNoDamage          = $00000004;
   421     EXPLNoDamage          = $00000004;
   412     EXPLDoNotTouchHH      = $00000008;
   422     EXPLDoNotTouchHH      = $00000008;
   413     EXPLDontDraw          = $00000010;
   423     EXPLDontDraw          = $00000010;
   414     EXPLNoGfx             = $00000020;
   424     EXPLNoGfx             = $00000020;
   415     EXPLPoisoned          = $00000040;
   425     EXPLPoisoned          = $00000040;
       
   426     EXPLDoNotTouchAny     = $00000080;
   416 
   427 
   417     posCaseAmmo    = $00000001;
   428     posCaseAmmo    = $00000001;
   418     posCaseHealth  = $00000002;
   429     posCaseHealth  = $00000002;
   419     posCaseUtility = $00000004;
   430     posCaseUtility = $00000004;
   420 
   431 
   425     htNone        = $00;
   436     htNone        = $00;
   426     htTeamName    = $01;
   437     htTeamName    = $01;
   427     htName        = $02;
   438     htName        = $02;
   428     htHealth      = $04;
   439     htHealth      = $04;
   429     htTransparent = $08;
   440     htTransparent = $08;
   430     
   441 
   431     cHHFileName = 'Hedgehog';
   442     cHHFileName = 'Hedgehog';
   432     cCHFileName = 'Crosshair';
   443     cCHFileName = 'Crosshair';
   433     cThemeCFGFilename = 'theme.cfg';
   444     cThemeCFGFilename = 'theme.cfg';
   434     
   445 
   435     FontBorder = 2;
   446     FontBorder = 2;
   436     cPathz: array[TPathType] of shortstring = (
   447     cPathz: array[TPathType] of shortstring = (
   437         '',                              // ptNone
   448         '',                              // ptNone
   438         '',                              // ptData
   449         '',                              // ptData
   439         'Graphics',                      // ptGraphics
   450         'Graphics',                      // ptGraphics
   450         'Locale',                        // ptLocale
   461         'Locale',                        // ptLocale
   451         'Graphics/AmmoMenu',             // ptAmmoMenu
   462         'Graphics/AmmoMenu',             // ptAmmoMenu
   452         'Graphics/Hedgehog',             // ptHedgehog
   463         'Graphics/Hedgehog',             // ptHedgehog
   453         'Sounds/voices',                 // ptVoices
   464         'Sounds/voices',                 // ptVoices
   454         'Graphics/Hats',                 // ptHats
   465         'Graphics/Hats',                 // ptHats
   455         'Graphics/Flags'                 // ptFlags
   466         'Graphics/Flags',                // ptFlags
       
   467         'Missions/Maps'                  // ptMissionMaps
   456     );
   468     );
   457     
   469 
   458 var PathPrefix: shortstring = './';
       
   459     Pathz: array[TPathType] of shortstring;
       
   460     CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture;
       
   461     LAND_WIDTH  :longint;
       
   462     LAND_HEIGHT :longint;
       
   463     LAND_WIDTH_MASK  :longWord;
       
   464     LAND_HEIGHT_MASK :longWord;
       
   465     cMaxCaptions : LongInt;
       
   466 
       
   467 const
       
   468     cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
   470     cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
   469     cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0);
   471     cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0);
   470 
   472 
   471     Fontz: array[THWFont] of THHFont = (
   473     Fontz: array[THWFont] of THHFont = (
   472             (Handle: nil;
   474             (Handle: nil;
   478             style: TTF_STYLE_NORMAL;
   480             style: TTF_STYLE_NORMAL;
   479             Name: 'DejaVuSans-Bold.ttf'),
   481             Name: 'DejaVuSans-Bold.ttf'),
   480             (Handle: nil;
   482             (Handle: nil;
   481             Height: 10;
   483             Height: 10;
   482             style: TTF_STYLE_NORMAL;
   484             style: TTF_STYLE_NORMAL;
   483             Name: 'DejaVuSans-Bold.ttf'),
   485             Name: 'DejaVuSans-Bold.ttf')
       
   486             {$IFNDEF IPHONEOS}, // remove chinese fonts for now
   484             (Handle: nil;
   487             (Handle: nil;
   485             Height: 12;
   488             Height: 12;
   486             style: TTF_STYLE_NORMAL;
   489             style: TTF_STYLE_NORMAL;
   487             Name: 'wqy-zenhei.ttc'),
   490             Name: 'wqy-zenhei.ttc'),
   488             (Handle: nil;
   491             (Handle: nil;
   491             Name: 'wqy-zenhei.ttc'),
   494             Name: 'wqy-zenhei.ttc'),
   492             (Handle: nil;
   495             (Handle: nil;
   493             Height: 10;
   496             Height: 10;
   494             style: TTF_STYLE_NORMAL;
   497             style: TTF_STYLE_NORMAL;
   495             Name: 'wqy-zenhei.ttc')
   498             Name: 'wqy-zenhei.ttc')
       
   499             {$ENDIF}
   496             );
   500             );
   497 
   501 
   498     SpritesData: array[TSprite] of record
   502     SpritesData: array[TSprite] of record
   499             FileName: String[16];
   503             FileName: String[16];
   500             Path, AltPath: TPathType;
   504             Path, AltPath: TPathType;
   723             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles
   727             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles
   724             (FileName:  'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   728             (FileName:  'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   725             Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack
   729             Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack
   726             (FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   730             (FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   727             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth
   731             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth
   728             (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 
   732             (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   729             Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov
   733             Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov
   730             (FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   734             (FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   731             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov
   735             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov
   732             (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   736             (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   733             Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke
   737             Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke
   798             (FileName:  'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   802             (FileName:  'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
   799             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese
   803             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese
   800             (FileName:  'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   804             (FileName:  'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   801             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese
   805             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese
   802             (FileName:  'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   806             (FileName:  'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
   803             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprHandFlamethrower
   807             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower
   804             );
   808             (FileName:  'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   809             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk
       
   810             (FileName:  'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   811             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote
       
   812             (FileName:   'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   813             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff
       
   814             (FileName:    'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   815             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn
       
   816             (FileName:   'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   817             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine
       
   818             (FileName:  'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   819             Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprWhip
       
   820             (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone;
       
   821                 Texture: nil; Surface: nil; Width: 32; Height: 32;
       
   822                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   823                 tpMedium; getDimensions: false; getImageDimensions: true) 
       
   824             ); // sprHandResurrector
   805 
   825 
   806     Wavez: array [TWave] of record
   826     Wavez: array [TWave] of record
   807             Sprite: TSprite;
   827             Sprite: TSprite;
   808             FramesCount: Longword;
   828             FramesCount: Longword;
   809             Interval: Longword;
   829             Interval: Longword;
   906             (FileName:          'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact
   926             (FileName:          'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact
   907             (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndDroplet1
   927             (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndDroplet1
   908             (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
   928             (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
   909             (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
   929             (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
   910             (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
   930             (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
   911             (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndDrillRocket
   931             (FileName:             'drillgun.ogg'; Path: ptSounds),// sndDrillRocket
   912             (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
   932             (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
   913             (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
   933             (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
   914             (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
   934             (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
   915             (FileName:              'Whistle.ogg'; Path: ptSounds),// sndWhistle
   935             (FileName:              'Whistle.ogg'; Path: ptSounds),// sndWhistle
   916             (FileName:             'beewater.ogg'; Path: ptSounds),// sndBeeWater
   936             (FileName:             'beewater.ogg'; Path: ptSounds),// sndBeeWater
   925             (FileName:                   '9D.ogg'; Path: ptSounds),// sndPiano8
   945             (FileName:                   '9D.ogg'; Path: ptSounds),// sndPiano8
   926             (FileName:                 'skip.ogg'; Path: ptSounds),// sndSkip
   946             (FileName:                 'skip.ogg'; Path: ptSounds),// sndSkip
   927             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndSineGun
   947             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndSineGun
   928             (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
   948             (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
   929             (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
   949             (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
   930             (FileName:                'Ooff3.ogg'; Path: ptVoices) // sndOoff3
   950             (FileName:                'Ooff3.ogg'; Path: ptVoices),// sndOoff3
       
   951             (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhack
       
   952             (FileName:           'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen
       
   953             (FileName:            'parachute.ogg'; Path: ptSounds),// sndParachute
       
   954             (FileName:                 'bump.ogg'; Path: ptSounds),// sndBump
       
   955             (FileName: 'hogchant3.ogg'; Path: ptSounds) // sndResurrector
   931             );
   956             );
   932 
   957 
   933     Ammoz: array [TAmmoType] of record
   958     Ammoz: array [TAmmoType] of record
   934             NameId: TAmmoStrId;
   959             NameId: TAmmoStrId;
   935             NameTex: PTexture;
   960             NameTex: PTexture;
   948             NameTex: nil;
   973             NameTex: nil;
   949             Probability: 0;
   974             Probability: 0;
   950             NumberInCase: 0;
   975             NumberInCase: 0;
   951             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect;
   976             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect;
   952                 Count: AMMO_INFINITE;
   977                 Count: AMMO_INFINITE;
   953                 InitialCount: AMMO_INFINITE;
       
   954                 NumPerTurn: 0;
   978                 NumPerTurn: 0;
   955                 Timer: 0;
   979                 Timer: 0;
   956                 Pos: 0;
   980                 Pos: 0;
   957                 AmmoType: amNothing;
   981                 AmmoType: amNothing;
   958                 AttackVoice: sndNone);
   982                 AttackVoice: sndNone);
   972             NameTex: nil;
   996             NameTex: nil;
   973             Probability: 0;
   997             Probability: 0;
   974             NumberInCase: 1;
   998             NumberInCase: 1;
   975             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
   999             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
   976                 Count: AMMO_INFINITE;
  1000                 Count: AMMO_INFINITE;
   977                 InitialCount: AMMO_INFINITE;
       
   978                 NumPerTurn: 0;
  1001                 NumPerTurn: 0;
   979                 Timer: 3000;
  1002                 Timer: 3000;
   980                 Pos: 0;
  1003                 Pos: 0;
   981                 AmmoType: amGrenade;
  1004                 AmmoType: amGrenade;
   982                 AttackVoice: sndCover);
  1005                 AttackVoice: sndCover);
   996             NameTex: nil;
  1019             NameTex: nil;
   997             Probability: 100;
  1020             Probability: 100;
   998             NumberInCase: 3;
  1021             NumberInCase: 3;
   999             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  1022             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  1000                 Count: 5;
  1023                 Count: 5;
  1001                 InitialCount: 5;
       
  1002                 NumPerTurn: 0;
  1024                 NumPerTurn: 0;
  1003                 Timer: 3000;
  1025                 Timer: 3000;
  1004                 Pos: 0;
  1026                 Pos: 0;
  1005                 AmmoType: amClusterBomb;
  1027                 AmmoType: amClusterBomb;
  1006                 AttackVoice: sndCover);
  1028                 AttackVoice: sndCover);
  1020             NameTex: nil;
  1042             NameTex: nil;
  1021             Probability: 0;
  1043             Probability: 0;
  1022             NumberInCase: 1;
  1044             NumberInCase: 1;
  1023             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1045             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1024                 Count: AMMO_INFINITE;
  1046                 Count: AMMO_INFINITE;
  1025                 InitialCount: AMMO_INFINITE;
       
  1026                 NumPerTurn: 0;
  1047                 NumPerTurn: 0;
  1027                 Timer: 0;
  1048                 Timer: 0;
  1028                 Pos: 0;
  1049                 Pos: 0;
  1029                 AmmoType: amBazooka;
  1050                 AmmoType: amBazooka;
  1030                 AttackVoice: sndNone);
  1051                 AttackVoice: sndNone);
  1044             NameTex: nil;
  1065             NameTex: nil;
  1045             Probability: 100;
  1066             Probability: 100;
  1046             NumberInCase: 1;
  1067             NumberInCase: 1;
  1047             Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold;
  1068             Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold;
  1048                 Count: 2;
  1069                 Count: 2;
  1049                 InitialCount: 2;
       
  1050                 NumPerTurn: 0;
  1070                 NumPerTurn: 0;
  1051                 Timer: 0;
  1071                 Timer: 0;
  1052                 Pos: 0;
  1072                 Pos: 0;
  1053                 AmmoType: amBee;
  1073                 AmmoType: amBee;
  1054                 AttackVoice: sndNone);
  1074                 AttackVoice: sndNone);
  1068             NameTex: nil;
  1088             NameTex: nil;
  1069             Probability: 0;
  1089             Probability: 0;
  1070             NumberInCase: 1;
  1090             NumberInCase: 1;
  1071             Ammo: (Propz: ammoprop_ForwMsgs;
  1091             Ammo: (Propz: ammoprop_ForwMsgs;
  1072                 Count: AMMO_INFINITE;
  1092                 Count: AMMO_INFINITE;
  1073                 InitialCount: AMMO_INFINITE;
       
  1074                 NumPerTurn: 1;
  1093                 NumPerTurn: 1;
  1075                 Timer: 0;
  1094                 Timer: 0;
  1076                 Pos: 0;
  1095                 Pos: 0;
  1077                 AmmoType: amShotgun;
  1096                 AmmoType: amShotgun;
  1078                 AttackVoice: sndNone);
  1097                 AttackVoice: sndNone);
  1092             NameTex: nil;
  1111             NameTex: nil;
  1093             Probability: 0;
  1112             Probability: 0;
  1094             NumberInCase: 1;
  1113             NumberInCase: 1;
  1095             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
  1114             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
  1096                 Count: 2;
  1115                 Count: 2;
  1097                 InitialCount: 2;
       
  1098                 NumPerTurn: 0;
  1116                 NumPerTurn: 0;
  1099                 Timer: 0;
  1117                 Timer: 0;
  1100                 Pos: 0;
  1118                 Pos: 0;
  1101                 AmmoType: amPickHammer;
  1119                 AmmoType: amPickHammer;
  1102                 AttackVoice: sndNone);
  1120                 AttackVoice: sndNone);
  1116             NameTex: nil;
  1134             NameTex: nil;
  1117             Probability: 0;
  1135             Probability: 0;
  1118             NumberInCase: 1;
  1136             NumberInCase: 1;
  1119             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
  1137             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
  1120                 Count: AMMO_INFINITE;
  1138                 Count: AMMO_INFINITE;
  1121                 InitialCount: AMMO_INFINITE;
       
  1122                 NumPerTurn: 0;
  1139                 NumPerTurn: 0;
  1123                 Timer: 0;
  1140                 Timer: 0;
  1124                 Pos: 0;
  1141                 Pos: 0;
  1125                 AmmoType: amSkip;
  1142                 AmmoType: amSkip;
  1126                 AttackVoice: sndNone);
  1143                 AttackVoice: sndNone);
  1144                           ammoprop_ForwMsgs or
  1161                           ammoprop_ForwMsgs or
  1145                           ammoprop_AttackInMove or
  1162                           ammoprop_AttackInMove or
  1146                           ammoprop_Utility or
  1163                           ammoprop_Utility or
  1147                           ammoprop_AltAttack;
  1164                           ammoprop_AltAttack;
  1148                     Count: 5;
  1165                     Count: 5;
  1149                     InitialCount: 5;
       
  1150                     NumPerTurn: 0;
  1166                     NumPerTurn: 0;
  1151                     Timer: 0;
  1167                     Timer: 0;
  1152                     Pos: 0;
  1168                     Pos: 0;
  1153                     AmmoType: amRope;
  1169                     AmmoType: amRope;
  1154                     AttackVoice: sndNone);
  1170                     AttackVoice: sndNone);
  1168             NameTex: nil;
  1184             NameTex: nil;
  1169             Probability: 100;
  1185             Probability: 100;
  1170             NumberInCase: 1;
  1186             NumberInCase: 1;
  1171             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
  1187             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
  1172                 Count: 2;
  1188                 Count: 2;
  1173                 InitialCount: 2;
       
  1174                 NumPerTurn: 0;
  1189                 NumPerTurn: 0;
  1175                 Timer: 0;
  1190                 Timer: 0;
  1176                 Pos: 0;
  1191                 Pos: 0;
  1177                 AmmoType: amMine;
  1192                 AmmoType: amMine;
  1178                 AttackVoice: sndLaugh);
  1193                 AttackVoice: sndLaugh);
  1192             NameTex: nil;
  1207             NameTex: nil;
  1193             Probability: 20;
  1208             Probability: 20;
  1194             NumberInCase: 2;
  1209             NumberInCase: 2;
  1195             Ammo: (Propz: 0;
  1210             Ammo: (Propz: 0;
  1196                 Count: 3;
  1211                 Count: 3;
  1197                 InitialCount: 3;
       
  1198                 NumPerTurn: 3;
  1212                 NumPerTurn: 3;
  1199                 Timer: 0;
  1213                 Timer: 0;
  1200                 Pos: 0;
  1214                 Pos: 0;
  1201                 AmmoType: amDEagle;
  1215                 AmmoType: amDEagle;
  1202                 AttackVoice: sndNone);
  1216                 AttackVoice: sndNone);
  1216             NameTex: nil;
  1230             NameTex: nil;
  1217             Probability: 100;
  1231             Probability: 100;
  1218             NumberInCase: 1;
  1232             NumberInCase: 1;
  1219             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
  1233             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
  1220                 Count: 1;
  1234                 Count: 1;
  1221                 InitialCount: 1;
       
  1222                 NumPerTurn: 0;
  1235                 NumPerTurn: 0;
  1223                 Timer: 0;
  1236                 Timer: 0;
  1224                 Pos: 0;
  1237                 Pos: 0;
  1225                 AmmoType: amDynamite;
  1238                 AmmoType: amDynamite;
  1226                 AttackVoice: sndLaugh);
  1239                 AttackVoice: sndLaugh);
  1240             NameTex: nil;
  1253             NameTex: nil;
  1241             Probability: 0;
  1254             Probability: 0;
  1242             NumberInCase: 1;
  1255             NumberInCase: 1;
  1243             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
  1256             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
  1244                 Count: AMMO_INFINITE;
  1257                 Count: AMMO_INFINITE;
  1245                 InitialCount: AMMO_INFINITE;
       
  1246                 NumPerTurn: 0;
  1258                 NumPerTurn: 0;
  1247                 Timer: 0;
  1259                 Timer: 0;
  1248                 Pos: 0;
  1260                 Pos: 0;
  1249                 AmmoType: amFirePunch;
  1261                 AmmoType: amFirePunch;
  1250                 AttackVoice: sndNone);
  1262                 AttackVoice: sndNone);
  1264             NameTex: nil;
  1276             NameTex: nil;
  1265             Probability: 0;
  1277             Probability: 0;
  1266             NumberInCase: 1;
  1278             NumberInCase: 1;
  1267             Ammo: (Propz: ammoprop_NoCrosshair;
  1279             Ammo: (Propz: ammoprop_NoCrosshair;
  1268                 Count: AMMO_INFINITE;
  1280                 Count: AMMO_INFINITE;
  1269                 InitialCount: AMMO_INFINITE;
       
  1270                 NumPerTurn: 0;
  1281                 NumPerTurn: 0;
  1271                 Timer: 0;
  1282                 Timer: 0;
  1272                 Pos: 0;
  1283                 Pos: 0;
  1273                 AmmoType: amWhip;
  1284                 AmmoType: amWhip;
  1274                 AttackVoice: sndNone);
  1285                 AttackVoice: sndNone);
  1288             NameTex: nil;
  1299             NameTex: nil;
  1289             Probability: 100;
  1300             Probability: 100;
  1290             NumberInCase: 1;
  1301             NumberInCase: 1;
  1291             Ammo: (Propz: ammoprop_DontHold;
  1302             Ammo: (Propz: ammoprop_DontHold;
  1292                 Count: 1;
  1303                 Count: 1;
  1293                 InitialCount: 1;
       
  1294                 NumPerTurn: 0;
  1304                 NumPerTurn: 0;
  1295                 Timer: 0;
  1305                 Timer: 0;
  1296                 Pos: 0;
  1306                 Pos: 0;
  1297                 AmmoType: amBaseballBat;
  1307                 AmmoType: amBaseballBat;
  1298                 AttackVoice: sndNone);
  1308                 AttackVoice: sndNone);
  1318                           ammoprop_NoCrosshair or
  1328                           ammoprop_NoCrosshair or
  1319                           ammoprop_DontHold or
  1329                           ammoprop_DontHold or
  1320                           ammoprop_Utility or
  1330                           ammoprop_Utility or
  1321                           ammoprop_AltAttack;
  1331                           ammoprop_AltAttack;
  1322                 Count: 2;
  1332                 Count: 2;
  1323                 InitialCount: 2;
       
  1324                 NumPerTurn: 0;
  1333                 NumPerTurn: 0;
  1325                 Timer: 0;
  1334                 Timer: 0;
  1326                 Pos: 0;
  1335                 Pos: 0;
  1327                 AmmoType: amParachute;
  1336                 AmmoType: amParachute;
  1328                 AttackVoice: sndNone);
  1337                 AttackVoice: sndNone);
  1346                             ammoprop_NeedTarget or
  1355                             ammoprop_NeedTarget or
  1347                             ammoprop_AttackingPut or
  1356                             ammoprop_AttackingPut or
  1348                             ammoprop_DontHold or
  1357                             ammoprop_DontHold or
  1349                             ammoprop_NotBorder;
  1358                             ammoprop_NotBorder;
  1350                 Count: 1;
  1359                 Count: 1;
  1351                 InitialCount: 1;
       
  1352                 NumPerTurn: 0;
  1360                 NumPerTurn: 0;
  1353                 Timer: 0;
  1361                 Timer: 0;
  1354                 Pos: 0;
  1362                 Pos: 0;
  1355                 AmmoType: amAirAttack;
  1363                 AmmoType: amAirAttack;
  1356                 AttackVoice: sndIncoming);
  1364                 AttackVoice: sndIncoming);
  1374                             ammoprop_NeedTarget or
  1382                             ammoprop_NeedTarget or
  1375                             ammoprop_AttackingPut or
  1383                             ammoprop_AttackingPut or
  1376                             ammoprop_DontHold or
  1384                             ammoprop_DontHold or
  1377                             ammoprop_NotBorder;
  1385                             ammoprop_NotBorder;
  1378                 Count: 1;
  1386                 Count: 1;
  1379                 InitialCount: 1;
       
  1380                 NumPerTurn: 0;
  1387                 NumPerTurn: 0;
  1381                 Timer: 0;
  1388                 Timer: 0;
  1382                 Pos: 0;
  1389                 Pos: 0;
  1383                 AmmoType: amMineStrike;
  1390                 AmmoType: amMineStrike;
  1384                 AttackVoice: sndIncoming);
  1391                 AttackVoice: sndIncoming);
  1398             NameTex: nil;
  1405             NameTex: nil;
  1399             Probability: 100;
  1406             Probability: 100;
  1400             NumberInCase: 2;
  1407             NumberInCase: 2;
  1401             Ammo: (Propz: ammoprop_ForwMsgs;
  1408             Ammo: (Propz: ammoprop_ForwMsgs;
  1402                 Count: 1;
  1409                 Count: 1;
  1403                 InitialCount: 1;
       
  1404                 NumPerTurn: 0;
  1410                 NumPerTurn: 0;
  1405                 Timer: 0;
  1411                 Timer: 0;
  1406                 Pos: 0;
  1412                 Pos: 0;
  1407                 AmmoType: amBlowTorch;
  1413                 AmmoType: amBlowTorch;
  1408                 AttackVoice: sndNone);
  1414                 AttackVoice: sndNone);
  1426                           ammoprop_NoCrosshair or
  1432                           ammoprop_NoCrosshair or
  1427                           ammoprop_NeedTarget or
  1433                           ammoprop_NeedTarget or
  1428                           ammoprop_Utility or
  1434                           ammoprop_Utility or
  1429                           ammoprop_AttackingPut;
  1435                           ammoprop_AttackingPut;
  1430                     Count: 1;
  1436                     Count: 1;
  1431                     InitialCount: 1;
       
  1432                     NumPerTurn: 0;
  1437                     NumPerTurn: 0;
  1433                     Timer: 0;
  1438                     Timer: 0;
  1434                     Pos: 0;
  1439                     Pos: 0;
  1435                     AmmoType: amGirder;
  1440                     AmmoType: amGirder;
  1436                     AttackVoice: sndNone);
  1441                     AttackVoice: sndNone);
  1455                           ammoprop_NeedTarget or
  1460                           ammoprop_NeedTarget or
  1456                           ammoprop_AttackingPut or
  1461                           ammoprop_AttackingPut or
  1457                           ammoprop_Utility or
  1462                           ammoprop_Utility or
  1458                           ammoprop_DontHold;
  1463                           ammoprop_DontHold;
  1459                 Count: 2;
  1464                 Count: 2;
  1460                 InitialCount: 2;
       
  1461                 NumPerTurn: 0;
  1465                 NumPerTurn: 0;
  1462                 Timer: 0;
  1466                 Timer: 0;
  1463                 Pos: 0;
  1467                 Pos: 0;
  1464                 AmmoType: amTeleport;
  1468                 AmmoType: amTeleport;
  1465                 AttackVoice: sndNone);
  1469                 AttackVoice: sndNone);
  1483                           ammoprop_ForwMsgs or
  1487                           ammoprop_ForwMsgs or
  1484                           ammoprop_NoCrosshair or
  1488                           ammoprop_NoCrosshair or
  1485                           ammoprop_Utility or
  1489                           ammoprop_Utility or
  1486                           ammoprop_DontHold;
  1490                           ammoprop_DontHold;
  1487                     Count: 3;
  1491                     Count: 3;
  1488                     InitialCount: 3;
       
  1489                     NumPerTurn: 0;
  1492                     NumPerTurn: 0;
  1490                     Timer: 0;
  1493                     Timer: 0;
  1491                     Pos: 0;
  1494                     Pos: 0;
  1492                     AmmoType: amSwitch;
  1495                     AmmoType: amSwitch;
  1493                     AttackVoice: sndNone);
  1496                     AttackVoice: sndNone);
  1507             NameTex: nil;
  1510             NameTex: nil;
  1508             Probability: 100;
  1511             Probability: 100;
  1509             NumberInCase: 4;
  1512             NumberInCase: 4;
  1510             Ammo: (Propz: 0;
  1513             Ammo: (Propz: 0;
  1511                 Count: 4;
  1514                 Count: 4;
  1512                 InitialCount: 4;
       
  1513                 NumPerTurn: 0;
  1515                 NumPerTurn: 0;
  1514                 Timer: 0;
  1516                 Timer: 0;
  1515                 Pos: 0;
  1517                 Pos: 0;
  1516                 AmmoType: amMortar;
  1518                 AmmoType: amMortar;
  1517                 AttackVoice: sndNone);
  1519                 AttackVoice: sndNone);
  1531             NameTex: nil;
  1533             NameTex: nil;
  1532             Probability: 100;
  1534             Probability: 100;
  1533             NumberInCase: 1;
  1535             NumberInCase: 1;
  1534             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
  1536             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
  1535                 Count: 1;
  1537                 Count: 1;
  1536                 InitialCount: 1;
       
  1537                 NumPerTurn: 0;
  1538                 NumPerTurn: 0;
  1538                 Timer: 0;
  1539                 Timer: 0;
  1539                 Pos: 0;
  1540                 Pos: 0;
  1540                 AmmoType: amKamikaze;
  1541                 AmmoType: amKamikaze;
  1541                 AttackVoice: sndNone);
  1542                 AttackVoice: sndNone);
  1555             NameTex: nil;
  1556             NameTex: nil;
  1556             Probability: 100;
  1557             Probability: 100;
  1557             NumberInCase: 1;
  1558             NumberInCase: 1;
  1558             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
  1559             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
  1559                 Count: 1;
  1560                 Count: 1;
  1560                 InitialCount: 1;
       
  1561                 NumPerTurn: 0;
  1561                 NumPerTurn: 0;
  1562                 Timer: 0;
  1562                 Timer: 0;
  1563                 Pos: 0;
  1563                 Pos: 0;
  1564                 AmmoType: amCake;
  1564                 AmmoType: amCake;
  1565                 AttackVoice: sndLaugh);
  1565                 AttackVoice: sndLaugh);
  1579             NameTex: nil;
  1579             NameTex: nil;
  1580             Probability: 100;
  1580             Probability: 100;
  1581             NumberInCase: 1;
  1581             NumberInCase: 1;
  1582             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
  1582             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
  1583                 Count: 1;
  1583                 Count: 1;
  1584                 InitialCount: 1;
       
  1585                 NumPerTurn: 0;
  1584                 NumPerTurn: 0;
  1586                 Timer: 0;
  1585                 Timer: 0;
  1587                 Pos: 0;
  1586                 Pos: 0;
  1588                 AmmoType: amSeduction;
  1587                 AmmoType: amSeduction;
  1589                 AttackVoice: sndNone);
  1588                 AttackVoice: sndNone);
  1603             NameTex: nil;
  1602             NameTex: nil;
  1604             Probability: 400;
  1603             Probability: 400;
  1605             NumberInCase: 1;
  1604             NumberInCase: 1;
  1606             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  1605             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  1607                 Count: 0;
  1606                 Count: 0;
  1608                 InitialCount: 0;
       
  1609                 NumPerTurn: 0;
  1607                 NumPerTurn: 0;
  1610                 Timer: 3000;
  1608                 Timer: 3000;
  1611                 Pos: 0;
  1609                 Pos: 0;
  1612                 AmmoType: amWatermelon;
  1610                 AmmoType: amWatermelon;
  1613                 AttackVoice: sndMelon);
  1611                 AttackVoice: sndMelon);
  1627             NameTex: nil;
  1625             NameTex: nil;
  1628             Probability: 400;
  1626             Probability: 400;
  1629             NumberInCase: 1;
  1627             NumberInCase: 1;
  1630             Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
  1628             Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
  1631                 Count: 0;
  1629                 Count: 0;
  1632                 InitialCount: 0;
       
  1633                 NumPerTurn: 0;
  1630                 NumPerTurn: 0;
  1634                 Timer: 5000;
  1631                 Timer: 5000;
  1635                 Pos: 0;
  1632                 Pos: 0;
  1636                 AmmoType: amHellishBomb;
  1633                 AmmoType: amHellishBomb;
  1637                 AttackVoice: sndNone);
  1634                 AttackVoice: sndNone);
  1655                             ammoprop_NeedTarget or
  1652                             ammoprop_NeedTarget or
  1656                             ammoprop_AttackingPut or
  1653                             ammoprop_AttackingPut or
  1657                             ammoprop_DontHold or
  1654                             ammoprop_DontHold or
  1658                             ammoprop_NotBorder;
  1655                             ammoprop_NotBorder;
  1659                 Count: 1;
  1656                 Count: 1;
  1660                 InitialCount: 1;
       
  1661                 NumPerTurn: 0;
  1657                 NumPerTurn: 0;
  1662                 Timer: 0;
  1658                 Timer: 0;
  1663                 Pos: 0;
  1659                 Pos: 0;
  1664                 AmmoType: amNapalm;
  1660                 AmmoType: amNapalm;
  1665                 AttackVoice: sndIncoming);
  1661                 AttackVoice: sndIncoming);
  1679             NameTex: nil;
  1675             NameTex: nil;
  1680             Probability: 300;
  1676             Probability: 300;
  1681             NumberInCase: 1;
  1677             NumberInCase: 1;
  1682             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1678             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1683                 Count: AMMO_INFINITE;
  1679                 Count: AMMO_INFINITE;
  1684                 InitialCount: AMMO_INFINITE;
       
  1685                 NumPerTurn: 0;
  1680                 NumPerTurn: 0;
  1686                 Timer: 0;
  1681                 Timer: 0;
  1687                 Pos: 0;
  1682                 Pos: 0;
  1688                 AmmoType: amDrill;
  1683                 AmmoType: amDrill;
  1689                 AttackVoice: sndNone);
  1684                 AttackVoice: sndNone);
  1703             NameTex: nil;
  1698             NameTex: nil;
  1704             Probability: 400;
  1699             Probability: 400;
  1705             NumberInCase: 1;
  1700             NumberInCase: 1;
  1706             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
  1701             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
  1707                 Count: AMMO_INFINITE;
  1702                 Count: AMMO_INFINITE;
  1708                 InitialCount: AMMO_INFINITE;
       
  1709                 NumPerTurn: 0;
  1703                 NumPerTurn: 0;
  1710                 Timer: 5001;
  1704                 Timer: 5001;
  1711                 Pos: 0;
  1705                 Pos: 0;
  1712                 AmmoType: amBallgun;
  1706                 AmmoType: amBallgun;
  1713                 AttackVoice: sndNone);
  1707                 AttackVoice: sndNone);
  1729             NumberInCase: 1;
  1723             NumberInCase: 1;
  1730             Ammo: (Propz: ammoprop_ForwMsgs{ or
  1724             Ammo: (Propz: ammoprop_ForwMsgs{ or
  1731                             ammoprop_DontHold or
  1725                             ammoprop_DontHold or
  1732                             ammoprop_AltAttack};
  1726                             ammoprop_AltAttack};
  1733                 Count: 1;
  1727                 Count: 1;
  1734                 InitialCount: 1;
       
  1735                 NumPerTurn: 0;
  1728                 NumPerTurn: 0;
  1736                 Timer: 0;
  1729                 Timer: 0;
  1737                 Pos: 0;
  1730                 Pos: 0;
  1738                 AmmoType: amRCPlane;
  1731                 AmmoType: amRCPlane;
  1739                 AttackVoice: sndNone);
  1732                 AttackVoice: sndNone);
  1758                           ammoprop_DontHold or
  1751                           ammoprop_DontHold or
  1759                           ammoprop_AltUse or
  1752                           ammoprop_AltUse or
  1760                           ammoprop_Utility or
  1753                           ammoprop_Utility or
  1761                           ammoprop_Effect;
  1754                           ammoprop_Effect;
  1762                     Count: 1;
  1755                     Count: 1;
  1763                     InitialCount: 1;
       
  1764                     NumPerTurn: 0;
  1756                     NumPerTurn: 0;
  1765                     Timer: 0;
  1757                     Timer: 0;
  1766                     Pos: 0;
  1758                     Pos: 0;
  1767                     AmmoType: amLowGravity;
  1759                     AmmoType: amLowGravity;
  1768                     AttackVoice: sndNone);
  1760                     AttackVoice: sndNone);
  1787                           ammoprop_DontHold or
  1779                           ammoprop_DontHold or
  1788                           ammoprop_AltUse or
  1780                           ammoprop_AltUse or
  1789                           ammoprop_Utility or
  1781                           ammoprop_Utility or
  1790                           ammoprop_Effect;
  1782                           ammoprop_Effect;
  1791                     Count: 1;
  1783                     Count: 1;
  1792                     InitialCount: 1;
       
  1793                     NumPerTurn: 0;
  1784                     NumPerTurn: 0;
  1794                     Timer: 0;
  1785                     Timer: 0;
  1795                     Pos: 0;
  1786                     Pos: 0;
  1796                     AmmoType: amExtraDamage;
  1787                     AmmoType: amExtraDamage;
  1797                     AttackVoice: sndNone);
  1788                     AttackVoice: sndNone);
  1816                           ammoprop_DontHold or
  1807                           ammoprop_DontHold or
  1817                           ammoprop_AltUse or
  1808                           ammoprop_AltUse or
  1818                           ammoprop_Utility or
  1809                           ammoprop_Utility or
  1819                           ammoprop_Effect;
  1810                           ammoprop_Effect;
  1820                     Count: 1;
  1811                     Count: 1;
  1821                     InitialCount: 1;
       
  1822                     NumPerTurn: 0;
  1812                     NumPerTurn: 0;
  1823                     Timer: 0;
  1813                     Timer: 0;
  1824                     Pos: 0;
  1814                     Pos: 0;
  1825                     AmmoType: amInvulnerable;
  1815                     AmmoType: amInvulnerable;
  1826                     AttackVoice: sndNone);
  1816                     AttackVoice: sndNone);
  1845                           ammoprop_DontHold or
  1835                           ammoprop_DontHold or
  1846                           ammoprop_AltUse or
  1836                           ammoprop_AltUse or
  1847                           ammoprop_Utility or
  1837                           ammoprop_Utility or
  1848                           ammoprop_Effect;
  1838                           ammoprop_Effect;
  1849                     Count: 1;
  1839                     Count: 1;
  1850                     InitialCount: 1;
       
  1851                     NumPerTurn: 0;
  1840                     NumPerTurn: 0;
  1852                     Timer: 0;
  1841                     Timer: 0;
  1853                     Pos: 0;
  1842                     Pos: 0;
  1854                     AmmoType: amExtraTime;
  1843                     AmmoType: amExtraTime;
  1855                     AttackVoice: sndNone);
  1844                     AttackVoice: sndNone);
  1874                           ammoprop_DontHold or
  1863                           ammoprop_DontHold or
  1875                           ammoprop_AltUse or
  1864                           ammoprop_AltUse or
  1876                           ammoprop_Utility or
  1865                           ammoprop_Utility or
  1877                           ammoprop_Effect;
  1866                           ammoprop_Effect;
  1878                     Count: 1;
  1867                     Count: 1;
  1879                     InitialCount: 1;
       
  1880                     NumPerTurn: 0;
  1868                     NumPerTurn: 0;
  1881                     Timer: 0;
  1869                     Timer: 0;
  1882                     Pos: 0;
  1870                     Pos: 0;
  1883                     AmmoType: amLaserSight;
  1871                     AmmoType: amLaserSight;
  1884                     AttackVoice: sndNone);
  1872                     AttackVoice: sndNone);
  1903                           ammoprop_DontHold or
  1891                           ammoprop_DontHold or
  1904                           ammoprop_AltUse or
  1892                           ammoprop_AltUse or
  1905                           ammoprop_Utility or
  1893                           ammoprop_Utility or
  1906                           ammoprop_Effect;
  1894                           ammoprop_Effect;
  1907                     Count: 1;
  1895                     Count: 1;
  1908                     InitialCount: 1;
       
  1909                     NumPerTurn: 0;
  1896                     NumPerTurn: 0;
  1910                     Timer: 0;
  1897                     Timer: 0;
  1911                     Pos: 0;
  1898                     Pos: 0;
  1912                     AmmoType: amVampiric;
  1899                     AmmoType: amVampiric;
  1913                     AttackVoice: sndNone);
  1900                     AttackVoice: sndNone);
  1927             NameTex: nil;
  1914             NameTex: nil;
  1928             Probability: 20;
  1915             Probability: 20;
  1929             NumberInCase: 2;
  1916             NumberInCase: 2;
  1930             Ammo: (Propz: 0;
  1917             Ammo: (Propz: 0;
  1931                 Count: 2;
  1918                 Count: 2;
  1932                 InitialCount: 2;
       
  1933                 NumPerTurn: 1;
  1919                 NumPerTurn: 1;
  1934                 Timer: 0;
  1920                 Timer: 0;
  1935                 Pos: 0;
  1921                 Pos: 0;
  1936                 AmmoType: amSniperRifle;
  1922                 AmmoType: amSniperRifle;
  1937                 AttackVoice: sndNone);
  1923                 AttackVoice: sndNone);
  1957                           ammoprop_NoCrosshair or
  1943                           ammoprop_NoCrosshair or
  1958                           ammoprop_DontHold or
  1944                           ammoprop_DontHold or
  1959                           ammoprop_Utility or
  1945                           ammoprop_Utility or
  1960                           ammoprop_AltAttack;
  1946                           ammoprop_AltAttack;
  1961                 Count: 1;
  1947                 Count: 1;
  1962                 InitialCount: 1;
       
  1963                 NumPerTurn: 0;
  1948                 NumPerTurn: 0;
  1964                 Timer: 0;
  1949                 Timer: 0;
  1965                 Pos: 0;
  1950                 Pos: 0;
  1966                 AmmoType: amJetpack;
  1951                 AmmoType: amJetpack;
  1967                 AttackVoice: sndNone);
  1952                 AttackVoice: sndNone);
  1981             NameTex: nil;
  1966             NameTex: nil;
  1982             Probability: 0;
  1967             Probability: 0;
  1983             NumberInCase: 1;
  1968             NumberInCase: 1;
  1984             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1969             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
  1985                 Count: AMMO_INFINITE;
  1970                 Count: AMMO_INFINITE;
  1986                 InitialCount: AMMO_INFINITE;
       
  1987                 NumPerTurn: 0;
  1971                 NumPerTurn: 0;
  1988                 Timer: 3000;
  1972                 Timer: 3000;
  1989                 Pos: 0;
  1973                 Pos: 0;
  1990                 AmmoType: amMolotov;
  1974                 AmmoType: amMolotov;
  1991                 AttackVoice: sndNone);
  1975                 AttackVoice: sndNone);
  2007             NumberInCase: 1;
  1991             NumberInCase: 1;
  2008             Ammo: (Propz: ammoprop_ForwMsgs or
  1992             Ammo: (Propz: ammoprop_ForwMsgs or
  2009                           ammoprop_NoCrosshair or
  1993                           ammoprop_NoCrosshair or
  2010                           ammoprop_DontHold;
  1994                           ammoprop_DontHold;
  2011                 Count: 1;
  1995                 Count: 1;
  2012                 InitialCount: 1;
       
  2013                 NumPerTurn: 0;
  1996                 NumPerTurn: 0;
  2014                 Timer: 0;
  1997                 Timer: 0;
  2015                 Pos: 0;
  1998                 Pos: 0;
  2016                 AmmoType: amBirdy;
  1999                 AmmoType: amBirdy;
  2017                 AttackVoice: sndNone);
  2000                 AttackVoice: sndNone);
  2034             Ammo: (Propz: ammoprop_NoRoundEndHint or
  2017             Ammo: (Propz: ammoprop_NoRoundEndHint or
  2035                           ammoprop_AttackInMove or
  2018                           ammoprop_AttackInMove or
  2036                           ammoprop_DontHold or
  2019                           ammoprop_DontHold or
  2037                           ammoprop_Utility;
  2020                           ammoprop_Utility;
  2038                 Count: 1;
  2021                 Count: 1;
  2039                 InitialCount: 1;
       
  2040                 NumPerTurn: 3;
  2022                 NumPerTurn: 3;
  2041                 Timer: 0;
  2023                 Timer: 0;
  2042                 Pos: 0;
  2024                 Pos: 0;
  2043                 AmmoType: amPortalGun;
  2025                 AmmoType: amPortalGun;
  2044                 AttackVoice: sndNone);
  2026                 AttackVoice: sndNone);
  2062                             ammoprop_NeedTarget or
  2044                             ammoprop_NeedTarget or
  2063                             ammoprop_AttackingPut or
  2045                             ammoprop_AttackingPut or
  2064                             ammoprop_DontHold or
  2046                             ammoprop_DontHold or
  2065                             ammoprop_NotBorder;
  2047                             ammoprop_NotBorder;
  2066                 Count: 1;
  2048                 Count: 1;
  2067                 InitialCount: 1;
       
  2068                 NumPerTurn: 0;
  2049                 NumPerTurn: 0;
  2069                 Timer: 0;
  2050                 Timer: 0;
  2070                 Pos: 0;
  2051                 Pos: 0;
  2071                 AmmoType: amPiano;
  2052                 AmmoType: amPiano;
  2072                 AttackVoice: sndIncoming);
  2053                 AttackVoice: sndIncoming);
  2086             NameTex: nil;
  2067             NameTex: nil;
  2087             Probability: 0;
  2068             Probability: 0;
  2088             NumberInCase: 1;
  2069             NumberInCase: 1;
  2089             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  2070             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
  2090                 Count: AMMO_INFINITE;
  2071                 Count: AMMO_INFINITE;
  2091                 InitialCount: AMMO_INFINITE;
       
  2092                 NumPerTurn: 0;
  2072                 NumPerTurn: 0;
  2093                 Timer: 3000;
  2073                 Timer: 3000;
  2094                 Pos: 0;
  2074                 Pos: 0;
  2095                 AmmoType: amGasBomb;
  2075                 AmmoType: amGasBomb;
  2096                 AttackVoice: sndCover);
  2076                 AttackVoice: sndCover);
  2102             SkipTurns: 0;
  2082             SkipTurns: 0;
  2103             PosCount: 1;
  2083             PosCount: 1;
  2104             PosSprite: sprWater;
  2084             PosSprite: sprWater;
  2105             ejectX: 0;
  2085             ejectX: 0;
  2106             ejectY: 0),
  2086             ejectY: 0),
  2107             
  2087 
  2108 // SineGun
  2088 // SineGun
  2109             (NameId: sidSineGun;
  2089             (NameId: sidSineGun;
  2110             NameTex: nil;
  2090             NameTex: nil;
  2111             Probability: 20;
  2091             Probability: 20;
  2112             NumberInCase: 2;
  2092             NumberInCase: 2;
  2113             Ammo: (Propz: ammoprop_AttackInMove;
  2093             Ammo: (Propz: ammoprop_AttackInMove;
  2114                 Count: 1;
  2094                 Count: 1;
  2115                 InitialCount: 1;
       
  2116                 NumPerTurn: 0;
  2095                 NumPerTurn: 0;
  2117                 Timer: 0;
  2096                 Timer: 0;
  2118                 Pos: 0;
  2097                 Pos: 0;
  2119                 AmmoType: amSineGun;
  2098                 AmmoType: amSineGun;
  2120                 AttackVoice: sndNone);
  2099                 AttackVoice: sndNone);
  2134             NameTex: nil;
  2113             NameTex: nil;
  2135             Probability: 20;
  2114             Probability: 20;
  2136             NumberInCase: 1;
  2115             NumberInCase: 1;
  2137             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
  2116             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
  2138                 Count: 1;
  2117                 Count: 1;
  2139                 InitialCount: 1;
       
  2140                 NumPerTurn: 0;
  2118                 NumPerTurn: 0;
  2141                 Timer: 5001;
  2119                 Timer: 5001;
  2142                 Pos: 0;
  2120                 Pos: 0;
  2143                 AmmoType: amFlamethrower;
  2121                 AmmoType: amFlamethrower;
  2144                 AttackVoice: sndNone);
  2122                 AttackVoice: sndNone);
  2149             isDamaging: true;
  2127             isDamaging: true;
  2150             SkipTurns: 0;
  2128             SkipTurns: 0;
  2151             PosCount: 1;
  2129             PosCount: 1;
  2152             PosSprite: sprWater;
  2130             PosSprite: sprWater;
  2153             ejectX: 0; //20;
  2131             ejectX: 0; //20;
  2154             ejectY: -3)
  2132             ejectY: -3),
  2155             );
  2133 
       
  2134 // Sticky Mine
       
  2135             (NameId: sidSMine;
       
  2136             NameTex: nil;
       
  2137             Probability: 100;
       
  2138             NumberInCase: 1;
       
  2139             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
       
  2140                 Count: 1;
       
  2141                 NumPerTurn: 1;
       
  2142                 Timer: 0;
       
  2143                 Pos: 0;
       
  2144                 AmmoType: amSMine;
       
  2145                 AttackVoice: sndLaugh);
       
  2146             Slot: 4;
       
  2147             TimeAfterTurn: 5000;
       
  2148             minAngle: 0;
       
  2149             maxAngle: 0;
       
  2150             isDamaging: true;
       
  2151             SkipTurns: 0;
       
  2152             PosCount: 1;
       
  2153             PosSprite: sprWater;
       
  2154             ejectX: 0;
       
  2155             ejectY: 0),
       
  2156 
       
  2157 // Hammer
       
  2158             (NameId: sidHammer;
       
  2159             NameTex: nil;
       
  2160             Probability: 0;
       
  2161             NumberInCase: 1;
       
  2162             Ammo: (Propz: ammoprop_NoCrosshair;
       
  2163                 Count: 1;
       
  2164                 NumPerTurn: 0;
       
  2165                 Timer: 0;
       
  2166                 Pos: 0;
       
  2167                 AmmoType: amHammer;
       
  2168                 AttackVoice: sndNone);
       
  2169             Slot: 3;
       
  2170             TimeAfterTurn: 1000;
       
  2171             MinAngle: 0;
       
  2172             maxAngle: 0;
       
  2173             isDamaging: true;
       
  2174             SkipTurns: 0;
       
  2175             PosCount: 1;
       
  2176             PosSprite: sprWater;
       
  2177             ejectX: 0;
       
  2178             ejectY: 0),
       
  2179 
       
  2180         (NameId: sidResurrector;
       
  2181             NameTex: nil;
       
  2182             Probability: 0;
       
  2183             NumberInCase: 1;
       
  2184             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_NoRoundEndHint;
       
  2185                 Count: 1;
       
  2186                 NumPerTurn: 0;
       
  2187                 Timer: 0;
       
  2188                 Pos: 0;
       
  2189                 AmmoType: amResurrector;
       
  2190                 AttackVoice: sndNone);
       
  2191             Slot: 8;
       
  2192             TimeAfterTurn: 3000;
       
  2193             minAngle: 0;
       
  2194             maxAngle: 0;
       
  2195             isDamaging: true;
       
  2196             SkipTurns: 0;
       
  2197             PosCount: 1;
       
  2198             PosSprite: sprWater;
       
  2199             ejectX: 0;
       
  2200             ejectY: 0)
       
  2201         );
       
  2202 
  2156 
  2203 
  2157 
  2204 
  2158     conversionFormat: TSDL_PixelFormat = (
  2205     conversionFormat: TSDL_PixelFormat = (
  2159         palette: nil;
  2206         palette: nil;
  2160         BitsPerPixel : 32;
  2207         BitsPerPixel : 32;
  2179         BMask : BMask;
  2226         BMask : BMask;
  2180         AMask : AMask;
  2227         AMask : AMask;
  2181         colorkey: 0;
  2228         colorkey: 0;
  2182         alpha : 255
  2229         alpha : 255
  2183     );
  2230     );
  2184     
       
  2185 procedure initModule;
       
  2186 procedure freeModule;
       
  2187 
  2231 
  2188 implementation
  2232 implementation
  2189 uses uMisc;
       
  2190 
       
  2191 procedure initModule;
       
  2192 begin
       
  2193     Pathz:= cPathz;
       
  2194         {*  REFERENCE
       
  2195       4096 -> $FFFFF000
       
  2196       2048 -> $FFFFF800
       
  2197       1024 -> $FFFFFC00
       
  2198        512 -> $FFFFFE00  *}
       
  2199     if (cReducedQuality and rqLowRes) <> 0 then
       
  2200     begin
       
  2201         LAND_WIDTH:= 2048;
       
  2202         LAND_HEIGHT:= 1024;
       
  2203         LAND_WIDTH_MASK:= $FFFFF800;
       
  2204         LAND_HEIGHT_MASK:= $FFFFFC00;
       
  2205     end
       
  2206     else
       
  2207     begin
       
  2208         LAND_WIDTH:= 4096;
       
  2209         LAND_HEIGHT:= 2048;
       
  2210         LAND_WIDTH_MASK:= $FFFFF000;
       
  2211         LAND_HEIGHT_MASK:= $FFFFF800
       
  2212     end;
       
  2213 
       
  2214 {$IFDEF IPHONEOS}    
       
  2215     if isPhone() then
       
  2216         cMaxCaptions:= 3
       
  2217     else
       
  2218 {$ENDIF}
       
  2219         cMaxCaptions:= 4;
       
  2220 
       
  2221 end;
       
  2222 
       
  2223 procedure freeModule;
       
  2224 begin
       
  2225     PathPrefix := './';
       
  2226 end;
       
  2227 
  2233 
  2228 end.
  2234 end.