share/hedgewars/Data/Missions/Challenge/Basic_Training_-_Sniper_Rifle.lua
author Wuzzy <Wuzzy2@mail.ru>
Sat, 02 Nov 2019 13:01:28 +0100
changeset 15523 5a30396f8fb2
parent 14949 4c5fb1ee75b7
permissions -rw-r--r--
ClimbHome: Change misleading Seed assignment to nil value This was "Seed = ClimbHome", but ClimbHome was a nil value. This code still worked as the engine interpreted the nil value as empty string. But it can be very misleading. This changeset makes the Seed assignment more explicit by assigning the empty string directly. The compability has been tested.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     1
-- Hedgewars SniperRifle Training
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     2
-- Scripting Example
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     3
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     4
-- Lines such as this one are comments - they are ignored
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     5
-- by the game, no matter what kind of text is in there.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     6
-- It's also possible to place a comment after some real
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     7
-- instruction as you see below. In short, everything
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     8
-- following "--" is ignored.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
     9
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    10
---------------------------------------------------------------
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    11
-- At first we implement the localization library using loadfile.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    12
-- This allows us to localize strings without needing to think
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    13
-- about translations.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    14
-- We can use the function loc(text) to localize a string.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    15
14496
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
    16
HedgewarsScriptLoad("/Scripts/Utils.lua")
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    17
HedgewarsScriptLoad("/Scripts/Locale.lua")
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    18
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    19
-- This variable will hold the number of destroyed targets.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    20
local score = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    21
-- This variable will hold the number of shots from the sniper rifle
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    22
local shots = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    23
-- This variable represents the number of targets to destroy.
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    24
local score_goal = 27
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    25
-- This variable controls how many milliseconds/ticks we'd
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    26
-- like to wait before we end the round once all targets
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    27
-- have been destroyed.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    28
local end_timer = 1000 -- 1000 ms = 1 s
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    29
-- This variable is set to true if the game is lost (i.e.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    30
-- time runs out).
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    31
local game_lost = false
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    32
-- This variable will point to the hog's gear
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    33
local player = nil
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    34
-- Current target gear
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    35
local target = nil
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    36
-- This variable will grab the time left at the end of the round
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    37
local time_goal = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    38
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    39
-- Like score, but targets before a blow-up sequence count double.
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    40
-- Used to calculate final target score
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    41
local score_bonus = 0
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    42
11528
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
    43
local cinematic = false
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
    44
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    45
-- Timer of dynamite (shorter than usual)
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    46
local dynamiteTimer = 2000
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    47
-- Number of dynamite gears currently in game
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    48
local dynamiteCounter = 0
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    49
-- Table of dynamite gears, indexed by gear ID
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    50
local dynamiteGears = {}
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    51
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    52
-- Position for delayed targets
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    53
local delayedTargetTargetX, delayedTargetY
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    54
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    55
-- Team name of the player's team
14501
208359558642 Use player-chosen team identity for training and a few challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14496
diff changeset
    56
local playerTeamName
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    57
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    58
-- This is a custom function to make it easier to
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    59
-- spawn more targets with just one line of code
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    60
-- You may define as many custom functions as you
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    61
-- like.
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    62
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    63
-- Spawns a target at (x, y)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    64
function spawnTarget(x, y)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    65
	-- add a new target gear
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    66
	target = AddGear(x, y, gtTarget, 0, 0, 0, 0)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    67
	-- have the camera move to the target so the player knows where it is
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    68
	FollowGear(target)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    69
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    70
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    71
-- Remembers position to spawn a target at (x, y) after a dynamite explosion
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    72
function spawnTargetDelayed(x, y)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    73
	delayedTargetX = x
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    74
	delayedTargetY = y
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    75
	-- The previous target always counts double after destruction
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    76
	score_bonus = score_bonus + 1
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    77
end
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    78
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    79
function getTargetScore()
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
    80
	return score_bonus * 200
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    81
end
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    82
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    83
-- Cut sequence to blow up land with dynamite
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
    84
function blowUp(x, y, follow)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    85
	if cinematic == false then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    86
		cinematic = true
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    87
		SetCinematicMode(true)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
    88
	end
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    89
	-- Spawn dynamite with short timer
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    90
	local dyna = AddGear(x, y, gtDynamite, 0, 0, 0, dynamiteTimer)
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    91
	-- Fix dynamite animation due to non-default timer
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
    92
	SetTag(dyna, div(5000-dynamiteTimer, 166))
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
    93
	if follow then
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
    94
		FollowGear(dyna)
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
    95
	end
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    96
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    97
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    98
function onNewTurn()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
    99
	SetWeapon(amSniperRifle)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   100
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   101
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   102
-- This function is called before the game loads its
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   103
-- resources.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   104
-- It's one of the predefined function names that will
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   105
-- be called by the game. They give you entry points
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   106
-- where you're able to call your own code using either
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   107
-- provided instructions or custom functions.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   108
function onGameInit()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   109
	-- At first we have to overwrite/set some global variables
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   110
	-- that define the map, the game has to load, as well as
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   111
	-- other things such as the game rules to use, etc.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   112
	-- Things we don't modify here will use their default values.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   113
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   114
	-- The base number for the random number generator
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   115
	Seed = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   116
	-- Game settings and rules
13099
071dcdf33f86 Fix artillery being broken in some missions
Wuzzy <Wuzzy2@mail.ru>
parents: 13065
diff changeset
   117
	ClearGameFlags()
071dcdf33f86 Fix artillery being broken in some missions
Wuzzy <Wuzzy2@mail.ru>
parents: 13065
diff changeset
   118
	EnableGameFlags(gfMultiWeapon, gfOneClanMode, gfArtillery)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   119
	-- The time the player has to move each round (in ms)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   120
	TurnTime = 150000
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   121
	-- The frequency of crate drops
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   122
	CaseFreq = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   123
	-- The number of mines being placed
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   124
	MinesNum = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   125
	-- The number of explosives being placed
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   126
	Explosives = 0
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   127
	-- The map to be played
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   128
	Map = "Ropes"
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   129
	-- The theme to be used
11017
16c47a5573e4 change theme used by sniper training, for performance reasons
sheepluva
parents: 11015
diff changeset
   130
	Theme = "Golf"
12224
d62d6f8ebef1 Disable Sudden Death consistently in all missions which don't require it
Wuzzy <almikes@aol.com>
parents: 12049
diff changeset
   131
	-- Disable Sudden Death
d62d6f8ebef1 Disable Sudden Death consistently in all missions which don't require it
Wuzzy <almikes@aol.com>
parents: 12049
diff changeset
   132
	WaterRise = 0
d62d6f8ebef1 Disable Sudden Death consistently in all missions which don't require it
Wuzzy <almikes@aol.com>
parents: 12049
diff changeset
   133
	HealthDecrease = 0
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   134
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   135
	-- Create the player team
14516
ff2c1f25fc03 Minor refactor in single missions
Wuzzy <Wuzzy2@mail.ru>
parents: 14501
diff changeset
   136
	playerTeamName = AddMissionTeam(-1)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   137
	-- And add a hog to it
14501
208359558642 Use player-chosen team identity for training and a few challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14496
diff changeset
   138
	player = AddMissionHog(1)
14669
be8af70adf2c Tweak hog spawn height and facing direction in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14612
diff changeset
   139
	SetGearPosition(player, 602, 1488)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   140
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   141
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   142
-- This function is called when the round starts
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   143
-- it spawns the first target that has to be destroyed.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   144
-- In addition it shows the scenario goal(s).
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   145
function onGameStart()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   146
	-- Disable graph in stats screen
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   147
	SendHealthStatsOff()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   148
	-- Spawn the first target.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   149
	spawnTarget(860,1020)
11017
16c47a5573e4 change theme used by sniper training, for performance reasons
sheepluva
parents: 11015
diff changeset
   150
14496
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
   151
	local highscore = getReadableChallengeRecord("Highscore")
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   152
	-- Show some nice mission goals.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   153
	-- Parameters are: caption, sub caption, description,
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   154
	-- extra text, icon and time to show.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   155
	-- A negative icon parameter (-n) represents the n-th weapon icon
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   156
	-- A positive icon paramter (n) represents the (n+1)-th mission icon
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   157
	-- A timeframe of 0 is replaced with the default time to show.
14496
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
   158
	ShowMission(loc("Sniper Training"), loc("Aiming Practice"),
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
   159
	loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.")
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
   160
	.. "|" .. highscore, -amSniperRifle, 0)
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   161
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   162
	-- Displayed initial player score
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   163
	SetTeamLabel(playerTeamName, "0")
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   164
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   165
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   166
-- This function is called every game tick.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   167
-- Note that there are 1000 ticks within one second.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   168
-- You shouldn't try to calculate too complicated
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   169
-- code here as this might slow down your game.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   170
function onGameTick20()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   171
	if game_lost then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   172
		return
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   173
	end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   174
	-- If time's up, set the game to be lost.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   175
	-- We actually check the time to be "1 ms" as it
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   176
	-- will be at "0 ms" right at the start of the game.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   177
	if TurnTimeLeft < 40 and TurnTimeLeft > 0 and score < score_goal and game_lost == false then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   178
		game_lost = true
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   179
		-- and generate the stats and go to the stats screen
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   180
		generateStats()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   181
		EndGame()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   182
		-- Just to be sure set the goal time to 1 ms
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   183
		time_goal = 1
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   184
	end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   185
	-- If the goal is reached or we've lost ...
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   186
	if score == score_goal or game_lost then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   187
		-- ... check to see if the time we'd like to
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   188
		-- wait has passed and then ...
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   189
		if end_timer == 0 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   190
			-- ... end the game ...
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   191
			generateStats()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   192
			EndGame()
14949
4c5fb1ee75b7 Add winner animation for missions that didn't have it
Wuzzy <Wuzzy2@mail.ru>
parents: 14675
diff changeset
   193
			if score == score_goal then
4c5fb1ee75b7 Add winner animation for missions that didn't have it
Wuzzy <Wuzzy2@mail.ru>
parents: 14675
diff changeset
   194
				SetState(CurrentHedgehog, gstWinner)
4c5fb1ee75b7 Add winner animation for missions that didn't have it
Wuzzy <Wuzzy2@mail.ru>
parents: 14675
diff changeset
   195
			end
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   196
		end
14547
797e3f441c14 Make turn timer gray when finishing target practice
Wuzzy <Wuzzy2@mail.ru>
parents: 14516
diff changeset
   197
        	end_timer = end_timer - 20
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   198
	end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   199
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   200
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   201
-- This function is called when the game is initialized
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   202
-- to request the available ammo and probabilities
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   203
function onAmmoStoreInit()
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   204
	-- add an unlimited supply of shotgun ammo
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   205
	SetAmmo(amSniperRifle, 9, 0, 0, 0)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   206
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   207
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   208
--[[ Re-center camera to target after using sniper rifle.
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   209
This makes it easier to find the target. If we don't
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   210
do this, the camera would contantly bounce back to
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   211
the hog which would be annoying. ]]
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   212
function onAttack()
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   213
	if target and GetCurAmmoType() == amSniperRifle then
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   214
		FollowGear(target)
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   215
	end
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   216
end
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   217
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   218
-- Insta-blow up dynamite with precise key
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   219
function onPrecise()
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   220
	for gear, _ in pairs(dynamiteGears) do
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   221
		SetTimer(gear, 0)
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   222
	end
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   223
end
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   224
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   225
-- This function is called when a new gear is added.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   226
-- We use it to count the number of shots, which we
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   227
-- in turn use to calculate the final score and stats
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   228
function onGearAdd(gear)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   229
	if GetGearType(gear) == gtSniperRifleShot then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   230
		shots = shots + 1
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   231
	elseif GetGearType(gear) == gtDynamite then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   232
		dynamiteCounter = dynamiteCounter + 1
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   233
		dynamiteGears[gear] = true
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   234
	end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   235
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   236
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   237
-- This function is called before a gear is destroyed.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   238
-- We use it to count the number of targets destroyed.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   239
function onGearDelete(gear)
11528
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   240
	local gt = GetGearType(gear)
11017
16c47a5573e4 change theme used by sniper training, for performance reasons
sheepluva
parents: 11015
diff changeset
   241
11528
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   242
	if gt == gtCase then
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   243
		game_lost = true
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   244
		return
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   245
	end
11017
16c47a5573e4 change theme used by sniper training, for performance reasons
sheepluva
parents: 11015
diff changeset
   246
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   247
	if (gt == gtDynamite) then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   248
		-- Dynamite blow-up, used to continue the game.
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   249
		dynamiteCounter = dynamiteCounter - 1
12729
4e0e59255856 Sniper rifle mission: Faster dynamite blow-up, also skip with precise
Wuzzy <Wuzzy2@mail.ru>
parents: 12728
diff changeset
   250
		dynamiteGears[gear] = nil
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   251
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   252
		-- Wait for all dynamites to be destroyed before we continue.
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   253
		-- Most cut scenes spawn multiple dynamites.
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   254
		if dynamiteCounter == 0 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   255
			if cinematic then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   256
				cinematic = false
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   257
				SetCinematicMode(false)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   258
			end
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   259
			-- Now *actually* spawn the delayed target
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   260
			spawnTarget(delayedTargetX, delayedTargetY)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   261
		end
11528
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   262
		return
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   263
	end
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   264
8826ee0afe01 tweak sniper training
sheepluva
parents: 11017
diff changeset
   265
	if gt == gtTarget then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   266
		target = nil
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   267
		-- Add one point to our score/counter
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   268
		score = score + 1
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   269
		score_bonus = score_bonus + 1
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   270
		-- If we haven't reached the goal ...
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   271
		if score < score_goal then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   272
			-- ... spawn another target.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   273
			if score == 1 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   274
				spawnTarget(1520,1350)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   275
			elseif score == 2 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   276
				spawnTarget(1730,1040)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   277
			elseif score == 3 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   278
				spawnTarget(2080,780)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   279
			elseif score == 4 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   280
				-- Short cut scene, blows up up lots up land and prepares
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   281
				-- next target position.
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   282
				AddCaption(loc("Good so far!") .. " " .. loc("Keep it up!"));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   283
				blowUp(1730,1226)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   284
				blowUp(1440,1595)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   285
				blowUp(1527,1575)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   286
				blowUp(1614,1595)
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   287
				blowUp(1420,1675, true)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   288
				blowUp(1527,1675)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   289
				blowUp(1634,1675)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   290
				blowUp(1440,1755)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   291
				blowUp(1527,1775)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   292
				blowUp(1614,1755)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   293
				-- Target appears *after* the cutscene.
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   294
				spawnTargetDelayed(1527,1667)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   295
			elseif score == 5 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   296
				spawnTarget(2175,1300)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   297
			elseif score == 6 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   298
				spawnTarget(2250,940)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   299
			elseif score == 7 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   300
				spawnTarget(2665,1540)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   301
			elseif score == 8 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   302
				spawnTarget(3040,1160)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   303
			elseif score == 9 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   304
				spawnTarget(2930,1500)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   305
			elseif score == 10 then
14675
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   306
				-- The "tricky" target.
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   307
				-- It spawns behind a wall
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   308
				-- and needs at least 2 shots.
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   309
				AddCaption(loc("This one's tricky."));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   310
				spawnTarget(700,720)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   311
			elseif score == 11 then
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   312
				AddCaption(loc("Well done."));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   313
				blowUp(914,1222)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   314
				blowUp(1050,1222)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   315
				blowUp(1160,1008)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   316
				blowUp(1160,1093)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   317
				blowUp(1160,1188)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   318
				blowUp(375,911)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   319
				blowUp(510,911)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   320
				blowUp(640,911)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   321
				blowUp(780,911)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   322
				blowUp(920,911)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   323
				blowUp(1060,913)
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   324
				blowUp(1198,913, true)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   325
				spawnTargetDelayed(1200,830)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   326
			elseif score == 12 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   327
				spawnTarget(1430,450)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   328
			elseif score == 13 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   329
				spawnTarget(796,240)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   330
			elseif score == 14 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   331
				spawnTarget(300,10)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   332
			elseif score == 15 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   333
				spawnTarget(2080,820)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   334
			elseif score == 16 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   335
				AddCaption(loc("Demolition is fun!"));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   336
				blowUp(2110,920)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   337
				blowUp(2210,920)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   338
				blowUp(2200,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   339
				blowUp(2300,305)
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   340
				blowUp(2300,400, true)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   341
				blowUp(2300,500)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   342
				blowUp(2300,600)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   343
				blowUp(2300,700)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   344
				blowUp(2300,800)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   345
				blowUp(2300,900)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   346
				blowUp(2401,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   347
				blowUp(2532,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   348
				blowUp(2663,305)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   349
				spawnTargetDelayed(2300,760)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   350
			elseif score == 17 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   351
				spawnTarget(2738,190)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   352
			elseif score == 18 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   353
				spawnTarget(2590,-100)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   354
			elseif score == 19 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   355
				AddCaption(loc("Will this ever end?"));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   356
				blowUp(2790,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   357
				blowUp(2930,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   358
				blowUp(3060,305)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   359
				blowUp(3190,305)
12728
745d5c9a3abc Sniper rifle training: Fix general camera weirdness
Wuzzy <Wuzzy2@mail.ru>
parents: 12727
diff changeset
   360
				blowUp(3310,305, true)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   361
				blowUp(3393,613)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   362
				blowUp(2805,370)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   363
				blowUp(2805,500)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   364
				blowUp(2805,630)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   365
				blowUp(2805,760)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   366
				blowUp(2805,890)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   367
				blowUp(3258,370)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   368
				blowUp(3258,475)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   369
				blowUp(3264,575)
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   370
				spawnTargetDelayed(3230,290)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   371
			elseif score == 20 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   372
				spawnTarget(3670,250)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   373
			elseif score == 21 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   374
				spawnTarget(2620,-100)
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   375
			elseif score == 22 then
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   376
				spawnTarget(2870,300)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   377
			elseif score == 23 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   378
				spawnTarget(3850,900)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   379
			elseif score == 24 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   380
				spawnTarget(3780,300)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   381
			elseif score == 25 then
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   382
				spawnTarget(3670,0)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   383
			elseif score == 26 then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   384
				AddCaption(loc("Last Target!"));
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   385
				spawnTarget(3480,1200)
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   386
			end
14547
797e3f441c14 Make turn timer gray when finishing target practice
Wuzzy <Wuzzy2@mail.ru>
parents: 14516
diff changeset
   387
		elseif not game_lost then
12730
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   388
			-- Victory!
14485
ead8928a59f8 Report mission victory for most missions
Wuzzy <Wuzzy2@mail.ru>
parents: 14422
diff changeset
   389
			SaveMissionVar("Won", "true")
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   390
			AddCaption(loc("Victory!"), capcolDefault, capgrpGameState)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   391
			ShowMission(loc("Sniper Training"), loc("Aiming Practice"), loc("Congratulations! You've eliminated all targets|within the allowed time frame."), 0, 0)
14675
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   392
			-- Play voice
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   393
			if shots-1 <= score then
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   394
				-- Flawless victory condition: Only 1 shot more than targets
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   395
				-- (1 shot per "normal" target + 2 shots for the "tricky" target)
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   396
				PlaySound(sndFlawless, CurrentHedgehog)
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   397
			else
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   398
				-- "Normal" victory
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   399
				PlaySound(sndVictory, CurrentHedgehog)
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   400
			end
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   401
12730
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   402
			FollowGear(CurrentHedgehog)
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   403
12913
20e627c1ac20 ClimbHome, Sniper Rifle training: Unselect weapon after victory
Wuzzy <Wuzzy2@mail.ru>
parents: 12731
diff changeset
   404
			-- Unselect sniper rifle and disable hog controls
12730
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   405
			SetInputMask(0)
12913
20e627c1ac20 ClimbHome, Sniper Rifle training: Unselect weapon after victory
Wuzzy <Wuzzy2@mail.ru>
parents: 12731
diff changeset
   406
			SetWeapon(amNothing)
12730
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   407
			AddAmmo(CurrentHedgehog, amSniperRifle, 0)
2c4a07eb2112 Sniper rifle training: Fix missing victory sound, also disable controls at the end
Wuzzy <Wuzzy2@mail.ru>
parents: 12729
diff changeset
   408
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   409
			-- Save the time left so we may keep it.
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   410
			time_goal = TurnTimeLeft
14547
797e3f441c14 Make turn timer gray when finishing target practice
Wuzzy <Wuzzy2@mail.ru>
parents: 14516
diff changeset
   411
797e3f441c14 Make turn timer gray when finishing target practice
Wuzzy <Wuzzy2@mail.ru>
parents: 14516
diff changeset
   412
			-- Freeze the clock because the challenge has been completed
797e3f441c14 Make turn timer gray when finishing target practice
Wuzzy <Wuzzy2@mail.ru>
parents: 14516
diff changeset
   413
			SetTurnTimePaused(true)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   414
		end
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   415
		SetTeamLabel(playerTeamName, getTargetScore())
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   416
	end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   417
end
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   418
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   419
-- This function calculates the final score of the player and provides some texts and
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   420
-- data for the final stats screen
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   421
function generateStats()
14612
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   422
	local accuracy
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   423
	local accuracy_int
12731
2b0a4a4b1ba2 Fix division by 0 in sniper rifle training
Wuzzy <Wuzzy2@mail.ru>
parents: 12730
diff changeset
   424
	if shots > 0 then
14675
8bd005067f4a Play "Flawless" voice when winning target practice mission with perfect accuracy
Wuzzy <Wuzzy2@mail.ru>
parents: 14669
diff changeset
   425
		-- NOTE: 100% accuracy is not possible due to the "tricky" target.
12731
2b0a4a4b1ba2 Fix division by 0 in sniper rifle training
Wuzzy <Wuzzy2@mail.ru>
parents: 12730
diff changeset
   426
		accuracy = (score/shots)*100
14612
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   427
		accuracy_int = div(score*100, shots)
12731
2b0a4a4b1ba2 Fix division by 0 in sniper rifle training
Wuzzy <Wuzzy2@mail.ru>
parents: 12730
diff changeset
   428
	end
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   429
	local end_score_targets = getTargetScore()
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   430
	local end_score_overall
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   431
	if not game_lost then
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   432
		local end_score_time = math.ceil(time_goal/5)
14612
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   433
		local end_score_accuracy = 0
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   434
		if shots > 0 then
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   435
			end_score_accuracy = math.ceil(accuracy * 100)
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   436
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   437
		end_score_overall = end_score_time + end_score_targets + end_score_accuracy
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   438
		SetTeamLabel(playerTeamName, tostring(end_score_overall))
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   439
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   440
		SendStat(siGameResult, loc("You have successfully finished the sniper rifle training!"))
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   441
		SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets))
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   442
		SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots))
14612
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   443
		if end_score_accuracy > 0 then
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   444
			SendStat(siCustomAchievement, string.format(loc("Accuracy bonus: +%d points"), end_score_accuracy))
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   445
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   446
		SendStat(siCustomAchievement, string.format(loc("You had %.2fs remaining on the clock (+%d points)."), (time_goal/1000), end_score_time))
14612
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   447
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   448
		if(shots > 0) then
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   449
			updateChallengeRecord("AccuracyRecord", accuracy_int)
b4089fa16b34 Keep track of accuracy record in target practice challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14611
diff changeset
   450
		end
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   451
	else
14611
c5f18710a184 Remove "loser" messages in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14599
diff changeset
   452
		SendStat(siGameResult, loc("Challenge over!"))
11017
16c47a5573e4 change theme used by sniper training, for performance reasons
sheepluva
parents: 11015
diff changeset
   453
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   454
		SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), score, score_goal, end_score_targets))
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   455
		SendStat(siCustomAchievement, string.format(loc("You have made %d shots."), shots))
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   456
		end_score_overall = end_score_targets
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   457
	end
14599
50f511588635 Outsource commonly used words in siPointType to QTfrontend
Wuzzy <Wuzzy2@mail.ru>
parents: 14547
diff changeset
   458
	SendStat(siPointType, "!POINTS")
13065
a297e06d1607 Display score next to team bar in singleplayer challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 12913
diff changeset
   459
	SendStat(siPlayerKills, tostring(end_score_overall), playerTeamName)
14496
2113296b7a29 Keep track of singleplayer high scores in challenges
Wuzzy <Wuzzy2@mail.ru>
parents: 14485
diff changeset
   460
	updateChallengeRecord("Highscore", end_score_overall)
11015
7a905f0070ce CRLF purge
nemo
parents: 10655
diff changeset
   461
end
12727
23fb2179945f Sniper rifle mission: Fix targets spawning twice in dynamite scenes, jacking up the total amount of targets
Wuzzy <Wuzzy2@mail.ru>
parents: 12346
diff changeset
   462