hedgewars/uConsts.pas
branchexperimental3D
changeset 4004 b1c2c2f6fc5e
parent 3696 6009d8378422
parent 4000 ddc4a09889e7
child 4343 19cbea33e4d2
--- a/hedgewars/uConsts.pas	Thu Aug 26 23:59:18 2010 +0200
+++ b/hedgewars/uConsts.pas	Wed Oct 27 14:02:20 2010 +0200
@@ -33,14 +33,14 @@
     HwColor4f = record
         r, g, b, a: byte
         end;
-        
+
     TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
 
     TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
 
     TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
             ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
-            ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags);
+            ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps);
 
     TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
             sprLag, sprArrow, sprGrenade, sprTargetP, sprBee,
@@ -71,11 +71,12 @@
             sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction,
             sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster,
             sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp,
-            sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee, 
+            sprBigExplosion, sprSmokeRing, sprBeeTrace, sprEgg, sprTargetBee, sprHandBee,
             sprFeather, sprPiano, sprHandSineGun, sprPortalGun, sprPortal,
-            sprCheese, sprHandCheese, sprHandFlamethrower
+            sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
+            sprSMineOff, sprSMineOn, sprHandSMine, sprHammer, sprHandResurrector
             );
-    
+
     // Gears that interact with other Gears and/or Land
     TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtGrave, gtBee, // 4
             gtShotgunShot, gtPickHammer, gtRope, gtMine, gtCase, // 9
@@ -86,7 +87,8 @@
             gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 34
             gtHellishBomb, gtWaterUp, gtDrill, gtBallGun, gtBall, gtRCPlane, // 40
             gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45
-            gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower); // 51
+            gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51
+            gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector);
 
     // Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.)
     TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
@@ -94,7 +96,7 @@
             vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell,
             vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace, vgtEgg,
             vgtFeather, vgtHealthTag, vgtSmokeTrace, vgtEvilTrace, vgtExplosion,
-            vgtBigExplosion);
+            vgtBigExplosion, vgtChunk, vgtNote);
 
     TGearsType = set of TGearType;
 
@@ -120,24 +122,29 @@
             sndMelonImpact, sndDroplet1, sndDroplet2, sndDroplet3, sndEggBreak, sndDrillRocket,
             sndPoisonCough, sndPoisonMoan, sndBirdyLay, sndWhistle, sndBeeWater,
             sndPiano0, sndPiano1, sndPiano2, sndPiano3, sndPiano4, sndPiano5, sndPiano6, sndPiano7, sndPiano8,
-            sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3);
+            sndSkip, sndSineGun, sndOoff1, sndOoff2, sndOoff3, sndWhack,
+            sndComeonthen, sndParachute, sndBump, sndResurrector);
 
-    TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer,
-            amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
-            amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
-            amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
-            amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun,
-            amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
-            amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun,
-            amPiano, amGasBomb, amSineGun, amFlamethrower);
+    TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, // 6
+            amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, // 13
+            amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, // 18
+            amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, // 24
+            amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun, // 30
+            amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35
+            amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42
+            amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48
+            amResurrector);
 
-    THWFont = (fnt16, fntBig, fntSmall, CJKfnt16, CJKfntBig, CJKfntSmall);
+    TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
+
+    THWFont = (fnt16, fntBig, fntSmall {$IFNDEF IPHONEOS}, CJKfnt16, CJKfntBig, CJKfntSmall{$ENDIF});
 
     TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
             capgrpMessage, capgrpAmmostate);
 
     TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
-            siClanHealth, siTeamStats);
+            siClanHealth, siTeamStats, siPlayerKills, siMaxTeamDamage,
+            siMaxTeamKills, siMaxTurnSkips );
 
     TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
 
@@ -157,7 +164,6 @@
             Count: LongWord;
 (* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess.
 For example, say, a mode where the weaponset is reset each turn, or on sudden death *)
-            InitialCount: LongWord; 
             NumPerTurn: LongWord;
             Timer: LongWord;
             Pos: LongWord;
@@ -183,10 +189,12 @@
             PrevTexture, NextTexture: PTexture;
             end;
 
-    THogEffect = (heInvulnerable, hePoisoned);
+    THogEffect = (heInvulnerable, heResurrectable, hePoisoned);
 
     TScreenFade = (sfNone, sfInit, sfToBlack, sfFromBlack, sfToWhite, sfFromWhite);
-const sfMax = 1000;
+const
+    sfMax = 1000;
+    cDefaultParamNum = 17;
 
     // message constants
     errmsgCreateSurface   = 'Error creating SDL surface';
@@ -196,7 +204,6 @@
     errmsgIncorrectUse    = 'Incorrect use';
     errmsgShouldntRun     = 'This program shouldn''t be run manually';
     errmsgWrongNumber     = 'Wrong parameters number';
-    errmsgSlotsOverflow   = 'CurSlot overflowed';
 
     msgLoading           = 'Loading ';
     msgOK                = 'ok';
@@ -223,8 +230,8 @@
     rqLowRes      = $00000001;  // use half land array
     rqBlurryLand  = $00000002;  // downscaled terrain
     rqNoBackground= $00000004;  // don't draw background
-    rqSimpleRope  = $00000008;  // avoid drawing rope
-    rq2DWater     = $00000010;  // disabe 3D water effect
+    rqSimpleRope  = $00000008;  // draw rope using lines only
+    rq2DWater     = $00000010;  // disable 3D water effect
     rqFancyBoom   = $00000020;  // no fancy explosion effects
     rqKillFlakes  = $00000040;  // no flakes
     rqSlowMenu    = $00000080;  // ammomenu appears with no animation
@@ -259,13 +266,13 @@
     cPowerDivisor = 1500;
 
     MAXNAMELEN = 192;
-    
+
     // some opengl headers do not have these macros
     GL_BGR              = $80E0;
     GL_BGRA             = $80E1;
     GL_CLAMP_TO_EDGE    = $812F;
     GL_TEXTURE_PRIORITY = $8066;
-    
+
     cSendCursorPosTime  : LongWord = 50;
     cVisibleWater       : LongInt = 128;
     cCursorEdgesDist    : LongInt = 100;
@@ -301,7 +308,9 @@
 
     cKeyMaxIndex = 1023;
 
+    // do not change this value
     cDefaultZoomLevel = 2.0;
+
 {$IFDEF IPHONEOS}
     cMaxZoomLevel = 0.5;
     cMinZoomLevel = 3.5;
@@ -313,8 +322,6 @@
 {$ENDIF}
 
     cSendEmptyPacketTime = 1000;
-
-    // from uTriggers
     trigTurns = $80000001;
 
     // Training Flags
@@ -324,28 +331,31 @@
     tfSpawnTargets  = $00000004;
     tfIgnoreDelays  = $00000008;
     tfTargetRespawn = $00000010;
-    
-    gfAny            = $FFFFFFFF;
-    gfForts          = $00000001;
-    gfMultiWeapon    = $00000002;
-    gfSolidLand      = $00000004;
-    gfBorder         = $00000008;
-    gfDivideTeams    = $00000010;
-    gfLowGravity     = $00000020;
-    gfLaserSight     = $00000040;
-    gfInvulnerable   = $00000080;
-    gfMines          = $00000100;
-    gfVampiric       = $00000200;
-    gfKarma          = $00000400;
-    gfArtillery      = $00000800;
-    gfOneClanMode    = $00001000;
-    gfRandomOrder    = $00002000;
-    gfKing           = $00004000;
-    gfPlaceHog       = $00008000;
-    gfSharedAmmo     = $00010000;
-    gfDisableGirders = $00020000;
-    gfExplosives     = $00040000;
-    gfDisableLandObjects = $00080000;
+
+    gfAny                = $FFFFFFFF;
+    gfOneClanMode        = $00000001;           // used in trainings
+    gfMultiWeapon        = $00000002;           // used in trainings
+    gfSolidLand          = $00000004;
+    gfBorder             = $00000008;
+    gfDivideTeams        = $00000010;
+    gfLowGravity         = $00000020;
+    gfLaserSight         = $00000040;
+    gfInvulnerable       = $00000080;
+    gfMines              = $00000100;           // redundant? same effect as 'landadds 0'
+    gfVampiric           = $00000200;
+    gfKarma              = $00000400;
+    gfArtillery          = $00000800;
+    gfForts              = $00001000;
+    gfRandomOrder        = $00002000;
+    gfKing               = $00004000;
+    gfPlaceHog           = $00008000;
+    gfSharedAmmo         = $00010000;
+    gfDisableGirders     = $00020000;
+    gfDisableLandObjects = $00040000;
+    gfAISurvival         = $00080000;
+    gfInfAttack          = $00100000;
+    gfResetWeps          = $00200000;
+    gfPerHogAmmo         = $00400000;
     // NOTE: When adding new game flags, ask yourself
     // if a "game start notice" would be useful. If so,
     // add one in uWorld.pas - look for "AddGoal".
@@ -370,21 +380,21 @@
     gstLoser          = $00080000;
     gstHHGone         = $00100000;
 
-    gm_Left   = $00000001;
-    gm_Right  = $00000002;
-    gm_Up     = $00000004;
-    gm_Down   = $00000008;
-    gm_Switch = $00000010;
-    gm_Attack = $00000020;
-    gm_LJump  = $00000040;
-    gm_HJump  = $00000080;
-    gm_Destroy= $00000100;
-    gm_Slot   = $00000200; // with param
-    gm_Weapon = $00000400; // with param
-    gm_Timer  = $00000800; // with param
-    gm_Animate= $00001000; // with param
-    gm_Precise= $00002000;
-    gmAllStoppable = gm_Left or gm_Right or gm_Up or gm_Down or gm_Attack or gm_Precise;
+    gmLeft   = $00000001;
+    gmRight  = $00000002;
+    gmUp     = $00000004;
+    gmDown   = $00000008;
+    gmSwitch = $00000010;
+    gmAttack = $00000020;
+    gmLJump  = $00000040;
+    gmHJump  = $00000080;
+    gmDestroy= $00000100;
+    gmSlot   = $00000200; // with param
+    gmWeapon = $00000400; // with param
+    gmTimer  = $00000800; // with param
+    gmAnimate= $00001000; // with param
+    gmPrecise= $00002000;
+    gmAllStoppable = gmLeft or gmRight or gmUp or gmDown or gmAttack or gmPrecise;
 
     cMaxSlotIndex       = 9;
     cMaxSlotAmmoIndex   = 5;
@@ -403,7 +413,7 @@
     ammoprop_Utility      = $00001000;
     ammoprop_Effect       = $00002000;
     ammoprop_NoRoundEndHint=$10000000;
-    
+
     AMMO_INFINITE = 100;
 
     EXPLAllDamageInRadius = $00000001;
@@ -413,6 +423,7 @@
     EXPLDontDraw          = $00000010;
     EXPLNoGfx             = $00000020;
     EXPLPoisoned          = $00000040;
+    EXPLDoNotTouchAny     = $00000080;
 
     posCaseAmmo    = $00000001;
     posCaseHealth  = $00000002;
@@ -427,11 +438,11 @@
     htName        = $02;
     htHealth      = $04;
     htTransparent = $08;
-    
+
     cHHFileName = 'Hedgehog';
     cCHFileName = 'Crosshair';
     cThemeCFGFilename = 'theme.cfg';
-    
+
     FontBorder = 2;
     cPathz: array[TPathType] of shortstring = (
         '',                              // ptNone
@@ -452,19 +463,10 @@
         'Graphics/Hedgehog',             // ptHedgehog
         'Sounds/voices',                 // ptVoices
         'Graphics/Hats',                 // ptHats
-        'Graphics/Flags'                 // ptFlags
+        'Graphics/Flags',                // ptFlags
+        'Missions/Maps'                  // ptMissionMaps
     );
-    
-var PathPrefix: shortstring = './';
-    Pathz: array[TPathType] of shortstring;
-    CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture;
-    LAND_WIDTH  :longint;
-    LAND_HEIGHT :longint;
-    LAND_WIDTH_MASK  :longWord;
-    LAND_HEIGHT_MASK :longWord;
-    cMaxCaptions : LongInt;
 
-const
     cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
     cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0);
 
@@ -480,7 +482,8 @@
             (Handle: nil;
             Height: 10;
             style: TTF_STYLE_NORMAL;
-            Name: 'DejaVuSans-Bold.ttf'),
+            Name: 'DejaVuSans-Bold.ttf')
+            {$IFNDEF IPHONEOS}, // remove chinese fonts for now
             (Handle: nil;
             Height: 12;
             style: TTF_STYLE_NORMAL;
@@ -493,6 +496,7 @@
             Height: 10;
             style: TTF_STYLE_NORMAL;
             Name: 'wqy-zenhei.ttc')
+            {$ENDIF}
             );
 
     SpritesData: array[TSprite] of record
@@ -725,7 +729,7 @@
             Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack
             (FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth
-            (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 
+            (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
             Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov
             (FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov
@@ -800,8 +804,24 @@
             (FileName:  'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese
             (FileName:  'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-            Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprHandFlamethrower
-            );
+            Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower
+            (FileName:  'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk
+            (FileName:  'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote
+            (FileName:   'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff
+            (FileName:    'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn
+            (FileName:   'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine
+            (FileName:  'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprWhip
+            (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone;
+                Texture: nil; Surface: nil; Width: 32; Height: 32;
+                imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
+                tpMedium; getDimensions: false; getImageDimensions: true) 
+            ); // sprHandResurrector
 
     Wavez: array [TWave] of record
             Sprite: TSprite;
@@ -908,7 +928,7 @@
             (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
             (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
             (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
-            (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndDrillRocket
+            (FileName:             'drillgun.ogg'; Path: ptSounds),// sndDrillRocket
             (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
             (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
             (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
@@ -927,7 +947,12 @@
             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndSineGun
             (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
             (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
-            (FileName:                'Ooff3.ogg'; Path: ptVoices) // sndOoff3
+            (FileName:                'Ooff3.ogg'; Path: ptVoices),// sndOoff3
+            (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhack
+            (FileName:           'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen
+            (FileName:            'parachute.ogg'; Path: ptSounds),// sndParachute
+            (FileName:                 'bump.ogg'; Path: ptSounds),// sndBump
+            (FileName: 'hogchant3.ogg'; Path: ptSounds) // sndResurrector
             );
 
     Ammoz: array [TAmmoType] of record
@@ -950,7 +975,6 @@
             NumberInCase: 0;
             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -974,7 +998,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 3000;
                 Pos: 0;
@@ -998,7 +1021,6 @@
             NumberInCase: 3;
             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
                 Count: 5;
-                InitialCount: 5;
                 NumPerTurn: 0;
                 Timer: 3000;
                 Pos: 0;
@@ -1022,7 +1044,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1046,7 +1067,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1070,7 +1090,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_ForwMsgs;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 1;
                 Timer: 0;
                 Pos: 0;
@@ -1094,7 +1113,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1118,7 +1136,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1146,7 +1163,6 @@
                           ammoprop_Utility or
                           ammoprop_AltAttack;
                     Count: 5;
-                    InitialCount: 5;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1170,7 +1186,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1194,7 +1209,6 @@
             NumberInCase: 2;
             Ammo: (Propz: 0;
                 Count: 3;
-                InitialCount: 3;
                 NumPerTurn: 3;
                 Timer: 0;
                 Pos: 0;
@@ -1218,7 +1232,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1242,7 +1255,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1266,7 +1278,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_NoCrosshair;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1290,7 +1301,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_DontHold;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1320,7 +1330,6 @@
                           ammoprop_Utility or
                           ammoprop_AltAttack;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1348,7 +1357,6 @@
                             ammoprop_DontHold or
                             ammoprop_NotBorder;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1376,7 +1384,6 @@
                             ammoprop_DontHold or
                             ammoprop_NotBorder;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1400,7 +1407,6 @@
             NumberInCase: 2;
             Ammo: (Propz: ammoprop_ForwMsgs;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1428,7 +1434,6 @@
                           ammoprop_Utility or
                           ammoprop_AttackingPut;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1457,7 +1462,6 @@
                           ammoprop_Utility or
                           ammoprop_DontHold;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1485,7 +1489,6 @@
                           ammoprop_Utility or
                           ammoprop_DontHold;
                     Count: 3;
-                    InitialCount: 3;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1509,7 +1512,6 @@
             NumberInCase: 4;
             Ammo: (Propz: 0;
                 Count: 4;
-                InitialCount: 4;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1533,7 +1535,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1557,7 +1558,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1581,7 +1581,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1605,7 +1604,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
                 Count: 0;
-                InitialCount: 0;
                 NumPerTurn: 0;
                 Timer: 3000;
                 Pos: 0;
@@ -1629,7 +1627,6 @@
             NumberInCase: 1;
             Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
                 Count: 0;
-                InitialCount: 0;
                 NumPerTurn: 0;
                 Timer: 5000;
                 Pos: 0;
@@ -1657,7 +1654,6 @@
                             ammoprop_DontHold or
                             ammoprop_NotBorder;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1681,7 +1677,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1705,7 +1700,6 @@
             NumberInCase: 1;
             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 5001;
                 Pos: 0;
@@ -1731,7 +1725,6 @@
                             ammoprop_DontHold or
                             ammoprop_AltAttack};
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1760,7 +1753,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1789,7 +1781,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1818,7 +1809,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1847,7 +1837,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1876,7 +1865,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1905,7 +1893,6 @@
                           ammoprop_Utility or
                           ammoprop_Effect;
                     Count: 1;
-                    InitialCount: 1;
                     NumPerTurn: 0;
                     Timer: 0;
                     Pos: 0;
@@ -1929,7 +1916,6 @@
             NumberInCase: 2;
             Ammo: (Propz: 0;
                 Count: 2;
-                InitialCount: 2;
                 NumPerTurn: 1;
                 Timer: 0;
                 Pos: 0;
@@ -1959,7 +1945,6 @@
                           ammoprop_Utility or
                           ammoprop_AltAttack;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -1983,7 +1968,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 3000;
                 Pos: 0;
@@ -2009,7 +1993,6 @@
                           ammoprop_NoCrosshair or
                           ammoprop_DontHold;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -2036,7 +2019,6 @@
                           ammoprop_DontHold or
                           ammoprop_Utility;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 3;
                 Timer: 0;
                 Pos: 0;
@@ -2064,7 +2046,6 @@
                             ammoprop_DontHold or
                             ammoprop_NotBorder;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -2088,7 +2069,6 @@
             NumberInCase: 1;
             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
                 Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
                 NumPerTurn: 0;
                 Timer: 3000;
                 Pos: 0;
@@ -2104,7 +2084,7 @@
             PosSprite: sprWater;
             ejectX: 0;
             ejectY: 0),
-            
+
 // SineGun
             (NameId: sidSineGun;
             NameTex: nil;
@@ -2112,7 +2092,6 @@
             NumberInCase: 2;
             Ammo: (Propz: ammoprop_AttackInMove;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 0;
                 Pos: 0;
@@ -2136,7 +2115,6 @@
             NumberInCase: 1;
             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
                 Count: 1;
-                InitialCount: 1;
                 NumPerTurn: 0;
                 Timer: 5001;
                 Pos: 0;
@@ -2151,8 +2129,77 @@
             PosCount: 1;
             PosSprite: sprWater;
             ejectX: 0; //20;
-            ejectY: -3)
-            );
+            ejectY: -3),
+
+// Sticky Mine
+            (NameId: sidSMine;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
+                Count: 1;
+                NumPerTurn: 1;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amSMine;
+                AttackVoice: sndLaugh);
+            Slot: 4;
+            TimeAfterTurn: 5000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater;
+            ejectX: 0;
+            ejectY: 0),
+
+// Hammer
+            (NameId: sidHammer;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair;
+                Count: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amHammer;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 1000;
+            MinAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater;
+            ejectX: 0;
+            ejectY: 0),
+
+        (NameId: sidResurrector;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_NoRoundEndHint;
+                Count: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amResurrector;
+                AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater;
+            ejectX: 0;
+            ejectY: 0)
+        );
+
 
 
     conversionFormat: TSDL_PixelFormat = (
@@ -2181,48 +2228,7 @@
         colorkey: 0;
         alpha : 255
     );
-    
-procedure initModule;
-procedure freeModule;
 
 implementation
-uses uMisc;
-
-procedure initModule;
-begin
-    Pathz:= cPathz;
-        {*  REFERENCE
-      4096 -> $FFFFF000
-      2048 -> $FFFFF800
-      1024 -> $FFFFFC00
-       512 -> $FFFFFE00  *}
-    if (cReducedQuality and rqLowRes) <> 0 then
-    begin
-        LAND_WIDTH:= 2048;
-        LAND_HEIGHT:= 1024;
-        LAND_WIDTH_MASK:= $FFFFF800;
-        LAND_HEIGHT_MASK:= $FFFFFC00;
-    end
-    else
-    begin
-        LAND_WIDTH:= 4096;
-        LAND_HEIGHT:= 2048;
-        LAND_WIDTH_MASK:= $FFFFF000;
-        LAND_HEIGHT_MASK:= $FFFFF800
-    end;
-
-{$IFDEF IPHONEOS}    
-    if isPhone() then
-        cMaxCaptions:= 3
-    else
-{$ENDIF}
-        cMaxCaptions:= 4;
-
-end;
-
-procedure freeModule;
-begin
-    PathPrefix := './';
-end;
 
 end.