openclonk/planet/Objects.ocd/Structures.ocd/Chest.ocd/Script.c

92 lines
1.8 KiB
C
Raw Normal View History

2010-03-26 11:42:05 +00:00
/*
Chest
Author: Maikel
Storage for items.
*/
#include Library_Structure
2012-05-07 18:27:46 +00:00
local is_open;
2011-10-01 15:39:59 +00:00
protected func Construction()
2010-06-01 01:52:57 +00:00
{
2012-05-07 18:27:46 +00:00
PlayAnimation("Open", 1, Anim_Linear(0, 0, 1, 20, ANIM_Hold), Anim_Const(1000));
SetProperty("MeshTransformation",Trans_Rotate(RandomX(20,80),0,1,0));
2012-05-07 18:27:46 +00:00
is_open = false;
2011-10-14 06:22:10 +00:00
return _inherited(...);
2010-06-01 01:52:57 +00:00
}
/*-- Contents --*/
public func IsContainer() { return true; }
2012-04-29 13:29:10 +00:00
public func IsInteractable() { return true; }
private func MaxContentsCount()
2010-03-26 11:42:05 +00:00
{
return 50;
2010-03-26 11:42:05 +00:00
}
public func GetInteractionMetaInfo(object clonk, int num)
{
if (!is_open)
return { Description = "$MsgOpen$" };
return { Description = "$MsgClose$" };
}
2012-04-29 13:29:10 +00:00
// Open contentsmenu via interaction
public func Interact(object clonk, int mode)
{
2012-05-07 18:27:46 +00:00
// Interaction does the same as the content control.
clonk->ObjectControl(clonk->GetOwner(), CON_Contents);
2012-04-29 13:29:10 +00:00
}
protected func RejectCollect()
2010-06-01 01:52:57 +00:00
{
if (ContentsCount() >= this->MaxContentsCount())
return true;
return false;
}
2010-06-01 01:52:57 +00:00
public func OnContentMenuOpened()
{
return Open();
}
public func OnContentMenuClosed()
{
return Close();
}
private func Open()
{
2012-05-07 18:27:46 +00:00
if (is_open)
return;
is_open = true;
PlayAnimation("Open", 5, Anim_Linear(0, 0, GetAnimationLength("Open"), 22, ANIM_Hold), Anim_Const(1000));
Sound("ChestOpen");
}
private func Close()
{
2012-05-07 18:27:46 +00:00
if (!is_open)
return;
is_open = false;
2011-10-01 15:39:59 +00:00
PlayAnimation("Close", 5, Anim_Linear(0, 0, GetAnimationLength("Close"), 15, ANIM_Hold), Anim_Const(1000));
Sound("ChestClose");
2010-06-01 01:52:57 +00:00
}
public func NoConstructionFlip() { return true; }
protected func Definition(def)
2010-03-26 11:42:05 +00:00
{
2012-05-07 18:27:46 +00:00
SetProperty("PictureTransformation", Trans_Mul(Trans_Translate(0,-3000,-5000), Trans_Rotate(-30,1,0,0), Trans_Rotate(30,0,1,0), Trans_Translate(1000,1,0)),def);
}
local Name = "$Name$";
local Description = "$Description$";
local ContainBlast = true;
local HitPoints = 50;