add defense wave control object

alut-include-path
Maikel de Vries 2017-01-08 19:11:24 +01:00
parent 7a8032e96d
commit a03c67a7a2
4 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,5 @@
[DefCore]
id=DefenseWave
Version=8,0
Category=C4D_StaticBack
HideInCreator=true

View File

@ -0,0 +1,89 @@
/**
Defense Wave
Defines standard waves which attack the player or its base. The wave is a list of properties, the main ones are:
* Name (string) - The name of the attack wave.
* Duration (int) - Duration of the wave in seconds.
* Bounty (int) - The amount of clunkers received for beating the wave.
* Score (int) - The amount of points obtained for beating this wave.
* Enemies (array) - Array of enemies, see DefenseEnemy for more information.
@author Maikel
*/
/*-- Wave Launching --*/
// Definition call which can be used to launch an attack wave.
public func LaunchWave(proplist prop_wave, int wave_nr, int enemy_plr)
{
// Create count down until next wave and play wave start sound.
GUI_Clock->CreateCountdown(prop_wave.Duration);
CustomMessage(Format("$MsgWave$", wave_nr, prop_wave.Name));
Sound("UI::Ding");
// Launch enemies.
if (prop_wave.Enemies)
for (var enemy in prop_wave.Enemies)
DefenseEnemy->LaunchEnemy(enemy, wave_nr, enemy_plr);
return;
}
/*-- Waves --*/
// Default wave, all other waves inherit from this.
static const DefaultWave =
{
Name = nil,
Duration = 0,
Bounty = nil,
Score = nil,
Enemies = nil
};
// A wave with no enemies: either at the start or to allow for a short break.
local Break = new DefaultWave
{
Name = "$WaveBreak$",
Duration = 60
};
// A group of rockets who move to a target.
local BoomAttack = new DefaultWave
{
Name = "$WaveBoomAttack$",
Duration = 60,
Bounty = 50,
Score = 100,
Enemies = [new DefenseEnemy.BoomAttack {Amount = 10}]
};
// A group of rockets who move to a target.
local RapidBoomAttack = new DefaultWave
{
Name = "$WaveRapidBoomAttack$",
Duration = 60,
Bounty = 50,
Score = 100,
Enemies = [new DefenseEnemy.RapidBoomAttack {Amount = 10}]
};
// A group of parachutists from above.
local Ballooner = new DefaultWave
{
Name = "$WaveBallooner$",
Duration = 60,
Bounty = 25,
Score = 100,
Enemies = [new DefenseEnemy.Ballooner {Amount = 10}]
};
// A group of rocketeers.
local Rocketeers = new DefaultWave
{
Name = "$WaveRocketeers$",
Duration = 60,
Bounty = 25,
Score = 100,
Enemies = [new DefenseEnemy.Rocketeer {Amount = 10}]
};

View File

@ -0,0 +1,7 @@
MsgWave=Welle %d: %s| |
WaveBreak=Pause
WaveBoomAttack=Raketengeschwader
WaveRapidBoomAttack=Rasches Raketengeschwader
WaveBallooner=Fallschirmabwurf
WaveRocketeers=Raketenreiter

View File

@ -0,0 +1,7 @@
MsgWave=Wave %d: %s| |
WaveBreak=Break
WaveBoomAttack=Rocket squadron
WaveRapidBoomAttack=Rapid rocket squadron
WaveBallooner=Parachute drop
WaveRocketeers=Rocketeers