openclonk/planet/Tutorials.ocf/Tutorial08.ocs/System.ocg/DlgChief.c

117 lines
2.3 KiB
C

// A chief which tells you about the flood and the pump.
#appendto Dialogue
public func Dlg_Chief_Init(object clonk)
{
AddEffect("IntChief", clonk, 100, 5, this);
return true;
}
public func Dlg_Chief_1(object clonk)
{
var found_lorry = false;
for (var lorry in FindObjects(Find_ID(Lorry), Find_InRect(AbsX(0), AbsY(120), 320, 72)))
if (lorry.is_metal_lorry)
found_lorry = true;
var made_lorry_progress = false;
var elevator_case = FindObject(Find_ID(ElevatorCase), Find_AtRect(AbsX(282), AbsY(160), 20, 720));
if (elevator_case)
{
for (var lorry in elevator_case->FindObjects(Find_ID(Lorry), Find_AtPoint()))
if (lorry.is_metal_lorry)
made_lorry_progress = true;
}
if (found_lorry)
{
MessageBox("$DlgChiefLorry$", clonk, clonk);
SetDialogueProgress(8);
}
else if (made_lorry_progress)
{
MessageBox("$DlgChiefLorryUp$", clonk, dlg_target);
StopDialogue();
SetDialogueProgress(1);
}
else
{
MessageBox("$DlgChiefHello$", clonk, dlg_target);
}
return true;
}
public func Dlg_Chief_2(object clonk)
{
MessageBox("$DlgChiefReply$", clonk, clonk);
return true;
}
public func Dlg_Chief_3(object clonk)
{
MessageBox("$DlgChiefNoMetal$", clonk, dlg_target);
return true;
}
public func Dlg_Chief_4(object clonk)
{
MessageBox("$DlgChiefHelp$", clonk, clonk);
return true;
}
public func Dlg_Chief_5(object clonk)
{
MessageBox("$DlgChiefAppreciation$", clonk, dlg_target);
return true;
}
public func Dlg_Chief_6(object clonk)
{
MessageBox("$DlgChiefReward$", clonk, clonk);
return true;
}
public func Dlg_Chief_7(object clonk)
{
MessageBox("$DlgChiefMetal$", clonk, dlg_target);
StopDialogue();
SetDialogueProgress(1);
return true;
}
public func Dlg_Chief_8(object clonk)
{
MessageBox("$DlgChiefKeepLorry$", clonk, dlg_target);
StopDialogue();
SetDialogueProgress(9);
GameCall("OnGoalCompleted", clonk->GetOwner());
return true;
}
public func Dlg_Chief_9(object clonk)
{
MessageBox("$DlgChiefReally$", clonk, dlg_target);
StopDialogue();
SetDialogueProgress(9);
return true;
}
public func Dlg_Chief_Closed(object clonk)
{
GameCall("OnHasTalkedMineChief", clonk);
return true;
}
public func FxIntChiefStart(object target, proplist effect, int temp)
{
if (temp)
return FX_OK;
return FX_OK;
}
public func FxIntChiefTimer(object target, proplist effect, int time)
{
return FX_OK;
}