share/hedgewars/Data/Missions/Training/Basic_Training_-_Flying_Saucer.lua
author Wuzzy <Wuzzy2@mail.ru>
Sat, 15 Dec 2018 01:29:47 +0100
changeset 14453 09bfe9df51e9
parent 13763 29abd3d5f9bb
child 14464 ead8928a59f8
permissions -rw-r--r--
Make various stunts in flying saucer training easier
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
]]
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    53
-- Intro
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    54
TargetPos[1] =  {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    55
	Targets = {{ X = 1027, Y = 217 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    56
	Ammo = { },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    57
	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
    58
	loc("Collect the first crate to begin!"),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    59
	MessageIcon = -amJetpack, }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    60
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    61
-- First flight, infinite fuel
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    62
TargetPos[2] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    63
	Targets = {{ X = 1369, Y = 265 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    64
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    65
	InfFuel = true,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    66
	MessageTime = 10000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    67
	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
    68
	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
    69
	loc("Try to land softly, as you can still take fall damage!"), }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    70
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    71
-- First flight, limited fuel
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    72
TargetPos[3] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    73
	Targets = {{ X = 689, Y = 58 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    74
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    75
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    76
	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
    77
	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
    78
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    79
-- The Double Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    80
TargetPos[4] = {
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    81
	Targets = { { X = 178, Y = -20 }, { X = 1962 , Y = -20 } },
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    82
	Ammo = { [amJetpack] = 2 },
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    83
	CratesContainAmmo = true,
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    84
	MessageTime = 9000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    85
	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
    86
	loc("You only have 2 flying saucers this time.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    87
	loc("Tip: You can change your flying saucer|in mid-flight by hitting the [Attack] key twice."), }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    88
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    89
-- Intermission
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    90
TargetPos[5] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    91
	Targets = {{ X = 47, Y = 804 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    92
	Ammo = { [amJetpack] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    93
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    94
	Message = loc("Time for a more interesting stunt, but first just collect the next crate!"), }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    95
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
    96
-- First Dive
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    97
TargetPos[6] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    98
	Targets = {{ X = 604, Y = 871}},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
    99
	MessageTime = 15000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   100
	Message = loc("You can dive with your flying saucer!") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   101
	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
   102
	loc("You only have one flying saucer this time.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   103
	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
   104
	loc("Warning: Never ever leave the flying saucer while in water!"),
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   105
	Ammo = { [amJetpack] = 1 },
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   106
	Respawn = { X = 758, Y = 847, FaceLeft = false }, }
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   107
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   108
-- Second Dive
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   109
TargetPos[7] = { 
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   110
	Targets = {{ X = 1884, Y = 704 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   111
	MessageTime = 6500,
12424
b9cc405541c1 Fix various loc() syntax errors in scripts
Wuzzy <almikes@aol.com>
parents: 11405
diff changeset
   112
	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
   113
		loc("Tip: Don't remain for too long in the water, or you won't make it."),
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   114
	Ammo = { [amJetpack] = 2 }, }
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   115
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   116
-- The Grenade Drop Target
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   117
local BoomTarget = 8
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   118
TargetPos[8] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   119
	Modifier = true, Func = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   120
		Info(loc("Instructions"),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   121
		loc("Now let's try to drop weapons while flying!") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   122
		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
   123
		loc("It's not that easy, so listen carefully:") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   124
		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
   125
		loc("Step 2: Select your grenade.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   126
		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
   127
		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
   128
		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
   129
		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
   130
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   131
		SpawnBoomTarget()
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
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   134
			AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   135
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   136
			AddAmmo(Player, amGrenade, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   137
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   138
		GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   139
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   140
	end,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   141
	Ammo = { [amJetpack] = 100 },
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   142
	Respawn = { X = 2000, Y = 742, FaceLeft = true }, }
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   143
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   144
-- The Launch Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   145
local LaunchTarget = 9
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   146
TargetPos[9] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   147
	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
   148
	MessageTime = 20000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   149
	Message = loc("Only the best pilots can master the following stunts.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   150
		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
   151
		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
   152
		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
   153
		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
   154
		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
   155
		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
   156
	Ammo = { [amJetpack] = 1, },
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   157
	Respawn = { X = 1760, Y = 754, FaceLeft = true },
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   158
	ExtraFunc = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   159
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   160
			AddAmmo(Player, amBazooka, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   161
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   162
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   163
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   164
		BazookasLeft = 2
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   165
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   166
	end }
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   167
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   168
-- The Underwater Attack Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   169
local UnderwaterAttackTarget = 10
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   170
TargetPos[10] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   171
	MessageTime = 17000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   172
	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
   173
	loc("Basically this is a combination of diving and launching.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   174
	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
   175
	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
   176
	Targets = {{ X = 1200, Y = 930, Type = gtTarget }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   177
	Ammo = { [amJetpack] = 1, },
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   178
	Respawn = { X = 1027, Y = 217, FaceLeft = true },
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   179
	ExtraFunc = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   180
		if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   181
			AddAmmo(Player, amBazooka, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   182
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   183
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   184
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   185
		BazookasLeft = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   186
	end }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   187
-- Final target / Sandbox
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   188
TargetPos[11] = {
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   189
	Targets = {{ X = 742, Y = 290 }},
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   190
	MessageTime = 5000,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   191
	Message = loc("This almost concludes our tutorial.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   192
	loc("You now have infinite fuel, grenades and bazookas for fun.") .. "|" ..
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   193
	loc("Collect or destroy the final crate to finish the training."),
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   194
	Ammo = { [amJetpack] = 100, [amGrenade] = 100, [amBazooka] = 100 },
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   195
	InfFuel = true, }
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   196
-- Outro
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   197
TargetPos[12] = { Modifier = true, Func = function()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   198
	Objective = true
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   199
	AddCaption(loc("Training complete!"), capcolDefault, capgrpGameState)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   200
	Info(loc("Training complete!"), loc("Good bye!"), 4, 5000)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   201
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   202
	if SaucerGear ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   203
		DeleteGear(SaucerGear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   204
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   205
	SetState(Player, band(GetState(Player), bnot(gstHHDriven)))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   206
	SetState(Player, bor(GetState(Player), gstWinner))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   207
	PlaySound(sndVictory, Player)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   208
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   209
	SendStat(siGameResult, loc("You have finished the Flying Saucer Training!"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   210
	SendStat(siCustomAchievement, loc("Good job!"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   211
	SendStat(siPlayerKills, "0", loc("Hogonauts"))
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   212
13763
29abd3d5f9bb Call EndTurn(true) instead of TurnTimeLeft(0) in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13750
diff changeset
   213
	EndTurn(true)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   214
	EndGame()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   215
end,
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   216
}
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   217
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   218
-- Just a wrapper for ShowMission
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   219
function Info(Title, Text, Icon, Time)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   220
	if Time == nil then Time = 0 end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   221
	if Icon == nil then Icon = 2 end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   222
	ShowMission(loc("Flying Saucer Training"), Title, Text, Icon, Time)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   223
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   224
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   225
-- Spawn all the gears for the Boom Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   226
function SpawnBoomTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   227
	if TargetsRemaining < 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   228
		TargetGears[1] = AddGear(1602, 507, gtTarget, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   229
		TargetsRemaining = TargetsRemaining + 1
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
	if Barrels[1] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   233
		Barrels[1] = AddGear(1563, 532, gtExplosives, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   234
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   235
	if Barrels[2] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   236
		Barrels[2] = AddGear(1648, 463, gtExplosives, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   237
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   238
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   239
	for i=1,#Barrels do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   240
		SetHealth(Barrels[i], 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   241
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   242
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   243
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   244
-- Generic target spawning for the current target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   245
function SpawnTargets()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   246
	for i=1,#TargetPos[TargetNumber].Targets do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   247
		if TargetGears[i] == nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   248
			SpawnTarget(TargetPos[TargetNumber].Targets[i].X, TargetPos[TargetNumber].Targets[i].Y,
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   249
				TargetPos[TargetNumber].Targets[i].Type, i, TargetPos[TargetNumber].CratesContainAmmo )
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   250
		end
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
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   253
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   254
function SpawnTarget( PosX, PosY, Type, ID, ContainsAmmo )
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   255
	if Type ~= nil and Type ~= gtCase then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   256
		if Type == gtTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   257
			TargetGears[ID] = AddGear(PosX, PosY, gtTarget, 0, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   258
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   259
	else
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   260
		if ContainsAmmo == true then
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   261
			TargetGears[ID] = SpawnSupplyCrate(PosX, PosY, amJetpack)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   262
		else
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   263
			TargetGears[ID] = SpawnFakeUtilityCrate(PosX, PosY, false, false)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   264
		end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   265
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   266
	TargetsRemaining = TargetsRemaining + 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   267
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   268
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   269
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
   270
	TargetNumber = TargetNumber + 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   271
	TargetsRemaining = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   272
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   273
	if TargetPos[TargetNumber].Ammo then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   274
		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   275
			AddAmmo(Player, ammoType, count)
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
		if GetCurAmmoType() ~= amJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   278
			SetWeapon(amJetpack)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   279
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   280
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   281
	if TargetPos[TargetNumber].InfFuel then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   282
		InfFuel = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   283
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   284
		InfFuel = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   285
	end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   286
	UpdateInfFuel()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   287
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   288
	-- 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
   289
	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
   290
		TargetPos[TargetNumber].Func()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   291
		return true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   292
	end
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
	-- ExtraFunc is for additional events for a target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   295
	if TargetPos[TargetNumber].ExtraFunc ~= nil then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   296
		TargetPos[TargetNumber].ExtraFunc()
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
	local subcap
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   300
	if TargetNumber == 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   301
		subcap = loc("Training")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   302
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   303
		subcap = loc("Instructions")
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   304
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   305
	Info(subcap, TargetPos[TargetNumber].Message, TargetPos[TargetNumber].MessageIcon, TargetPos[TargetNumber].MessageTime)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   306
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   307
	-- Spawn targets on the next position
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   308
	SpawnTargets()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   309
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   310
	if TargetNumber > 1 then
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   311
		AddCaption(loc("Next target is ready!"), capcolDefault, capgrpMessage2)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   312
	end
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
-- 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
   316
-- 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
   317
function HasHedgehogLandedYet()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   318
	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
   319
		return true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   320
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   321
		return false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   322
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   323
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   324
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   325
-- 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
   326
function CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   327
	-- (We track flames, grenades, bazooka shells)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   328
	runOnGears(DeleteGear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   329
end
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
-- 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
   332
-- Called when hedgeghog is resurrected or skips turn
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   333
function ResetCurrentTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   334
	GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   335
	GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   336
	if TargetNumber == LaunchTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   337
		BazookasLeft = 2
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   338
	elseif TargetNumber == UnderwaterAttackTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   339
		BazookasLeft = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   340
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   341
		BazookasLeft = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   342
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   343
	Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   344
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   345
	CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   346
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   347
	local X, Y, FaceLeft
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   348
	if TargetNumber == 1 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   349
		X, Y = StartPos.X, StartPos.Y
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   350
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   351
		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
   352
			X, Y = TargetPos[TargetNumber-1].Respawn.X, TargetPos[TargetNumber-1].Respawn.Y
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   353
			FaceLeft = TargetPos[TargetNumber-1].Respawn.FaceLeft
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   354
		else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   355
			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
   356
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   357
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   358
	if TargetNumber == BoomTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   359
		SpawnBoomTarget()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   360
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   361
	if TargetPos[TargetNumber].Modifier ~= true then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   362
		SpawnTargets()
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
	if TargetPos[TargetNumber].Ammo then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   365
		for ammoType, count in pairs(TargetPos[TargetNumber].Ammo) do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   366
			AddAmmo(Player, ammoType, count)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   367
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   368
		if GetCurAmmoType() ~= amJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   369
			SetWeapon(amJetpack)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   370
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   371
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   372
	if TargetPos[TargetNumber].InfFuel then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   373
		InfFuel = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   374
	else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   375
		InfFuel = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   376
	end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   377
	UpdateInfFuel()
11405
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
	SetGearPosition(Player, X, Y)
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   380
	if FaceLeft ~= nil then
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   381
		HogTurnLeft(Player, FaceLeft)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   382
	end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   383
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   384
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   385
function onGameInit()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   386
	Seed = 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   387
	GameFlags = gfInfAttack + gfOneClanMode + gfSolidLand + gfDisableWind
13750
110d6c1e817f Lua: Rename globals: NoPointX→NO_CURSOR, cMaxTurnTime→MAX_TURN_TIME, cMaxHogHealth→MAX_HOG_HEALTH
Wuzzy <Wuzzy2@mail.ru>
parents: 13740
diff changeset
   388
	TurnTime = MAX_TURN_TIME --[[ This effectively hides the turn time; a turn time above 1000s is not displayed.
13664
85506d95977d Use new script variable cMaxTurnTime in scripts for consistency
Wuzzy <Wuzzy2@mail.ru>
parents: 13643
diff changeset
   389
			   	     We will also ensure this timer always stays above 999s later ]]
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   390
	CaseFreq = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   391
	MinesNum = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   392
	Explosives = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   393
	Map = "Eyes"
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   394
	Theme = "EarthRise"
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   395
	SuddenDeathTurns = 50
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   396
	WaterRise = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   397
	HealthDecrease = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   398
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   399
	-- 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
   400
	AddTeam( loc( "Hogonauts" ), -9, "earth", "Earth", "Default", "cm_galaxy" )
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   401
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   402
	-- Hedgehog name is a pun on “Neil Armstrong”
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   403
	Player = AddHog( loc( "Neil Hogstrong" ), 0, 1, "NoHat" )
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   404
	SetGearPosition( Player, StartPos.X, StartPos.Y)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   405
	SetEffect( Player, heResurrectable, 1 )
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   406
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   407
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   408
function onGameStart()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   409
	SendHealthStatsOff()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   410
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   411
	-- Girder near first crate
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   412
	PlaceGirder(1257, 204, 6)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   413
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   414
	-- The upper girders
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   415
	PlaceGirder(84, 16, 4)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   416
	PlaceGirder(243, 16, 4)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   417
	PlaceGirder(1967, 16, 4)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   418
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   419
	-- The lower girder platform at the water pit
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   420
	PlaceGirder(509, 896, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   421
	PlaceGirder(668, 896, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   422
	PlaceGirder(421, 896, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   423
	PlaceGirder(758, 896, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   424
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   425
	-- Girders for the Launch Target and the Underwater Attack Target
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   426
	PlaceGirder(1191, 960, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   427
	PlaceGirder(1311, 960, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   428
	PlaceGirder(1460, 827, 3)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   429
	PlaceGirder(1509, 763, 2)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   430
	PlaceGirder(1605, 672, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   431
	PlaceGirder(1764, 672, 4)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   432
	PlaceGirder(1803, 577, 6)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   433
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   434
	-- Spawn our 1st target using the wrapper function
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   435
	AutoSpawn()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   436
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   437
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   438
function onAmmoStoreInit()
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   439
	SetAmmo(amJetpack, 0, 0, 0, 1)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   440
	SetAmmo(amGrenade, 0, 0, 0, 1)
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   441
	SetAmmo(amBazooka, 0, 0, 0, 1)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   442
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   443
	-- Added for resetting current target/objective when player is stuck somehow
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   444
	SetAmmo(amSkip, 9, 0, 0, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   445
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   446
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   447
function onGearAdd(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   448
	if GetGearType(Gear) == gtJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   449
		SaucerGear = Gear
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   450
		if TargetNumber == BoomTarget and GrenadeThrown == false then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   451
			AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   452
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   453
		if (TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget) and BazookasLeft > 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   454
			AddAmmo(Player, amBazooka, BazookasLeft)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   455
		end
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   456
		UpdateInfFuel()
13071
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   457
		-- 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
   458
		-- 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
   459
		HideMission()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   460
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   461
	if GetGearType(Gear) == gtGrenade then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   462
		GrenadeThrown = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   463
		GrenadeTimer = 0
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
	if GetGearType(Gear) == gtShell then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   466
		BazookasLeft = BazookasLeft - 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   467
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   468
	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
   469
		trackGear(Gear)
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
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   473
function onGearDelete(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   474
	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
   475
		for i=1, #TargetGears do
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   476
			if Gear == TargetGears[i] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   477
				TargetGears[i] = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   478
				TargetsRemaining = TargetsRemaining - 1
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   479
			end
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 TargetsRemaining <= 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   482
			if TargetNumber == BoomTarget or not HasHedgehogLandedYet() then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   483
				if SaucerGear then
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   484
					AddCaption(loc("Objective completed! Now land safely."), capcolDefault, capgrpMessage2)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   485
				end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   486
				Check = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   487
				CheckTimer = 500
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   488
			else
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   489
				AutoSpawn()
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
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   492
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   493
	if GetGearType(Gear) == gtGrenade then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   494
		GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   495
		GrenadeExploded = true
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   496
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   497
	if GetGearType(Gear) == gtJetpack then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   498
		SaucerGear = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   499
		if TargetNumber == BoomTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   500
			AddAmmo(Player, amGrenade, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   501
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   502
		if TargetNumber == LaunchTarget or TargetNumber == UnderwaterAttackTarget then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   503
			AddAmmo(Player, amBazooka, 0)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   504
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   505
	end
14453
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   506
	-- Fake crate collected
09bfe9df51e9 Make various stunts in flying saucer training easier
Wuzzy <Wuzzy2@mail.ru>
parents: 13763
diff changeset
   507
	if GetGearType(Gear) == gtCase and band(GetGearMessage(Gear), gmDestroy) ~= 0 and band(GetGearPos(Gear), 0x8) ~= 0 then
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   508
		PlaySound(sndShotgunReload)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   509
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   510
	if Gear == Barrels[1] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   511
		Barrels[1] = nil
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   512
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   513
	if Gear == Barrels[2] then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   514
		Barrels[2] = nil
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   515
		AddCaption(loc("Kaboom!"), capcolDefault, capgrpMessage)
11405
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
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   519
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   520
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   521
function onNewTurn()
13071
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   522
	if GetAmmoCount(CurrentHedgehog, amJetpack) > 0 then
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   523
		SetWeapon(amJetpack)
bcb205281f38 Some minor convenience improvements in Basic Flying Saucer Training
Wuzzy <Wuzzy2@mail.ru>
parents: 12424
diff changeset
   524
	end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   525
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   526
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   527
function onGameTick20()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   528
	if (TurnTimeLeft < 1500000 and not Objective) then
13740
2bb7141496a9 Use SetTurnTimeLeft and SetReadyTimeLeft in all scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13664
diff changeset
   529
		SetTurnTimeLeft(TurnTime)
11405
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
	if Check then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   532
		CheckTimer = CheckTimer - 20
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   533
		if CheckTimer <= 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   534
			if HasHedgehogLandedYet() then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   535
				AutoSpawn()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   536
				Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   537
				GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   538
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   539
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   540
	end
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   541
	if GrenadeExploded and TargetNumber == BoomTarget and GetHealth(Player) then
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   542
		GrenadeTimer = GrenadeTimer + 20
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   543
		if GrenadeTimer > 1500 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   544
			GrenadeTimer = 0
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   545
			GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   546
			GrenadeExploded = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   547
			if SaucerGear and TargetNumber == BoomTarget and TargetsRemaining > 0 then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   548
				PlaySound(sndShotgunReload)
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   549
				AddCaption(loc("+1 Grenade"), GetClanColor(GetHogClan(Player)), capgrpAmmoinfo)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   550
				AddAmmo(Player, amGrenade, 1)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   551
			end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   552
		end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   553
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   554
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   555
13594
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   556
function UpdateInfFuel()
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   557
	if SaucerGear then
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   558
		if InfFuel then
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   559
			SetHealth(SaucerGear, JETPACK_FUEL_INFINITE)
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   560
		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
   561
			SetHealth(SaucerGear, 2000)
ddd90e92c4c3 Use proper infinite fuel feature in flying saucer training
Wuzzy <Wuzzy2@mail.ru>
parents: 13583
diff changeset
   562
		end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   563
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   564
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   565
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   566
function onGearDamage(Gear)
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   567
	if Gear == Player then
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   568
		CleanUpGears()
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   569
		GrenadeThrown = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   570
		Check = false
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   571
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   572
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   573
13630
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   574
function onGearResurrect(Gear, VGear)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   575
	if Gear == Player then
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   576
		AddCaption(loc("Oh no! You have died. Try again!"), capcolDefault, capgrpMessage2)
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   577
		ResetCurrentTarget()
13630
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   578
		if VGear then
fe7d2bbf5f3f Fix resurrection animation appearing at wrong position for some missions and styles
Wuzzy <Wuzzy2@mail.ru>
parents: 13594
diff changeset
   579
			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
   580
		end
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   581
	end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   582
end
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   583
13172
159004144897 Use onSkipTurn in scripts to detect turn skips
Wuzzy <Wuzzy2@mail.ru>
parents: 13071
diff changeset
   584
function onSkipTurn()
13643
690cc84e9fd6 Use capcolDefault in Lua scripts
Wuzzy <Wuzzy2@mail.ru>
parents: 13630
diff changeset
   585
	AddCaption(loc("Try again!"), capcolDefault, capgrpMessage2)
13172
159004144897 Use onSkipTurn in scripts to detect turn skips
Wuzzy <Wuzzy2@mail.ru>
parents: 13071
diff changeset
   586
	ResetCurrentTarget()
11405
307832da2756 Add Basic Flying Saucer Training
Wuzzy <almikes@aol.com>
parents:
diff changeset
   587
end