summaryrefslogtreecommitdiffstats
path: root/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c
blob: 1d439bfff305ca3c1d42599303556ac497010c79 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/* Eisnadeln */

#strict

local Combo;



func Activate(pCaster,pRealcaster) {
Combo=0;
Sound("Magic",0,pCaster);
if(FindContents(ABRL,pCaster)) 
{
Combo=1;
RemoveObject(FindContents(ABRL,pCaster));
}
  var pClonk;
  if(pRealcaster) pClonk=pRealcaster;
  else pClonk=pCaster;

  // Zielen wenn möglich
  if (pClonk->~DoSpellAim(this())) 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)
  {
  //var pEffer = CreateObject(_WE_,0,0,GetOwner(this()));
  //GetTarget(object pTarget,int Interval, string Element, int ElementNumber, int R, int G, int B, int a)
  //pEffer -> GetTarget(pCaller,0, "Water", 0, 100, 100, 255, 120); 
  var WasserF = FindContents(WBRL,pCaller);
  if(WasserF)
  {
  RemoveObject(WasserF);
  CreateContents(FLNT,this());
  }
  if(!FindContents(FLNT,this()))
  {
  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);
  if(Combo==1) f->LocalN("Gift",f)=1;
  var combo = FindContents(ICE1,pCaller);
  if(combo)
  {
  RemoveObject(combo);
  f->CreateContents(ROCK);
 }
   }
  AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle);
  
  // Objekt löschen
  RemoveObject();
  return(1);
  } 
    if(FindContents(FLNT,this()))
  {
  for(var cnt=0;cnt<6;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);
    if(Combo==1) f->LocalN("Gift",f)=1;
  var combo1 = FindContents(ICE1,pCaller);
  if(combo1)
  {
  RemoveObject(combo1);
  f->CreateContents(ROCK);
 }
   }
  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)