share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua
author Wuzzy <Wuzzy2@mail.ru>
Tue, 07 Aug 2018 13:04:02 +0200
changeset 13630 fe7d2bbf5f3f
parent 13594 ddd90e92c4c3
child 13643 690cc84e9fd6
permissions -rw-r--r--
Fix resurrection animation appearing at wrong position for some missions and styles
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     1
--[[
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     2
	Flying Saucer Training
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     3
	This is a training mission which teaches many basic (and not-so-basic) moves
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     4
	with the flying saucer.
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     5
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     6
	Lesson plan:
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     7
	- Taking off
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     8
	- Basic flight
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
     9
	- Landing safely
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    10
	- Managing fuel
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    11
	- Changing saucers in mid-flight
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    12
	- Diving
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    13
	- Dropping weapons from flying saucer
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    14
	- Firing from flying saucer with [Precise] + [Attack]
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    15
	- Aiming in flying saucer with [Precise] + [Up]/[Down]
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    16
	- Underwater attack
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    17
	- Free flight with inf. fuel and some weapons at end of training
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    18
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    19
	FIXME:
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    20
	- Bad respawn animation ("explosion" just happens randomly because of the way the resurrection effect works)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    21
	- Hide fuel if infinite (probably needs engine support)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    22
]]
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    23
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    24
HedgewarsScriptLoad("/Scripts/Locale.lua")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    25
HedgewarsScriptLoad("/Scripts/Tracker.lua")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    26
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    27
local Player = nil -- Pointer to hog created in: onGameInit
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    28
local Target = nil -- Pointer to target hog
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    29
local Objective = false -- Get to the target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    30
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    31
local TargetNumber = 0 -- The current target number
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    32
local GrenadeThrown = false -- Used for the Boom Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    33
local BazookasLeft = 0 -- Used by the Launch Target and the Unterwater Attack Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    34
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    35
local InfFuel = false -- If true, flying saucer has infinite fuel
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    36
local SaucerGear = nil -- Store flying saucer gear here (if one exists)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    37
local TargetGears = {} -- List of remaining gears to collect or destroy in the current round
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    38
local TargetsRemaining = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    39
local Barrels = {} -- Table contraining the explosive barrel gears
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    40
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    41
local CheckTimer = 500 -- Time to wait at least before checking safe landing
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    42
local Check = false -- The last target has recently been collected/destroyed and the CheckTimer is running
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    43
local GrenadeTimer = 0 -- Time after a grenade has been thrown
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    44
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    45
local TargetPos = {} -- Table of targets
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    46
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    47
local StartPos = { X = 742, Y = 290 }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    48
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    49
--[[
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    50
List of all targets (or "objectives"). The player has to complete them one-by-one and must always land safely afterwards.
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    51
Some target numbers have names for easier reference.
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    52
]]
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    53
TargetPos[1] =  {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    54
	Targets = {{ X = 1027, Y = 217 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    55
	Ammo = { },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    56
	Message = loc("Here you will learn how to fly the flying saucer|and get so learn some cool tricks.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    57
	loc("Collect the first crate to begin!"),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    58
	MessageIcon = -amJetpack, }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    59
TargetPos[2] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    60
	Targets = {{ X = 1369, Y = 265 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    61
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    62
	InfFuel = true,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    63
	MessageTime = 10000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    64
	Message = loc("Get to the crate using your flying saucer!") .. "|" ..
13354
f9a15dcd857c Fix a couple of English typos
Wuzzy <Wuzzy2@mail.ru>
parents: 13172
diff changeset
    65
	loc("Press [Attack] (space bar by default) to start,|repeatedly tap the up, left and right movement keys to accelerate.") .. "|" ..
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    66
	loc("Try to land softly, as you can still take fall damage!"), }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    67
TargetPos[3] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    68
	Targets = {{ X = 689, Y = 58 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    69
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    70
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    71
	Message = loc("Now collect the next crate!") .. "|" .. loc("Be careful, your fuel is limited from now on!") .."|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    72
	loc("Tip: If you get stuck in this training, use \"Skip turn\" to restart the current objective.") }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    73
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    74
-- The Double Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    75
local DoubleTarget = 4
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    76
TargetPos[4] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    77
	Targets = { { X = 84, Y = -20 }, { X = 1980 , Y = -20 } },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    78
	Ammo = { [amJetpack] = 2 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    79
	MessageTime = 9000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    80
	Message = loc("Now collect the 2 crates to the far left and right.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    81
	loc("You only have 2 flying saucers this time.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    82
	loc("Tip: You can change your flying saucer|in mid-flight by hitting the [Attack] key twice."), }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    83
TargetPos[5] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    84
	Targets = {{ X = 47, Y = 804 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    85
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    86
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    87
	Message = loc("Time for a more interesting stunt, but first just collect the next crate!"), }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    88
TargetPos[6] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    89
	Targets = {{ X = 604, Y = 871}},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    90
	MessageTime = 15000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    91
	Message = loc("You can dive with your flying saucer!") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    92
	loc("Try it now and dive here to collect the crate on the right girder.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    93
	loc("You only have one flying saucer this time.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    94
	loc("Beware, though, you will only be able to move slowly through the water.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    95
	loc("Warning: Never ever leave the flying saucer while in water!"),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    96
	Ammo = { [amJetpack] = 1 }, }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    97
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    98
TargetPos[7] = { 
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    99
	Targets = {{ X = 1884, Y = 704 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   100
	MessageTime = 6500,
12424
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 11405
diff changeset
   101
	Message = loc("Now dive just one more time and collect the next crate.") .. "|" ..
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 11405
diff changeset
   102
		loc("Tip: Don't remain for too long in the water, or you won't make it."),
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   103
	Ammo = { [amJetpack] = 1}, }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   104
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   105
-- The Boom Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   106
local BoomTarget = 8
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   107
TargetPos[8] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   108
	Modifier = true, Func = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   109
		Info(loc("Instructions"),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   110
		loc("Now let's try to drop weapons while flying!") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   111
		loc("You have to destroy the target above by dropping a grenade on it from your flying saucer.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   112
		loc("It's not that easy, so listen carefully:") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   113
		loc("Step 1: Activate your flying saucer but do NOT move yet!") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   114
		loc("Step 2: Select your grenade.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   115
		loc("Step 3: Start flying and get yourself right above the target.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   116
		loc("Step 4: Drop your grenade by pressing the [Long jump] key.") .. "|" ..
12424
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 11405
diff changeset
   117
		loc("Step 5: Get away quickly and land safely anywhere.") .. "| |" ..
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 11405
diff changeset
   118
		loc("Note: We only give you grenades if you stay in your flying saucer."), nil, 20000)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   119
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   120
		SpawnBoomTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   121
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   122
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   123
			AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   124
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   125
			AddAmmo(Player, amGrenade, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   126
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   127
		GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   128
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   129
	end,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   130
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   131
	Respawn = { X = 2000, Y = 742 }, }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   132
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   133
-- The Launch Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   134
local LaunchTarget = 9
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   135
TargetPos[9] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   136
	Targets = {{ X = 1700, Y = 640, Type = gtTarget }, { X = 1460, Y = 775, Type = gtTarget }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   137
	MessageTime = 20000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   138
	Message = loc("Only the best pilots can master the following stunts.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   139
		loc("As you've seen, the dropped grenade roughly fell into your flying direction.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   140
		loc("You have to destroy two targets, but the previous technique would be very difficult or dangerous to use.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   141
		loc("So you are able to launch projectiles into your aiming direction, always at full power.") .."|"..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   142
		loc("To launch a projectile in mid-flight, hold [Precise] and press [Long jump].") .. "|" ..
13354
f9a15dcd857c Fix a couple of English typos
Wuzzy <Wuzzy2@mail.ru>
parents: 13172
diff changeset
   143
		loc("You can even change your aiming direction in mid-flight if you first hold [Precise] and then press [Up] or [Down].") .. "|" ..
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   144
		loc("Tip: Changing your aim while flying is very difficult, so adjust it before you take off."),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   145
	Ammo = { [amJetpack] = 1, },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   146
	Respawn = { X = 1764, Y = 916 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   147
	ExtraFunc = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   148
		HogTurnLeft(Player, true)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   149
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   150
			AddAmmo(Player, amBazooka, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   151
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   152
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   153
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   154
		BazookasLeft = 2
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   155
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   156
	end }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   157
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   158
-- The Underwater Attack Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   159
local UnderwaterAttackTarget = 10
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   160
TargetPos[10] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   161
	MessageTime = 17000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   162
	Message = loc("Now for the supreme discipline of saucer flying, the underwater attack.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   163
	loc("Basically this is a combination of diving and launching.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   164
	loc("Dropping a weapon while in water would just drown it, but launching one would work.") .."|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   165
	loc("Based on what you've learned, destroy the target on the girder and as always, land safely!"), 
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   166
	Targets = {{ X = 1200, Y = 930, Type = gtTarget }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   167
	Ammo = { [amJetpack] = 1, },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   168
	Respawn = { X = 1027, Y = 217 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   169
	ExtraFunc = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   170
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   171
			AddAmmo(Player, amBazooka, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   172
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   173
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   174
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   175
		BazookasLeft = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   176
	end }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   177
TargetPos[11] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   178
	Targets = {{ X = 742, Y = 290 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   179
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   180
	Message = loc("This almost concludes our tutorial.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   181
	loc("You now have infinite fuel, grenades and bazookas for fun.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   182
	loc("Collect or destroy the final crate to finish the training."),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   183
	Ammo = { [amJetpack] = 100, [amGrenade] = 100, [amBazooka] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   184
	InfFuel = true, }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   185
TargetPos[12] = { Modifier = true, Func = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   186
	Objective = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   187
	AddCaption(loc("Training complete!"), 0xFFFFFFFF, capgrpGameState)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   188
	Info(loc("Training complete!"), loc("Good bye!"), 4, 5000)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   189
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   190
	if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   191
		DeleteGear(SaucerGear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   192
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   193
	SetState(Player, band(GetState(Player), bnot(gstHHDriven)))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   194
	SetState(Player, bor(GetState(Player), gstWinner))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   195
	PlaySound(sndVictory, Player)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   196
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   197
	SendStat(siGameResult, loc("You have finished the Flying Saucer Training!"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   198
	SendStat(siCustomAchievement, loc("Good job!"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   199
	SendStat(siPlayerKills, "0", loc("Hogonauts"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   200
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   201
	TurnTimeLeft = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   202
	EndGame()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   203
end,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   204
}
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   205
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   206
-- Just a wrapper for ShowMission
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   207
function Info(Title, Text, Icon, Time)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   208
	if Time == nil then Time = 0 end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   209
	if Icon == nil then Icon = 2 end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   210
	ShowMission(loc("Flying Saucer Training"), Title, Text, Icon, Time)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   211
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   212
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   213
-- Spawn all the gears for the Boom Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   214
function SpawnBoomTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   215
	if TargetsRemaining < 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   216
		TargetGears[1] = AddGear(1602, 507, gtTarget, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   217
		TargetsRemaining = TargetsRemaining + 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   218
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   219
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   220
	if Barrels[1] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   221
		Barrels[1] = AddGear(1563, 532, gtExplosives, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   222
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   223
	if Barrels[2] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   224
		Barrels[2] = AddGear(1648, 463, gtExplosives, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   225
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   226
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   227
	for i=1,#Barrels do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   228
		SetHealth(Barrels[i], 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   229
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   230
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   231
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   232
-- Generic target spawning for the current target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   233
function SpawnTargets()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   234
	for i=1,#TargetPos[TargetNumber].Targets do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   235
		if TargetGears[i] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   236
			SpawnTarget(TargetPos[TargetNumber].Targets[i].X, TargetPos[TargetNumber].Targets[i].Y,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   237
				TargetPos[TargetNumber].Targets[i].Type, i)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   238
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   239
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   240
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   241
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   242
function SpawnTarget( PosX, PosY, Type, ID )
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   243
	if Type ~= nil and Type ~= gtCase then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   244
		if Type == gtTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   245
			TargetGears[ID] = AddGear(PosX, PosY, gtTarget, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   246
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   247
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   248
		TargetGears[ID] = SpawnFakeUtilityCrate(PosX, PosY, false, false)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   249
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   250
	TargetsRemaining = TargetsRemaining + 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   251
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   252
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   253
function AutoSpawn() -- Auto-spawn the next target after you've obtained the current target!
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   254
	TargetNumber = TargetNumber + 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   255
	TargetsRemaining = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   256
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   257
	if TargetPos[TargetNumber].Ammo then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   258
		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   259
			AddAmmo(Player, ammoType, count)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   260
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   261
		if GetCurAmmoType() ~= amJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   262
			SetWeapon(amJetpack)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   263
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   264
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   265
	if TargetPos[TargetNumber].InfFuel then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   266
		InfFuel = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   267
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   268
		InfFuel = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   269
	end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   270
	UpdateInfFuel()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   271
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   272
	-- Func (if present) will be run instead of the ordinary spawning handling
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   273
	if TargetPos[TargetNumber].Modifier then -- If there is a modifier, run the function
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   274
		TargetPos[TargetNumber].Func()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   275
		return true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   276
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   277
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   278
	-- ExtraFunc is for additional events for a target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   279
	if TargetPos[TargetNumber].ExtraFunc ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   280
		TargetPos[TargetNumber].ExtraFunc()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   281
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   282
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   283
	local subcap
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   284
	if TargetNumber == 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   285
		subcap = loc("Training")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   286
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   287
		subcap = loc("Instructions")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   288
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   289
	Info(subcap, TargetPos[TargetNumber].Message, TargetPos[TargetNumber].MessageIcon, TargetPos[TargetNumber].MessageTime)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   290
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   291
	-- Spawn targets on the next position
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   292
	SpawnTargets()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   293
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   294
	if TargetNumber > 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   295
		AddCaption(loc("Next target is ready!"), 0xFFFFFFFF, capgrpMessage2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   296
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   297
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   298
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   299
-- Returns true if the hedgehog has safely "landed" (alive, no flying saucer gear and not moving)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   300
-- This is to ensure the training only continues when the player didn't screw up and to restart the current target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   301
function HasHedgehogLandedYet()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   302
	if band(GetState(Player), gstMoving) == 0 and SaucerGear == nil and GetHealth(Player) > 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   303
		return true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   304
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   305
		return false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   306
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   307
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   308
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   309
-- Clean up the gear mess left behind when the player failed to get a clean state after restarting
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   310
function CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   311
	-- (We track flames, grenades, bazooka shells)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   312
	runOnGears(DeleteGear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   313
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   314
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   315
-- Completely restarts the current target/objective; the hedgehog is spawned at the last "checkpoint"
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   316
-- Called when hedgeghog is resurrected or skips turn
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   317
function ResetCurrentTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   318
	GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   319
	GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   320
	if TargetNumber == LaunchTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   321
		BazookasLeft = 2
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   322
	elseif TargetNumber == UnderwaterAttackTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   323
		BazookasLeft = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   324
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   325
		BazookasLeft = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   326
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   327
	Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   328
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   329
	CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   330
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   331
	local X, Y
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   332
	if TargetNumber == 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   333
		X, Y = StartPos.X, StartPos.Y
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   334
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   335
		if TargetPos[TargetNumber-1].Modifier or TargetPos[TargetNumber-1].Respawn ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   336
			X, Y = TargetPos[TargetNumber-1].Respawn.X, TargetPos[TargetNumber-1].Respawn.Y
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   337
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   338
			X, Y = TargetPos[TargetNumber-1].Targets[1].X, TargetPos[TargetNumber-1].Targets[1].Y
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   339
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   340
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   341
	if TargetNumber == BoomTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   342
		SpawnBoomTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   343
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   344
	if TargetPos[TargetNumber].Modifier ~= true then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   345
		SpawnTargets()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   346
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   347
	if TargetPos[TargetNumber].Ammo then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   348
		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   349
			AddAmmo(Player, ammoType, count)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   350
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   351
		if GetCurAmmoType() ~= amJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   352
			SetWeapon(amJetpack)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   353
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   354
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   355
	if TargetPos[TargetNumber].InfFuel then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   356
		InfFuel = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   357
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   358
		InfFuel = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   359
	end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   360
	UpdateInfFuel()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   361
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   362
	SetGearPosition(Player, X, Y)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   363
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   364
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   365
function onGameInit()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   366
	Seed = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   367
	GameFlags = gfInfAttack + gfOneClanMode + gfSolidLand + gfDisableWind
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   368
	TurnTime = 2000000 --[[ This rffectively hides the turn time; a turn time above 1000s is not displayed.
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   369
				We will also ensure this timer always stays above 999s later ]]
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   370
	CaseFreq = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   371
	MinesNum = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   372
	Explosives = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   373
	Map = "Eyes"
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   374
	Theme = "EarthRise"
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   375
	SuddenDeathTurns = 50
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   376
	WaterRise = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   377
	HealthDecrease = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   378
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   379
	-- Team name is a pun on “hedgehog” and “astronauts”
13583
141cdfe0f3ca Switch almost all Lua calls of AddTeam to using default clan colors instead of hardcoded color
Wuzzy <Wuzzy2@mail.ru>
parents: 13354
diff changeset
   380
	AddTeam( loc( "Hogonauts" ), -9, "earth", "Earth", "Default", "cm_galaxy" )
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   381
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   382
	-- Hedgehog name is a pun on “Neil Armstrong”
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   383
	Player = AddHog( loc( "Neil Hogstrong" ), 0, 1, "NoHat" )
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   384
	SetGearPosition( Player, StartPos.X, StartPos.Y)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   385
	SetEffect( Player, heResurrectable, 1 )
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   386
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   387
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   388
function onGameStart()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   389
	SendHealthStatsOff()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   390
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   391
	-- Girder near first crate
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   392
	PlaceGirder(1257, 204, 6)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   393
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   394
	-- The upper girders
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   395
	PlaceGirder(84, 16, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   396
	PlaceGirder(1980, 16, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   397
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   398
	-- The lower girder platform at the water pit
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   399
	PlaceGirder(509, 896, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   400
	PlaceGirder(668, 896, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   401
	PlaceGirder(421, 896, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   402
	PlaceGirder(758, 896, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   403
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   404
	-- Girders for the Launch Target and the Underwater Attack Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   405
	PlaceGirder(1191, 960, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   406
	PlaceGirder(1311, 960, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   407
	PlaceGirder(1460, 827, 3)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   408
	PlaceGirder(1509, 763, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   409
	PlaceGirder(1605, 672, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   410
	PlaceGirder(1764, 672, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   411
	PlaceGirder(1803, 577, 6)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   412
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   413
	-- Spawn our 1st target using the wrapper function
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   414
	AutoSpawn()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   415
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   416
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   417
function onAmmoStoreInit()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   418
	SetAmmo(amJetpack, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   419
	SetAmmo(amGrenade, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   420
	SetAmmo(amBazooka, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   421
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   422
	-- Added for resetting current target/objective when player is stuck somehow
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   423
	SetAmmo(amSkip, 9, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   424
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   425
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   426
function onGearAdd(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   427
	if GetGearType(Gear) == gtJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   428
		SaucerGear = Gear
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   429
		if TargetNumber == BoomTarget and GrenadeThrown == false then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   430
			AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   431
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   432
		if (TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget) and BazookasLeft > 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   433
			AddAmmo(Player, amBazooka, BazookasLeft)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   434
		end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   435
		UpdateInfFuel()
13071
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   436
		-- If player starts using saucer, the player probably finished reading and the mission panel
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   437
		-- would just get in the way. So we hide it!
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   438
		HideMission()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   439
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   440
	if GetGearType(Gear) == gtGrenade then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   441
		GrenadeThrown = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   442
		GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   443
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   444
	if GetGearType(Gear) == gtShell then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   445
		BazookasLeft = BazookasLeft - 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   446
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   447
	if GetGearType(Gear) == gtFlame or GetGearType(Gear) == gtGrenade or GetGearType(Gear) == gtShell then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   448
		trackGear(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   449
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   450
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   451
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   452
function onGearDelete(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   453
	if GetGearType(Player) ~= nil and (GetGearType(Gear) == gtTarget or GetGearType(Gear) == gtCase) then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   454
		for i=1, #TargetGears do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   455
			if Gear == TargetGears[i] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   456
				TargetGears[i] = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   457
				TargetsRemaining = TargetsRemaining - 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   458
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   459
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   460
		if TargetsRemaining <= 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   461
			if TargetNumber == BoomTarget or not HasHedgehogLandedYet() then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   462
				if SaucerGear then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   463
					AddCaption(loc("Objective completed! Now land safely."), 0xFFFFFFFF, capgrpMessage2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   464
				end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   465
				Check = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   466
				CheckTimer = 500
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   467
			else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   468
				AutoSpawn()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   469
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   470
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   471
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   472
	if GetGearType(Gear) == gtGrenade then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   473
		GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   474
		GrenadeExploded = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   475
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   476
	if GetGearType(Gear) == gtJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   477
		SaucerGear = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   478
		if TargetNumber == BoomTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   479
			AddAmmo(Player, amGrenade, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   480
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   481
		if TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   482
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   483
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   484
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   485
	if GetGearType(Gear) == gtCase and GetGearType(Player) ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   486
		PlaySound(sndShotgunReload)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   487
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   488
	if Gear == Barrels[1] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   489
		Barrels[1] = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   490
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   491
	if Gear == Barrels[2] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   492
		Barrels[2] = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   493
		AddCaption(loc("Kaboom!"), 0xFFFFFFFF, capgrpMessage)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   494
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   495
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   496
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   497
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   498
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   499
function onNewTurn()
13071
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   500
	if GetAmmoCount(CurrentHedgehog, amJetpack) > 0 then
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   501
		SetWeapon(amJetpack)
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   502
	end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   503
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   504
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   505
function onGameTick20()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   506
	if (TurnTimeLeft < 1500000 and not Objective) then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   507
		TurnTimeLeft = TurnTime
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   508
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   509
	if Check then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   510
		CheckTimer = CheckTimer - 20
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   511
		if CheckTimer <= 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   512
			if HasHedgehogLandedYet() then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   513
				AutoSpawn()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   514
				Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   515
				GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   516
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   517
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   518
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   519
	if GrenadeExploded and TargetNumber == BoomTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   520
		GrenadeTimer = GrenadeTimer + 20
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   521
		if GrenadeTimer > 1500 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   522
			GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   523
			GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   524
			GrenadeExploded = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   525
			if SaucerGear and TargetNumber == BoomTarget and TargetsRemaining > 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   526
				PlaySound(sndShotgunReload)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   527
				AddCaption(loc("+1 Grenade"), 0xDDDD00FF, capgrpAmmoinfo)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   528
				AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   529
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   530
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   531
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   532
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   533
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   534
function UpdateInfFuel()
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   535
	if SaucerGear then
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   536
		if InfFuel then
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   537
			SetHealth(SaucerGear, JETPACK_FUEL_INFINITE)
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   538
		elseif GetHealth(SaucerGear == JETPACK_FUEL_INFINITE) then
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   539
			SetHealth(SaucerGear, 2000)
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   540
		end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   541
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   542
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   543
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   544
function onGearDamage(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   545
	if Gear == Player then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   546
		CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   547
		GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   548
		Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   549
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   550
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   551
13630
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   552
function onGearResurrect(Gear, VGear)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   553
	if Gear == Player then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   554
		AddCaption(loc("Oh no! You have died. Try again!"), 0xFFFFFFFF, capgrpMessage2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   555
		ResetCurrentTarget()
13630
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   556
		if VGear then
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   557
			SetVisualGearValues(VGear, GetX(Gear), GetY(Gear))
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   558
		end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   559
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   560
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   561
13172
159004144897 Use onSkipTurn in scripts to detect turn skips
Wuzzy <Wuzzy2@mail.ru>
parents: 13071
diff changeset
   562
function onSkipTurn()
159004144897 Use onSkipTurn in scripts to detect turn skips
Wuzzy <Wuzzy2@mail.ru>
parents: 13071
diff changeset
   563
	AddCaption(loc("Try again!"), 0xFFFFFFFF, capgrpMessage2)
159004144897 Use onSkipTurn in scripts to detect turn skips
Wuzzy <Wuzzy2@mail.ru>
parents: 13071
diff changeset
   564
	ResetCurrentTarget()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   565
end