openclonk/planet/Objects.ocd/Items.ocd/Tools.ocd/DynamiteBox.ocd/Igniter.ocd/Script.c

117 lines
2.3 KiB
C
Raw Normal View History

/**
Dynamite Igniter
Can be used to ignite dynamite from a distance.
@author Newton
*/
2010-02-12 23:33:00 +00:00
#include DynamiteBox
local ignited;
local dynamite_sticks;
local wires;
/*-- Engine Callbacks --*/
func Hit()
2010-02-12 23:33:00 +00:00
{
Sound("Hits::Materials::Metal::DullMetalHit?");
2010-02-12 23:33:00 +00:00
}
// Only the main dynamite box is stored.
public func SaveScenarioObject() { return false; }
/*-- Callbacks --*/
2010-02-12 23:33:00 +00:00
public func OnFuseFinished()
{
if (Contained() != nil)
return ResetClonk(Contained());
return RemoveObject();
}
2010-02-12 23:33:00 +00:00
/*-- Usage --*/
public func HoldingEnabled() { return true; }
2010-02-12 23:33:00 +00:00
public func ControlUse(object clonk, int x, int y)
{
if (clonk->GetAction() != "Walk")
return true;
if (ignited)
return true;
ignited = true;
// The clonk has to stand.
2010-02-12 23:33:00 +00:00
clonk->SetAction("Stand");
clonk->SetXDir(0);
var ignite_time = 40;
clonk->PlayAnimation("DoIgnite", CLONK_ANIM_SLOT_Arms, Anim_Linear(0, 0, clonk->GetAnimationLength("DoIgnite"), ignite_time, ANIM_Hold), Anim_Const(1000));
PlayAnimation("Ignite", 1, Anim_Linear(0, 0, GetAnimationLength("Ignite"), ignite_time, ANIM_Hold));
ScheduleCall(this, "Ignite", ignite_time, 1, clonk);
2010-02-12 23:33:00 +00:00
return true;
}
public func Ignite(object clonk)
2010-02-12 23:33:00 +00:00
{
if (wires[0])
wires[0]->StartFusing(this);
else
for (var obj in FindObjects(Find_Category(C4D_StaticBack), Find_Func("IsFuse"), Find_ActionTargets(this)))
obj->~StartFusing(this);
ScheduleCall(this, "ResetClonk", 12, 1, clonk);
return;
}
2010-02-12 23:33:00 +00:00
public func ResetClonk(object clonk)
{
// Reset animation of the clonk.
clonk->StopAnimation(clonk->GetRootAnimation(10));
2010-02-12 23:33:00 +00:00
clonk->SetAction("Walk");
clonk->DetachObject(this);
// Reset animation of the igniter and remove it.
StopAnimation(GetRootAnimation(1));
RemoveObject();
return;
2010-02-12 23:33:00 +00:00
}
/*-- Production --*/
public func IsTool() { return true; }
2015-12-27 22:24:27 +00:00
public func IsChemicalProduct() { return false; }
/*-- Display --*/
public func GetCarryMode()
{
return CARRY_BothHands;
}
public func GetCarryPhase() { return 250; }
public func GetCarryTransform()
{
if (ignited)
return Trans_Mul(Trans_Rotate(0, 1), Trans_Translate(-1000));
}
public func GetCarrySpecial()
{
if (ignited)
return "pos_hand2";
}
func Definition(def)
{
SetProperty("PictureTransformation",Trans_Mul(Trans_Rotate(-25, 1, 0, 0), Trans_Rotate(40, 0, 1, 0)), def);
}
/*-- Properties --*/
local Name = "$Name$";
Merge branch 'norefs' Conflicts: planet/Melees.c4f/Ruins.c4s/ObjectFade.c4d/Script.c planet/Objects.c4d/Goals.c4d/KingOfTheHill.c4d/Script.c planet/Objects.c4d/Goals.c4d/LastManStanding.c4d/Relaunch.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/BlackPowder.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Coal.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Earth.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Firestone.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Gold.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Ice.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Loam.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Metal.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Ore.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Rock.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Snow.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Sulphur.c4d/Script.c planet/Objects.c4d/Items.c4d/Resources.c4d/Wood.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Axe.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Balloon.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Barrel.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Boompack.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/CableReel.c4d/PowerLine.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/CableReel.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Dynamite.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/DynamiteBox.c4d/Fuse.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/DynamiteBox.c4d/Igniter.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/DynamiteBox.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/GrappleBow.c4d/Hook.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/GrappleBow.c4d/Rope.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/GrappleBow.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Hammer.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/JarOfWinds.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/OrbOfTelekinesis.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Pickaxe.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/PowderKeg.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Ropeladder.c4d/LadderGrabber.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Ropeladder.c4d/LadderSegment.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Ropeladder.c4d/Script.c planet/Objects.c4d/Items.c4d/Tools.c4d/Shovel.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Bow.c4d/Arrow.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Bow.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Club.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Javelin.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Musket.c4d/Ammo.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Musket.c4d/Script.c planet/Objects.c4d/Items.c4d/Weapons.c4d/Shield.c4d/Script.c planet/Objects.c4d/Vehicles.c4d/Cannon.c4d/Script.c planet/Objects.c4d/Vehicles.c4d/Lorry.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/FlagGoal.c4d/Flag.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/FlagGoal.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/MenuDeco.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/ObjectRestorer.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/TutGuide.c4d/Script.c planet/Tutorial.c4f/Tutorial.c4d/TutorialGoal.c4d/Script.c planet/Tutorial.c4f/Tutorial03.c4s/ShootTheTargets.c4d/Script.c src/game/object/C4Def.h
2010-09-11 17:30:45 +00:00
local Description = "$Description$";
local Collectible = true;