diff options
| author | Jan <> | 2015-02-02 18:49:15 +0100 |
|---|---|---|
| committer | Jan <_> | 2015-07-10 17:52:21 +0200 |
| commit | de97f8b2898e8fd00c5d6108e2832b7e6cd3668f (patch) | |
| tree | dc8d478aec0b71e0c4dd797e51080335220d02cf /TemplePushing.c4s/System.c4g | |
| parent | ca61c54b9bd69af897e4cc9d4385137fb56fd11a (diff) | |
| download | tempelschubsen-de97f8b2898e8fd00c5d6108e2832b7e6cd3668f.tar.gz tempelschubsen-de97f8b2898e8fd00c5d6108e2832b7e6cd3668f.zip | |
TemplePushingB.c4s
Diffstat (limited to 'TemplePushing.c4s/System.c4g')
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Airblast.c | 84 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Arrowpack.c | 3 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Curses.c | 30 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/MagicLightning.c | 24 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Scroll.c | 4 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/ShootInventory.c | 2 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Sun.c | 47 | ||||
| -rw-r--r-- | TemplePushing.c4s/System.c4g/Vanish.c | 15 |
8 files changed, 202 insertions, 7 deletions
diff --git a/TemplePushing.c4s/System.c4g/Airblast.c b/TemplePushing.c4s/System.c4g/Airblast.c new file mode 100644 index 0000000..473263b --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Airblast.c @@ -0,0 +1,84 @@ +/* Airblast kill tracking */ + +#strict + +#appendto ABLA + +func FxAirblastNSpellTimer(object pTarget, int iNumber, int iTime) { + var iPos, pObj, iX, iY, iSpeed, iRandom, iAngle, iSize, iStep; + + var iPos = EffectVar(1,pTarget,iNumber); + // löschen falls schon zu weit alles weggeblasen + if(iPos >= EffectCall(pTarget,iNumber,"MaxRange")) return(-1); + + iStep = -iPos/18+EffectCall(pTarget,iNumber,"MaxRange")/17; + + iX = EffectVar(2,pTarget,iNumber); + iY = EffectVar(3,pTarget,iNumber); + + iAngle = EffectVar(0,pTarget,iNumber); + iSize = iStep+iPos/5; + + iX += Sin(iAngle, iPos); + iY -= Cos(iAngle, iPos); + + //Log("%d,%d",iSize,iStep); + + + // Log("%d,%d,%d,%d",iX+Sin(iAngle,iPos)-iSize,iY-Cos(iAngle,iPos)-iSize,iSize*2,iSize*2); + + // Objekte wegblasen + while(pObj=FindObject(0,iX-iSize,iY-iSize,iSize*2,iSize*2,OCF_Collectible()|OCF_Alive(),0,0,NoContainer(),pObj)) + { + if(Stuck(pObj)) continue; + if (GetProcedure(pObj) eq "ATTACH") continue; // Keine getragenen Schilde, Alchemiebeutel, etc. + iSpeed=iStep*6; + if(iSpeed<0) iSpeed=0; + + // Sound fürs Wegblasen + Sound("MgWndB", false, pObj); + + //Log("%s: %d; %d,%d",GetName(pObj),iSpeed,Sin(iAngle,iSpeed+20),-iSpeed); + + if(GetAlive(pObj)) + { + iRandom=Random(3); + //DoEnergy(-1-iRandom,pObj); + //pObj->~CatchBlow(-1-iRandom,this()); + pObj->SetKiller(EffectVar(6,pTarget,iNumber)); + Fling(pObj,Sin(iAngle,iSpeed+20)/9,-iSpeed/2/9); + } + else + { + SetSpeed(Sin(iAngle,iSpeed+20),-iSpeed/2,pObj); + + // Richtigen Controller setzen + SetController(EffectVar(6,pTarget,iNumber),pObj); + } + } + + // Explosionen bei Kombo + var iMat; + if (EffectVar(4, pTarget, iNumber)) + if (GBackSolid(iX, iY)) + { + iMat = GetMaterial(iX,iY); + if (iMat >= 0 && iMat != Material("Vehicle")) + { + Explode(17, CreateObject(ROCK, iX,iY,EffectVar(5, pTarget, iNumber))); + return(-1); + } + } + + var clr = iPos*255/EffectCall(pTarget,iNumber,"MaxRange"); + CreateParticle("PSpark",iX,iY,0,0,iSize*15,RGBa(200,200,255,clr*127/255)); + + // alle 20 Pixel wird nach Objekten gesucht + EffectVar(1,pTarget,iNumber)+=iStep; + while(pObj=FindObject(0,iX-iSize,iY-iSize,iSize*2,iSize*2,OCF_Alive(),0,0,NoContainer(),pObj)) { + if(GetKiller(pObj)!=EffectVar(6,pTarget,iNumber)) { + DoEnergy(-1,pObj, 1,,EffectVar(6,pTarget,iNumber)+1); + DoEnergy(+1,pObj, 1,,EffectVar(6,pTarget,iNumber)); + } + } +} diff --git a/TemplePushing.c4s/System.c4g/Arrowpack.c b/TemplePushing.c4s/System.c4g/Arrowpack.c index e046e4c..5f86151 100644 --- a/TemplePushing.c4s/System.c4g/Arrowpack.c +++ b/TemplePushing.c4s/System.c4g/Arrowpack.c @@ -38,6 +38,9 @@ protected func Activate(object clonk) // Start cooldown coolingDown = true; Schedule("coolingDown = false", RandomX(1, 20)); + + // Play sound + Sound("Arrow"); return 1; }
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Curses.c b/TemplePushing.c4s/System.c4g/Curses.c new file mode 100644 index 0000000..7a1e86f --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Curses.c @@ -0,0 +1,30 @@ +/*-- Prevent Curse Scrolls from vanishing --*/ + +#strict 2 + +#appendto CAHE + +local pCasterClonk; + +public func Activate(pCaster,pRealcaster) +{ + var pClonk; + if(pRealcaster) pClonk=pRealcaster; + else pClonk=pCaster; + + pCasterClonk = pClonk; // Caster speichern, damit es sich unter keinen Umständen selber wählen kann + // Auswählen wenn möglich + if (pClonk->~DoSpellSelect(this(),300)) return(1); + + var pTarget; + // Clonk kann nicht auswählen: nächsten Gegner verfluchen + while(pTarget=FindObject(0,-300,-300,150,150,OCF_CrewMember,0,0,NoContainer(),pTarget)) + if(SelectorTarget(pTarget)) + return(ActivateTarget(pTarget)); + + // ansonsten geht nich + var iResult; + if (iResult = CheckEffect("*Curse*", 0, 125)) return(iResult!=-1 && RemoveObject()); + + return(0); +} diff --git a/TemplePushing.c4s/System.c4g/MagicLightning.c b/TemplePushing.c4s/System.c4g/MagicLightning.c new file mode 100644 index 0000000..ebed7a5 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/MagicLightning.c @@ -0,0 +1,24 @@ +/* Magic Lighting doesn't disappear --*/ + +#strict + +#appendto MLGT + +func Activate(pCaster,pRealcaster) { + var pClonk; + if(pRealcaster) pClonk=pRealcaster; + else pClonk=pCaster; + + var iResult; + if (iResult = CheckEffect("LightningNSpell", 0, 125)) return(iResult!=-1 && RemoveObject()); + + // Zielen wenn möglich + if (pClonk->~DoSpellAim(this(), pCaster)) return(1); + + // Blitz erzeugen + var obj = CreateObject(LGTS, -GetX(), -GetY(), GetOwner(pClonk)); + obj->Launch(GetX(pCaster)+GetVertex(0, VTX_X, pCaster), GetY(pCaster)+GetVertex(0, VTX_Y, pCaster), (!GetDir(pCaster))*1800); + Sound("Thunder*"); + RemoveObject(); + return(1); +} diff --git a/TemplePushing.c4s/System.c4g/Scroll.c b/TemplePushing.c4s/System.c4g/Scroll.c index 076c30b..310652c 100644 --- a/TemplePushing.c4s/System.c4g/Scroll.c +++ b/TemplePushing.c4s/System.c4g/Scroll.c @@ -6,10 +6,10 @@ func Initialize() { if (mode == MODE_Festive) { - var spells = [ABLA, MFWV, MICS, MLGT, MGPL]; + var spells = [ABLA, MFWV, MICS, MLGT, MGPL, ICNL]; SetSpell(spells[Random(GetLength(spells))]); } - else var spells = [ABLA, MBOT, MFRB, MDBT, GVTY, MMTR, MLGT, CFAL, MSSH, MINV, MQKE, MARK, MFWV, MGFL, LAVS, MGPL]; + else var spells = [ABLA, MBOT, MFRB, MDBT, GVTY, MMTR, MLGT, CFAL, MSSH, MINV, MQKE, MARK, MFWV, MGFL, LAVS, MGPL, ICNL]; SetSpell(spells[Random(GetLength(spells))]); return _inherited(); diff --git a/TemplePushing.c4s/System.c4g/ShootInventory.c b/TemplePushing.c4s/System.c4g/ShootInventory.c index 20bfef3..6adcfcc 100644 --- a/TemplePushing.c4s/System.c4g/ShootInventory.c +++ b/TemplePushing.c4s/System.c4g/ShootInventory.c @@ -81,7 +81,7 @@ protected func Activate(object clonk) } else { - Exit(0, -10 + 20 * clonk->GetDir(), 0, 0 + 180 * clonk->GetDir(), -80 + 160 * clonk->GetDir(), -15); + Exit(0, -10 + 20 * clonk->GetDir(), 0, 0 + 360 * clonk->GetDir(), -80 + 160 * clonk->GetDir(), -15); SetYDir(-15); SetXDir(-80 + 160 * clonk->GetDir()); } diff --git a/TemplePushing.c4s/System.c4g/Sun.c b/TemplePushing.c4s/System.c4g/Sun.c new file mode 100644 index 0000000..9a52923 --- /dev/null +++ b/TemplePushing.c4s/System.c4g/Sun.c @@ -0,0 +1,47 @@ +/*-- Sun --*/ + +#strict + +#appendto SONE + +private func BerechneSonneY() +{ + var ZeitObjekt = FindObject(TIME); + if(!ZeitObjekt) + SonneY = 30; + + else return _inherited(); +} + +protected func TuWasBraves() +{ + // Bei vorhandenem Lenseflare (mit integrierter Sonne) kann dieses Objekt gelöscht werden + if(ObjectCount(LENS)) + { + RemoveObject(this()); + return(); + } + // Hat es seinen Besitzer verloren? :( + if((!GetPlayerName(GetOwner())) || GetOwner()==-1) + { + RemoveObject(this()); + return(); + } + // Sonnenposition anpassen + BerechneSonne(); + SetPosition(SonneX,SonneY); + // Nachts ausblenden + if(IsDay()) + SetVisibility (VIS_Owner()); + else + SetVisibility (VIS_None()); + // Bei Nähe zur Sonne blenden + var VektorDist=GibVektorDist(GetOwner()); + if(IsDay()) + { + var Gelbstich = BoundBy((500-VektorDist)/5,0,100); // Prozentangabe 0 = weit weg, 100 = nahe; 500 Pixel sind dabei "weit weg" + SetGamma (RGB(000+(30*Gelbstich)/100,000+(30*Gelbstich)/100,000), + RGB(128+(60*Gelbstich)/100,128+(60*Gelbstich)/100,128), + RGB(255,255,255), GammaRampe_Lenseflare()); + } +}
\ No newline at end of file diff --git a/TemplePushing.c4s/System.c4g/Vanish.c b/TemplePushing.c4s/System.c4g/Vanish.c index 37d1d78..8eae5cb 100644 --- a/TemplePushing.c4s/System.c4g/Vanish.c +++ b/TemplePushing.c4s/System.c4g/Vanish.c @@ -11,17 +11,24 @@ protected func Hit() { if (GetID() == FARW) { - Schedule("RemoveObject()", 80, 0, 0); + Schedule("CastParticles(\"MSpark\", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127))", 69, 0, 0); + Schedule("RemoveObject()", 70, 0, 0); } else if (GetID() == SPER) { + Schedule("CastParticles(\"MSpark\", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127))", 49, 0, 0); Schedule("RemoveObject()", 50, 0, 0); } + else if (GetID() == TSWB) + { + CastParticles("Snow", 50, 20, 0, 0, 50, 80, RGBa(255,255,255,0), RGBa(255,255,255,0)); + Schedule("RemoveObject()", 2, 0, 0); + } else { - CastParticles("MSpark", 20,5, 0,0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127)); - RemoveObject(); - return 1; + CastParticles("MSpark", 20, 5, 0, 0, 25, 30, RGBa(128,128,255,0), RGBa(255,255,255,127)); + Schedule("RemoveObject()", 5, 0, 0); + return _inherited(); } } |
