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 | |
| parent | 80b15646d73587f4e15a2897314692b58aa1a47f (diff) | |
| download | tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.tar.gz tempelschubsen-f1ece16c08d8c01e1d49a25f0314a96c021e73cb.zip | |
r0.921
Diffstat (limited to 'TemplePushing.c4s/Misc.c4d')
69 files changed, 742 insertions, 6 deletions
diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/ActMap.txt new file mode 100644 index 0000000..c7d7b36 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/ActMap.txt @@ -0,0 +1,41 @@ +[Action] +Name=Fly +Procedure=FLOAT +Length=1 +Delay=0 +Directions=2 +FlipDir=1 +NextAction=Fly +Facet=0,0,45,45 + +[Action] +Name=Fly2 +Procedure=FLOAT +Length=1 +Delay=0 +Directions=2 +FlipDir=1 +NextAction=Fly2 +Facet=855,0,45,45 + + +[Action] +Name=Open +Procedure=FLOAT +Length=20 +Delay=1 +Directions=2 +FlipDir=1 +NextAction=Fly2 +Facet=0,0,45,45 + +[Action] +Name=Close +Procedure=FLOAT +Length=20 +Delay=1 +Directions=2 +FlipDir=1 +Reverse=1 +NextAction=Fly +Facet=0,0,45,45
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DefCore.txt new file mode 100644 index 0000000..39f04a6 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DefCore.txt @@ -0,0 +1,17 @@ +[DefCore] +id=AFTF +Name=Claw +Version=4,9,5 +Category=4 +MaxUserSelect=10 +Width=45 +Height=45 +Offset=-27,-27 +Value=10 +Mass=50 +Timer=2 +TimerCall=Check +Rotate=1 + +[Physical] +Float=500
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescDE.txt new file mode 100644 index 0000000..cfb916a --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescDE.txt @@ -0,0 +1 @@ +Die Klaue an sich.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescUS.txt new file mode 100644 index 0000000..46f7abe --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/DescUS.txt @@ -0,0 +1 @@ +The claw itself.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..5f2fe9f --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Names.txt new file mode 100644 index 0000000..aad1c68 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Faust +US:Fist
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Script.c new file mode 100644 index 0000000..f8a20b7 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Claw.c4d/Script.c @@ -0,0 +1,79 @@ +/*-- Klaue --*/ + +#strict 2 + +static const AFTF_Speed=45; + +local pClonk; +local pTimer, iSpeed, iAngle; +local iDamage; + +protected func Initialize() +{ + // Geschwindigkeit setzen + iSpeed=AFTF_Speed; + iDamage = 30; + return 1; +} + +public func Activate(pCaster,iNewAngle) +{ + // Clonk und Winkel speichern + pClonk=pCaster; + iAngle=iNewAngle; + + // Geschwindigkeit passend setzen + var iAdd=0; + if(iAngle >= 0) iAdd=180; + SetAction("Open"); + SetR(iAngle+90+iAdd); + SetXDir(Cos(iAngle-90,AFTF_Speed)); + SetYDir(Sin(iAngle-90,AFTF_Speed)); + + // Richtung anpassen + if(iAngle < 0) { SetDir(DIR_Right); } + else { SetDir(DIR_Left); } +} + +protected func Check() +{ + // Die Zeit vorbei oder stehen geblieben + if(++pTimer > 45 || iSpeed<=0) + { + // Ein letzer Effekt + CastParticles("PSpark",10,10,0,0,60,160,RGB(150,150,240),RGB(210,210,255)); + RemoveObject(); + } + + // In Materie wird die Klaue langsamer + if(GBackSolid()) + { + iSpeed-=6; + SetXDir(Cos(iAngle-90,iSpeed)); + SetYDir(Sin(iAngle-90,iSpeed)); + } + + if(!iDamage) return; + + // Clonks suchen + for(var pClnk in FindObjects(Find_OCF(OCF_Alive),Find_Distance(23,0,0),Find_NoContainer())) + { + // Nur Feine, außer die Regel ist aktiviert +// if(!ObjectCount(NTMG) && !Hostile(GetOwner(),GetOwner(pClnk))) continue; + + // Nicht in den ersten Frames den Zauberer selber treffen + if(pClnk == pClonk && pTimer < 5) continue; + + // Clonk wegschleudern + pClnk->SetAction("Tumble"); + SetPosition(GetX(pClnk),GetY(pClnk)-2,pClnk); + SetXDir(GetXDir(pClnk)+RandomX(-10,10),pClnk); + SetYDir(-20,pClnk); + + var iDmg = iSpeed/5; + if(iDmg>iDamage) iDmg = iDamage; + iDamage-=iDmg; + // Und wehtun + DoEnergy(-iDmg,pClnk); + } +} diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DefCore.txt new file mode 100644 index 0000000..4cb701b --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DefCore.txt @@ -0,0 +1,10 @@ +[DefCore] +id=AFST +Name=MagicAirClaw +Version=4,9,5,4 +Category=1 +Width=1 +Height=1 +Picture=0,0,64,64 +Value=30 +Components=IASH=3;
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescDE.txt new file mode 100644 index 0000000..4fcfb73 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescDE.txt @@ -0,0 +1 @@ +Erzeugt eine Klaue aus Luft, die Gegner etwas wegschleudert und verletzt.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescUS.txt new file mode 100644 index 0000000..ba0ca61 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/DescUS.txt @@ -0,0 +1 @@ +A claw of air which hurts enemies.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..54db3c5 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Names.txt new file mode 100644 index 0000000..d21bef2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Luftklaue +US:Air claw
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Script.c new file mode 100644 index 0000000..d4008c2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/Script.c @@ -0,0 +1,46 @@ +/* Luftklaue */ + +#strict 2 + +func Activate(pCaster,pRealcaster) { + var pClonk; + if(pRealcaster) pClonk=pRealcaster; + else pClonk=pCaster; + + // Nicht im Gebäude zaubern + if(Contained(pClonk)) + { + Sound("Error"); + PlayerMessage(GetOwner(pClonk), "$must_be_in_free$", pClonk); + RemoveObject(); + return 0; + } + + // Zielen wenn möglich + if (pClonk->~DoSpellAim(this(), pCaster)) return 1; + + // Sonst einfach ungezielt loslassen + var angle=-90; + if(GetDir(pClonk) == DIR_Right) angle=90; + ActivateAngle(pClonk,angle); + + return; +} + +// Aktivierung nach Zielen (iAngle: -90=links; 0=oben; +90=rechts) +public func ActivateAngle(object pCaller, int iAngle) +{ + // Klaue erzeugen und losschicken + CreateObject(AFTF,AbsX(GetX(pCaller))+Cos(iAngle-90,10),AbsY(GetY(pCaller))+Sin(iAngle-90,10)+19,GetOwner(pCaller))->Activate(pCaller,iAngle); + + // Objekt löschen + RemoveObject(); + return 1; +} + +public func IsBattlemageSpell() { return true; } + +/* Zaubercombo */ + +public func GetSpellStaff(object pMage) { return SMAR; } +public func GetSpellStaffCombo(pMage) { return ("44"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblDE.txt new file mode 100644 index 0000000..04eec3b --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblDE.txt @@ -0,0 +1,2 @@ +must_be_in_free=Für diesen Zauber muss|sich der Clonk im|Freien befinden! +StillDelay=Das Zauberdelay ist noch nicht abgelaufen!
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblUS.txt new file mode 100644 index 0000000..3c01382 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Airclaw.c4d/StringTblUS.txt @@ -0,0 +1,2 @@ +must_be_in_free=Magician must be outside|to cast this spell! +StillDelay=The spelldelay isn't over. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt new file mode 100644 index 0000000..07ffdaf --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=MATT +Version=4,9,8 +Name=Teleport +Category=C4D_StaticBack|C4D_Magic +Value=12 +Components=IMUS=1;IASH=1 +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt new file mode 100644 index 0000000..bd7a8be --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescDE.txt @@ -0,0 +1 @@ +Teleportiert hinter einen Gegner.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt new file mode 100644 index 0000000..62914d6 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/DescUS.txt @@ -0,0 +1 @@ +Teleports behind an enemy.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..cd389c0 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt new file mode 100644 index 0000000..9ed60b8 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Angriffsteleport +US:Assault Teleport diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c new file mode 100644 index 0000000..60dc5f2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/AssaultTeleport.c4d/Script.c @@ -0,0 +1,88 @@ +/*-- Teleport --*/ + +#strict + +func Range() +{ + var range=225; + return range; +} + + + +protected func Activate(object pCaster, object pRealCaster) +{ + // Effekt erzeugen + if(!pRealCaster) pRealCaster = pCaster; + + var possibleTargets = []; + var found=0; + var range=Range(); + for(var obj in FindObjects(Find_Distance(range),Find_OCF(OCF_CrewMember),Find_Hostile(GetOwner(pRealCaster)),Sort_Distance())) + { + var dir=-1; + if(GetDir(obj) == DIR_Left)dir=1; + + if(GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj))) + || GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj)+5)) + || GBackSolid(AbsX(GetX(obj)+15*dir),AbsY(GetY(obj)-9)))continue; + if(!PathFree(GetX(obj),GetY(obj),GetX(obj)+15*dir,GetY(obj) + 5))continue; + + var priority = 20 + ObjectDistance(pRealCaster, obj); + if(GBackSemiSolid(AbsX(obj->GetX()), AbsY(obj->GetY()))) + priority += 100; + + possibleTargets[GetLength(possibleTargets)] = [obj, priority]; + + } + + if(!GetLength(possibleTargets)) + { + var x = AbsX(GetX(pRealCaster)); + var y = AbsY(GetY(pRealCaster)); + var tim = CreateObject(TIM1, x, y, pRealCaster->GetOwner()); + tim->SetVisibility(VIS_Owner); + AddEffect("ScheduledRemove", tim, 1, 35 * 5, 0, MATT); + CreateParticle("RangeSpark", 0, 0, 0, 0,((range)*1000/200)*2, RGB(200, 200, 100), tim, true); + Sound("Error",0,0,0,GetOwner(pRealCaster)); + RemoveObject(); + return; + } + + + // find lowest prio target from list + var currentLowest = 0xffffff; + for(var pt in possibleTargets) + { + if(pt[1] >= currentLowest) continue; + currentLowest = pt[1]; + found = pt[0]; + } + + var dir=-1; + if(GetDir(found) == DIR_Left)dir=1; + + for(var cnt=0;cnt<5;cnt++) + { + CreateParticle("PSpark",AbsX(GetX(pRealCaster)+RandomX(-5,5)),AbsY(GetY(pRealCaster)+RandomX(-10,10)),0,0,150,GetColorDw(pRealCaster)); + CreateParticle("PSpark",AbsX(GetX(found)+15*dir+RandomX(-5,5)),AbsY(GetY(found)+RandomX(-10,10)),0,0,150,GetColorDw(pRealCaster)); + } + SetSpeed(GetXDir(found),GetYDir(found),pRealCaster); + SetPosition(GetX(found)+7*dir,GetY(found),pRealCaster); + + Sound("Scream"); + return(RemoveObject()); +} + + +func FxScheduledRemoveStop(target, effect, reason, temp) +{ + if(temp) return; + if(!target) return; + target->RemoveObject(); +} + +/* Zaubercombo */ + +public func GetSpellClass(object pMage) { return(AIR1); } +public func GetSpellCombo(pMage) { return ("222"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt new file mode 100644 index 0000000..8545ace --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DefCore.txt @@ -0,0 +1,9 @@ +[DefCore] +id=MGCY +Version=4,9,8 +Name=MagicCrystalSpikes +Category=C4D_Magic +Width=1 +Height=1 +Value=25 +Picture=0,0,64,64 diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt new file mode 100644 index 0000000..138b9b2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescDE.txt @@ -0,0 +1 @@ +Aus dem Boden vor dem Zauberer stoßen Kristallstacheln und schädigen Lebewesen, welche sich über einem Kristall befinden. Außerdem erhalten Lebewesen kontinuierlich schaden, wenn sie neben einem solchen Kristall verweilen. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt new file mode 100644 index 0000000..a37ddff --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/DescUS.txt @@ -0,0 +1 @@ +Summons numerous crystal spikes which damage entities on impact, while also dealing damage to any living clonks or animals standing next to them. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..de7ae74 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt new file mode 100644 index 0000000..5611746 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/ActMap.txt @@ -0,0 +1,29 @@ +[Action] +Name=Bohr +Procedure=NONE +Length=10 +Delay=2 +Facet=0,0,24,58 +NextAction=Exist +PhaseCall=StossEffect +Sound=Earthquake +EndCall=SoundBamm + +[Action] +Name=Exist +Procedure=NONE +Length=1 +Delay=1 +Facet=216,0,24,58 +NextAction=Exist +EndCall=ExistTimer +Sound=VolcanoCast + +[Action] +Name=Remove +Procedure=NONE +Length=10 +Delay=4 +Facet=0,0,24,58 +EndCall=RemoveMe +Reverse=1 diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt new file mode 100644 index 0000000..024172a --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DefCore.txt @@ -0,0 +1,18 @@ +[DefCore] +id=QBCY +Name=BigCrystall +Version=4,9,5 +Category=4 +Width=24 +Height=56 +Offset=-12,-28 +Mass=100 +Components=CRYS=4; +Picture=0,56,64,64 +Vertices=3 +VertexY=-28,28,28 +VertexX=0,6,-6 +VertexFriction=50,100,100 +ColorByOwner=1 +StretchGrowth=1 +IncompleteActivity=1
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt new file mode 100644 index 0000000..34ab750 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescDE.txt @@ -0,0 +1 @@ +Wertvoll doch auch äußerst Spitz.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt new file mode 100644 index 0000000..1dfbcf7 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/DescUS.txt @@ -0,0 +1 @@ +A new object definition.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..f490a20 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png Binary files differnew file mode 100644 index 0000000..f490a20 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsA.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png Binary files differnew file mode 100644 index 0000000..f490a20 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsB.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png Binary files differnew file mode 100644 index 0000000..f490a20 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsC.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png Binary files differnew file mode 100644 index 0000000..f490a20 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsD.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png Binary files differnew file mode 100644 index 0000000..14a097b --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/GraphicsMetl.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt new file mode 100644 index 0000000..09888b0 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Kristallstachel +US:Crystal Spike diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png Binary files differnew file mode 100644 index 0000000..a7abc6d --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/Overlay.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png Binary files differnew file mode 100644 index 0000000..8358372 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayA.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png Binary files differnew file mode 100644 index 0000000..57755c3 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayB.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png Binary files differnew file mode 100644 index 0000000..1aa4791 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayC.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png Binary files differnew file mode 100644 index 0000000..3afb2bf --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayD.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png Binary files differnew file mode 100644 index 0000000..5a3e193 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Kristall.c4d/OverlayMetl.png 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 diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt new file mode 100644 index 0000000..10f34d9 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Kristallstachel +US:Crystal Spikes diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c new file mode 100644 index 0000000..1da9bb2 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/CrystalSpikes.c4d/Script.c @@ -0,0 +1,105 @@ +/* Crystal Spikes */ + +#strict 2 + +public func Activate(pCaster, pRealCaster) +{ + if(pRealCaster) pCaster = pRealCaster; + Sound("Magic1"); + + // Effekt prüfen + var iResult; + if (iResult = CheckEffect("CrystallSpikesNSpell", 0, 75)) return(iResult!=-1 && RemoveObject()); + + // Dinger erzeugen + var iCount = RandomX(4,7); + var sum = 0; + + for(var i = 0; i < iCount; i++) + { + sum += PlaceCrystal(5 * (i - i/2), -5, pCaster); + } + if(!sum) return 0; + + // Fertig; Zauber entfernen + RemoveObject(); + return 1; +} + +protected func PlaceCrystal(int startx, int starty, object pCaster) +{ + var dir = 2 * GetDir(pCaster) - 1; + startx += dir * (!!Random(3) * 50 + RandomX(0, 125)); + + var solid = false; + var deltax; + for (deltax = 0; deltax < 100 && !solid; deltax += (10 * RandomX(1, 3))) + { + for (var y = 0; GetY() + y < LandscapeHeight() && !solid; y += 10) + { + if (GBackSolid(startx + dir * deltax, y)) solid = true; + } + } + var x = startx + dir * deltax; + if (!solid || GetX() + startx >= LandscapeWidth() || GetX() + startx + LandscapeWidth() < 0) return; + + var y; + solid = false; + var free = false; + var upy, downy; + for (y = starty; GetY() + y > 0 && !free; --y) + { + if (!solid) + { + if (GBackSolid(x, y)) solid = true; + } + else + { + if (!GBackSolid(x, y)) + { + free = true; + upy = ++y; + } + } + } + var down = Random(2); + if (!free || down) + { + solid = false; + free = false; + for (y = starty; GetY() + y < LandscapeWidth() && !solid; ++y) + { + if (!free) + { + if (!GBackSolid(x, y)) free = true; + } + else + { + if (GBackSolid(x, y)) + { + solid = true; + } + } + } + if (!solid) + { + if (!upy) + { + return; + } + else y = upy; + } + else + { + downy = y; + } + } + if (upy && downy && down) y = downy; + + CreateBigCrystal(x, y + 3, RandomX(50, 100), RandomX(100, 200), GetOwner()); + return 1; +} + +public func GetSpellClass(object pMage) { return(EART); } +public func GetSpellCombo(pMage) { return ("444"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) + diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt new file mode 100644 index 0000000..0b8f6bd --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DefCore.txt @@ -0,0 +1,8 @@ +[DefCore] +id=MDFL +Name=MagicDeflection +Category=1 +Picture=0,0,64,64 +Version=4,9,5,4 +Value=32 +Components=IROC=5;IMUS=1;
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt new file mode 100644 index 0000000..e0d86c7 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescDE.txt @@ -0,0 +1 @@ +Wirft Objekte zurück, die den Clonk treffen würden.
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt new file mode 100644 index 0000000..c07f55a --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/DescUS.txt @@ -0,0 +1 @@ +Throws objects back, which would hit the clonk. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..bb77e89 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt new file mode 100644 index 0000000..35a510e --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Zurückwerfen +US:Deflection diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c new file mode 100644 index 0000000..b3e4179 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/Script.c @@ -0,0 +1,112 @@ +/* Zurückwerfen */ + +#strict 2 + +func Activate(pCaster,pRealcaster) +{ + var pClonk=pRealcaster; + if(!pClonk) pClonk=pCaster; + + // Auswählen wenn möglich + if (pCaster->~DoSpellSelect(this,300)) return 1; + + // Clonk kann nicht auswählen: Clonk bekommst selbst ein Schild + if (SelectorTarget(pClonk)) + return ActivateTarget(pClonk, pClonk); + + // ansonsten geth nich + RemoveObject(); + return 0; +} + +public func ActivateTarget(object pCaller, object pTarget) +{ + // Effekt geben + AddEffect("DeflectionPSpell",pTarget,250,2,0,GetID()); + // Objekt löschen + return RemoveObject(); +} + +public func SelectorTarget(object pTarget) +{ + // nur außerhalb von Gebäuden + if(Contained(pTarget)) return; + // muss ein Mannschaftsmitglied sein + if(!(GetOCF(pTarget)&OCF_CrewMember)) return; + // muss verbündet sein oder NTMG muss aktiviert sein + if(Hostile(GetOwner(),GetOwner(pTarget)) && !ObjectCount(NTMG)) return; + // sichtbar + if(!Visible(GetOwner(),pTarget)) return; + // darf noch keinen Effekt haben + if(GetEffect("DeflectionPSpell", pTarget)) return; + return 1; +} + +func FxDeflectionPSpellStart(pClonk, iEffectNumber, iTemp) +{ + if(iTemp) return; + // Zeit setzen + EffectVar(0,pClonk,iEffectNumber)+=450; +} + +func FxDeflectionPSpellTimer(pClonk, iEffectNumber, iEffectTime) +{ + // Zeit um + if(!EffectVar(0,pClonk,iEffectNumber)--) return -1; + // Nicht in Gebäuden + if(Contained(pClonk)) return; + //Funken an der benötigten Stelle + for(var pObj in FindObjects(Find_OCF(OCF_HitSpeed1),Find_Layer(GetObjectLayer()), Find_NoContainer(), Find_Category(C4D_Object), Find_Distance(21, GetX(pClonk), GetY(pClonk)), Find_Not(Find_Distance(11, GetX(pClonk), GetY(pClonk))))) + { + // Wenn das Objekt auf den Clonk zufliegt + if( (GetXDir(pObj)<0) == (GetX(pObj)>GetX(pClonk)) || (GetYDir(pObj)<0) == (GetY(pObj)>GetY(pClonk))) + { + // Eigenen Stab ignorieren + if(GetEffect("StaffFlight", pObj)) + if(EffectVar(0, pObj, GetEffect("StaffFlight", pObj))==pClonk) + continue; + if(Abs(GetXDir(pObj))<5) SetXDir(GetXDir(pObj)+RandomX(-10,10), pObj); + if(Abs(GetYDir(pObj))<5) SetYDir(3, pObj); + SetSpeed(-GetXDir(pObj),-GetYDir(pObj), pObj); + CreateParticle("NoGravSpark", AbsX(GetX(pObj)), AbsY(GetY(pObj)), 0, 0, 80, RGB(80,50,50)); + if(!GetEffect("IntDeflected", pObj)) + EffectVar(0,pClonk,iEffectNumber) = Max(EffectVar(0,pClonk,iEffectNumber)-50,0); + AddEffect("IntDeflected", pObj, 1, 20); + Sound("Rip", 0, pObj); + } + } + // Partikel Kreiseffekt + if(Mod(iEffectTime,4)) return; + var iAngle = iEffectTime*10; + while(iAngle>=360) iAngle -= 360; + var px= Sin(iAngle, 15); + var py= Cos(iAngle, 15); + CreateParticle("NoGravSpark", px+GetX(pClonk), py+GetY(pClonk), 0, 0, 50, RGB(50,80,50), pClonk); + CreateParticle("NoGravSpark",-py+GetX(pClonk), px+GetY(pClonk), 0, 0, 50, RGB(50,50,80), pClonk); + CreateParticle("NoGravSpark",-px+GetX(pClonk),-py+GetY(pClonk), 0, 0, 50, RGB(50,80,50), pClonk); + CreateParticle("NoGravSpark", py+GetX(pClonk),-px+GetY(pClonk), 0, 0, 50, RGB(50,50,80), pClonk); + return 1; +} + +private func FxDeflectionPSpellEffect(string szNewEffectName, object pTarget, int iNumber) +{ + // Andere Effekte aufnehmen + if(szNewEffectName == "DeflectionPSpell") + { + if(EffectVar(0,pTarget,iNumber)>50) return -1; + return -2; + } +} + +private func FxDeflectionPSpellAdd(object pTarget, int iNumber, string szNewEffectName, int iNewEffectTimer, int iChange0, int iChange1, int iChange2, int iTime) { + // Effekt übernehmen + EffectVar(0,pTarget,iNumber) += 300; + if(EffectVar(0,pTarget,iNumber)> 600) EffectVar(0,pTarget,iNumber)=600; +} + +protected func FxDeflectionPSpellInfo() { return "{{MDFL}} $SpellInfo$"; } + +/* Zaubercombo */ + +public func GetSpellStaff() { return SMAR; } +public func GetSpellStaffCombo() { return ("56"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig) diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt new file mode 100644 index 0000000..4491f18 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblDE.txt @@ -0,0 +1 @@ +SpellInfo=Objekte werden zurückgeworfen. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt new file mode 100644 index 0000000..211193a --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Deflection.c4d/StringTblUS.txt @@ -0,0 +1 @@ +SpellInfo=Objects will be reflected. diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c index 98f3eaf..f433017 100644 --- a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Eisnadeln.c4d/Script.c @@ -1,4 +1,4 @@ -/*-- Eislanze --*/ +/*-- Ice Needle --*/ #strict static const ICNA_Speed=50; @@ -155,7 +155,7 @@ if(!Gift==1) { Sound("Hited", living); // Schaden machen - Punch(living, 12); + Punch(living, RandomX(7, 12)); if(!Frozen(living)) Freeze(living, EffectVar(4)); return(RemoveObject()); } @@ -163,7 +163,7 @@ if(Gift==1) { Sound("Hited", living); // Schaden machen - Punch(living, (10)); + Punch(living, RandomX(5, 10)); return(RemoveObject()); } } diff --git a/TemplePushing.c4s/Misc.c4d/Eliminated.wav b/TemplePushing.c4s/Misc.c4d/Eliminated.wav Binary files differnew file mode 100644 index 0000000..8bc34cd --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Eliminated.wav diff --git a/TemplePushing.c4s/Misc.c4d/Magic1.wav b/TemplePushing.c4s/Misc.c4d/Magic1.wav Binary files differnew file mode 100644 index 0000000..560441f --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Magic1.wav diff --git a/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..dee58d8 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Particle.txt new file mode 100644 index 0000000..6ea8521 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Particles.c4d/MSpark.c4d/Particle.txt @@ -0,0 +1,15 @@ +[Particle] +Name=MSpark +MaxCount=2400 +InitFn=StdInit +ExecFn=StdExec +DrawFn=Std +Face=0,0,32,32,-16,-16 +Delay=1 +Repeats=3 +Reverse=1 +GravityAcc=50 +FadeOutLen=4 +FadeOutDelay=4 +AlphaFade=0 +Additive=1 diff --git a/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..4d145c7 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Particle.txt b/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Particle.txt new file mode 100644 index 0000000..e40a06e --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Particles.c4d/PSpark.c4d/Particle.txt @@ -0,0 +1,13 @@ +[Particle] +Name=PSpark +MaxCount=16000 +InitFn=StdInit +ExecFn=StdExec +DrawFn=Std +Face=0,0,12,12,-6,-6 +Delay=0 +Repeats=1 +GravityAcc=0 +AlphaFade=4 +Additive=1 +Attach=1
\ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt index fc24d29..a8c53bb 100644 --- a/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt +++ b/TemplePushing.c4s/Misc.c4d/SetupMenu.c4d/StringTblUS.txt @@ -2,7 +2,7 @@ ModeClassic=<c e6b800>Classic</c> ModeMagic=<c 4700b2>Magical</c> ModeKnightly=<c 99ff66>Medieval</c> ModeApocalyptic=<c b20000>Apocalyptical</c> -ModeFestive=<c f0ffff >Winterly</c> +ModeFestive=<c f0ffff>Winterly</c> Back=Back Done=Done Relaunches=Relaunches diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DefCore.txt index 468365a..b4a5913 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DefCore.txt @@ -10,7 +10,7 @@ Vertices=4 VertexX=2,-2,-2,2 VertexY=2,-2,2,-2 VertexFriction=100,100,100,100 -Mass=20 +Mass=22 Components=IICE=2 Picture=6,0,32,32 Collectible=1 diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DescDE.txt index c369562..c369562 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DescDE.txt diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DescUS.txt index 81f5b9f..81f5b9f 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/DescUS.txt diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Graphics.png Binary files differindex 431e6ff..431e6ff 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Names.txt index cc0cd4f..cc0cd4f 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Names.txt diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Script.c index 6fef017..f5bf91b 100644 --- a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c +++ b/TemplePushing.c4s/Misc.c4d/Snowball.c4d/Script.c @@ -9,5 +9,4 @@ protected func Departure(object container) { // Throw only if the container was a clonk if (!(container->GetOCF() & OCF_CrewMember)) return 1; - return _inherited(container); } diff --git a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png Binary files differindex bcce561..08ecd5a 100644 --- a/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png +++ b/TemplePushing.c4s/Misc.c4d/Symbols.c4d/Teams.c4d/Graphics.png diff --git a/TemplePushing.c4s/Misc.c4d/Trumpet.wav b/TemplePushing.c4s/Misc.c4d/Trumpet.wav Binary files differnew file mode 100644 index 0000000..8d8f8bd --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/Trumpet.wav |
