summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
blob: eba76960228f3efb079d234959381ed22fbf76b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* Ice Needles */

#strict


func Activate(pCaster,pRealcaster) 
{
Sound("Magic",0,pCaster);
  var pClonk;
  if(pRealcaster) pClonk=pRealcaster;
  else pClonk=pCaster;

  // Zielen wenn möglich
  if (pClonk->~DoSpellAim(this(), pCaster)) return(1);
  
  var angle=-90;
  if(GetDir(pClonk) == DIR_Right()) angle=90;
  ActivateAngle(pClonk,angle);
  RemoveObject();
  return(1);
}

// Aktivierung nach Zielen (iAngle: -90=links; 0=oben; +90=rechts)
public func ActivateAngle(object pCaller, int iAngle)
{
	for(var cnt=0;cnt<3;cnt++)
	{
		var f=CreateObject(ICNA,AbsX(GetX(pCaller))+Cos(iAngle-90,13),AbsY(GetY(pCaller))+Sin(iAngle-90,13),GetOwner(pCaller));
		f->Activate(pCaller,iAngle);
   }
   
  AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle);
  
  // Objekt löschen
  RemoveObject();
  return(1);
} 

public func HoldAimer(pCaller)
{
 return(true);
}

protected func FxRecallICNAAimingStart(pTarget,iEffectNumber,bTemp,par1){
EffectVar(0,pTarget,iEffectNumber)=par1;
EffectVar(1,pTarget,iEffectNumber)=0;
EffectVar(2,pTarget,iEffectNumber)=0;
return(1);}

protected func FxRecallICNAAimingTimer(pTarget,iEffectNumber)
{
 if(GetAction(pTarget) eq "Magic")return(0);
 
 if(!EffectVar(1,pTarget,iEffectNumber))
 {
   pTarget->~DoMagic(ICNA);
   EffectVar(1,pTarget,iEffectNumber)=1;
 }
 
 if(!EffectVar(2,pTarget,iEffectNumber) && GetAction(pTarget) eq "AimMagic")
 { 
   var pAimer=FindObject(AIMR,0,0,0,0,0,0,pTarget,NoContainer());
   if(pAimer)
   {
   LocalN("iAngle",pAimer)=EffectVar(0,pTarget,iEffectNumber);
   LocalN("pArrow",pAimer)->~UpdateAngle(EffectVar(0,pTarget,iEffectNumber));
   pAimer->~UpdateAngle(EffectVar(0,pTarget,iEffectNumber));
   pTarget->~AimingAngle(EffectVar(0,pTarget,iEffectNumber));
   EffectVar(2,pTarget,iEffectNumber)=1;
   }
 }
 if(!WildcardMatch(GetAction(pTarget),"*Magic*") && !WildcardMatch(GetAction(pTarget),"*Aim*"))return(-1);
 
 if(EffectVar(2,pTarget,iEffectNumber) && EffectVar(1,pTarget,iEffectNumber))return(-1);
}

/* Zaubercombo */

public func GetSpellClass(object pMage) { return(WATR); }
public func GetSpellCombo(pMage) { return ("444"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)