2010-11-24 16:47:09 +00:00
|
|
|
/*--
|
|
|
|
Scroll: Frostbolt
|
|
|
|
Author: Mimmo
|
|
|
|
|
|
|
|
Hurl a frozen bolt into your enemies.
|
|
|
|
--*/
|
|
|
|
|
|
|
|
|
|
|
|
public func ControlUse(object pClonk, int ix, int iy)
|
|
|
|
{
|
2012-04-12 09:48:23 +00:00
|
|
|
AddEffect("Frostbolt", nil, 100, 1, nil, GetID(), pClonk->GetOwner(), Angle(0,0,ix,iy),pClonk->GetX(), pClonk->GetY());
|
2011-10-12 21:09:22 +00:00
|
|
|
Sound("Fireball");
|
|
|
|
Sound("Fireball");
|
2010-11-24 16:47:09 +00:00
|
|
|
RemoveObject();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-23 13:35:16 +00:00
|
|
|
public func FxFrostboltStart(pTarget, effect, iTemp, owner, angle, x, y)
|
2010-11-24 16:47:09 +00:00
|
|
|
{
|
|
|
|
if(iTemp) return;
|
|
|
|
x+=Sin(angle, 10)+RandomX(-1, 1);
|
|
|
|
y+=-Cos(angle, 10)+RandomX(-1, 1);
|
2011-07-31 15:59:51 +00:00
|
|
|
effect.owner=owner;
|
|
|
|
effect.angle=angle;
|
|
|
|
effect.x=x;
|
|
|
|
effect.y=y;
|
2010-11-24 16:47:09 +00:00
|
|
|
}
|
|
|
|
|
2010-12-23 13:35:16 +00:00
|
|
|
public func FxFrostboltTimer(pTarget, effect, iEffectTime)
|
2010-11-24 16:47:09 +00:00
|
|
|
{
|
2011-07-31 15:59:51 +00:00
|
|
|
var angle=effect.angle;
|
|
|
|
var x=effect.x;
|
|
|
|
var y=effect.y;
|
2010-11-24 16:47:09 +00:00
|
|
|
|
|
|
|
if ( iEffectTime>67 ||
|
|
|
|
GBackSolid(x,y) ||
|
|
|
|
FindObject(
|
2011-07-31 15:59:51 +00:00
|
|
|
Find_Hostile(effect.owner),
|
2010-11-24 16:47:09 +00:00
|
|
|
Find_OCF(OCF_Alive),
|
|
|
|
Find_NoContainer(),
|
|
|
|
Find_Distance(16,x,y)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
{
|
2011-07-31 15:59:51 +00:00
|
|
|
CreateObject(Dynamite,x,y,effect.owner)->BlueExplode();
|
2012-11-15 21:07:21 +00:00
|
|
|
var dummy = CreateObject(Dummy,x,y,-1);
|
|
|
|
dummy->Sound("GlassShatter");
|
|
|
|
ScheduleCall(dummy, "RemoveObject", 36);
|
2010-11-24 16:47:09 +00:00
|
|
|
for(var i=0; i<=60;i++)
|
|
|
|
{
|
|
|
|
var r=Random(10)+Random(18);
|
2011-07-31 15:59:51 +00:00
|
|
|
DoBlueExplosion(x+Sin(i*6 ,r),y-Cos(i*6 ,r), 2+Random(3), nil, effect.owner, nil);
|
2010-11-24 16:47:09 +00:00
|
|
|
}
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
else if(iEffectTime < 70)
|
|
|
|
{
|
|
|
|
for(var i=0; i<3; i++)
|
|
|
|
CreateParticle("Air",x+Sin(angle,-i*2),y-Cos(angle,-i*2),Sin(Random(360),4),Cos(Random(360),4),RandomX(120,180),RGBa(100,100,100,70));
|
|
|
|
CreateParticle("AirIntake",x,y,Sin(Random(360),RandomX(5,13)),Cos(Random(360),RandomX(5,13)),RandomX(30,70),RGB(255,255,255));
|
|
|
|
angle+=Sin(iEffectTime*50,2)*8;
|
|
|
|
x+=Sin(angle, 9);
|
|
|
|
y+=-Cos(angle, 9);
|
2011-07-31 15:59:51 +00:00
|
|
|
effect.x=x;
|
|
|
|
effect.y=y;
|
2010-11-24 16:47:09 +00:00
|
|
|
for(var i=0;i<6;++i)
|
|
|
|
{
|
|
|
|
var c=HSL(128+Random(40), 200+Random(25), Random(100));
|
|
|
|
var rx=RandomX(-3, 3);
|
|
|
|
var ry=RandomX(-3, 3);
|
|
|
|
CreateParticle("Air", x+rx, y+ry, Sin(angle+180,6)+ry, -Cos(angle+180,6)+rx, 80+Random(20), c);
|
|
|
|
CreateParticle("MagicFire", x+rx, y+ry, Sin(angle+180,6)+ry, -Cos(angle+180,6)+rx, 20+Random(10), HSL(0,0,255));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
local Name = "$Name$";
|
|
|
|
local Description = "$Description$";
|
2011-01-02 22:17:47 +00:00
|
|
|
local Collectible = 1;
|