share/hedgewars/Data/Scripts/TargetPractice.lua
author Wuzzy <almikes@aol.com>
Sat, 09 Apr 2016 08:00:53 +0200
changeset 12002 6a67e76d0f1d
parent 11772 c21278c4218d
child 12054 030464f34d47
permissions -rw-r--r--
HedgeEditor: Better naming and explanation of tagging mode and advanced repositioning mode
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10656
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     1
--[=[
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     2
Target Practice Mission Framework for Hedgewars
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     3
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     4
This is a simple library intended to make setting up simple training missions a trivial
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     5
task requiring just. The library has been created to reduce redundancy in Lua scripts.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     6
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     7
The training framework generates complete and fully usable training missions by just
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     8
one function call.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
     9
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    10
The missions generated by this script are all the same:
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    11
- The player will get a team with a single hedgehog.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    12
- The team gets a single predefined weapon infinitely times.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    13
- A fixed sequence of targets will spawn at predefined positions.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    14
- When a target has been destroyed, the next target of the target sequence appears
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    15
- The mission ends successfully when all targets have been destroyed
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    16
- The mission ends unsuccessfully when the time runs out or the hedgehog dies
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    17
- When the mission ends, a score is awarded, based on the performance (hit targets,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    18
  accuracy and remaining time) of the hedgehog. When not all targets are hit, there
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    19
  will be no accuracy and time bonuses.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    20
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    21
To use this library, you first have to load it and to call TrainingMission once with
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    22
the appropriate parameters. Really, that’s all!
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    23
See the comment of TrainingMission for a specification of all parameters.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    24
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    25
Below is a template for your convenience, you just have to fill in the fields and delete
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    26
optional arguments you don’t want.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    27
----- snip -----
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    28
HedgewarsScriptLoad("/Scripts/Training.lua")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    29
params = {
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    30
	missionTitle = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    31
	map = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    32
	theme = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    33
	time = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    34
	ammoType = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    35
	gearType = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    36
	targets = {
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    37
		{ x = , y = },
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    38
		{ x = , y = },
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    39
		-- etc.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    40
	},
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    41
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    42
	wind = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    43
	solidLand = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    44
	artillery = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    45
	hogHat = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    46
	hogName = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    47
	teamName = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    48
	teamGrave = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    49
	clanColor = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    50
	goalText = ,
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    51
	shootText =
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    52
}
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    53
TargetPracticeMission(params)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    54
----- snip -----
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    55
]=]
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    56
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    57
HedgewarsScriptLoad("/Scripts/Locale.lua")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    58
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    59
local player = nil
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    60
local scored = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    61
local shots = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    62
local end_timer = 1000
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    63
local game_lost = false
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    64
local time_goal = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    65
local total_targets
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    66
local targets
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    67
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    68
--[[
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    69
TrainingMission(params)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    70
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    71
This function sets up the *entire* training mission and needs one argument: params.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    72
The argument “params” is a table containing fields which describe the training mission.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    73
	mandatory fields:
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    74
	- missionTitle:	the name of the mission
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    75
	- map:		the name map to be used
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    76
	- theme:	the name of the theme (does not need to be a standalone theme)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    77
	- time:		the time limit in milliseconds
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    78
	- ammoType:	the ammo type of the weapon to be used
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    79
	- gearType:	the gear type of the gear which is fired (used to count shots)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    80
	- targets:	The coordinates of where the targets will be spawned.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    81
			It is a table containing tables containing coordinates of format
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    82
			{ x=value, y=value }. The targets will be spawned in the same
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    83
			order as specified the coordinate tables appear. Example:
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    84
				targets = {
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    85
					{ x = 324, y = 43 },
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    86
					{ x = 123, y = 56 },
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    87
					{ x = 6, y = 0 },
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    88
				}
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    89
			There must be at least 1 target.
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    90
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    91
	optional fields:
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    92
	- wind:		the initial wind (-100 to 100) (default: 0 (no wind))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    93
	- solidLand:	weather the terrain is indestructible (default: false)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    94
	- artillery:	if true, the hog can’t move (default: false)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    95
	- hogHat:	hat of the hedgehog (default: "NoHat")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    96
	- hogName:	name of the hedgehog (default: "Trainee")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    97
	- teamName:	name of the hedgehog’s team (default: "Training Team")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    98
	- teamGrave:	name of the hedgehog’s grave
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
    99
	- clanColor:	color of the (only) clan (default: 0xFF0204, which is a red tone)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   100
	- goalText:	A short string explaining the goal of the mission
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   101
			(default: "Destroy all targets within the time!")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   102
	- shootText:	A string which says how many times the player shot, “%d” is replaced
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   103
			by the number of shots. (default: "You have shot %d times.")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   104
]]
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   105
function TargetPracticeMission(params)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   106
	if params.hogHat == nil then params.hogHat = "NoHat" end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   107
	if params.hogName == nil then params.hogName = loc("Trainee") end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   108
	if params.teamName == nil then params.teamName = loc("Training Team") end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   109
	if params.goalText == nil then params.goalText = loc("Eliminate all targets before your time runs out.|You have unlimited ammo for this mission.") end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   110
	if params.shootText == nil then params.shootText = loc("You have shot %d times.") end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   111
	if params.clanColor == nil then params.clanColor = 0xFF0204 end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   112
	if params.teamGrave == nil then params.teamGrave= "Statue" end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   113
	if params.wind == nil then params.wind = 0 end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   114
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   115
	local solid, artillery
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   116
	if params.solidLand == true then solid = gfSolidLand else solid = 0 end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   117
	if params.artillery == true then artillery = gfArtillery else artillery = 0 end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   118
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   119
	targets = params.targets
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   120
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   121
	total_targets = #targets
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   122
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   123
	_G.onAmmoStoreInit = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   124
		SetAmmo(params.ammoType, 9, 0, 0, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   125
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   126
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   127
	_G.onGameInit = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   128
		Seed = 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   129
		GameFlags = gfDisableWind + gfInfAttack + gfOneClanMode + solid + artillery
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   130
		TurnTime = params.time
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   131
		Map = params.map
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   132
		Theme = params.theme
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   133
		Goals = params.goalText
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   134
		CaseFreq = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   135
		MinesNum = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   136
		Explosives = 0
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   137
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   138
		SetWind(params.wind)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   139
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   140
		AddTeam(loc(params.teamName), params.clanColor, params.teamGrave, "Island", "Default", "Flowerhog")
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   141
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   142
		player = AddHog(loc(params.hogName), 0, 1, params.hogHat)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   143
		SetGearPosition(player, params.hog_x, params.hog_y)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   144
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   145
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   146
	_G.onGameStart = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   147
		SendHealthStatsOff()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   148
		ShowMission(params.missionTitle, loc("Aiming practice"), params.goalText, -params.ammoType, 5000)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   149
		spawnTarget()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   150
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   151
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   152
	_G.onNewTurn = function()
11772
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   153
		SetWeapon(params.ammoType)
10656
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   154
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   155
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   156
	_G.spawnTarget = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   157
		gear = AddGear(0, 0, gtTarget, 0, 0, 0, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   158
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   159
		x = targets[scored+1].x
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   160
		y = targets[scored+1].y
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   161
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   162
		SetGearPosition(gear, x, y)
11772
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   163
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   164
		return gear
10656
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   165
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   166
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   167
	_G.onGameTick20 = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   168
		if TurnTimeLeft < 40 and TurnTimeLeft > 0 and scored < total_targets and game_lost == false then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   169
			game_lost = true
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   170
			AddCaption(loc("Time’s up!"), 0xFFFFFFFF, capgrpGameState)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   171
			ShowMission(params.missionTitle, loc("Aiming practice"), loc("Oh no! Time's up! Just try again."), -amSkip, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   172
			SetHealth(player, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   173
			time_goal = 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   174
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   175
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   176
		if band(GetState(player), gstDrowning) == gstDrowning and game_lost == false and scored < total_targets then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   177
			game_lost = true
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   178
			time_goal = 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   179
			AddCaption(loc("You lose!"), 0xFFFFFFFF, capgrpGameState)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   180
			ShowMission(params.missionTitle, loc("Aiming practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   181
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   182
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   183
		if scored == total_targets  or game_lost then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   184
			if end_timer == 0 then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   185
				generateStats()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   186
				EndGame()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   187
			else
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   188
				TurnTimeLeft = time_goal
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   189
			end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   190
	        end_timer = end_timer - 20
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   191
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   192
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   193
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   194
	_G.onGearAdd = function(gear)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   195
		if GetGearType(gear) == params.gearType then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   196
			shots = shots + 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   197
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   198
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   199
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   200
	_G.onGearDamage = function(gear, damage)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   201
		if GetGearType(gear) == gtTarget then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   202
			scored = scored + 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   203
			if scored < total_targets then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   204
				AddCaption(string.format(loc("Targets left: %d"), (total_targets-scored)), 0xFFFFFFFF, capgrpMessage)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   205
				spawnTarget()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   206
			else
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   207
				if not game_lost then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   208
					AddCaption(loc("You have destroyed all targets!"), 0xFFFFFFFF, capgrpGameState)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   209
					ShowMission(params.missionTitle, loc("Aiming practice"), loc("Congratulations! You have destroyed all targets within the time."), 0, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   210
					PlaySound(sndVictory, player)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   211
					SetState(player, bor(GetState(player), gstWinner))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   212
					time_goal = TurnTimeLeft
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   213
				end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   214
			end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   215
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   216
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   217
		if GetGearType(gear) == gtHedgehog then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   218
			if not game_lost then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   219
				game_lost = true
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   220
				AddCaption(loc("You lose!", 0xFFFFFFFF, capgrpGameState))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   221
				ShowMission(params.missionTitle, loc("Aiming practice"), loc("Oh no! You failed! Just try again."), -amSkip, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   222
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   223
				SetHealth(player, 0)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   224
				time_goal = 1
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   225
			end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   226
		end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   227
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   228
11772
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   229
	_G.onGearDelete = function(gear)
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   230
		if GetGearType(gear) == gtTarget and band(GetState(gear), gstDrowning) ~= 0 then
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   231
			AddCaption(loc("You lost your target, try again!", 0xFFFFFFFF, capgrpGameState))
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   232
			local newTarget = spawnTarget()
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   233
			local x, y = GetGearPosition(newTarget)
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   234
			local success = PlaceSprite(x, y + 24, sprAmGirder, 0, 0xFFFFFFFF, false, false, false)
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   235
			if not success then
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   236
				WriteLnToConsole("ERROR: Failed to spawn girder under respawned target!")
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   237
			end
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   238
		end
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   239
	end
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   240
10656
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   241
	_G.generateStats = function()
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   242
		local accuracy = (scored/shots)*100
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   243
		local end_score_targets = scored * math.ceil(6000/#targets)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   244
		local end_score_overall
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   245
		if not game_lost then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   246
			local end_score_time = math.ceil(time_goal/(params.time/6000))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   247
			local end_score_accuracy = math.ceil(accuracy * 60)
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   248
			end_score_overall = end_score_time + end_score_targets + end_score_accuracy
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   249
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   250
			SendStat(siGameResult, loc("You have finished the target practice!"))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   251
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   252
			SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), scored, total_targets, end_score_targets))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   253
			SendStat(siCustomAchievement, string.format(params.shootText, shots))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   254
			SendStat(siCustomAchievement, string.format(loc("Your accuracy was %.1f%% (+%d points)."), accuracy, end_score_accuracy))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   255
			SendStat(siCustomAchievement, string.format(loc("You had %.1fs remaining on the clock (+%d points)."), (time_goal/1000), end_score_time))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   256
		else
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   257
			SendStat(siGameResult, loc("You lose!"))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   258
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   259
			SendStat(siCustomAchievement, string.format(loc("You have destroyed %d of %d targets (+%d points)."), scored, total_targets, end_score_targets))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   260
			SendStat(siCustomAchievement, string.format(params.shootText, shots))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   261
			if(shots > 0) then
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   262
				SendStat(siCustomAchievement, string.format(loc("Your accuracy was %.1f%%."), accuracy))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   263
			end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   264
			end_score_overall = end_score_targets
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   265
		end
11772
c21278c4218d Target Practice: Make targets respawn after drowning, and minor code cleanup
Wuzzy <almikes@aol.com>
parents: 10656
diff changeset
   266
		SendStat(siPointType, loc("point(s)"))
10656
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   267
		SendStat(siPlayerKills, tostring(end_score_overall), loc(params.teamName))
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   268
	end
2093cf51eea1 Add (and slightly tweak) Wuzzy's Target Practice missions
mikade <redgrinner@gmail.com>
parents:
diff changeset
   269
end