forked from Mirrors/openclonk
add new defense scenario (king of the hill)
This is still experimental and needs some fine-tuning.alut-include-path
parent
3b1dd87b8b
commit
3f9d06aaa7
|
@ -0,0 +1,9 @@
|
|||
König des Hügels
|
||||
|
||||
You have to defend a hill which gives way to a large ruby cave against angry miners.
|
||||
|
||||
Ziel: Überlebe möglichst viele Angriffswellen.
|
||||
|
||||
Tipps:
|
||||
- This round is cooperative, so work together and divide tasks.
|
||||
- Build up a settlement and defense during the earlier rounds of attack.
|
|
@ -0,0 +1,9 @@
|
|||
King of the Hill
|
||||
|
||||
You have to defend a hill which gives way to a large ruby cave against angry miners
|
||||
|
||||
Goal: Survive as many attack waves as possible.
|
||||
|
||||
Hints:
|
||||
- This round is cooperative, so work together and divide tasks.
|
||||
- Build up a settlement and defense during the earlier rounds of attack.
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,241 @@
|
|||
/* Automatically created objects file */
|
||||
|
||||
func InitializeObjects()
|
||||
{
|
||||
var Grass001 = CreateObjectAbove(Grass, 4, 334);
|
||||
var Grass002 = CreateObjectAbove(Grass, 11, 333);
|
||||
var Grass003 = CreateObjectAbove(Grass, 19, 333);
|
||||
var Grass004 = CreateObjectAbove(Grass, 26, 333);
|
||||
var Grass005 = CreateObjectAbove(Grass, 31, 332);
|
||||
var Grass006 = CreateObjectAbove(Grass, 40, 335);
|
||||
var Grass007 = CreateObjectAbove(Grass, 41, 334);
|
||||
var Grass008 = CreateObjectAbove(Grass, 32, 486);
|
||||
var Grass009 = CreateObjectAbove(Grass, 44, 486);
|
||||
var Grass010 = CreateObjectAbove(Grass, 41, 486);
|
||||
var Grass011 = CreateObjectAbove(Grass, 48, 485);
|
||||
var Grass012 = CreateObjectAbove(Grass, 54, 485);
|
||||
var Grass013 = CreateObject(Grass, 60, 485);
|
||||
var Grass014 = CreateObjectAbove(Grass, 72, 486);
|
||||
var Grass015 = CreateObjectAbove(Grass, 67, 486);
|
||||
var Grass016 = CreateObjectAbove(Grass, 96, 486);
|
||||
var Grass017 = CreateObjectAbove(Grass, 97, 488);
|
||||
var Grass018 = CreateObject(Grass, 105, 486);
|
||||
var Grass019 = CreateObject(Grass, 114, 487);
|
||||
var Grass020 = CreateObjectAbove(Grass, 121, 487);
|
||||
var Grass021 = CreateObjectAbove(Grass, 125, 487);
|
||||
var Grass022 = CreateObjectAbove(Grass, 131, 488);
|
||||
var Grass023 = CreateObjectAbove(Grass, 137, 487);
|
||||
var Grass024 = CreateObject(Grass, 141, 487);
|
||||
var Grass025 = CreateObjectAbove(Grass, 795, 758);
|
||||
var Grass026 = CreateObjectAbove(Grass, 802, 758);
|
||||
var Grass027 = CreateObjectAbove(Grass, 808, 760);
|
||||
var Grass028 = CreateObjectAbove(Grass, 819, 759);
|
||||
var Grass029 = CreateObjectAbove(Grass, 835, 759);
|
||||
var Grass030 = CreateObjectAbove(Grass, 830, 758);
|
||||
var Grass031 = CreateObjectAbove(Grass, 814, 757);
|
||||
var Grass032 = CreateObject(Grass, 826, 758);
|
||||
var Grass033 = CreateObjectAbove(Grass, 845, 758);
|
||||
var Grass034 = CreateObjectAbove(Grass, 853, 758);
|
||||
var Grass035 = CreateObject(Grass, 862, 759);
|
||||
var Grass036 = CreateObjectAbove(Grass, 873, 757);
|
||||
var Grass037 = CreateObjectAbove(Grass, 881, 759);
|
||||
var Grass038 = CreateObjectAbove(Grass, 887, 758);
|
||||
var Grass039 = CreateObjectAbove(Grass, 894, 758);
|
||||
var Grass040 = CreateObjectAbove(Grass, 903, 758);
|
||||
var Grass041 = CreateObjectAbove(Grass, 914, 758);
|
||||
var Grass042 = CreateObjectAbove(Grass, 925, 758);
|
||||
var Grass043 = CreateObjectAbove(Grass, 937, 758);
|
||||
var Grass044 = CreateObjectAbove(Grass, 941, 758);
|
||||
var Grass045 = CreateObjectAbove(Grass, 947, 757);
|
||||
var Grass046 = CreateObjectAbove(Grass, 956, 757);
|
||||
var Grass047 = CreateObjectAbove(Grass, 932, 757);
|
||||
var Grass048 = CreateObjectAbove(Grass, 871, 758);
|
||||
var Torch001 = CreateObjectAbove(Torch, 493, 901);
|
||||
Torch001->AttachToWall(false);
|
||||
var Torch002 = CreateObjectAbove(Torch, 898, 929);
|
||||
Torch002->AttachToWall(false);
|
||||
CreateObjectAbove(Vine, 423, 516);
|
||||
CreateObjectAbove(Vine, 67, 421);
|
||||
var Trunk001 = CreateObject(Trunk, 72, 311);
|
||||
Trunk001->SetCon(97);
|
||||
Trunk001->SetR(42);
|
||||
|
||||
var Flower001 = CreateObjectAbove(Flower, 808, 765);
|
||||
var Flower002 = CreateObjectAbove(Flower, 834, 766);
|
||||
CreateObjectAbove(Flower, 879, 765);
|
||||
var Flower003 = CreateObjectAbove(Flower, 919, 765);
|
||||
CreateObjectAbove(Flower, 946, 763);
|
||||
var Flower004 = CreateObjectAbove(Flower, 60, 492);
|
||||
CreateObjectAbove(Flower, 35, 339);
|
||||
|
||||
CreateObjectAbove(Tree_Deciduous, 915, 763);
|
||||
CreateObjectAbove(Tree_Deciduous, 898, 761);
|
||||
CreateObjectAbove(Tree_Deciduous, 902, 762);
|
||||
CreateObjectAbove(Tree_Deciduous, 844, 763);
|
||||
CreateObjectAbove(Tree_Deciduous, 849, 763);
|
||||
CreateObjectAbove(Tree_Deciduous, 944, 761);
|
||||
CreateObjectAbove(Tree_Deciduous, 802, 764);
|
||||
CreateObjectAbove(Tree_Deciduous, 28, 338);
|
||||
|
||||
CreateObjectAbove(Tree_Coniferous2, 868, 763);
|
||||
CreateObjectAbove(Tree_Coniferous2, 826, 764);
|
||||
CreateObjectAbove(Tree_Coniferous2, 8, 340);
|
||||
|
||||
CreateObjectAbove(Tree_Coniferous3, 928, 763);
|
||||
CreateObjectAbove(Tree_Coniferous3, 810, 763);
|
||||
|
||||
var Wheat001 = CreateObjectAbove(Wheat, 808, 759);
|
||||
Wheat001->SetMeshMaterial("wheat_material_ripe", 0);
|
||||
var Wheat002 = CreateObjectAbove(Wheat, 822, 759);
|
||||
Wheat002->SetMeshMaterial("wheat_material_ripe", 0);
|
||||
var Wheat003 = CreateObjectAbove(Wheat, 821, 758);
|
||||
Wheat003->SetMeshMaterial("wheat_material_ripe", 0);
|
||||
var Wheat004 = CreateObjectAbove(Wheat, 813, 758);
|
||||
Wheat004->SetMeshMaterial("wheat_material_ripe", 0);
|
||||
|
||||
CreateObjectAbove(Cotton, 32, 334);
|
||||
CreateObjectAbove(Cotton, 9, 335);
|
||||
|
||||
var Branch001 = CreateObject(Branch, 360, 435);
|
||||
Branch001->SetR(-12);
|
||||
var Branch002 = CreateObject(Branch, 45, 456);
|
||||
Branch002->SetCon(77);
|
||||
Branch002->SetR(107);
|
||||
var Branch003 = CreateObject(Branch, 59, 419);
|
||||
Branch003->SetCon(87);
|
||||
Branch003->SetR(63);
|
||||
var Branch004 = CreateObject(Branch, 61, 397);
|
||||
Branch004->SetCon(74);
|
||||
Branch004->SetR(82);
|
||||
var Branch005 = CreateObject(Branch, 89, 347);
|
||||
Branch005->SetCon(103);
|
||||
Branch005->SetR(106);
|
||||
var Branch006 = CreateObject(Branch, 458, 398);
|
||||
Branch006->SetCon(106);
|
||||
Branch006->SetR(39);
|
||||
var Branch007 = CreateObject(Branch, 449, 437);
|
||||
Branch007->SetCon(98);
|
||||
Branch007->SetR(137);
|
||||
var Branch008 = CreateObject(Branch, 446, 463);
|
||||
Branch008->SetCon(104);
|
||||
Branch008->SetR(157);
|
||||
var Branch009 = CreateObject(Branch, 390, 498);
|
||||
Branch009->SetCon(94);
|
||||
Branch009->SetR(166);
|
||||
var Branch010 = CreateObject(Branch, 217, 674);
|
||||
Branch010->SetCon(105);
|
||||
Branch010->SetR(140);
|
||||
|
||||
var ToolsWorkshop001 = CreateObjectAbove(ToolsWorkshop, 210, 622);
|
||||
|
||||
var Basement001 = CreateObject(Basement, 210, 627);
|
||||
Basement001->SetParent(ToolsWorkshop001);
|
||||
|
||||
var ChemicalLab001 = CreateObjectAbove(ChemicalLab, 160, 622);
|
||||
|
||||
var Basement002 = CreateObject(Basement, 160, 627);
|
||||
Basement002->SetParent(ChemicalLab001);
|
||||
|
||||
var Armory001 = CreateObjectAbove(Armory, 217, 717);
|
||||
|
||||
var Basement003 = CreateObject(Basement, 215, 723);
|
||||
Basement003->SetParent(Armory001);
|
||||
|
||||
var SteamEngine001 = CreateObject(SteamEngine, 134, 695);
|
||||
|
||||
var Basement004 = CreateObject(Basement, 135, 723);
|
||||
Basement004->SetParent(SteamEngine001);
|
||||
|
||||
var Elevator001 = CreateObjectAbove(Elevator, 104, 487);
|
||||
Elevator001->SetDir(DIR_Right);
|
||||
Elevator001->CreateShaft(0);
|
||||
Elevator001->SetCasePosition(476);
|
||||
|
||||
var Basement005 = CreateObject(Basement, 115, 492);
|
||||
Basement005->SetParent(Elevator001);
|
||||
|
||||
var Flagpole001 = CreateObject(Flagpole, 136, 454);
|
||||
|
||||
var Basement006 = CreateObject(Basement, 136, 492);
|
||||
Basement006->SetParent(Flagpole001);
|
||||
|
||||
var Chest001 = CreateObjectAbove(Chest, 18, 335);
|
||||
|
||||
var WindGenerator001 = CreateObject(WindGenerator, 392, 392);
|
||||
var WindGenerator002 = CreateObject(WindGenerator, 429, 383);
|
||||
var Lorry001 = CreateObjectAbove(Lorry, 124, 621);
|
||||
|
||||
CreateObjectAbove(Catapult, 200, 471);
|
||||
|
||||
CreateObject(Rock, 170, 546);
|
||||
CreateObject(Rock, 62, 505);
|
||||
CreateObject(Rock, 95, 639);
|
||||
CreateObject(Rock, 100, 668);
|
||||
CreateObject(Rock, 260, 752);
|
||||
CreateObject(Rock, 239, 744);
|
||||
CreateObject(Rock, 190, 814);
|
||||
CreateObject(Rock, 116, 757);
|
||||
CreateObject(Rock, 392, 808);
|
||||
CreateObject(Rock, 265, 890);
|
||||
CreateObject(Rock, 171, 872);
|
||||
CreateObject(Rock, 338, 869);
|
||||
CreateObject(Rock, 923, 775);
|
||||
CreateObject(Rock, 873, 778);
|
||||
|
||||
Lorry001->CreateContents(Ore, 4);
|
||||
|
||||
Lorry001->CreateContents(Coal, 4);
|
||||
SteamEngine001->CreateContents(Coal, 4);
|
||||
|
||||
CreateObject(Loam, 191, 544);
|
||||
CreateObject(Loam, 292, 751);
|
||||
CreateObject(Loam, 374, 846);
|
||||
CreateObject(Loam, 920, 909);
|
||||
CreateObject(Loam, 176, 855);
|
||||
CreateObject(Loam, 58, 703);
|
||||
|
||||
ToolsWorkshop001->CreateContents(Metal, 6);
|
||||
Armory001->CreateContents(Metal, 4);
|
||||
|
||||
ToolsWorkshop001->CreateContents(Wood, 5);
|
||||
Armory001->CreateContents(Wood, 6);
|
||||
Lorry001->CreateContents(Wood, 4);
|
||||
|
||||
Chest001->CreateContents(Blunderbuss);
|
||||
|
||||
Chest001->CreateContents(LeadBullet, 3);
|
||||
|
||||
Chest001->CreateContents(Bow);
|
||||
|
||||
Chest001->CreateContents(FireArrow, 3);
|
||||
|
||||
Lorry001->CreateContents(Shovel, 2);
|
||||
ToolsWorkshop001->CreateContents(Shovel, 2);
|
||||
|
||||
ChemicalLab001->CreateContents(DynamiteBox, 2);
|
||||
ToolsWorkshop001->CreateContents(Lantern);
|
||||
Armory001->CreateContents(Lantern);
|
||||
|
||||
Lorry001->CreateContents(Axe, 2);
|
||||
|
||||
Lorry001->CreateContents(Hammer, 2);
|
||||
|
||||
Lorry001->CreateContents(Pickaxe, 2);
|
||||
CreateObject(Firestone, 65, 547);
|
||||
CreateObject(Firestone, 141, 511);
|
||||
CreateObject(Firestone, 262, 607);
|
||||
CreateObject(Firestone, 63, 643);
|
||||
CreateObject(Firestone, 157, 763);
|
||||
CreateObject(Firestone, 82, 871);
|
||||
CreateObject(Firestone, 204, 811);
|
||||
CreateObject(Firestone, 258, 876);
|
||||
CreateObject(Firestone, 244, 868);
|
||||
CreateObject(Firestone, 278, 815);
|
||||
CreateObject(Firestone, 321, 748);
|
||||
CreateObject(Firestone, 405, 714);
|
||||
CreateObject(Firestone, 408, 807);
|
||||
CreateObject(Firestone, 371, 909);
|
||||
CreateObject(Firestone, 897, 945);
|
||||
CreateObject(Firestone, 953, 911);
|
||||
return true;
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
[Head]
|
||||
Icon=13
|
||||
Title=KingOfTheHill
|
||||
Version=8
|
||||
Difficulty=1
|
||||
MaxPlayerLeague=1
|
||||
MinPlayer=1
|
||||
NoInitialize=true
|
||||
|
||||
[Player1]
|
||||
|
||||
[Player2]
|
||||
|
||||
[Player3]
|
||||
|
||||
[Player4]
|
||||
|
||||
[Landscape]
|
||||
Sky=Clouds2
|
||||
BottomOpen=1
|
||||
MapWidth=120,0,64,10000
|
||||
MapHeight=120,0,40,10000
|
||||
SkyScrollMode=2
|
||||
|
||||
[Weather]
|
||||
Climate=0,0,0,100
|
||||
StartSeason=0,0,0,100
|
||||
YearSpeed=0,0,0,100
|
||||
Wind=1,100,-100,100
|
|
@ -0,0 +1,135 @@
|
|||
/**
|
||||
King of the Hill
|
||||
Defend the hill from enemy waves.
|
||||
|
||||
@author Maikel
|
||||
*/
|
||||
|
||||
static init_defenders;
|
||||
static g_enemy_plr;
|
||||
|
||||
protected func Initialize()
|
||||
{
|
||||
CreateScriptPlayer("$PlayerAttackers$", nil, 2, CSPF_NoEliminationCheck);
|
||||
CreateObject(Goal_Defense);
|
||||
|
||||
CreateObject(Rule_BuyAtFlagpole);
|
||||
CreateObject(Rule_BaseRespawn);
|
||||
CreateObject(Rule_TeamAccount);
|
||||
CreateObject(Rule_NoFriendlyFire);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*-- Player Control --*/
|
||||
|
||||
protected func InitializePlayer(int plr)
|
||||
{
|
||||
// Do script player.
|
||||
if (GetPlayerType(plr) != C4PT_User)
|
||||
{
|
||||
g_enemy_plr = plr;
|
||||
GetCrew(plr)->RemoveObject();
|
||||
return;
|
||||
}
|
||||
|
||||
// Move players to defenders team.
|
||||
if (GetPlayerTeam(plr) != 1)
|
||||
SetPlayerTeam(plr, 1);
|
||||
|
||||
// Move crew to the island.
|
||||
var crew = GetCrew(plr);
|
||||
crew->SetPosition(128, 440);
|
||||
|
||||
// Set zoom ranges.
|
||||
SetPlayerZoomByViewRange(plr, 1200, nil, PLRZOOM_LimitMax);
|
||||
SetPlayerZoomByViewRange(plr, 450, nil, PLRZOOM_Direct);
|
||||
|
||||
// Base material and knowledge.
|
||||
GivePlayerBaseMaterial(plr);
|
||||
var index = 0, def;
|
||||
while (def = GetDefinition(index++))
|
||||
SetPlrKnowledge(plr, def);
|
||||
|
||||
// Give base and set wealth.
|
||||
if (!init_defenders)
|
||||
{
|
||||
SetWealth(plr, 200);
|
||||
for (var obj in FindObjects(Find_Func("IsFlagpole")))
|
||||
obj->SetOwner(plr);
|
||||
init_defenders = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public func GetEnemyPlayer() { return g_enemy_plr; }
|
||||
|
||||
|
||||
/*-- Waves Control --*/
|
||||
|
||||
public func GetAttackWave(int nr)
|
||||
{
|
||||
// The round starts with a short phase to prepare.
|
||||
if (nr == 1) return new DefenseWave.Break { Duration = 120 };
|
||||
|
||||
// Attack positions.
|
||||
var pos_land = {X = LandscapeWidth(), Y = 740, Exact = true};
|
||||
var pos_sky = {X = LandscapeWidth() - 100, Y = 0};
|
||||
var pos_above = {X = 200, Y = 0};
|
||||
|
||||
// Automatically build waves that become stronger.
|
||||
var wave =
|
||||
{
|
||||
Name = "$MsgWave$",
|
||||
// Waves last shorter as the number increases.
|
||||
Duration = BoundBy(120 - nr / 3, 20, 120),
|
||||
Bounty = 100,
|
||||
Score = 100,
|
||||
Enemies = []
|
||||
};
|
||||
|
||||
// Add enemy ground troups: swordsman, archer or spearman.
|
||||
if (nr % 3 == 0)
|
||||
{
|
||||
PushBack(wave.Enemies, new DefenseEnemy.Swordsman {
|
||||
Amount = BoundBy(nr - 1, 1, 20),
|
||||
Energy = BoundBy(20 + nr, 30, 100),
|
||||
Position = pos_land
|
||||
});
|
||||
}
|
||||
if (nr % 3 == 1)
|
||||
{
|
||||
PushBack(wave.Enemies, new DefenseEnemy.Archer {
|
||||
Amount = BoundBy(nr - 1, 1, 20),
|
||||
Energy = BoundBy(10 + nr, 20, 50),
|
||||
Position = pos_land
|
||||
});
|
||||
}
|
||||
if (nr % 3 == 2)
|
||||
{
|
||||
PushBack(wave.Enemies, new DefenseEnemy.Spearman {
|
||||
Amount = BoundBy(nr - 1, 1, 20),
|
||||
Energy = BoundBy(10 + nr, 20, 50),
|
||||
Position = pos_land
|
||||
});
|
||||
}
|
||||
// Add enemy: boom attack.
|
||||
PushBack(wave.Enemies, new DefenseEnemy.BoomAttack {
|
||||
Amount = BoundBy(nr - 1, 1, 20),
|
||||
Speed = BoundBy(80 + nr * 5, 100, 250),
|
||||
Position = pos_sky
|
||||
});
|
||||
// Add enemy: rocketeer.
|
||||
PushBack(wave.Enemies, new DefenseEnemy.Rocketeer {
|
||||
Amount = BoundBy(nr - 1, 1, 20),
|
||||
Inventory = [Bow, RandomElement([Arrow, FireArrow, BombArrow])],
|
||||
Position = pos_sky
|
||||
});
|
||||
return wave;
|
||||
}
|
||||
|
||||
// The attackers should go for flagpoles.
|
||||
public func GiveRandomAttackTarget(object attacker)
|
||||
{
|
||||
return FindObject(Find_Category(C4D_Structure), Find_Func("IsFlagpole"), Find_Hostile(attacker->GetController()), Sort_Random());
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
TeamAttackers=Angreiffer
|
||||
TeamDefenders=Verteidiger
|
||||
PlayerAttackers=Angreiffer
|
||||
MsgWave=Angriff!
|
|
@ -0,0 +1,4 @@
|
|||
TeamAttackers=Attackers
|
||||
TeamDefenders=Defenders
|
||||
PlayerAttackers=Attackers
|
||||
MsgWave=Attack!
|
|
@ -0,0 +1,62 @@
|
|||
// Base material for the player.
|
||||
|
||||
global func GivePlayerBaseMaterial(int plr)
|
||||
{
|
||||
var base_mats = [
|
||||
// Clonks & health.
|
||||
[Clonk, 20, 10],
|
||||
[Bread, 20, 10],
|
||||
// Materials & mining.
|
||||
[Wood, 16, 8],
|
||||
[Metal, 16, 8],
|
||||
[Rock, 16, 8],
|
||||
[Cloth, 8, 4],
|
||||
[Loam, 8, 4],
|
||||
[Firestone, 8, 4],
|
||||
[Dynamite, 8, 4],
|
||||
// Essential tools.
|
||||
[Shovel, 4, 4],
|
||||
[Hammer, 2, 2],
|
||||
[Axe, 2, 2],
|
||||
[Pickaxe, 2, 2],
|
||||
// Additional tools.
|
||||
[Barrel, 2, 2],
|
||||
[MetalBarrel, 2, 2],
|
||||
[Bucket, 2, 2],
|
||||
[Torch, 2, 2],
|
||||
[Pipe, 2, 2],
|
||||
[WallKit, 1, 1],
|
||||
// Advanced tools.
|
||||
[Ropeladder, 2, 1],
|
||||
[GrappleBow, 2, 1],
|
||||
[Balloon, 2, 1],
|
||||
[TeleGlove, 1, 1],
|
||||
[WindBag, 1, 1],
|
||||
[Boompack, 1, 1],
|
||||
// Weapons.
|
||||
[Bow, 2, 1],
|
||||
[Arrow, 8, 8],
|
||||
[Shield, 2, 1],
|
||||
[Javelin, 2, 1],
|
||||
[Club, 2, 1],
|
||||
[Sword, 2, 1],
|
||||
// Advanced weapons.
|
||||
[FireArrow, 2, 2],
|
||||
[BombArrow, 2, 2],
|
||||
[Blunderbuss, 2, 1],
|
||||
[LeadBullet, 4, 4],
|
||||
[GrenadeLauncher, 1, 1],
|
||||
[IronBomb, 4, 4],
|
||||
[SmokeBomb, 2, 2],
|
||||
[Lantern, 2, 2],
|
||||
[Catapult, 1, 1],
|
||||
[PowderKeg, 4, 1],
|
||||
[Cannon, 1, 1]
|
||||
];
|
||||
for (var mat in base_mats)
|
||||
{
|
||||
DoBaseMaterial(plr, mat[0], mat[1]);
|
||||
DoBaseProduction(plr, mat[0], mat[2]);
|
||||
}
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// Add energy bar and hitpoints to flagpoles.
|
||||
|
||||
#appendto Flagpole
|
||||
|
||||
public func Initialize()
|
||||
{
|
||||
AddEnergyBar();
|
||||
return _inherited(...);
|
||||
}
|
||||
|
||||
local HitPoints = 400;
|
|
@ -0,0 +1,19 @@
|
|||
// Add no friendly fire to these objects.
|
||||
|
||||
#appendto Flagpole
|
||||
|
||||
public func Construction()
|
||||
{
|
||||
// Notify friendly fire rule.
|
||||
GameCallEx("OnCreationRuleNoFF", this);
|
||||
return _inherited(...);
|
||||
}
|
||||
|
||||
public func Destruction()
|
||||
{
|
||||
// Notify friendly fire rule.
|
||||
GameCallEx("OnDestructionRuleNoFF", this);
|
||||
return _inherited(...);
|
||||
}
|
||||
|
||||
local HasNoFriendlyFire = true;
|
|
@ -0,0 +1,12 @@
|
|||
[Teams]
|
||||
|
||||
[Team]
|
||||
id=1
|
||||
Name=$TeamDefenders$
|
||||
Color=4294180864
|
||||
|
||||
[Team]
|
||||
id=2
|
||||
Name=$TeamAttackers$
|
||||
Color=4278241280
|
||||
MaxPlayer=1
|
|
@ -0,0 +1,2 @@
|
|||
DE:König des Hügels
|
||||
US:King of the Hill
|
Loading…
Reference in New Issue