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