forked from Mirrors/openclonk
Krakatoa: new goal and intro sequence
parent
3e48809c20
commit
e715fd4e70
|
@ -2,7 +2,7 @@
|
||||||
Icon=36
|
Icon=36
|
||||||
Title=AcidRift
|
Title=AcidRift
|
||||||
Version=5,4,0,0
|
Version=5,4,0,0
|
||||||
Difficulty=50
|
Difficulty=60
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
Definition1=Objects.ocd
|
Definition1=Objects.ocd
|
||||||
|
|
|
@ -41,8 +41,6 @@ protected func OnGoalsFulfilled()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public func UpdatePicture() { Log("bla"); }
|
|
||||||
|
|
||||||
|
|
||||||
/*-- Player Initialization --*/
|
/*-- Player Initialization --*/
|
||||||
|
|
||||||
|
|
|
@ -37,15 +37,15 @@ Difficulty: Medium (40)
|
||||||
Duration: 60 - 90 minutes
|
Duration: 60 - 90 minutes
|
||||||
Description: Players have to transport a cannon up a chine carved out by a waterfall.
|
Description: Players have to transport a cannon up a chine carved out by a waterfall.
|
||||||
|
|
||||||
[Acid Rift]
|
|
||||||
Difficulty: Medium (50)
|
|
||||||
Duration: 60 - 100 minutes
|
|
||||||
Description: A rift is slowly filled by acid rain, gems need to be mined from an acid lake.
|
|
||||||
|
|
||||||
[Conquest of Krakatoa]
|
[Conquest of Krakatoa]
|
||||||
|
Difficulty: Medium (50)
|
||||||
|
Duration: 60 - 120 minutes
|
||||||
|
Description: A large volcano needs to be conquered and gold needs to be extracted from its core.
|
||||||
|
|
||||||
|
[Acid Rift]
|
||||||
Difficulty: Medium (60)
|
Difficulty: Medium (60)
|
||||||
Duration: 60 - 100 minutes
|
Duration: 60 - 100 minutes
|
||||||
Description: A large volcano needs to be conquered and gold needs to be extracted from its core.
|
Description: A rift is slowly filled by acid rain, gems need to be mined from an acid lake.
|
||||||
|
|
||||||
[Gem Grabbers]
|
[Gem Grabbers]
|
||||||
Difficulty: Hard (80)
|
Difficulty: Hard (80)
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,8 +1,6 @@
|
||||||
/**
|
/**
|
||||||
Krakatoa
|
Krakatoa's Krach
|
||||||
A Volcano with lot's of small islands and chasms.
|
A Volcano with one main chasm and a few side chasms.
|
||||||
|
|
||||||
TODO: Scaling with mapsize.
|
|
||||||
|
|
||||||
@author Maikel
|
@author Maikel
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,10 +2,11 @@
|
||||||
Icon=23
|
Icon=23
|
||||||
Title=Krakatoa
|
Title=Krakatoa
|
||||||
Version=5,4,0,0
|
Version=5,4,0,0
|
||||||
Difficulty=60
|
Difficulty=50
|
||||||
|
|
||||||
[Definitions]
|
[Definitions]
|
||||||
Definition1=Objects.ocd
|
Definition1=Objects.ocd
|
||||||
|
Definition2=Decoration.ocd\Misc.ocd\AltMaterials.ocd
|
||||||
|
|
||||||
[Player1]
|
[Player1]
|
||||||
Crew=Clonk=2
|
Crew=Clonk=2
|
||||||
|
|
|
@ -1,23 +1,29 @@
|
||||||
/**
|
/**
|
||||||
Krakatoa
|
Krakatoa's Krach
|
||||||
Players are challenged to build up a settlement on top of an active volcano.
|
Players are challenged to build up a settlement on top of an active volcano
|
||||||
The goal is to expand your reign by building flags to cover the landscape.
|
after their airplane crashed. They need to gather gold from the core of the
|
||||||
Also you need to gather some gold to show your skills of entering a volcano.
|
volcano to show your skills of entering a volcano. The gold bars need to be
|
||||||
|
transported out by a newly constructed airplane.
|
||||||
|
|
||||||
@author Maikel
|
@author Maikel
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
static volcano_location;
|
// Whether the intro has been initialized.
|
||||||
static plr_init;
|
static intro_init;
|
||||||
|
|
||||||
protected func Initialize()
|
protected func Initialize()
|
||||||
{
|
{
|
||||||
// Create expansion and wealth goal.
|
// Goal: construct an airplane and fill it with gold bars.
|
||||||
var goal = CreateObject(Goal_Wealth);
|
var goal = CreateObject(Goal_Script);
|
||||||
goal->SetWealthGoal(100 + 100 * SCENPAR_Difficulty);
|
// Add an effect to check whether the goal is fulfilled.
|
||||||
goal = CreateObject(Goal_Expansion);
|
var effect = AddEffect("GoalCheck", nil, 100, 2, nil);
|
||||||
goal->SetExpansionGoal(200 + 50 * SCENPAR_Difficulty);
|
effect.goal = goal;
|
||||||
|
effect.barcnt = 8 * SCENPAR_Difficulty;
|
||||||
|
// Set goal name and description.
|
||||||
|
goal.Name = "$GoalName$";
|
||||||
|
goal.Description = Format("$GoalDesc$", effect.barcnt);
|
||||||
|
|
||||||
|
|
||||||
// Some rules.
|
// Some rules.
|
||||||
CreateObject(Rule_TeamAccount);
|
CreateObject(Rule_TeamAccount);
|
||||||
|
@ -43,16 +49,10 @@ protected func Initialize()
|
||||||
|
|
||||||
protected func InitializePlayer(int plr)
|
protected func InitializePlayer(int plr)
|
||||||
{
|
{
|
||||||
// Move all crew to start position.
|
// Set zoom range.
|
||||||
var index = 0, crew;
|
SetPlayerZoomByViewRange(plr, 500, nil, PLRZOOM_Direct | PLRZOOM_LimitMax);
|
||||||
while (crew = GetCrew(plr, index++))
|
SetPlayerViewLock(plr, true);
|
||||||
crew->SetPosition(volcano_location[0] + RandomX(-5, 5), volcano_location[1]);
|
|
||||||
// Give only the first joined player some wealth.
|
|
||||||
if (!plr_init)
|
|
||||||
{
|
|
||||||
SetWealth(plr, 50);
|
|
||||||
plr_init = true;
|
|
||||||
}
|
|
||||||
// Give the player its knowledge and base materials.
|
// Give the player its knowledge and base materials.
|
||||||
GivePlayerBasicKnowledge(plr);
|
GivePlayerBasicKnowledge(plr);
|
||||||
GivePlayerPumpingKnowledge(plr);
|
GivePlayerPumpingKnowledge(plr);
|
||||||
|
@ -64,7 +64,7 @@ protected func InitializePlayer(int plr)
|
||||||
GivePlayerElementaryBaseMaterial(plr);
|
GivePlayerElementaryBaseMaterial(plr);
|
||||||
|
|
||||||
// Give crew some equipment.
|
// Give crew some equipment.
|
||||||
var index = 0;
|
var index = 0, crew;
|
||||||
while (crew = GetCrew(plr, index++))
|
while (crew = GetCrew(plr, index++))
|
||||||
{
|
{
|
||||||
if (index == 1)
|
if (index == 1)
|
||||||
|
@ -73,38 +73,34 @@ protected func InitializePlayer(int plr)
|
||||||
crew->CreateContents(Axe);
|
crew->CreateContents(Axe);
|
||||||
crew->CreateContents(Shovel);
|
crew->CreateContents(Shovel);
|
||||||
}
|
}
|
||||||
// Harsh zoom range.
|
|
||||||
SetPlayerZoomByViewRange(plr, 5000, nil, PLRZOOM_Direct | PLRZOOM_LimitMax);
|
// Initialize the intro sequence if not yet started.
|
||||||
SetPlayerViewLock(plr, true);
|
if (!intro_init)
|
||||||
|
{
|
||||||
|
StartSequence("Intro", 0, SCENPAR_Difficulty);
|
||||||
|
intro_init = true;
|
||||||
|
// Give only the first joined player some wealth.
|
||||||
|
SetWealth(plr, 75 - 25 * SCENPAR_Difficulty);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns a suitable location to start the conquest.
|
|
||||||
private func FindVolcanoLocation()
|
/*-- Goal Check --*/
|
||||||
|
|
||||||
|
global func FxGoalCheckTimer(object target, proplist effect)
|
||||||
{
|
{
|
||||||
// Default to the middle of the map.
|
// Complete goal if there is an airplane with the required amount of gold bars.
|
||||||
var wdt = LandscapeWidth();
|
for (var plane in FindObjects(Find_ID(Plane), Find_Not(Find_Func("IsBroken"))))
|
||||||
var hgt = LandscapeHeight();
|
|
||||||
volcano_location = [wdt / 2, hgt / 2];
|
|
||||||
var x, y, cnt = 1000;
|
|
||||||
for (var i = cnt; i > 0; i--)
|
|
||||||
{
|
{
|
||||||
// Random x coordinate, biased to the middle of the map.
|
if (plane->ContentsCount(GoldBar) >= effect.barcnt)
|
||||||
var var_wdt = wdt * (300 - 200 * i / cnt) / 400;
|
|
||||||
var x = wdt / 2 + RandomX(-var_wdt, var_wdt);
|
|
||||||
var y = 0;
|
|
||||||
// Find corresponding y coordinate.
|
|
||||||
while (!GBackSolid(x, y) && y < 9 * hgt / 10)
|
|
||||||
y += 2;
|
|
||||||
// Check if surface is relatively flat (check for flatter surfaces first).
|
|
||||||
var d = i / 150 + 1;
|
|
||||||
if (!GBackSolid(x+d, y-4) && !GBackSolid(x-d, y-4) && GBackSolid(x+d, y+4) && GBackSolid(x-d, y+4))
|
|
||||||
{
|
{
|
||||||
volcano_location = [x, y - 10];
|
if (effect.goal)
|
||||||
break;
|
effect.goal->Fulfill();
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -182,17 +178,6 @@ private func InitAnimals()
|
||||||
|
|
||||||
private func InitMaterial(int amount)
|
private func InitMaterial(int amount)
|
||||||
{
|
{
|
||||||
// Find start location and place lorry plus extras there.
|
|
||||||
FindVolcanoLocation();
|
|
||||||
var lorry = CreateObject(Lorry);
|
|
||||||
lorry->SetPosition(volcano_location[0], volcano_location[1]);
|
|
||||||
lorry->CreateContents(Loam, 5);
|
|
||||||
lorry->CreateContents(Bread, 5);
|
|
||||||
lorry->CreateContents(Wood, 8);
|
|
||||||
lorry->CreateContents(Rock, 4);
|
|
||||||
lorry->CreateContents(Metal, 4);
|
|
||||||
for (var i = 0; i < 5; i++)
|
|
||||||
lorry->CreateContents(Barrel)->PutLiquid("Water", 300);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# Goal name and description
|
||||||
|
GoalName=Gold Transport
|
||||||
|
GoalDesc=Construct an airplane and load it with %d gold bars to transport them to a safe location.
|
||||||
|
|
||||||
# Scenario parameters: difficulty
|
# Scenario parameters: difficulty
|
||||||
Difficulty=Schwierigkeit
|
Difficulty=Schwierigkeit
|
||||||
DescDifficulty=Setzt die Schwierigkeit dieser Runde.
|
DescDifficulty=Setzt die Schwierigkeit dieser Runde.
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# Goal name and description
|
||||||
|
GoalName=Gold Transport
|
||||||
|
GoalDesc=Construct an airplane and load it with %d gold bars to transport them to a safe location.
|
||||||
|
|
||||||
# Scenario parameters: difficulty
|
# Scenario parameters: difficulty
|
||||||
Difficulty=Difficulty
|
Difficulty=Difficulty
|
||||||
DescDifficulty=Sets this round's difficulty.
|
DescDifficulty=Sets this round's difficulty.
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
// The airplane acts as a container for gold bars and starting material.
|
||||||
|
|
||||||
|
#appendto Plane
|
||||||
|
|
||||||
|
|
||||||
|
public func IsContainer() { return true; }
|
||||||
|
|
||||||
|
private func MaxContentsCount()
|
||||||
|
{
|
||||||
|
return 25;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected func RejectCollect(id object_id, object obj)
|
||||||
|
{
|
||||||
|
// Objects can collected if gold bar and not above max contents count.
|
||||||
|
if (ContentsCount() < MaxContentsCount() && object_id == GoldBar)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The plane may be broken, which prevents entering it.
|
||||||
|
local broken;
|
||||||
|
|
||||||
|
public func MakeBroken()
|
||||||
|
{
|
||||||
|
broken = true;
|
||||||
|
SetEntrance(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func IsBroken()
|
||||||
|
{
|
||||||
|
return broken;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func ActivateEntrance(object clonk)
|
||||||
|
{
|
||||||
|
if (IsBroken())
|
||||||
|
return;
|
||||||
|
return _inherited(clonk, ...);
|
||||||
|
}
|
|
@ -0,0 +1,192 @@
|
||||||
|
// Intro sequence for Krakatoa: Players crash with an airplane on the slope of the volcano.
|
||||||
|
|
||||||
|
#appendto Sequence
|
||||||
|
|
||||||
|
public func Intro_Init(int difficulty)
|
||||||
|
{
|
||||||
|
// Set wind to the left, so that less lava is on the starting place.
|
||||||
|
SetWind(-50 - Random(50));
|
||||||
|
|
||||||
|
// Determine crater lava height.
|
||||||
|
var lava_y = 0;
|
||||||
|
while (!GBackLiquid(LandscapeWidth() / 2, lava_y) && lava_y < LandscapeHeight())
|
||||||
|
lava_y++;
|
||||||
|
|
||||||
|
// Create an airplane with pilot and fly it towards the peak.
|
||||||
|
this.airplane = CreateObject(Plane, LandscapeWidth() / 2 - 564, lava_y - 176);
|
||||||
|
this.pilot = CreateObject(Clonk, LandscapeWidth() / 2 - 564, lava_y - 176);
|
||||||
|
this.pilot->SetName("$PilotName$");
|
||||||
|
this.pilot->SetSkin(2);
|
||||||
|
this.pilot->Enter(this.airplane);
|
||||||
|
this.pilot->SetAction("Walk");
|
||||||
|
this.pilot->SetDir(DIR_Right);
|
||||||
|
this.pilot->SetColor(0xff0000aa);
|
||||||
|
this.airplane->FaceRight();
|
||||||
|
this.airplane->StartInstantFlight(90, 15);
|
||||||
|
this.airplane->SetXDir(12);
|
||||||
|
this.airplane->SetYDir(-1);
|
||||||
|
this.airplane->MakeInvincible();
|
||||||
|
this.airplane.intro_seq = this;
|
||||||
|
// Fill the airplane with some materials.
|
||||||
|
this.difficulty = difficulty;
|
||||||
|
if (difficulty <= 2)
|
||||||
|
{
|
||||||
|
this.airplane->CreateContents(Loam, 5);
|
||||||
|
this.airplane->CreateContents(Bread, 5);
|
||||||
|
this.airplane->CreateContents(Wood, 8);
|
||||||
|
this.airplane->CreateContents(Rock, 4);
|
||||||
|
this.airplane->CreateContents(Metal, 4);
|
||||||
|
if (difficulty <= 1)
|
||||||
|
{
|
||||||
|
this.airplane->CreateContents(Pickaxe, 2);
|
||||||
|
for (var i = 0; i < 5; i++)
|
||||||
|
this.airplane->CreateContents(Barrel)->PutLiquid("Water", 300);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_Start()
|
||||||
|
{
|
||||||
|
return ScheduleNext(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_JoinPlayer(int plr)
|
||||||
|
{
|
||||||
|
// Move player's crew into the plane.
|
||||||
|
var j = 0, crew;
|
||||||
|
while (crew = GetCrew(plr, j++))
|
||||||
|
{
|
||||||
|
crew->Enter(this.airplane);
|
||||||
|
crew->SetAction("Walk");
|
||||||
|
}
|
||||||
|
// Increase zoom.
|
||||||
|
SetPlayerZoomByViewRange(plr, 700, nil, PLRZOOM_Set | PLRZOOM_LimitMax);
|
||||||
|
SetViewTarget(this.pilot);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_1()
|
||||||
|
{
|
||||||
|
// Prepare players for drop.
|
||||||
|
MessageBoxAll("$MsgNearVolcano$", this.pilot, true);
|
||||||
|
return ScheduleNext(108);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_2()
|
||||||
|
{
|
||||||
|
// Determine crater lava height.
|
||||||
|
var lava_y = 0;
|
||||||
|
while (!GBackLiquid(LandscapeWidth() / 2, lava_y) && lava_y < LandscapeHeight())
|
||||||
|
lava_y++;
|
||||||
|
// Launch a big eruption from this location.
|
||||||
|
AddEffect("BigEruption", nil, 100, 1, nil, nil, LandscapeWidth() / 2, lava_y - 2);
|
||||||
|
return ScheduleNext(12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_3()
|
||||||
|
{
|
||||||
|
// Message about volcano eruption.
|
||||||
|
MessageBoxAll("$MsgEruption$", this.pilot, true);
|
||||||
|
return ScheduleNext(23);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_4()
|
||||||
|
{
|
||||||
|
// Determine crater lava height.
|
||||||
|
var lava_y = 0;
|
||||||
|
while (!GBackLiquid(LandscapeWidth() / 2, lava_y) && lava_y < LandscapeHeight())
|
||||||
|
lava_y++;
|
||||||
|
// Launch the killing chunk.
|
||||||
|
this.chunk = CreateObject(LavaChunk, LandscapeWidth() / 2, lava_y);
|
||||||
|
this.chunk->SetSpeed(36, -100);
|
||||||
|
return ScheduleNext(28);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_5()
|
||||||
|
{
|
||||||
|
// Explide lava chunk at plane location.
|
||||||
|
this.chunk->Explode(36);
|
||||||
|
// Destroy and fling the plane.
|
||||||
|
this.airplane->SetMeshMaterial("CrashedAirplane");
|
||||||
|
this.airplane->MakeBroken();
|
||||||
|
this.airplane->CancelFlight();
|
||||||
|
RemoveEffect("IntPlane", this.airplane);
|
||||||
|
this.airplane->SetRDir(10);
|
||||||
|
this.airplane->SetSpeed(46, -56);
|
||||||
|
// Forward plane hit call to sequence.
|
||||||
|
this.plane_hitcall = this.airplane.Hit;
|
||||||
|
this.airplane.Hit = this.Intro_PlaneHit;
|
||||||
|
// Eject message.
|
||||||
|
MessageBoxAll("$MsgEject$", this.pilot, true);
|
||||||
|
SetViewTarget(this.airplane);
|
||||||
|
return ScheduleNext(24);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_6()
|
||||||
|
{
|
||||||
|
// Let pilot get away in boompack.
|
||||||
|
this.pilot->Exit();
|
||||||
|
var boompack = this.pilot->CreateObject(Boompack);
|
||||||
|
boompack->SetFuel(1000);
|
||||||
|
boompack->SetDirectionDeviation(8);
|
||||||
|
boompack->SetControllable(false);
|
||||||
|
boompack->Launch(40, this.pilot);
|
||||||
|
ScheduleCall(boompack, "RemoveObject", 100);
|
||||||
|
ScheduleCall(this.pilot, "RemoveObject", 100);
|
||||||
|
// Rest of intro will be triggered on plane hit.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_PlaneHit()
|
||||||
|
{
|
||||||
|
// Plane hit ground! Continue sequence.
|
||||||
|
Sound("PlaneCrash", true);
|
||||||
|
var particles = Particles_Smoke(true);
|
||||||
|
particles.Size = PV_Linear(PV_Random(20, 60), PV_Random(50, 100));
|
||||||
|
CreateParticle("Smoke", PV_Random(-30,30), PV_Random(-30,30), PV_Random(-60, 60), PV_Random(-20,0), PV_Random(200, 500), particles, 20);
|
||||||
|
particles.Size = PV_Linear(PV_Random(50, 80), PV_Random(100, 200));
|
||||||
|
CreateParticle("Smoke", PV_Random(-30,30), PV_Random(-30,30), PV_Random(-20, 20), PV_Random(-20,0), PV_Random(100, 200), particles, 20);
|
||||||
|
for (var i = 0; i < GetPlayerCount(C4PT_User); ++i)
|
||||||
|
{
|
||||||
|
var plr = GetPlayerByIndex(i, C4PT_User);
|
||||||
|
var icrew = 0, crew;
|
||||||
|
while (crew = GetCrew(plr, icrew++))
|
||||||
|
{
|
||||||
|
crew->Exit(0,-5, 0, 1 + Random(2), Random(3) - 5);
|
||||||
|
crew->SetAction("Tumble");
|
||||||
|
crew->ClearInvincible();
|
||||||
|
crew->DoEnergy(-this.intro_seq.difficulty * RandomX(5, 8));
|
||||||
|
crew->MakeInvincible();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Stop plane movement and rotate for crash effect.
|
||||||
|
SetXDir(0);
|
||||||
|
this.Hit = this.intro_seq.plane_hit;
|
||||||
|
this.MeshTransformation=Trans_Mul(Trans_Rotate(10,0,2,1), Plane.MeshTransformation);
|
||||||
|
this.intro_seq->ScheduleNext(50);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_7()
|
||||||
|
{
|
||||||
|
// Message from first clonk to other crew members.
|
||||||
|
for (var i = 0; i < GetPlayerCount(C4PT_User); ++i)
|
||||||
|
{
|
||||||
|
var plr = GetPlayerByIndex(i, C4PT_User);
|
||||||
|
MessageBox("$MsgConstructPlane$", GetCrew(plr, 0), GetCrew(plr, 0), plr, true);
|
||||||
|
}
|
||||||
|
return ScheduleNext(12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_8()
|
||||||
|
{
|
||||||
|
return Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public func Intro_Stop()
|
||||||
|
{
|
||||||
|
// Reset player zoom.
|
||||||
|
SetPlayerZoomByViewRange(NO_OWNER, 500, nil, PLRZOOM_Set | PLRZOOM_LimitMax);
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Pilot Name
|
||||||
|
PilotName=Kapit<69>n Wilbur
|
||||||
|
|
||||||
|
# Intro sequence messages
|
||||||
|
MsgNearVolcano=We are almost at the volcano's crater, did you know its core is made out of gold?
|
||||||
|
MsgEruption=Oh no! The volcano erupts, prepare for emergency landing.
|
||||||
|
MsgEject=We have been hit ... eject! eject!
|
||||||
|
MsgConstructPlane=Seems our pilot is gone and the plane is broken. Let's construct a new plane, fill it with gold bars and get out of here.
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Pilot Name
|
||||||
|
PilotName=Captain Wilbur
|
||||||
|
|
||||||
|
# Intro sequence messages
|
||||||
|
MsgNearVolcano=We are almost at the volcano's crater, did you know its core is made out of gold?
|
||||||
|
MsgEruption=Oh no! The volcano erupts, prepare for emergency landing.
|
||||||
|
MsgEject=We have been hit ... eject! eject!
|
||||||
|
MsgConstructPlane=Seems our pilot is gone and the plane is broken. Let's construct a new plane, fill it with gold bars and get out of here.
|
|
@ -0,0 +1,12 @@
|
||||||
|
// The wall kit produces rock walls, because granite is indestructible.
|
||||||
|
|
||||||
|
#appendto WallKit
|
||||||
|
|
||||||
|
private func CreateBridge(object clonk, int x, int y)
|
||||||
|
{
|
||||||
|
var c = Offset2BridgeCoords(clonk, x, y);
|
||||||
|
x=clonk->GetX(); y=clonk->GetY();
|
||||||
|
DrawMaterialQuad("Rock-rock", x+c.x1-c.dx,y+c.y1-c.dy, x+c.x1+c.dx,y+c.y1+c.dy, x+c.x2+c.dx,y+c.y2+c.dy, x+c.x2-c.dx,y+c.y2-c.dy, DMQ_Bridge);
|
||||||
|
clonk->Sound("WallKitLock");
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -1,2 +1,2 @@
|
||||||
DE:Bezwingung des Krakataus
|
DE:Krakatau's Krach
|
||||||
US:Conquest of Krakatoa
|
US:Krakatoa's Krach
|
Loading…
Reference in New Issue