hedgewars/uVariables.pas
changeset 8145 6408c0ba4ba1
parent 8143 3f2ba6debbdd
child 8161 0b8beacff8a5
equal deleted inserted replaced
8143:3f2ba6debbdd 8145:6408c0ba4ba1
   155     cDamageModifier : hwFloat;
   155     cDamageModifier : hwFloat;
   156     cLaserSighting  : boolean;
   156     cLaserSighting  : boolean;
   157     cVampiric       : boolean;
   157     cVampiric       : boolean;
   158     cArtillery      : boolean;
   158     cArtillery      : boolean;
   159     WeaponTooltipTex: PTexture;
   159     WeaponTooltipTex: PTexture;
   160     AmmoMenuTex     : PTexture;
       
   161     AmmoMenuInvalidated: boolean;
   160     AmmoMenuInvalidated: boolean;
   162     AmmoRect		: TSDL_Rect;
   161     AmmoRect		: TSDL_Rect;
   163     HHTexture       : PTexture;
   162     HHTexture       : PTexture;
   164     cMaxZoomLevel   : real;
   163     cMaxZoomLevel   : real;
   165     cMinZoomLevel   : real;
   164     cMinZoomLevel   : real;
   194 
   193 
   195     LuaGoals        : shortstring;
   194     LuaGoals        : shortstring;
   196 
   195 
   197     LuaTemplateNumber : LongWord;
   196     LuaTemplateNumber : LongWord;
   198 
   197 
   199     VoiceList : array[0..7] of TVoice =  (
       
   200                     ( snd: sndNone; voicepack: nil),
       
   201                     ( snd: sndNone; voicepack: nil),
       
   202                     ( snd: sndNone; voicepack: nil),
       
   203                     ( snd: sndNone; voicepack: nil),
       
   204                     ( snd: sndNone; voicepack: nil),
       
   205                     ( snd: sndNone; voicepack: nil),
       
   206                     ( snd: sndNone; voicepack: nil),
       
   207                     ( snd: sndNone; voicepack: nil));
       
   208     LastVoice : TVoice = ( snd: sndNone; voicepack: nil );
   198     LastVoice : TVoice = ( snd: sndNone; voicepack: nil );
   209 
   199 
   210 /////////////////////////////////////
   200 /////////////////////////////////////
   211 //Buttons
   201 //Buttons
   212 {$IFDEF USE_TOUCH_INTERFACE}
   202 {$IFDEF USE_TOUCH_INTERFACE}
   688             (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0),
   678             (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0),
   689             (Sprite:    sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0),
   679             (Sprite:    sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0),
   690             (Sprite:   sprJuggle; FramesCount: 49; Interval:  38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0)
   680             (Sprite:   sprJuggle; FramesCount: 49; Interval:  38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0)
   691             );
   681             );
   692 
   682 
   693     Soundz: array[TSound] of record
       
   694             FileName: string[31];
       
   695             Path    : TPathType;
       
   696             end = (
       
   697             (FileName:                         ''; Path: ptNone  ),// sndNone
       
   698             (FileName:        'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact
       
   699             (FileName:            'explosion.ogg'; Path: ptSounds),// sndExplosion
       
   700             (FileName:         'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp
       
   701             (FileName:         'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease
       
   702             (FileName:               'splash.ogg'; Path: ptSounds),// sndSplash
       
   703             (FileName:        'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload
       
   704             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire
       
   705             (FileName:          'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact
       
   706             (FileName:           'mineimpact.ogg'; Path: ptSounds),// sndMineImpact
       
   707             (FileName:             'minetick.ogg'; Path: ptSounds),// sndMineTicks
       
   708             (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndMudballImpact
       
   709             (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndPickhammer
       
   710             (FileName:                  'gun.ogg'; Path: ptSounds),// sndGun
       
   711             (FileName:                  'bee.ogg'; Path: ptSounds),// sndBee
       
   712             (FileName:                'Jump1.ogg'; Path: ptVoices),// sndJump1
       
   713             (FileName:                'Jump2.ogg'; Path: ptVoices),// sndJump2
       
   714             (FileName:                'Jump3.ogg'; Path: ptVoices),// sndJump3
       
   715             (FileName:               'Yessir.ogg'; Path: ptVoices),// sndYesSir
       
   716             (FileName:                'Laugh.ogg'; Path: ptVoices),// sndLaugh
       
   717             (FileName:            'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou
       
   718             (FileName:          'JustYouWait.ogg'; Path: ptVoices),// sndJustYouWait
       
   719             (FileName:             'Incoming.ogg'; Path: ptVoices),// sndIncoming
       
   720             (FileName:               'Missed.ogg'; Path: ptVoices),// sndMissed
       
   721             (FileName:               'Stupid.ogg'; Path: ptVoices),// sndStupid
       
   722             (FileName:           'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood
       
   723             (FileName:               'Boring.ogg'; Path: ptVoices),// sndBoring
       
   724             (FileName:               'Byebye.ogg'; Path: ptVoices),// sndByeBye
       
   725             (FileName:             'Sameteam.ogg'; Path: ptVoices),// sndSameTeam
       
   726             (FileName:               'Nutter.ogg'; Path: ptVoices),// sndNutter
       
   727             (FileName:       'Reinforcements.ogg'; Path: ptVoices),// sndReinforce
       
   728             (FileName:              'Traitor.ogg'; Path: ptVoices),// sndTraitor
       
   729             (FileName:      'Youllregretthat.ogg'; Path: ptVoices),// sndRegret
       
   730             (FileName:            'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown
       
   731             (FileName:               'Coward.ogg'; Path: ptVoices),// sndCoward
       
   732             (FileName:                'Hurry.ogg'; Path: ptVoices),// sndHurry
       
   733             (FileName:              'Watchit.ogg'; Path: ptVoices),// sndWatchIt
       
   734             (FileName:             'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze
       
   735             (FileName:                'cake2.ogg'; Path: ptSounds),// sndCake
       
   736             (FileName:                  'Ow1.ogg'; Path: ptVoices),// sndOw1
       
   737             (FileName:                  'Ow2.ogg'; Path: ptVoices),// sndOw2
       
   738             (FileName:                  'Ow3.ogg'; Path: ptVoices),// sndOw3
       
   739             (FileName:                  'Ow4.ogg'; Path: ptVoices),// sndOw4
       
   740             (FileName:           'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1
       
   741             (FileName:           'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2
       
   742             (FileName:           'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3
       
   743             (FileName:           'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4
       
   744             (FileName:           'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5
       
   745             (FileName:           'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6
       
   746             (FileName:                'Melon.ogg'; Path: ptVoices),// sndMelon
       
   747             (FileName:              'Hellish.ogg'; Path: ptSounds),// sndHellish
       
   748             (FileName:               'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo
       
   749             (FileName:              'rcplane.ogg'; Path: ptSounds),// sndRCPlane
       
   750             (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack
       
   751             (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries
       
   752             (FileName:               'denied.ogg'; Path: ptSounds),// sndDenied
       
   753             (FileName:               'placed.ogg'; Path: ptSounds),// sndPlaced
       
   754             (FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
       
   755             (FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
       
   756             (FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
       
   757             (FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
       
   758             (FileName:               'mortar.ogg'; Path: ptSounds),// sndMortar
       
   759             (FileName:         'shutterclick.ogg'; Path: ptSounds),// sndShutter
       
   760             (FileName:              'homerun.ogg'; Path: ptSounds),// sndHomerun
       
   761             (FileName:              'molotov.ogg'; Path: ptSounds),// sndMolotov
       
   762             (FileName:            'Takecover.ogg'; Path: ptVoices),// sndCover
       
   763             (FileName:                'Uh-oh.ogg'; Path: ptVoices),// sndUhOh
       
   764             (FileName:                 'Oops.ogg'; Path: ptVoices),// sndOops
       
   765             (FileName:                 'Nooo.ogg'; Path: ptVoices),// sndNooo
       
   766             (FileName:                'Hello.ogg'; Path: ptVoices),// sndHello
       
   767             (FileName:             'ropeshot.ogg'; Path: ptSounds),// sndRopeShot
       
   768             (FileName:           'ropeattach.ogg'; Path: ptSounds),// sndRopeAttach
       
   769             (FileName:          'roperelease.ogg'; Path: ptSounds),// sndRopeRelease
       
   770             (FileName:            'switchhog.ogg'; Path: ptSounds),// sndSwitchHog
       
   771             (FileName:              'Victory.ogg'; Path: ptVoices),// sndVictory
       
   772             (FileName:             'Flawless.ogg'; Path: ptVoices),// sndFlawless
       
   773             (FileName:         'sniperreload.ogg'; Path: ptSounds),// sndSniperReload
       
   774             (FileName:                'steps.ogg'; Path: ptSounds),// sndSteps
       
   775             (FileName:           'lowgravity.ogg'; Path: ptSounds),// sndLowGravity
       
   776             (FileName:           'hell_growl.ogg'; Path: ptSounds),// sndHellishImpact1
       
   777             (FileName:            'hell_ooff.ogg'; Path: ptSounds),// sndHellishImpact2
       
   778             (FileName:              'hell_ow.ogg'; Path: ptSounds),// sndHellishImpact3
       
   779             (FileName:             'hell_ugh.ogg'; Path: ptSounds),// sndHellishImpact4
       
   780             (FileName:          'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact
       
   781             (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndDroplet1
       
   782             (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
       
   783             (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
       
   784             (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
       
   785             (FileName:             'drillgun.ogg'; Path: ptSounds),// sndDrillRocket
       
   786             (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
       
   787             (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
       
   788             (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
       
   789             (FileName:              'Whistle.ogg'; Path: ptSounds),// sndWhistle
       
   790             (FileName:             'beewater.ogg'; Path: ptSounds),// sndBeeWater
       
   791             (FileName:                   '1C.ogg'; Path: ptSounds),// sndPiano0
       
   792             (FileName:                   '2D.ogg'; Path: ptSounds),// sndPiano1
       
   793             (FileName:                   '3E.ogg'; Path: ptSounds),// sndPiano2
       
   794             (FileName:                   '4F.ogg'; Path: ptSounds),// sndPiano3
       
   795             (FileName:                   '5G.ogg'; Path: ptSounds),// sndPiano4
       
   796             (FileName:                   '6A.ogg'; Path: ptSounds),// sndPiano5
       
   797             (FileName:                   '7B.ogg'; Path: ptSounds),// sndPiano6
       
   798             (FileName:                   '8C.ogg'; Path: ptSounds),// sndPiano7
       
   799             (FileName:                   '9D.ogg'; Path: ptSounds),// sndPiano8
       
   800             (FileName:                 'skip.ogg'; Path: ptSounds),// sndSkip
       
   801             (FileName:              'sinegun.ogg'; Path: ptSounds),// sndSineGun
       
   802             (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
       
   803             (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
       
   804             (FileName:                'Ooff3.ogg'; Path: ptVoices),// sndOoff3
       
   805             (FileName:               'hammer.ogg'; Path: ptSounds),// sndWhack
       
   806             (FileName:           'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen
       
   807             (FileName:            'parachute.ogg'; Path: ptSounds),// sndParachute
       
   808             (FileName:                 'bump.ogg'; Path: ptSounds),// sndBump
       
   809             (FileName:            'hogchant3.ogg'; Path: ptSounds),// sndResurrector
       
   810             (FileName:                'plane.ogg'; Path: ptSounds),// sndPlane
       
   811             (FileName:               'TARDIS.ogg'; Path: ptSounds) // sndTardis
       
   812             );
       
   813 var
   683 var
   814     Ammoz: array [TAmmoType] of record
   684     Ammoz: array [TAmmoType] of record
   815             NameId: TAmmoStrId;
   685             NameId: TAmmoStrId;
   816             NameTex: PTexture;
   686             NameTex: PTexture;
   817             Probability, NumberInCase: Longword;
   687             Probability, NumberInCase: Longword;
  2356             PosCount: 1;
  2226             PosCount: 1;
  2357             PosSprite: sprWater;
  2227             PosSprite: sprWater;
  2358             ejectX: 0;
  2228             ejectX: 0;
  2359             ejectY: 0)
  2229             ejectY: 0)
  2360         );
  2230         );
  2361 
       
  2362 const
       
  2363     GearKindAmmoTypeMap : array [TGearType] of TAmmoType = (    
       
  2364 (*          gtFlame *)   amNothing
       
  2365 (*       gtHedgehog *) , amNothing
       
  2366 (*           gtMine *) , amMine
       
  2367 (*           gtCase *) , amNothing
       
  2368 (*     gtExplosives *) , amNothing
       
  2369 (*        gtGrenade *) , amGrenade
       
  2370 (*          gtShell *) , amBazooka
       
  2371 (*          gtGrave *) , amNothing
       
  2372 (*            gtBee *) , amBee
       
  2373 (*    gtShotgunShot *) , amShotgun
       
  2374 (*     gtPickHammer *) , amPickHammer
       
  2375 (*           gtRope *) , amRope
       
  2376 (*     gtDEagleShot *) , amDEagle
       
  2377 (*       gtDynamite *) , amDynamite
       
  2378 (*    gtClusterBomb *) , amClusterBomb
       
  2379 (*        gtCluster *) , amClusterBomb
       
  2380 (*         gtShover *) , amBaseballBat  // Shover is only used for baseball bat right now
       
  2381 (*      gtFirePunch *) , amFirePunch
       
  2382 (*    gtATStartGame *) , amNothing
       
  2383 (*   gtATFinishGame *) , amNothing
       
  2384 (*      gtParachute *) , amParachute
       
  2385 (*      gtAirAttack *) , amAirAttack
       
  2386 (*        gtAirBomb *) , amAirAttack
       
  2387 (*      gtBlowTorch *) , amBlowTorch
       
  2388 (*         gtGirder *) , amGirder
       
  2389 (*       gtTeleport *) , amTeleport
       
  2390 (*       gtSwitcher *) , amSwitch
       
  2391 (*         gtTarget *) , amNothing
       
  2392 (*         gtMortar *) , amMortar
       
  2393 (*           gtWhip *) , amWhip
       
  2394 (*       gtKamikaze *) , amKamikaze
       
  2395 (*           gtCake *) , amCake
       
  2396 (*      gtSeduction *) , amSeduction
       
  2397 (*     gtWatermelon *) , amWatermelon
       
  2398 (*     gtMelonPiece *) , amWatermelon
       
  2399 (*    gtHellishBomb *) , amHellishBomb
       
  2400 (*        gtWaterUp *) , amNothing
       
  2401 (*          gtDrill *) , amDrill
       
  2402 (*        gtBallGun *) , amBallgun
       
  2403 (*           gtBall *) , amBallgun
       
  2404 (*        gtRCPlane *) , amRCPlane
       
  2405 (*gtSniperRifleShot *) , amSniperRifle
       
  2406 (*        gtJetpack *) , amJetpack
       
  2407 (*        gtMolotov *) , amMolotov
       
  2408 (*          gtBirdy *) , amBirdy
       
  2409 (*            gtEgg *) , amBirdy
       
  2410 (*         gtPortal *) , amPortalGun
       
  2411 (*          gtPiano *) , amPiano
       
  2412 (*        gtGasBomb *) , amGasBomb
       
  2413 (*    gtSineGunShot *) , amSineGun
       
  2414 (*   gtFlamethrower *) , amFlamethrower
       
  2415 (*          gtSMine *) , amSMine
       
  2416 (*    gtPoisonCloud *) , amNothing
       
  2417 (*         gtHammer *) , amHammer
       
  2418 (*      gtHammerHit *) , amHammer
       
  2419 (*    gtResurrector *) , amResurrector
       
  2420 (*    gtPoisonCloud *) , amNothing
       
  2421 (*       gtSnowball *) , amSnowball
       
  2422 (*          gtFlake *) , amNothing
       
  2423 (*      gtStructure *) , amStructure  // TODO - This will undoubtedly change once there is more than one structure
       
  2424 (*        gtLandGun *) , amLandGun
       
  2425 (*         gtTardis *) , amTardis
       
  2426 (*         gtIceGun *) , amIceGun
       
  2427 (*        gtAddAmmo *) , amNothing
       
  2428 (*  gtGenericFaller *) , amNothing
       
  2429 (*          gtKnife *) , amKnife
       
  2430     );
       
  2431 
  2231 
  2432 var
  2232 var
  2433     Land: TCollisionArray;
  2233     Land: TCollisionArray;
  2434     LandPixels: TLandArray;
  2234     LandPixels: TLandArray;
  2435     LandDirty: TDirtyTag;
  2235     LandDirty: TDirtyTag;
  2460     ClansCount: Longword;
  2260     ClansCount: Longword;
  2461     LocalClan: LongInt;  // last non-bot, non-extdriven clan
  2261     LocalClan: LongInt;  // last non-bot, non-extdriven clan
  2462     LocalTeam: LongInt;  // last non-bot, non-extdriven clan first team
  2262     LocalTeam: LongInt;  // last non-bot, non-extdriven clan first team
  2463     LocalAmmo: LongInt;  // last non-bot, non-extdriven clan's first team's ammo index, updated to next upcoming hog for per-hog-ammo
  2263     LocalAmmo: LongInt;  // last non-bot, non-extdriven clan's first team's ammo index, updated to next upcoming hog for per-hog-ammo
  2464     CurMinAngle, CurMaxAngle: Longword;
  2264     CurMinAngle, CurMaxAngle: Longword;
  2465     NextClan: boolean;
       
  2466 
  2265 
  2467     FollowGear: PGear;
  2266     FollowGear: PGear;
  2468     WindBarWidth: LongInt;
  2267     WindBarWidth: LongInt;
  2469     bShowAmmoMenu: boolean;
  2268     bShowAmmoMenu: boolean;
  2470     bSelected: boolean;
  2269     bSelected: boolean;
  2471     bShowFinger: boolean;
  2270     bShowFinger: boolean;
  2472     Frames: Longword;
  2271     Frames: Longword;
  2473     WaterColor, DeepWaterColor: TSDL_Color;
  2272     WaterColor, DeepWaterColor: TSDL_Color;
  2474     SkyColor, RQSkyColor, SDSkyColor: TSDL_Color;
  2273     SkyColor, RQSkyColor, SDSkyColor: TSDL_Color;
  2475     SkyOffset: LongInt;
  2274     SkyOffset: LongInt;
  2476     HorizontOffset: LongInt;
       
  2477 {$IFDEF COUNTTICKS}
  2275 {$IFDEF COUNTTICKS}
  2478     cntTicks: LongWord;
  2276     cntTicks: LongWord;
  2479 {$ENDIF}
  2277 {$ENDIF}
  2480     cOffsetY: LongInt;
       
  2481     AFRToggle: Boolean;
       
  2482 
  2278 
  2483 
  2279 
  2484     PauseTexture,
  2280     PauseTexture,
  2485     SyncTexture,
  2281     SyncTexture,
  2486     ConfirmTexture: PTexture;
  2282     ConfirmTexture: PTexture;
  2487     cScaleFactor: GLfloat;
  2283     cScaleFactor: GLfloat;
  2488     SupportNPOTT: Boolean;
  2284     SupportNPOTT: Boolean;
  2489     Step: LongInt;
  2285     Step: LongInt;
  2490     squaresize : LongInt;
       
  2491     numsquares : LongInt;
       
  2492     ProgrTex: PTexture;
       
  2493     MissionIcons: PSDL_Surface;
  2286     MissionIcons: PSDL_Surface;
  2494     ropeIconTex: PTexture;
  2287     ropeIconTex: PTexture;
  2495 
  2288 
  2496     // stereoscopic framebuffer and textures
  2289     // stereoscopic framebuffer and textures
  2497     framel, framer, depthl, depthr: GLuint;
  2290     framel, framer, depthl, depthr: GLuint;
  2499 
  2292 
  2500     // video recorder framebuffer and texture
  2293     // video recorder framebuffer and texture
  2501     defaultFrame, depthv: GLuint;
  2294     defaultFrame, depthv: GLuint;
  2502     texv: GLuint;
  2295     texv: GLuint;
  2503 
  2296 
  2504     VisualGearLayers: array[0..6] of PVisualGear;
       
  2505     lastVisualGearByUID: PVisualGear;
  2297     lastVisualGearByUID: PVisualGear;
  2506     vobFrameTicks, vobFramesCount, vobCount: Longword;
  2298     vobFrameTicks, vobFramesCount, vobCount: Longword;
  2507     vobVelocity, vobFallSpeed: LongInt;
  2299     vobVelocity, vobFallSpeed: LongInt;
  2508     vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword;
  2300     vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword;
  2509     vobSDVelocity, vobSDFallSpeed: LongInt;
  2301     vobSDVelocity, vobSDFallSpeed: LongInt;
  2510 
       
  2511     ControllerNumControllers: Integer;
       
  2512     ControllerEnabled: Integer;
       
  2513     ControllerNumAxes: array[0..5] of Integer;
       
  2514     //ControllerNumBalls: array[0..5] of Integer;
       
  2515     ControllerNumHats: array[0..5] of Integer;
       
  2516     ControllerNumButtons: array[0..5] of Integer;
       
  2517     ControllerAxes: array[0..5] of array[0..19] of Integer;
       
  2518     //ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer;
       
  2519     ControllerHats: array[0..5] of array[0..19] of Byte;
       
  2520     ControllerButtons: array[0..5] of array[0..19] of Byte;
       
  2521 
  2302 
  2522     DefaultBinds : TBinds;
  2303     DefaultBinds : TBinds;
  2523 
  2304 
  2524     lastTurnChecksum : Longword;
  2305     lastTurnChecksum : Longword;
  2525 
  2306