forked from Mirrors/openclonk
updated telekinesis
parent
2f2065f456
commit
b2f85fa743
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.6 KiB |
|
@ -11,7 +11,7 @@ Repeats=1
|
|||
GravityAcc=0
|
||||
VertexCount=1
|
||||
VertexY=20
|
||||
AlphaFade=40
|
||||
AlphaFade=35
|
||||
Additive=1
|
||||
RByV=3
|
||||
Attach=1
|
|
@ -7,9 +7,12 @@
|
|||
|
||||
#strict 2
|
||||
|
||||
local hz;
|
||||
local magic;
|
||||
|
||||
protected func Initialize()
|
||||
{
|
||||
magic=0;
|
||||
}
|
||||
|
||||
protected func HoldingEnabled() { return true; }
|
||||
|
@ -21,25 +24,35 @@ protected func ControlUseStart(object pClonk, ix, iy)
|
|||
|
||||
public func ControlUseHolding(object pClonk, ix, iy)
|
||||
{
|
||||
var target=FindObject(Find_NoContainer(),Find_Not(Find_OCF(OCF_Alive)),Find_Distance(25,ix,iy), Find_Distance(150,0,0), Find_Exclude(pClonk));
|
||||
if(magic==0 || GetEffect("Charge",this)) return 1;
|
||||
|
||||
//Magical particle effect
|
||||
if(Distance(GetX(),GetY(),GetX()+ix,GetY()+iy)<150 && pClonk->GetProcedure()== "WALK")
|
||||
{
|
||||
//CastParticles("Magic",1,3,ix,iy,30,90,RGB(0,230,255),RGB(0,0,255));
|
||||
//Objects which can be lifted by telekinesis
|
||||
var target=FindObject(Find_Category(C4D_Object),Find_NoContainer(),Find_Not(Find_OCF(OCF_Alive)),Find_Distance(25,ix,iy), Find_Distance(150,0,0), Find_Exclude(pClonk));
|
||||
|
||||
var partx=-(Sin(180-Angle(0,0,ix,iy), 100)/10);
|
||||
var party=-(Cos(180-Angle(0,0,ix,iy), 100)/10);
|
||||
if(Random(3)==1)CreateParticle("Magic",ix,iy,partx,party,50,RGB(0,220,250));
|
||||
}
|
||||
|
||||
if(target!=nil)
|
||||
{
|
||||
if(target!=nil && pClonk->GetProcedure()== "WALK")
|
||||
{
|
||||
//Magical particle effect
|
||||
if(Distance(GetX(),GetY(),GetX()+ix,GetY()+iy)<150)
|
||||
{
|
||||
var partx=-(Sin(180-Angle(0,0,ix,iy), 100)/10);
|
||||
var party=-(Cos(180-Angle(0,0,ix,iy), 100)/10);
|
||||
if(Random(3)==1)CreateParticle("Magic",ix,iy,partx,party,magic/10+50,RGB(0,220,250));
|
||||
}
|
||||
|
||||
//Don't mess around with underground objects. This stops you from triggering flints underground by pulling on them.
|
||||
if(target->Stuck()==1) return 1;
|
||||
|
||||
//magical ring effect
|
||||
CastParticles("MagicRing",1,0,ix,iy,170,175,RGB(0,230,255),RGB(0,100,255));
|
||||
//Magic Drain
|
||||
magic=magic-1;
|
||||
|
||||
//magical ring effect with frequency
|
||||
if(hz<2) hz=hz+1;
|
||||
if(hz>=2)
|
||||
{
|
||||
CastParticles("MagicRing",1,0,ix,iy,(magic*13)/50+100,(magic*13)/50+110,RGB(0,230,255),RGB(0,100,255));
|
||||
hz=0;
|
||||
}
|
||||
|
||||
var angle=Angle(target->GetX(),target->GetY(),pClonk->GetX()+ix,pClonk->GetY()+iy);
|
||||
var xspeed=Sin(180-angle,10);
|
||||
|
@ -60,9 +73,29 @@ public func ControlUseHolding(object pClonk, ix, iy)
|
|||
|
||||
protected func ControlUseStop(object pClonk, ix, iy)
|
||||
{
|
||||
if(magic==0 && !GetEffect("Charge",this))
|
||||
{
|
||||
AddEffect("Charge",this,150,3,this,this);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
protected func FxChargeTimer(object pTarget, int iEffectNumber, int iEffectTime)
|
||||
{
|
||||
if(magic<500)
|
||||
{
|
||||
PlayerMessage(Contained()->GetOwner(),"%d",Contained(),magic);
|
||||
magic=magic+5;
|
||||
|
||||
CastParticles("Magic",1,10,0,0,40,90,RGB(0,100,255),RGB(255,255,255));
|
||||
}
|
||||
if(magic>=500)
|
||||
{
|
||||
magic=500;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
func Definition(def) {
|
||||
SetProperty("Name", "$Name$", def);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue