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)
|