From de97f8b2898e8fd00c5d6108e2832b7e6cd3668f Mon Sep 17 00:00:00 2001 From: Jan <> Date: Mon, 2 Feb 2015 18:49:15 +0100 Subject: TemplePushingB.c4s --- .../Environment.c4d/Snow.c4d/DefCore.txt | 10 +++ .../Environment.c4d/Snow.c4d/DescDE.txt | 3 + .../Environment.c4d/Snow.c4d/DescUS.txt | 4 + .../Environment.c4d/Snow.c4d/Graphics.png | Bin 0 -> 1281 bytes .../Environment.c4d/Snow.c4d/Names.txt | 2 + .../Snow.c4d/Schnee.c4d/Graphics.png | Bin 0 -> 21542 bytes .../Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt | 2 + .../Snow.c4d/Schnee.c4d/Particle.txt | 14 ++++ .../Snow.c4d/Schnee2.c4d/Graphics.png | Bin 0 -> 21542 bytes .../Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt | 2 + .../Snow.c4d/Schnee2.c4d/Particle.txt | 13 ++++ .../Environment.c4d/Snow.c4d/Script.c | 21 ++++++ TemplePushing.c4s/Icon.png | Bin 9955 -> 10297 bytes TemplePushing.c4s/LobbySky.jpg | Bin 61121 -> 0 bytes TemplePushing.c4s/Material.c4g/Fleckig.png | Bin 712 -> 0 bytes TemplePushing.c4s/Material.c4g/TexMap.txt | 2 - TemplePushing.c4s/Material.c4g/WallStuff.png | Bin 33673 -> 0 bytes .../AdditionalSpells.c4d/Eisnadeln.c4d/Script.c | 69 +++-------------- .../AdditionalSpells.c4d/Lavashot.c4d/Script.c | 6 +- .../Misc.c4d/FestiveClonks.c4d/DefCore.txt | 7 ++ .../Misc.c4d/FestiveClonks.c4d/DescDE.txt | 1 + .../Misc.c4d/FestiveClonks.c4d/DescUS.txt | 1 + .../Misc.c4d/FestiveClonks.c4d/Graphics.png | Bin 0 -> 135649 bytes .../Misc.c4d/FestiveClonks.c4d/Names.txt | 2 + .../Misc.c4d/FestiveClonks.c4d/Overlay.png | Bin 0 -> 106911 bytes .../Misc.c4d/FestiveClonks.c4d/Script.c | 12 +++ .../Misc.c4d/FestiveClonks.c4d/Title.png | Bin 0 -> 5684 bytes .../Misc.c4d/ModSnowball.c4d/DefCore.txt | 17 ----- .../Misc.c4d/ModSnowball.c4d/DescDE.txt | 1 - .../Misc.c4d/ModSnowball.c4d/DescUS.txt | 1 - .../Misc.c4d/ModSnowball.c4d/Graphics.png | Bin 2493 -> 0 bytes .../Misc.c4d/ModSnowball.c4d/Names.txt | 2 - .../Misc.c4d/ModSnowball.c4d/Script.c | 59 --------------- TemplePushing.c4s/Misc.c4d/PlayerJoin.wav | Bin 0 -> 37432 bytes .../Misc.c4d/TSnowball.c4d/DefCore.txt | 19 +++++ .../Misc.c4d/TSnowball.c4d/DescDE.txt | 1 + .../Misc.c4d/TSnowball.c4d/DescUS.txt | 1 + .../Misc.c4d/TSnowball.c4d/Graphics.png | Bin 0 -> 2493 bytes TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt | 2 + TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c | 59 +++++++++++++++ TemplePushing.c4s/Scenario.txt | 5 +- TemplePushing.c4s/Script.c | 58 +++++++++----- TemplePushing.c4s/SectClassic.c4g/Scenarios.txt | 2 +- TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp | Bin 11442 -> 11442 bytes TemplePushing.c4s/SectLobby.c4g/Map.bmp | Bin 3898 -> 3898 bytes TemplePushing.c4s/SectLobby.c4g/Scenario.txt | 3 + TemplePushing.c4s/Sections.c4d/Ambience.wav | Bin 81765 -> 161065 bytes TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav | Bin 47315 -> 32040 bytes TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav | Bin 0 -> 132335 bytes .../Sections.c4d/SectClassic.c4d/Script.c | 27 +++++-- .../Sections.c4d/SectCloudTemple.c4d/Script.c | 18 +++-- .../Sections.c4d/SectLiquidTemple.c4d/Script.c | 38 +++++----- TemplePushing.c4s/System.c4g/Airblast.c | 84 +++++++++++++++++++++ TemplePushing.c4s/System.c4g/Arrowpack.c | 3 + TemplePushing.c4s/System.c4g/Curses.c | 30 ++++++++ TemplePushing.c4s/System.c4g/MagicLightning.c | 24 ++++++ TemplePushing.c4s/System.c4g/Scroll.c | 4 +- TemplePushing.c4s/System.c4g/ShootInventory.c | 2 +- TemplePushing.c4s/System.c4g/Sun.c | 47 ++++++++++++ TemplePushing.c4s/System.c4g/Vanish.c | 15 +++- TemplePushing.c4s/Teams.txt | 3 + TemplePushing.c4s/Title.txt | 4 +- TemplePushing.c4s/Version.txt | 2 +- 63 files changed, 501 insertions(+), 201 deletions(-) create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt create mode 100644 TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c delete mode 100644 TemplePushing.c4s/LobbySky.jpg delete mode 100644 TemplePushing.c4s/Material.c4g/Fleckig.png delete mode 100644 TemplePushing.c4s/Material.c4g/WallStuff.png create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c create mode 100644 TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt delete mode 100644 TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c create mode 100644 TemplePushing.c4s/Misc.c4d/PlayerJoin.wav create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt create mode 100644 TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c create mode 100644 TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav create mode 100644 TemplePushing.c4s/System.c4g/Airblast.c create mode 100644 TemplePushing.c4s/System.c4g/Curses.c create mode 100644 TemplePushing.c4s/System.c4g/MagicLightning.c create mode 100644 TemplePushing.c4s/System.c4g/Sun.c (limited to 'TemplePushing.c4s') diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt new file mode 100644 index 0000000..83248dc --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DefCore.txt @@ -0,0 +1,10 @@ +[DefCore] +id=SNOR +Name=Snow-Rule +Version=4,9,1,4 +Value=1 +Category=65 +MaxUserSelect=1 +Picture=0,0,32,32 +TimerCall=Snowing +Timer=10 \ No newline at end of file diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt new file mode 100644 index 0000000..1e86f99 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescDE.txt @@ -0,0 +1,3 @@ +Eine Regel, die den Schnee nur effektmäßig fallen lässt. + +Original von bernhard Bonigl(boni) \ No newline at end of file diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt new file mode 100644 index 0000000..75bc8e0 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/DescUS.txt @@ -0,0 +1,4 @@ +An rule which let the snow fall down just like an effect. + + +Made by Bernhard Bonigl(boni). \ No newline at end of file diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png new file mode 100644 index 0000000..918182b Binary files /dev/null and b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Graphics.png differ diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt new file mode 100644 index 0000000..af18263 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schneeeffekt +US:Snoweffect diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png new file mode 100644 index 0000000..a8871b3 Binary files /dev/null and b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Graphics.png differ diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt new file mode 100644 index 0000000..2de86ab --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schnee +US:Snow diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt new file mode 100644 index 0000000..f7918cd --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee.c4d/Particle.txt @@ -0,0 +1,14 @@ +[Particle] +Name=Snow +MaxCount=7000 +InitFn=StdInit +ExecFn=StdExec +DrawFn=Std +CollisionFn=Die +Face=0,0,32,32,-16,-16 +Delay=0 +Repeats=1 +RByV=1 +VertexCount=1 +AlphaFade=7 +#Parallaxity=75,100 diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png new file mode 100644 index 0000000..a8871b3 Binary files /dev/null and b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Graphics.png differ diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt new file mode 100644 index 0000000..2de86ab --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schnee +US:Snow diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt new file mode 100644 index 0000000..d3ee890 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Schnee2.c4d/Particle.txt @@ -0,0 +1,13 @@ +[Particle] +Name=Snow2 +MaxCount=7000 +InitFn=StdInit +ExecFn=StdExec +DrawFn=Std +CollisionFn=Die +Face=0,0,32,32,-16,-16 +Delay=0 +Repeats=1 +RByV=1 +GravityAcc=0 +Parallaxity=75,100 diff --git a/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c new file mode 100644 index 0000000..5757711 --- /dev/null +++ b/TemplePushing.c4s/Environment.c4d/Snow.c4d/Script.c @@ -0,0 +1,21 @@ +/*-- Schnee-Effekt --*/ + +#strict + +protected func Initialize() { + if(!IsNewgfx()) RemoveObject(); + SetPosition(0,0); +} + +func Snowing() { + + PushParticles("Snow2",RandomX(-7,7)); + for(var x; x<4; x++) + { + CreateParticle("Snow2",Random(LandscapeWidth()),0,0,25,RandomX(50,80),0); + CreateParticle("Snow2",Random(LandscapeWidth()),0,0,21,RandomX(30,50),0); + CreateParticle("Snow2",Random(LandscapeWidth()),0,0,17,RandomX(10,30),0); + CreateParticle("Snow2",Random(LandscapeWidth()),0,0,35,RandomX(80,100),0); + } +} + diff --git a/TemplePushing.c4s/Icon.png b/TemplePushing.c4s/Icon.png index c80e72e..15e0815 100644 Binary files a/TemplePushing.c4s/Icon.png and b/TemplePushing.c4s/Icon.png differ diff --git a/TemplePushing.c4s/LobbySky.jpg b/TemplePushing.c4s/LobbySky.jpg deleted file mode 100644 index 93c1576..0000000 Binary files a/TemplePushing.c4s/LobbySky.jpg and /dev/null differ diff --git a/TemplePushing.c4s/Material.c4g/Fleckig.png b/TemplePushing.c4s/Material.c4g/Fleckig.png deleted file mode 100644 index 1cf7988..0000000 Binary files a/TemplePushing.c4s/Material.c4g/Fleckig.png and /dev/null differ diff --git a/TemplePushing.c4s/Material.c4g/TexMap.txt b/TemplePushing.c4s/Material.c4g/TexMap.txt index 8baf784..3c83a21 100644 --- a/TemplePushing.c4s/Material.c4g/TexMap.txt +++ b/TemplePushing.c4s/Material.c4g/TexMap.txt @@ -24,7 +24,6 @@ OverloadTextures 17=Ice-Sponge 18=DuroLava-LIQUID 19=BackLava-Liquid -20=Water-Fleckig 21=Oil-Smooth 22=Acid-Smooth 23=Lava-Smooth @@ -35,7 +34,6 @@ OverloadTextures 28=FlyAshes-RoughDark 29=Earth-Smooth 30=Earth-Ridge -31=Earth-Fleckig 32=Earth-Smooth2 33=Earth-Smooth3 34=Earth-Rough diff --git a/TemplePushing.c4s/Material.c4g/WallStuff.png b/TemplePushing.c4s/Material.c4g/WallStuff.png deleted file mode 100644 index 1a9ac64..0000000 Binary files a/TemplePushing.c4s/Material.c4g/WallStuff.png and /dev/null differ diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c index 1d439bf..eba7696 100644 --- a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Eisnadeln.c4d/Script.c @@ -1,25 +1,17 @@ -/* Eisnadeln */ +/* Ice Needles */ #strict -local Combo; - - -func Activate(pCaster,pRealcaster) { -Combo=0; -Sound("Magic",0,pCaster); -if(FindContents(ABRL,pCaster)) +func Activate(pCaster,pRealcaster) { -Combo=1; -RemoveObject(FindContents(ABRL,pCaster)); -} +Sound("Magic",0,pCaster); var pClonk; if(pRealcaster) pClonk=pRealcaster; else pClonk=pCaster; // Zielen wenn möglich - if (pClonk->~DoSpellAim(this())) return(1); + if (pClonk->~DoSpellAim(this(), pCaster)) return(1); var angle=-90; if(GetDir(pClonk) == DIR_Right()) angle=90; @@ -30,57 +22,20 @@ RemoveObject(FindContents(ABRL,pCaster)); // 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); - } +{ + 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); } + AddEffect("RecallMFCSAiming",pCaller,20,1,0,GetID(),iAngle); // Objekt löschen RemoveObject(); return(1); - } -} +} + public func HoldAimer(pCaller) { return(true); diff --git a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c index 40c23c1..e5d7e1b 100644 --- a/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c +++ b/TemplePushing.c4s/Misc.c4d/AdditionalSpells.c4d/Lavashot.c4d/Script.c @@ -11,11 +11,11 @@ func Activate(pCaster,pRealcaster) { if (iResult = CheckEffect("Blast", 0, 125)) return(iResult!=-1 && RemoveObject()); // Zielen wenn möglich - if (pClonk->~DoSpellAim(this())) return(1); + if (pClonk->~DoSpellAim(this(), pCaster)) return(1); // Schuss erzeugen - var obj = CreateObject(_LVS, 0, 0, GetOwner(pClonk)); - obj->Launch(pClonk, GetDir(pClonk), GetX(pClonk), GetY(pClonk), 0); + 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("Inflame"); RemoveObject(); return(1); diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt new file mode 100644 index 0000000..e259ed1 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DefCore.txt @@ -0,0 +1,7 @@ +[DefCore] +id=FSVC +Name=Anoraks +Version=4,9,5 +Category=C4D_Living +Picture=6,0,64,64 +ColorByOwner=1 diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt new file mode 100644 index 0000000..d89a848 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescDE.txt @@ -0,0 +1 @@ +Clonks tragen warme Anoraks, wenn der festliche Modus aktiviert ist. diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt new file mode 100644 index 0000000..9c4124f --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/DescUS.txt @@ -0,0 +1 @@ +Makes clonks wear anoraks if the festive mode is enabled. diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png new file mode 100644 index 0000000..0a39a1c Binary files /dev/null and b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Graphics.png differ diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt new file mode 100644 index 0000000..4741171 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Festliche Clonks +US:Festive Clonks diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png new file mode 100644 index 0000000..978f3b9 Binary files /dev/null and b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Overlay.png differ diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c new file mode 100644 index 0000000..656a32b --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Script.c @@ -0,0 +1,12 @@ +/*-- Festliche Clonks --*/ + +#strict 2 +#appendto CLNK + +func Construction () { + if (mode == MODE_Festive) + { + if(GetID() == CLNK) SetGraphics(0, this, FSVC); + return (_inherited (...)); + } +} diff --git a/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png new file mode 100644 index 0000000..46ddf08 Binary files /dev/null and b/TemplePushing.c4s/Misc.c4d/FestiveClonks.c4d/Title.png differ diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt deleted file mode 100644 index 6b23cdb..0000000 --- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DefCore.txt +++ /dev/null @@ -1,17 +0,0 @@ -[DefCore] -id=TSWB -Version=4,9,8 -Name=Snowball -Category=C4D_Object -Width=6 -Height=6 -Offset=-3,-3 -Vertices=4 -VertexX=2,-2,-2,2 -VertexY=2,-2,2,-2 -VertexFriction=100,100,100,100 -Mass=17 -Components=IICE=2 -Picture=6,0,32,32 -Collectible=1 -Fragile=1 diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt deleted file mode 100644 index c369562..0000000 --- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescDE.txt +++ /dev/null @@ -1 +0,0 @@ -Eine leichte aber weitreichende Wurfwaffe, die aus Schnee ausgegraben werden kann. diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt deleted file mode 100644 index 81f5b9f..0000000 --- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/DescUS.txt +++ /dev/null @@ -1 +0,0 @@ -A light throwing weapon shaped from snow. \ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png deleted file mode 100644 index 431e6ff..0000000 Binary files a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Graphics.png and /dev/null differ diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt deleted file mode 100644 index cc0cd4f..0000000 --- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Names.txt +++ /dev/null @@ -1,2 +0,0 @@ -DE:Schneeball -US:Snowball diff --git a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c deleted file mode 100644 index aa90954..0000000 --- a/TemplePushing.c4s/Misc.c4d/ModSnowball.c4d/Script.c +++ /dev/null @@ -1,59 +0,0 @@ -/*-- Schneeball --*/ - -#strict -#include ICE1 - -protected func Hit() { - CastPXS("Snow", 100, 20); - RemoveObject(); - return(1); -} - -protected func Departure(thrower) { - var proc = GetProcedure(thrower); - var comd = GetComDir(thrower); - // Ablegen -> Abbruch - if (GetPlrDownDouble(GetOwner(thrower))) - // Nur Ablegen in der Luft mit Befehlsrichtung? Luftwurf erlauben! - if (proc ne "FLIGHT" || GetComDir(thrower) == COMD_None) - return(0); - - // Ablegen im stehenden Hangeln -> Abbruch - if (proc eq "HANGLE" && comd == COMD_None) - return(0); - - // Ablegen im Schwimmen / Klettern -> Abbruch - if (proc eq "SWIM" || proc eq "SCALE") - return(0); - - // Wurfrichtung rausfinden - var dir; - // Nach Befehlsrichtung, wenn sinnvolle Werte vorhanden - if (comd == COMD_Left() || comd == COMD_Right()) { - if (comd == COMD_Left()) dir = -1; - if (comd == COMD_Right()) dir = +1; - } - // sonst nach Blickrichtung - else { - if (GetDir(thrower) == DIR_Left()) dir = -1; - else dir = +1; - } - - // Wurfgeschwindigkeiten berechnen - var x_dir = dir * GetPhysical("Throw", 0, thrower)/1000 + GetXDir(thrower) / 3; - var y_dir = -30; - - if (!x_dir) return(0); - - // Position anpassen - SetPosition(GetX() + x_dir / 5, GetY() - 2 + GetYDir(thrower) / 2); - - // Geschwindigkeit setzen - SetXDir(x_dir); - SetYDir(y_dir); - - Sound("Arrow"); -} - -func IsAlchemContainer() { return(true); } -func AlchemProcessTime() { return(100); } diff --git a/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav b/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav new file mode 100644 index 0000000..b384791 Binary files /dev/null and b/TemplePushing.c4s/Misc.c4d/PlayerJoin.wav differ diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt new file mode 100644 index 0000000..468365a --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DefCore.txt @@ -0,0 +1,19 @@ +[DefCore] +id=TSWB +Version=4,9,8 +Name=Snowball +Category=C4D_Object +Width=6 +Height=6 +Offset=-3,-3 +Vertices=4 +VertexX=2,-2,-2,2 +VertexY=2,-2,2,-2 +VertexFriction=100,100,100,100 +Mass=20 +Components=IICE=2 +Picture=6,0,32,32 +Collectible=1 +Rotate=1 +StretchGrowth=1 +Fragile=1 diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt new file mode 100644 index 0000000..c369562 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescDE.txt @@ -0,0 +1 @@ +Eine leichte aber weitreichende Wurfwaffe, die aus Schnee ausgegraben werden kann. diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt new file mode 100644 index 0000000..81f5b9f --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/DescUS.txt @@ -0,0 +1 @@ +A light throwing weapon shaped from snow. \ No newline at end of file diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png new file mode 100644 index 0000000..431e6ff Binary files /dev/null and b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Graphics.png differ diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt new file mode 100644 index 0000000..cc0cd4f --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schneeball +US:Snowball diff --git a/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c new file mode 100644 index 0000000..aa90954 --- /dev/null +++ b/TemplePushing.c4s/Misc.c4d/TSnowball.c4d/Script.c @@ -0,0 +1,59 @@ +/*-- Schneeball --*/ + +#strict +#include ICE1 + +protected func Hit() { + CastPXS("Snow", 100, 20); + RemoveObject(); + return(1); +} + +protected func Departure(thrower) { + var proc = GetProcedure(thrower); + var comd = GetComDir(thrower); + // Ablegen -> Abbruch + if (GetPlrDownDouble(GetOwner(thrower))) + // Nur Ablegen in der Luft mit Befehlsrichtung? Luftwurf erlauben! + if (proc ne "FLIGHT" || GetComDir(thrower) == COMD_None) + return(0); + + // Ablegen im stehenden Hangeln -> Abbruch + if (proc eq "HANGLE" && comd == COMD_None) + return(0); + + // Ablegen im Schwimmen / Klettern -> Abbruch + if (proc eq "SWIM" || proc eq "SCALE") + return(0); + + // Wurfrichtung rausfinden + var dir; + // Nach Befehlsrichtung, wenn sinnvolle Werte vorhanden + if (comd == COMD_Left() || comd == COMD_Right()) { + if (comd == COMD_Left()) dir = -1; + if (comd == COMD_Right()) dir = +1; + } + // sonst nach Blickrichtung + else { + if (GetDir(thrower) == DIR_Left()) dir = -1; + else dir = +1; + } + + // Wurfgeschwindigkeiten berechnen + var x_dir = dir * GetPhysical("Throw", 0, thrower)/1000 + GetXDir(thrower) / 3; + var y_dir = -30; + + if (!x_dir) return(0); + + // Position anpassen + SetPosition(GetX() + x_dir / 5, GetY() - 2 + GetYDir(thrower) / 2); + + // Geschwindigkeit setzen + SetXDir(x_dir); + SetYDir(y_dir); + + Sound("Arrow"); +} + +func IsAlchemContainer() { return(true); } +func AlchemProcessTime() { return(100); } diff --git a/TemplePushing.c4s/Scenario.txt b/TemplePushing.c4s/Scenario.txt index 36923ea..20a56d9 100644 --- a/TemplePushing.c4s/Scenario.txt +++ b/TemplePushing.c4s/Scenario.txt @@ -1,6 +1,6 @@ [Head] Icon=27 -Title=Temple Pushing r0.741b +Title=Temple Pushing r0.8b MaxPlayer=8 [Definitions] @@ -23,6 +23,9 @@ Goals=MELE=1 BottomOpen=1 Gravity=83 +[Weather] +Climate=0,0,0,0 + [Player1] Crew=CLNK=1 diff --git a/TemplePushing.c4s/Script.c b/TemplePushing.c4s/Script.c index ea02517..97f88bd 100644 --- a/TemplePushing.c4s/Script.c +++ b/TemplePushing.c4s/Script.c @@ -3,9 +3,10 @@ #strict 2 static const MODE_Classic = 0, MODE_Magic = 1, MODE_Festive = 2, MODE_Apocalyptic = 3, MODE_Knightly = 4; -static const SBRD_ScoreCol = 0, SBRD_RelaunchesCol = 1; +static const SBRD_RelaunchesCol = 0; static const MaxTeamCount = 2; +static SBRD_ScoreCol; static section, mode; static numRelaunches; static deathmatchEnabled, deathmatchWinScore; @@ -19,9 +20,9 @@ func Initialize() { ShowLobby(); - // Create Thrones for recreational purposes... + // Create Thrones for recreational purposes CreateObject(THRN, 590, 420, NO_OWNER); - CreateObject(THRN, 470, 210, NO_OWNER); + CreateObject(THRN, 410, 210, NO_OWNER); // Initial values deathmatchWinScore = 20; @@ -32,7 +33,7 @@ func Initialize() // Create setup menu var menu = CreateObject(SPMU, 0, 0, NO_OWNER); - menu->LocalN("extinguisherEnabled") = false; + menu->LocalN("extinguisherEnabled") = true; menu->LocalN("rotateInJumpEnabled") = true; menu->LocalN("numRelaunches") = 10; menu->LocalN("deathmatchWinScore") = 20; @@ -81,6 +82,9 @@ func UpdateScoreboard(int player, bool leaver) { var playerID = GetPlayerID(player); var text; + + if (!deathmatchEnabled) SBRD_ScoreCol = 1; + if (deathmatchEnabled) SBRD_ScoreCol = 0; // Ignore invalid player numbers if (!playerID) return; @@ -100,14 +104,6 @@ func UpdateScoreboard(int player, bool leaver) } } - // Normal and deathmatch mode: Show score - if (leaver) - text = "{{SLVR}}"; - else - text = Format("%d", playerScore[playerID]); - - SetScoreboardData(PlayerRow(player), SBRD_ScoreCol, text, playerScore[playerID]); - // Normal mode only: Show remaining relaunches if (!deathmatchEnabled) { @@ -121,11 +117,24 @@ func UpdateScoreboard(int player, bool leaver) SetScoreboardData(PlayerRow(player), SBRD_RelaunchesCol, text, relaunchesLeft); } + + // Normal and deathmatch mode: Show score + if (leaver) + text = "{{SLVR}}"; + else + text = Format("%d", playerScore[playerID]); + + SetScoreboardData(PlayerRow(player), SBRD_ScoreCol, text, playerScore[playerID]); + // Sort rows + if (!deathmatchEnabled) + { + SortScoreboard(SBRD_RelaunchesCol, true); SortScoreboard(SBRD_ScoreCol, true); - if (!deathmatchEnabled) SortScoreboard(SBRD_RelaunchesCol, true); - SortScoreboard(SBRD_Caption); + } + else SortScoreboard(SBRD_ScoreCol, true); + // SortScoreboard(SBRD_Caption); } func ShowLobby() @@ -170,7 +179,7 @@ func StartGame(object menu, string message) } if (mode == MODE_Festive) { - spawnPointSpawner->SetDefinitions([[TSWB,5], [SCRL, 5], [ROCK, 1]]); + spawnPointSpawner->SetDefinitions([[TSWB, 10], [SCRL, 5]]); spawnPointSpawner->SetSpawnInterval(600); } if (mode == MODE_Knightly) @@ -195,6 +204,14 @@ func StartGame(object menu, string message) AddEffect("Bottom", 0, 20, 2); AddEffect("SkyAdjust", 0, 20, 1); } + + // Effects for festive mode + if (mode == MODE_Festive) + { + if (ambienceEnabled) CreateObject(SNOR, 0, 0, NO_OWNER); + SetSkyAdjust(RGB(189, 189, 255)); + SetGamma(RGB(0, 0, 50), RGB(100, 100, 128), RGB(200, 200, 255)); + } // Create melee goal Log("Creating melee goal"); @@ -414,7 +431,7 @@ func OnClonkDeath(object clonk, int killedBy) if (gameStarted && HandleKill(player, killedBy)) return; // Relaunch - if (GetPlayerID(player)) LaunchClonk(player, clonk, true); + if (GetPlayerID(player)) LaunchClonk(player, clonk, true); } func LaunchClonk(int player, object clonk, bool relaunch) @@ -432,7 +449,6 @@ func LaunchClonk(int player, object clonk, bool relaunch) } clonk = newClonk; } - ResetHealth(clonk); SelectCrew(player, clonk, true); @@ -485,8 +501,14 @@ func LaunchClonk(int player, object clonk, bool relaunch) clonk->Schedule("SelectCrew(GetOwner(), this, true)", 20); } - PlayerMessage(player, "{{FLAG}}", clonk, GetPlrColorDw(player)); + PlayerMessage(player, "{{SREL}}", clonk); + DrawParticleLine("PSpark", GetX(clonk), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0); + DrawParticleLine("PSpark", GetX(clonk) + RandomX(5, 60), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0); + DrawParticleLine("PSpark", GetX(clonk) - RandomX(5, 60), 0, GetX(clonk), GetY(clonk), 10, 150, RGBa(Random(255), Random(255), Random(255),50), RGBa(Random(255), Random(255), Random(255),50), 0); + Sound("PlayerJoin", 0, clonk, 100); + // CastParticles("MSpark", 50, 20, GetX(clonk), GetY(clonk), 50, 75, RGBa(128,128,255,0), RGBa(255,255,255,127)); SetPlrView(player, clonk); + ResetHealth(clonk); } func ResetHealth(object clonk) diff --git a/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt index ccb3138..45f9492 100644 --- a/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt +++ b/TemplePushing.c4s/SectClassic.c4g/Scenarios.txt @@ -15,7 +15,7 @@ Gravity=83,0,10,200 SkyScrollMode=2 [Weather] -Climate=100,0,0,100 +Climate=0,0,0,0 YearSpeed=20,10,0,100 Wind=0,100,-100,100 Lightning=28,0,0,100 diff --git a/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp b/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp index 2f87447..6f7b273 100644 Binary files a/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp and b/TemplePushing.c4s/SectLiquidTemple.c4g/Map.bmp differ diff --git a/TemplePushing.c4s/SectLobby.c4g/Map.bmp b/TemplePushing.c4s/SectLobby.c4g/Map.bmp index 50ea9e4..f53b185 100644 Binary files a/TemplePushing.c4s/SectLobby.c4g/Map.bmp and b/TemplePushing.c4s/SectLobby.c4g/Map.bmp differ diff --git a/TemplePushing.c4s/SectLobby.c4g/Scenario.txt b/TemplePushing.c4s/SectLobby.c4g/Scenario.txt index df1e96b..f7321eb 100644 --- a/TemplePushing.c4s/SectLobby.c4g/Scenario.txt +++ b/TemplePushing.c4s/SectLobby.c4g/Scenario.txt @@ -15,6 +15,9 @@ LiquidLevel=20,30,0,100 Gravity=83,0,10,200 SkyScrollMode=2 +[Weather] +Climate=0,0,0,0 + [Player1] Crew=CLNK=1 diff --git a/TemplePushing.c4s/Sections.c4d/Ambience.wav b/TemplePushing.c4s/Sections.c4d/Ambience.wav index 4682723..de426a5 100644 Binary files a/TemplePushing.c4s/Sections.c4d/Ambience.wav and b/TemplePushing.c4s/Sections.c4d/Ambience.wav differ diff --git a/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav index c17e78a..4861190 100644 Binary files a/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav and b/TemplePushing.c4s/Sections.c4d/ExtremeAmbience.wav differ diff --git a/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav b/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav new file mode 100644 index 0000000..7b8ca6b Binary files /dev/null and b/TemplePushing.c4s/Sections.c4d/FestiveAmbience.wav differ diff --git a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c index 4f839d8..cbf4f40 100644 --- a/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c +++ b/TemplePushing.c4s/Sections.c4d/SectClassic.c4d/Script.c @@ -5,7 +5,7 @@ public func SectionName() { return "Classic"; } public func SpawnpointLocations() { return [[550, 282], [603, 205], [682, 282], [784, 227], [912, 168], [1040, 120], - [651, 467], [432, 438], [170, 118], [299, 170], [435, 230], [1175, 290], [105, 380], [910, 400], [560, 610]]; } + [648, 460], [432, 438], [170, 118], [299, 170], [441, 230], [1175, 290], [105, 380], [910, 400], [560, 610]]; } protected func Initialize() { @@ -14,13 +14,17 @@ protected func Initialize() if (ambienceEnabled) { - // Create background sound, fog and rain - if (mode != MODE_Apocalyptic) SoundLevel("Ambience", 50); + // Background Sound + if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("Ambience", 70); + + // Fog for (var i; i < 300; ++i) { CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 500, RandomX(3, 9), 0, RandomX(1000, 1500)); } - AddEffect("Rain", 0, 20, 1); + + // Rain + if (mode != MODE_Festive) AddEffect("Rain", 0, 20, 1); // Create sun and lenseflare CreateObject(SONE, 0, 0, NO_OWNER); @@ -40,11 +44,9 @@ protected func Initialize() CreateObject(FRRN, 0, 0, NO_OWNER); // Background sound - Music(); SoundLevel("ExtremeAmbience", 100); // Modulate brick color (object + material) - for (var brick in bricks) { brick->SetClrModulation(RGB(220, 20, 20)); @@ -52,4 +54,17 @@ protected func Initialize() SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0); } + + if (mode == MODE_Festive) + { + // Chilly ambience + if (ambienceEnabled) SoundLevel("FestiveAmbience", 60); + + // Modulate brick color (object + material) + for (var brick in bricks) + { + brick->SetClrModulation(RGB(189, 243, 255)); + } + SetMaterialColor(Material("Brick"), 100, 100, 230, 150, 150, 255, 30, 30, 50); + } } \ No newline at end of file diff --git a/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c index 987052e..b2f1c25 100644 --- a/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c +++ b/TemplePushing.c4s/Sections.c4d/SectCloudTemple.c4d/Script.c @@ -8,11 +8,9 @@ public func SpawnpointLocations() { return [[70, 100], [140, 310], [1105, 310], protected func Initialize() { - // Water/Lava sources - // var water = [CreateObject(WTFL, 615, 295, NO_OWNER), CreateObject(WTFL, 630, 285, NO_OWNER)]; - // TODO: Remove sound via appendto + adjust positions + Music(); - // Create Fog + // Create "Clouds" for (var i; i < 100; ++i) { if (mode == MODE_Apocalyptic) @@ -28,7 +26,7 @@ protected func Initialize() if (ambienceEnabled) { // Create background sound - if (mode != MODE_Apocalyptic) SoundLevel("CloudAmbience", 50); + if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("CloudAmbience", 50); // Create sun and lenseflare CreateObject(SONE, 0, 0, NO_OWNER); @@ -48,11 +46,19 @@ protected func Initialize() CreateObject(FRRN, 0, 0, NO_OWNER); // Background sound - Music(); SoundLevel("ExtremeAmbience", 100); // Modulate brick and crystal colour SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0); SetMaterialColor(Material("SkyCrystal"), 245, 0, 0, 255, 0, 0, 20, 0, 0); } + + if (mode == MODE_Festive) + { + // Chilly ambience + SoundLevel("FestiveAmbience", 60); + + // Modulate brick colour + SetMaterialColor(Material("Brick"), 100, 100, 230, 150, 150, 255, 30, 30, 50); + } } \ No newline at end of file diff --git a/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c b/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c index 3ab2be2..f5eb2d8 100644 --- a/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c +++ b/TemplePushing.c4s/Sections.c4d/SectLiquidTemple.c4d/Script.c @@ -4,33 +4,26 @@ public func SectionName() { return "LiquidTemple"; } - public func SpawnpointLocations() { return [[100, 515], [290, 490], [480, 460], [180, 315], [370, 285], [1440, 515], [1250, 490], [1060, 460], [1360, 315], [1170, 285], [715, 330], [870, 450]/*, [615, 70], [925, 70]*/, [770, 90], [715, 210], [825, 390]]; } + public func SpawnpointLocations() { return [[100, 515], [290, 490], [480, 460], [180, 315], [370, 285], [1440, 515], [1250, 490], [1060, 460], [1360, 315], [1170, 285], [715, 330], [685, 420], [770, 90], [715, 210], [825, 390], [825, 270], [825, 150]]; } protected func Initialize() { + Music(); + if (ambienceEnabled) { // Create lava rain - AddEffect("LavaRain", 0, 20, 1); - - /* - / Create sun and lensflare - CreateObject(SONE, 0, 0, NO_OWNER); - CreateObject(LENS, 0, 0, NO_OWNER); - */ + if (mode != MODE_Festive) AddEffect("LavaRain", 0, 20, 1); // Create background sound - if (mode != MODE_Apocalyptic) SoundLevel("LiquidAmbience", 50); + if (mode != MODE_Apocalyptic && mode != MODE_Festive) SoundLevel("LiquidAmbience", 50); - /* - { - for (var i; i < 300; ++i) + /* + for (var i; i < 300; ++i) { - CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 300, 0, 1, RandomX(2000, 2500)); + CreateParticle("Fog", Random(LandscapeWidth()), Random(LandscapeHeight()) + 300, 0, 1, RandomX(2000, 2500)); } - return(1); - } - */ + */ } if (mode == MODE_Apocalyptic) @@ -46,12 +39,23 @@ public func SectionName() { return "LiquidTemple"; } CreateObject(FRRN, 0, 0, NO_OWNER); // Background sound - Music(); SoundLevel("ExtremeAmbience", 100); // Modulate brick colour (material) + SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0); + } + + if (mode == MODE_Festive) + { + // Chilly ambience + if (ambienceEnabled) SoundLevel("FestiveAmbience", 60); + // Modulate material colours SetMaterialColor(Material("Brick"), 100, 0, 0, 150, 0, 0, 20, 0, 0); + SetMaterialColor(Material("DarkBrick"), 100, 100, 230, 150, 150, 255, 30, 30, 50); + SetMaterialColor(Material("BackWall"), 100, 100, 230, 150, 150, 255, 30, 30, 50); + SetMaterialColor(Material("Wall"), 100, 100, 230, 150, 150, 255, 30, 30, 50); + SetMaterialColor(Material("BackBrick"), 100, 100, 230, 150, 150, 255, 30, 30, 50); } } 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(); } } diff --git a/TemplePushing.c4s/Teams.txt b/TemplePushing.c4s/Teams.txt index 8f8d57c..cb09560 100644 --- a/TemplePushing.c4s/Teams.txt +++ b/TemplePushing.c4s/Teams.txt @@ -1,6 +1,9 @@ [Teams] Active=1 +AllowHostilityChange=0 +AllowTeamSwitch=0 TeamColors=1 +TeamDistribution=Host [Team] id=1 Name=$TeamOne$ diff --git a/TemplePushing.c4s/Title.txt b/TemplePushing.c4s/Title.txt index 53cf67b..eb1e2ec 100644 --- a/TemplePushing.c4s/Title.txt +++ b/TemplePushing.c4s/Title.txt @@ -1,2 +1,2 @@ -DE:Tempelschubsen r0.741b -US:Temple Pushing r0.741b +DE:Tempelschubsen r0.8b +US:Temple Pushing r0.8b diff --git a/TemplePushing.c4s/Version.txt b/TemplePushing.c4s/Version.txt index 60b3fd0..03af619 100644 --- a/TemplePushing.c4s/Version.txt +++ b/TemplePushing.c4s/Version.txt @@ -1 +1 @@ -r0.741b +r0.8b -- cgit v1.2.3-54-g00ecf