share/hedgewars/Data/Scripts/Multiplayer/TechRacer.lua
changeset 10596 75b5b674387a
parent 10554 48e9b1099ff4
child 10611 58cad46782ff
equal deleted inserted replaced
10595:6781190b053d 10596:75b5b674387a
     1 ------------------------------------------
     1 ------------------------------------------
     2 -- TECH RACER
     2 -- TECH RACER v0.2
     3 -----------------------------------------
     3 -----------------------------------------
       
     4 
       
     5 --------------
       
     6 --0.2
       
     7 --------------
       
     8 -- should work better "out the box"
       
     9 -- changed map generation
       
    10 -- put a hog limiter in place
       
    11 -- removed parsecommand
       
    12 -- fix one of the test maps
       
    13 -- hopefully added some support for future official challenges etc
       
    14 -- changed theme
       
    15 -- minor cleanups?
     4 
    16 
     5 -----------------------------
    17 -----------------------------
     6 -- SCRIPT BEGINS
    18 -- SCRIPT BEGINS
     7 -----------------------------
    19 -----------------------------
     8 
    20 
     9 HedgewarsScriptLoad("/Scripts/Locale.lua")
    21 HedgewarsScriptLoad("/Scripts/Locale.lua")
    10 --HedgewarsScriptLoad("/Scripts/OfficialChallenges.lua")
    22 HedgewarsScriptLoad("/Scripts/OfficialChallenges.lua")
    11 HedgewarsScriptLoad("/Scripts/Tracker.lua")
    23 HedgewarsScriptLoad("/Scripts/Tracker.lua")
    12 HedgewarsScriptLoad("/Scripts/Params.lua")
    24 HedgewarsScriptLoad("/Scripts/Params.lua")
    13 
    25 
    14 ------------------
    26 ------------------
    15 -- Got Variables?
    27 -- Got Variables?
    16 ------------------
    28 ------------------
    17 
    29 
    18  local activationStage = 0
    30 local activationStage = 0
    19  local jet = nil
    31 local jet = nil
    20 
    32 
    21 local fMod = 1000000 -- 1
    33 local fMod = 1000000 -- 1
    22 local roundLimit = 3
    34 local roundLimit = 3
    23 local roundNumber = 0
    35 local roundNumber = 0
    24 local firstClan = 10
    36 local firstClan = 10
    86 
    98 
    87 -------------------
    99 -------------------
    88 -- general methods
   100 -- general methods
    89 -------------------
   101 -------------------
    90 
   102 
    91 function onPrecise()
   103 --function onPrecise()
    92 	AddCaption(mapID)
   104 --end
    93 end
       
    94 
   105 
    95 function RebuildTeamInfo()
   106 function RebuildTeamInfo()
    96 
   107 
    97 
   108 
    98         -- make a list of individual team names
   109         -- make a list of individual team names
   465 	-- the creation stage, place girders and needed gears, grant ammo
   476 	-- the creation stage, place girders and needed gears, grant ammo
   466 	elseif activationStage == 2 then
   477 	elseif activationStage == 2 then
   467 
   478 
   468 		-- these are from onParameters()
   479 		-- these are from onParameters()
   469 		if mapID == "0" then
   480 		if mapID == "0" then
   470 			--AddCaption("zero")
   481 			--AddCaption("don't load any map")
   471 		elseif mapID == "1" then
   482 		elseif mapID == "1" then
   472 
   483 
   473 			--testmap1
   484 			--testmap1
   474 			------ GIRDER LIST ------
   485 			------ GIRDER LIST ------
   475 			PlaceGirder(306, 530, 7)
   486 			PlaceSprite(306, 530, sprAmGirder, 7, lfNormal)
   476 			PlaceGirder(451, 474, 4)
   487 			PlaceSprite(451, 474, sprAmGirder, 4, lfNormal)
   477 			PlaceGirder(595, 531, 5)
   488 			PlaceSprite(595, 531, sprAmGirder, 5, lfNormal)
   478 			PlaceGirder(245, 679, 6)
   489 			PlaceSprite(245, 679, sprAmGirder, 6, lfNormal)
   479 			PlaceGirder(305, 822, 5)
   490 			PlaceSprite(305, 822, sprAmGirder, 5, lfNormal)
   480 			PlaceGirder(449, 887, 4)
   491 			PlaceSprite(449, 887, sprAmGirder, 4, lfNormal)
   481 			PlaceGirder(593, 825, 7)
   492 			PlaceSprite(593, 825, sprAmGirder, 7, lfNormal)
   482 			PlaceGirder(657, 681, 6)
   493 			PlaceSprite(657, 681, sprAmGirder, 6, lfNormal)
   483 			PlaceGirder(1063, 682, 6)
   494 			PlaceSprite(1063, 682, sprAmGirder, 6, lfNormal)
   484 			PlaceGirder(1121, 532, 7)
   495 			PlaceSprite(1121, 532, sprAmGirder, 7, lfNormal)
   485 			PlaceGirder(1266, 476, 4)
   496 			PlaceSprite(1266, 476, sprAmGirder, 4, lfNormal)
   486 			PlaceGirder(1411, 535, 5)
   497 			PlaceSprite(1411, 535, sprAmGirder, 5, lfNormal)
   487 			PlaceGirder(1472, 684, 6)
   498 			PlaceSprite(1472, 684, sprAmGirder, 6, lfNormal)
   488 			PlaceGirder(1415, 828, 7)
   499 			PlaceSprite(1415, 828, sprAmGirder, 7, lfNormal)
   489 			PlaceGirder(1271, 892, 4)
   500 			PlaceSprite(1271, 892, sprAmGirder, 4, lfNormal)
   490 			PlaceGirder(1126, 827, 5)
   501 			PlaceSprite(1126, 827, sprAmGirder, 5, lfNormal)
   491 			PlaceGirder(841, 1079, 4)
   502 			PlaceSprite(841, 1079, sprAmGirder, 4, lfNormal)
   492 			PlaceGirder(709, 1153, 7)
   503 			PlaceSprite(709, 1153, sprAmGirder, 7, lfNormal)
   493 			PlaceGirder(975, 1154, 5)
   504 			PlaceSprite(975, 1154, sprAmGirder, 5, lfNormal)
   494 			PlaceGirder(653, 1265, 2)
   505 			PlaceSprite(653, 1265, sprAmGirder, 2, lfNormal)
   495 			PlaceGirder(1021, 1266, 2)
   506 			PlaceSprite(1021, 1266, sprAmGirder, 2, lfNormal)
   496 			PlaceGirder(713, 1369, 5)
   507 			PlaceSprite(713, 1369, sprAmGirder, 5, lfNormal)
   497 			PlaceGirder(960, 1371, 7)
   508 			PlaceSprite(960, 1371, sprAmGirder, 7, lfNormal)
   498 			PlaceGirder(835, 1454, 4)
   509 			PlaceSprite(835, 1454, sprAmGirder, 4, lfNormal)
   499 			PlaceGirder(185, 1617, 2)
   510 			PlaceSprite(185, 1617, sprAmGirder, 2, lfNormal)
   500 			PlaceGirder(1317, 1399, 2)
   511 			PlaceSprite(1317, 1399, sprAmGirder, 2, lfNormal)
   501 			PlaceGirder(1711, 1811, 2)
   512 			PlaceSprite(1711, 1811, sprAmGirder, 2, lfNormal)
   502 			PlaceGirder(2087, 1424, 2)
   513 			PlaceSprite(2087, 1424, sprAmGirder, 2, lfNormal)
   503 			PlaceGirder(2373, 1804, 2)
   514 			PlaceSprite(2373, 1804, sprAmGirder, 2, lfNormal)
   504 			PlaceGirder(2646, 1434, 2)
   515 			PlaceSprite(2646, 1434, sprAmGirder, 2, lfNormal)
   505 			PlaceGirder(1876, 667, 6)
   516 			PlaceSprite(1876, 667, sprAmGirder, 6, lfNormal)
   506 			PlaceGirder(1934, 517, 7)
   517 			PlaceSprite(1934, 517, sprAmGirder, 7, lfNormal)
   507 			PlaceGirder(2079, 461, 4)
   518 			PlaceSprite(2079, 461, sprAmGirder, 4, lfNormal)
   508 			PlaceGirder(2224, 519, 5)
   519 			PlaceSprite(2224, 519, sprAmGirder, 5, lfNormal)
   509 			PlaceGirder(1935, 810, 5)
   520 			PlaceSprite(1935, 810, sprAmGirder, 5, lfNormal)
   510 			PlaceGirder(2080, 875, 4)
   521 			PlaceSprite(2080, 875, sprAmGirder, 4, lfNormal)
   511 			PlaceGirder(2224, 811, 7)
   522 			PlaceSprite(2224, 811, sprAmGirder, 7, lfNormal)
   512 			PlaceGirder(2370, 582, 4)
   523 			PlaceSprite(2370, 582, sprAmGirder, 4, lfNormal)
   513 			PlaceGirder(2370, 759, 4)
   524 			PlaceSprite(2370, 759, sprAmGirder, 4, lfNormal)
   514 			PlaceGirder(2530, 582, 4)
   525 			PlaceSprite(2530, 582, sprAmGirder, 4, lfNormal)
   515 			PlaceGirder(2690, 582, 4)
   526 			PlaceSprite(2690, 582, sprAmGirder, 4, lfNormal)
   516 			PlaceGirder(2530, 759, 4)
   527 			PlaceSprite(2530, 759, sprAmGirder, 4, lfNormal)
   517 			PlaceGirder(2690, 759, 4)
   528 			PlaceSprite(2690, 759, sprAmGirder, 4, lfNormal)
   518 			PlaceGirder(2836, 634, 5)
   529 			PlaceSprite(2836, 634, sprAmGirder, 5, lfNormal)
   519 			PlaceGirder(2835, 822, 5)
   530 			PlaceSprite(2835, 822, sprAmGirder, 5, lfNormal)
   520 			PlaceGirder(2951, 751, 5)
   531 			PlaceSprite(2951, 751, sprAmGirder, 5, lfNormal)
   521 			PlaceGirder(2950, 939, 5)
   532 			PlaceSprite(2950, 939, sprAmGirder, 5, lfNormal)
   522 			PlaceGirder(2964, 1054, 7)
   533 			PlaceSprite(2964, 1054, sprAmGirder, 7, lfNormal)
   523 			PlaceGirder(2978, 1172, 5)
   534 			PlaceSprite(2978, 1172, sprAmGirder, 5, lfNormal)
   524 			PlaceGirder(3095, 1185, 7)
   535 			PlaceSprite(3095, 1185, sprAmGirder, 7, lfNormal)
   525 			PlaceGirder(3211, 1069, 7)
   536 			PlaceSprite(3211, 1069, sprAmGirder, 7, lfNormal)
   526 			PlaceGirder(3038, 843, 1)
   537 			PlaceSprite(3038, 843, sprAmGirder, 1, lfNormal)
   527 			PlaceGirder(3126, 825, 7)
   538 			PlaceSprite(3126, 825, sprAmGirder, 7, lfNormal)
   528 			PlaceGirder(3271, 768, 4)
   539 			PlaceSprite(3271, 768, sprAmGirder, 4, lfNormal)
   529 			PlaceGirder(3357, 1014, 4)
   540 			PlaceSprite(3357, 1014, sprAmGirder, 4, lfNormal)
   530 			PlaceGirder(3416, 826, 5)
   541 			PlaceSprite(3416, 826, sprAmGirder, 5, lfNormal)
   531 			PlaceGirder(3454, 969, 6)
   542 			PlaceSprite(3454, 969, sprAmGirder, 6, lfNormal)
   532 			PlaceGirder(3439, 369, 6)
   543 			PlaceSprite(3439, 369, sprAmGirder, 6, lfNormal)
   533 			PlaceGirder(3500, 220, 7)
   544 			PlaceSprite(3500, 220, sprAmGirder, 7, lfNormal)
   534 			PlaceGirder(3502, 513, 5)
   545 			PlaceSprite(3502, 513, sprAmGirder, 5, lfNormal)
   535 			PlaceGirder(3646, 162, 4)
   546 			PlaceSprite(3646, 162, sprAmGirder, 4, lfNormal)
   536 			PlaceGirder(3791, 224, 5)
   547 			PlaceSprite(3791, 224, sprAmGirder, 5, lfNormal)
   537 			PlaceGirder(3851, 374, 6)
   548 			PlaceSprite(3851, 374, sprAmGirder, 6, lfNormal)
   538 			PlaceGirder(3792, 518, 7)
   549 			PlaceSprite(3792, 518, sprAmGirder, 7, lfNormal)
   539 			PlaceGirder(3994, 1731, 7)
   550 			PlaceSprite(3994, 1731, sprAmGirder, 7, lfNormal)
   540 			PlaceGirder(3877, 1848, 7)
   551 			PlaceSprite(3877, 1848, sprAmGirder, 7, lfNormal)
   541 			PlaceGirder(3789, 1942, 3)
   552 			PlaceSprite(3789, 1942, sprAmGirder, 3, lfNormal)
   542 			PlaceGirder(3986, 1929, 2)
   553 			PlaceSprite(3986, 1929, sprAmGirder, 2, lfNormal)
   543 			PlaceGirder(2837, 1937, 4)
   554 			PlaceSprite(2837, 1937, sprAmGirder, 4, lfNormal)
   544 			PlaceGirder(2997, 1938, 4)
   555 			PlaceSprite(2997, 1938, sprAmGirder, 4, lfNormal)
   545 			PlaceGirder(3157, 1938, 4)
   556 			PlaceSprite(3157, 1938, sprAmGirder, 4, lfNormal)
   546 			PlaceGirder(1152, 1844, 4)
   557 			PlaceSprite(1152, 1844, sprAmGirder, 4, lfNormal)
   547 			PlaceGirder(1299, 1898, 5)
   558 			PlaceSprite(1299, 1898, sprAmGirder, 5, lfNormal)
   548 			PlaceGirder(1005, 1900, 7)
   559 			PlaceSprite(1005, 1900, sprAmGirder, 7, lfNormal)
   549 			PlaceGirder(3578, 575, 6)
   560 			PlaceSprite(3578, 575, sprAmGirder, 6, lfNormal)
   550 			PlaceGirder(3714, 576, 6)
   561 			PlaceSprite(3714, 576, sprAmGirder, 6, lfNormal)
   551 			PlaceGirder(3579, 740, 6)
   562 			PlaceSprite(3579, 740, sprAmGirder, 6, lfNormal)
   552 			PlaceGirder(3714, 741, 6)
   563 			PlaceSprite(3714, 741, sprAmGirder, 6, lfNormal)
   553 			PlaceGirder(3580, 903, 6)
   564 			PlaceSprite(3580, 903, sprAmGirder, 6, lfNormal)
   554 			PlaceGirder(3715, 904, 6)
   565 			PlaceSprite(3715, 904, sprAmGirder, 6, lfNormal)
   555 			PlaceGirder(3552, 452, 1)
   566 			PlaceSprite(3552, 452, sprAmGirder, 1, lfNormal)
   556 			PlaceGirder(3528, 370, 2)
   567 			PlaceSprite(3528, 370, sprAmGirder, 2, lfNormal)
   557 			PlaceGirder(3568, 297, 3)
   568 			PlaceSprite(3568, 297, sprAmGirder, 3, lfNormal)
   558 			PlaceGirder(3736, 455, 3)
   569 			PlaceSprite(3736, 455, sprAmGirder, 3, lfNormal)
   559 			PlaceGirder(3757, 378, 2)
   570 			PlaceSprite(3757, 378, sprAmGirder, 2, lfNormal)
   560 			PlaceGirder(3725, 299, 1)
   571 			PlaceSprite(3725, 299, sprAmGirder, 1, lfNormal)
   561 			PlaceGirder(3646, 261, 0)
   572 			PlaceSprite(3646, 261, sprAmGirder, 0, lfNormal)
   562 			PlaceGirder(3648, 997, 4)
   573 			PlaceSprite(3648, 997, sprAmGirder, 4, lfNormal)
   563 			PlaceGirder(3649, 1275, 2)
   574 			PlaceSprite(3649, 1275, sprAmGirder, 2, lfNormal)
   564 			PlaceGirder(3514, 1750, 0)
   575 			PlaceSprite(3514, 1750, sprAmGirder, 0, lfNormal)
   565 
   576 
   566 			------ RUBBER BAND LIST ------
   577 			------ RUBBER BAND LIST ------
   567 
   578 
   568 			------ LAND SPRITE LIST ------
   579 			------ LAND SPRITE LIST ------
   569 
   580 
   596 			SetTimer(AddGear(2855, 650, gtMine, 0, 0, 0, 0), 1)
   607 			SetTimer(AddGear(2855, 650, gtMine, 0, 0, 0, 0), 1)
   597 			SetTimer(AddGear(2887, 686, gtMine, 0, 0, 0, 0), 1)
   608 			SetTimer(AddGear(2887, 686, gtMine, 0, 0, 0, 0), 1)
   598 
   609 
   599 		elseif mapID == "2" then
   610 		elseif mapID == "2" then
   600 
   611 
   601 
   612 			-- land flags test map
   602 		-- land flags test map
   613 			------ GIRDER LIST ------
   603 
   614 			PlaceSprite(335, 622, sprAmGirder, 16,16384)
   604 
   615 			PlaceSprite(474, 569, sprAmGirder, 13,16384)
   605 
   616 			PlaceSprite(343, 748, sprAmGirder, 14,16384)
   606 				------ GIRDER LIST ------
   617 			PlaceSprite(466, 756, sprAmGirder, 16,16384)
   607 	PlaceSprite(335, 622, sprAmGirder, 16,16384)
   618 			PlaceSprite(609, 702, sprAmGirder, 13,16384)
   608 	PlaceSprite(474, 569, sprAmGirder, 13,16384)
   619 			PlaceSprite(635, 570, sprAmGirder, 13,16384)
   609 	PlaceSprite(343, 748, sprAmGirder, 14,16384)
   620 			PlaceSprite(770, 702, sprAmGirder, 13,16384)
   610 	PlaceSprite(466, 756, sprAmGirder, 16,16384)
   621 			PlaceSprite(960, 730, sprAmGirder, 18,2048)
   611 	PlaceSprite(609, 702, sprAmGirder, 13,16384)
   622 			PlaceSprite(1061, 608, sprAmGirder, 16,16384)
   612 	PlaceSprite(635, 570, sprAmGirder, 13,16384)
   623 			PlaceSprite(1207, 552, sprAmGirder, 13,16384)
   613 	PlaceSprite(770, 702, sprAmGirder, 13,16384)
   624 			PlaceSprite(1205, 409, sprAmGirder, 13,16384)
   614 	PlaceSprite(960, 730, sprAmGirder, 18,2048)
   625 			PlaceSprite(2312, 637, sprAmGirder, 6,0)
   615 	PlaceSprite(1061, 608, sprAmGirder, 16,16384)
   626 			PlaceSprite(2312, 472, sprAmGirder, 6,0)
   616 	PlaceSprite(1207, 552, sprAmGirder, 13,16384)
   627 			PlaceSprite(2311, 308, sprAmGirder, 6,0)
   617 	PlaceSprite(1205, 409, sprAmGirder, 13,16384)
   628 			PlaceSprite(2292, 155, sprAmGirder, 6,0)
   618 	PlaceSprite(2312, 637, sprAmGirder, 6,0)
   629 			PlaceSprite(727, 611, sprAmGirder, 6,0)
   619 	PlaceSprite(2312, 472, sprAmGirder, 6,0)
   630 			PlaceSprite(1298, 480, sprAmGirder, 6,0)
   620 	PlaceSprite(2311, 308, sprAmGirder, 6,0)
   631 
   621 	PlaceSprite(2292, 155, sprAmGirder, 6,0)
   632 			------ RUBBER BAND LIST ------
   622 	PlaceSprite(727, 611, sprAmGirder, 6,0)
   633 			PlaceSprite(1411, 625, sprAmRubber, 1, lfBouncy)
   623 	PlaceSprite(1298, 480, sprAmGirder, 6,0)
   634 			PlaceSprite(1525, 739, sprAmRubber, 1, lfBouncy)
   624 
   635 			PlaceSprite(1638, 852, sprAmRubber, 1, lfBouncy)
   625 	------ RUBBER BAND LIST ------
   636 			PlaceSprite(1754, 963, sprAmRubber, 1, lfBouncy)
   626 	PlaceSprite(1411, 625, sprAmRubber, 1, lfBouncy)
   637 			PlaceSprite(1870, 1076, sprAmRubber, 1, lfBouncy)
   627 	PlaceSprite(1525, 739, sprAmRubber, 1, lfBouncy)
   638 			PlaceSprite(2013, 1131, sprAmRubber, 0, lfBouncy)
   628 	PlaceSprite(1638, 852, sprAmRubber, 1, lfBouncy)
   639 			PlaceSprite(2159, 1070, sprAmRubber, 3, lfBouncy)
   629 	PlaceSprite(1754, 963, sprAmRubber, 1, lfBouncy)
   640 			PlaceSprite(2268, 952, sprAmRubber, 3, lfBouncy)
   630 	PlaceSprite(1870, 1076, sprAmRubber, 1, lfBouncy)
   641 			PlaceSprite(2315, 802, sprAmRubber, 2, lfBouncy)
   631 	PlaceSprite(2013, 1131, sprAmRubber, 0, lfBouncy)
   642 
   632 	PlaceSprite(2159, 1070, sprAmRubber, 3, lfBouncy)
   643 			------ AMMO CRATE LIST ------
   633 	PlaceSprite(2268, 952, sprAmRubber, 3, lfBouncy)
   644 			tempG = SpawnAmmoCrate(472, 711, amBazooka)
   634 	PlaceSprite(2315, 802, sprAmRubber, 2, lfBouncy)
   645 
   635 
   646 			tempG = SpawnUtilityCrate(540, 660, amParachute)
   636 	------ AMMO CRATE LIST ------
   647 
   637 	tempG = SpawnAmmoCrate(472, 711, amBazooka)
   648 			tempG = SpawnAmmoCrate(1155, 528, amBazooka)
   638 
   649 
   639 	tempG = SpawnUtilityCrate(540, 660, amParachute)
   650 			------ UTILITY CRATE LIST ------
   640 
   651 			tempG = SpawnUtilityCrate(2006, 1102, amRope)
   641 	tempG = SpawnAmmoCrate(1155, 528, amBazooka)
       
   642 
       
   643 	------ UTILITY CRATE LIST ------
       
   644 	tempG = SpawnUtilityCrate(2006, 1102, amRope)
       
   645 
       
   646 
       
   647 
   652 
   648 		else
   653 		else
   649 
       
   650 
       
   651 
       
   652 
       
   653 
       
   654 
       
   655 
       
   656 
   654 
   657 
   655 
   658 
   656 
   659 			-- first test epic multi map
   657 			-- first test epic multi map
   660 			------ GIRDER LIST ------
   658 			------ GIRDER LIST ------
  1103 function onParameters()
  1101 function onParameters()
  1104     parseParams()
  1102     parseParams()
  1105 	mapID = params["m"]
  1103 	mapID = params["m"]
  1106 end
  1104 end
  1107 
  1105 
       
  1106 PointsBuffer = ''  -- A string to accumulate points in
       
  1107 
       
  1108 function AddPoint(x, y, width, erase)
       
  1109  PointsBuffer = PointsBuffer .. string.char(band(x,0xff00) / 256 , band(x,0xff) , band(y,0xff00) / 256 , band(y,0xff))
       
  1110  if width then
       
  1111      width = bor(width,0x80)
       
  1112      if erase then
       
  1113          width = bor(width,0x40)
       
  1114      end
       
  1115      PointsBuffer = PointsBuffer .. string.char(width)
       
  1116  else
       
  1117      PointsBuffer = PointsBuffer .. string.char(0)
       
  1118  end
       
  1119  if #PointsBuffer > 245 then
       
  1120      ParseCommand('draw '..PointsBuffer)
       
  1121      PointsBuffer = ''
       
  1122  end
       
  1123 end
       
  1124 
       
  1125 function FlushPoints()
       
  1126  if #PointsBuffer > 0 then
       
  1127      ParseCommand('draw '..PointsBuffer)
       
  1128      PointsBuffer = ''
       
  1129  end
       
  1130 end
       
  1131 
       
  1132 function onPreviewInit()
       
  1133 	onGameInit()
       
  1134 end
       
  1135 
  1108 function onGameInit()
  1136 function onGameInit()
  1109         --EnableGameFlags(gfInfAttack, gfInvulnerable)
  1137 
  1110         EnableGameFlags(gfInfAttack, gfDisableWind)
  1138 		Theme = "Cave"
       
  1139 
       
  1140 		MapGen = mgDrawn
       
  1141 		TemplateFilter = 0
       
  1142 
       
  1143 		EnableGameFlags(gfInfAttack, gfDisableWind)
  1111 		DisableGameFlags(gfSolidLand)
  1144 		DisableGameFlags(gfSolidLand)
  1112 		CaseFreq = 0
  1145 		CaseFreq = 0
  1113         TurnTime = 90000
  1146         TurnTime = 90000
  1114         WaterRise = 0
  1147         WaterRise = 0
  1115 end
  1148 
  1116 
  1149 		for x = 1, 16 do
       
  1150 			AddPoint(x*100,100,5)
       
  1151 		end
       
  1152 
       
  1153 		FlushPoints()
       
  1154 
       
  1155 end
       
  1156 
       
  1157 function limitHogs(gear)
       
  1158 
       
  1159 	cnthhs = cnthhs + 1
       
  1160 	if cnthhs > 1 then
       
  1161 		DeleteGear(gear)
       
  1162     end
       
  1163 
       
  1164 end
  1117 
  1165 
  1118 function onGameStart()
  1166 function onGameStart()
  1119 
  1167 
  1120 
  1168 
  1121 		trackTeams()
  1169 		trackTeams()
       
  1170 
  1122 		roundN = 0
  1171 		roundN = 0
  1123         lastRound = TotalRounds
  1172         lastRound = TotalRounds
  1124         RoundHasChanged = false -- true
  1173         RoundHasChanged = false -- true
  1125 
  1174 
  1126         for i = 0, (specialPointsCount-1) do
  1175         for i = 0, (specialPointsCount-1) do
  1127                 PlaceWayPoint(specialPointsX[i], specialPointsY[i])
  1176                 PlaceWayPoint(specialPointsX[i], specialPointsY[i])
  1128         end
  1177         end
  1129 
  1178 
  1130         RebuildTeamInfo()
  1179         RebuildTeamInfo()
       
  1180 
       
  1181 		for i=0 , TeamsCount - 1 do
       
  1182 			cnthhs = 0
       
  1183 			runOnHogsInTeam(limitHogs, teamNameArr[i])
       
  1184 		end
  1131 
  1185 
  1132         ShowMission     (
  1186         ShowMission     (
  1133                                 loc("RACER"),
  1187                                 loc("RACER"),
  1134                                 loc("a Hedgewars mini-game"),
  1188                                 loc("a Hedgewars mini-game"),
  1135 
  1189 
  1169 
  1223 
  1170 
  1224 
  1171 
  1225 
  1172 function onNewTurn()
  1226 function onNewTurn()
  1173 
  1227 
  1174         --runOnHogs(HideHog)
  1228         CheckForNewRound()
  1175 
       
  1176 		CheckForNewRound()
       
  1177         TryRepositionHogs()
  1229         TryRepositionHogs()
  1178 
  1230 
  1179         racerActive = false
  1231         racerActive = false
  1180 
  1232 
  1181 		activationStage = 1
  1233 		activationStage = 1
  1212                 else
  1264                 else
  1213                         ShowMission(loc("RACER"),
  1265                         ShowMission(loc("RACER"),
  1214                         loc("NOT ENOUGH WAYPOINTS"),
  1266                         loc("NOT ENOUGH WAYPOINTS"),
  1215                         loc("Place more waypoints using the 'Air Attack' weapon."), 2, 4000)
  1267                         loc("Place more waypoints using the 'Air Attack' weapon."), 2, 4000)
  1216                         AddAmmo(CurrentHedgehog, amAirAttack, 4000)
  1268                         AddAmmo(CurrentHedgehog, amAirAttack, 4000)
  1217             ParseCommand("setweap " .. string.char(amAirAttack))
  1269 						SetWeapon(amAirAttack)
  1218                 end
  1270                 end
  1219         end
  1271         end
  1220 
  1272 
  1221         if gameOver == true then
  1273         if gameOver == true then
  1222                 gameBegun = false
  1274                 gameBegun = false
  1411     at = GetCurAmmoType()
  1463     at = GetCurAmmoType()
  1412 
  1464 
  1413     usedWeapons[at] = 0
  1465     usedWeapons[at] = 0
  1414 end
  1466 end
  1415 
  1467 
  1416 
  1468 function onAchievementsDeclaration()
  1417 
  1469     usedWeapons[amSkip] = nil
       
  1470 
       
  1471     usedRope = usedWeapons[amRope] ~= nil
       
  1472     usedPortal = usedWeapons[amPortalGun] ~= nil
       
  1473     usedSaucer = usedWeapons[amJetpack] ~= nil
       
  1474 
       
  1475     usedWeapons[amRope] = nil
       
  1476     usedWeapons[amPortalGun] = nil
       
  1477     usedWeapons[amJetpack] = nil
       
  1478 
       
  1479     usedOther = next(usedWeapons) ~= nil
       
  1480 
       
  1481     if usedOther then -- smth besides skip, rope, portal or saucer used
       
  1482         raceType = "unknown race"
       
  1483     elseif usedRope and not usedPortal and not usedSaucer then
       
  1484         raceType = "rope race"
       
  1485     elseif not usedRope and usedPortal and not usedSaucer then
       
  1486         raceType = "portal race"
       
  1487     elseif not usedRope and not usedPortal and usedSaucer then
       
  1488         raceType = "saucer race"
       
  1489     elseif (usedRope or usedPortal or usedSaucer or usedOther) == false then -- no weapons used at all?
       
  1490         raceType = "no tools race"
       
  1491     else -- at least two of rope, portal and saucer used
       
  1492         raceType = "mixed race"
       
  1493     end
       
  1494 
       
  1495     map = detectMap()
       
  1496 
       
  1497     for i = 0, (numTeams-1) do
       
  1498         if teamScore[i] < 100000 then
       
  1499             DeclareAchievement(raceType, teamNameArr[i], map, teamScore[i])
       
  1500         end
       
  1501     end
       
  1502 end
       
  1503 
       
  1504 
       
  1505