diff options
| author | Jan <> | 2015-07-10 18:11:22 +0200 |
|---|---|---|
| committer | Jan <_> | 2015-07-10 18:47:01 +0200 |
| commit | f1ece16c08d8c01e1d49a25f0314a96c021e73cb (patch) | |
| tree | 9bc9f547f2524dee8e62f168f317df465a6cbcdd /TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c | |
| parent | 80b15646d73587f4e15a2897314692b58aa1a47f (diff) | |
| download | tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip | |
r0.921
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c')
| -rw-r--r-- | TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c new file mode 100644 index 0000000..1d25b23 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Script.c @@ -0,0 +1,109 @@ +/*-- Crystal Spike --*/ + +#strict + +local iMaxTime; + +local iExtra; + +public func IsBigCrystal(){ return(1); } + +func Initialize() { + var Randi = RandomX(1,4); + if(Randi == 1) SetGraphics("A",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics); + if(Randi == 2) SetGraphics("B",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics); + if(Randi == 3) SetGraphics("C",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics); + if(Randi == 4) SetGraphics("D",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics); + SetAction("Bohr"); + return(1); +} +public func Set(inMaxTime, int iMetl){ + iMaxTime = inMaxTime; + if(iMetl){ iExtra = iMetl; + SetGraphics("Metl",this(), GetID(), 1,GFXOV_MODE_ExtraGraphics); + } + return(1); +} + +func StossEffect() { +for(var pClonk in FindObjects(Find_Distance(20), Find_OCF(OCF_Living), Find_NoContainer ())){ + if(GetAlive(pClonk)) { + if(!GetEffect("NoCrystallAttack",pClonk)) + HitObject(pClonk); + } + } +for(var pDing in FindObjects(Find_Distance(30), Find_Category(C4D_Object), Find_NoContainer ())){ + HitDing(pDing); + } + +if(!Random(1)) {CreateParticle("Smoke",0,+21,RandomX(-4,4),-5,80,RGB(120,120,120)); } +if(!Random(2)) { +var ebk = CreateObject(1EBK,0,+21,GetOwner()); +if(ebk) SetSpeed(RandomX(-5,5),RandomX(-40,-80),ebk); + } +} + +func ExistTimer() { +if(!Random(20)) Sound("Sparkle"); +if(!Random(4)) { +CreateParticle("NoGravSpark",RandomX(-8,8),RandomX(-28,26),0,-5,RandomX(10,30),GetTeamColor(GetPlayerTeam(GetOwner()))); + } + +for(var pClonk in FindObjects(Find_Distance(40), Find_OCF(OCF_Living), Find_NoContainer ())){ + if(GetAlive(pClonk)) if(!Random(20)) EffectObject(pClonk); + } + +if(iMaxTime > 0){ +if(GetActTime() > iMaxTime) SetAction("Remove"); + } +} + +global func CreateBigCrystal(int iX,int iY, int iCon, int iMTime, int iOwner) { // Erstell an der Position ein großen Kristall +var pCrys = CreateObject(QBCY,iX,iY,iOwner); +pCrys->Set(iMTime); +SetCon(iCon,pCrys); +return(pCrys); +} +func HitObject(object pClonk) { +if(!pClonk) return(0); +Sound("Crystal2",0,pClonk); +if(!FindObject(NTMG)){ + if(!Hostile(GetOwner(),GetOwner(pClonk))) return(0); + } +if(GetAction(pClonk) ne "Tumble"){ +DoEnergy(RandomX(-10,-20)+iExtra,pClonk); +Fling(pClonk, RandomX(-4,4), RandomX(-5,-9)); + AddEffect("NoCrystallAttack",pClonk,100,1,pClonk); + } +} +func HitDing(object pDing) { +if(GetID(pDing) == QBCY) return(0); +if(pDing){ SetSpeed(RandomX(-4,4),RandomX(-20,-40),pDing); +pDing->~Hit(); } +} + +func EffectObject(object pClonk) { +if(!FindObject(NTMG)){ + if(!Hostile(GetOwner(),GetOwner(pClonk))) return(0); + } +CreateParticle("NoGravSpark",GetX()-GetX(pClonk)+RandomX(-8,8),GetY()-GetY()+RandomX(-12,12),0,-5,RandomX(10,20),GetColorDw (this())); +if(!Random(2)) +DoEnergy(-7,pClonk); +} +func RemoveMe(){ +RemoveObject(this()); +} +func SoundBamm(){ + Sound("RockBreak*"); + Sound("Blast2",0,0,50); +for(var i = 0; i < 5; i++){ +var ebk = CreateObject(1EBK,0,+21,GetOwner()); +if(ebk) SetSpeed(RandomX(-5,5),RandomX(-40,-80),ebk); + } +} +global func FxNoCrystallAttackTimer(object pTarget, int iIndex, int iTime) +{ + if(!pTarget) return (false); + if(iTime >= 20) return (-1); + return (true); +}
\ No newline at end of file |
