diff options
| author | Jan <> | 2015-02-02 17:05:03 +0100 |
|---|---|---|
| committer | Jan <_> | 2015-07-10 17:44:33 +0200 |
| commit | f5a80c493dcefbc8f45987b8fd454d974f739cf7 (patch) | |
| tree | 724195326f990379940b35e0f5eaacb37e4860bc /TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d | |
| download | tempelschubsen-f5a80c493dcefbc8f45987b8fd454d974f739cf7.tar.gz tempelschubsen-f5a80c493dcefbc8f45987b8fd454d974f739cf7.zip | |
TemplePushBeta.c4s
Diffstat (limited to 'TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d')
7 files changed, 197 insertions, 0 deletions
diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt new file mode 100644 index 0000000..f29cad6 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/ActMap.txt @@ -0,0 +1,4 @@ +[Action] +Name=Invis +Facet=10,0,10,10 +NextAction=Hold diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt new file mode 100644 index 0000000..d95cd88 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DefCore.txt @@ -0,0 +1,12 @@ +[DefCore] +id=SPNP +Name=Spawnpoint +Version=4,9,5 +Category=25165825 +Width=10 +Height=10 +Offset=-5,-5 +Picture=0,0,10,10 +Timer=5 +TimerCall=Timer +Collectible=1
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt new file mode 100644 index 0000000..b469ce9 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescDE.txt @@ -0,0 +1 @@ +Lässt Gegenstände als Nachschub erscheinen.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt new file mode 100644 index 0000000..3308b95 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/DescUS.txt @@ -0,0 +1 @@ +Spawns objects.
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..c5f3687 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Graphics.png diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt new file mode 100644 index 0000000..c6a1143 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Spawnpunkt +US:Spawnpoint
\ No newline at end of file diff --git a/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c new file mode 100644 index 0000000..6172d25 --- /dev/null +++ b/TemplePushing.c4s/CliffPushing.c4d/Rules.c4d/Spawnpoints.c4d/Spawnpoint.c4d/Script.c @@ -0,0 +1,177 @@ +/*-- Spawnpoint --*/ + +#strict + +local initialized, angle, player, spawntimer,WpID; + +func IsWaypoint() { return(1); } + +global func PlaceSpawnpoint(id idObj, int iX, int iY, int timer) +{ + var spwn = CreateObject(SPNP, iX, iY, -1); + spwn->CreateContents(idObj); + if(timer) + spwn->LocalN("spawntimer") = timer; + return(spwn); +} + +protected func Initialize() +{ + if(Random(4)) WpID = [FLNT,SCRL,SFLN,ROCK]; + else WpID = [EFLN,STFN,FBMP]; + // Standardtimer = 750 Frames + spawntimer = 750; + SetClrModulation(RGBa(0,0,0,255)); +} + +protected func Timer() +{ + if(!player) player = CreateArray(); + // Noch nicht initialisiert? + if(!initialized) + // Ein Inhaltsobjekt? + if(Contents()) + // Initialisieren + return(Initialized()); + // Kein Inhalt? + if(!Contents()) + { + return(CreateContents(WpID[Random(GetLength(WpID))])); + } + // Tolle Effekt starten + angle += 10; + if(angle >= 360) angle = 0; + SetObjDrawTransform(1000, 0,0,0, 1000, Sin(angle, 8)*1000 - 2000,0, 1); + if(Random(2)) CreateParticle("NoGravSpark", RandomX(-5,5), RandomX(5,10), 0, -5, 25, RGBa(210, 210, 255, 100)); + // Alle Timer runterzählen + DecreaseTimer(); +} + +private func Initialized() +{ + // Unsichtbar werden + SetAction("Invis"); + // Objekt als Layer auflegen + SetGraphics(0, 0, GetID(Contents()), 1, 1); + // Transformation + SetObjDrawTransform(1000, 0,0,0, 1000, -5000,0, 1); + // Sammeleffekt starten +// AddEffect("Collect", this(), 1, 3, this()); + // Objekt(e) erzeugen + // Waffen-Bleiben-Regel +//player = CreateArray(); + // Initialisiert + initialized = true; +} + +/* Timer runterzählen */ + +private func DecreaseTimer() +{ + // Waffen-Bleiben-Regel + if(FindObject(WPST)) + { + for(var i=0 ; i < GetPlayerCount() ; i++) + // Spielertimer runterzählen + { + if(player[GetPlayerByIndex(i)]) + player[GetPlayerByIndex(i)] -= 5; + if(player[GetPlayerByIndex(i)] <= 0 && !(Local() & 2**GetPlayerByIndex(i))) + { + // Spieler kann das Objekt wieder einsammeln + player[GetPlayerByIndex(i)] = 0; + Local() += 2**GetPlayerByIndex(i); + } + } + } + else + { + // Timer runterzählen + player[0] -= 5; + if(player[0] <= 0) + { + // Objekt ist wieder da + player[0] = 0; + Local() = true; + SetVisibility(VIS_All()); + } + } +} + +/* Einsammel-Effekte */ +/* +public func FxCollectTimer() +{ + // Ist ein Clonk hier? -> Einsammeln lassen + var pObj; + for(var pClonk in FindObjects(Find_AtPoint(), Find_OCF(OCF_CrewMember()), Find_OCF(OCF_CrewMember()), Find_NoContainer())) + if(CheckCollect(GetOwner(pClonk))) + { + pObj = FindContents(); + // Kann der Clonk einsammeln? + Collect(pObj, pClonk); + if(Contained(pObj) == this()) RemoveObject(pObj); + else + { + Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); + Collected(GetOwner(pClonk)); + } + } +}*/ + +public func RejectEntrance(object pClonk) +{ + // Objekt ist ein Clonk? + if(!(GetOCF(pClonk) & OCF_CrewMember) && !(pClonk->~CanCollectFromSpawnpoints())) return(1); + // Ich hab Contents? + if(!Contents()) return(1); + // Darf einsammeln + if(CheckCollect(GetOwner(pClonk))) + { + var pObj = Contents(); + // Kann der Clonk einsammeln? + if(ObjectCount(0, 0, 0, 0, 0, 0, 0, 0, pClonk) >= 1) + return(1); + + Collect(pObj, pClonk); + CreateContents(WpID[Random(GetLength(WpID))]); + Initialized(); + if(Contained(pObj) == this()) RemoveObject(pObj); + else + { + Sound("Grab", 0, pClonk, 0, GetOwner(pClonk)+1); + Collected(GetOwner(pClonk)); + } + } + return(1); +} + +private func CheckCollect(int iPlr) // Überprüft, ob ein Spieler das Objekt einsammeln darf +{ + // Waffen-Bleiben-Regel + if(FindObject(WPST)) + return(Local() & 2**iPlr); + else + return(Local()); +} + +private func Collected(int iPlr) // Regelt, dass ein Spieler das Objekt einsammelt +{ + // Waffen-Bleiben-Regel + if(FindObject(WPST)) + { + // Spielertimer hochsetzen + player[iPlr] = spawntimer; + // Nicht mehr sichtbar für den Spieler + Local() -= 2**iPlr; + } + else + { + // Timer hochsetzen + player[0] = spawntimer; + // Nicht mehr einsammelbar + Local() = false; + // Nicht mehr sichtbar + SetVisibility(VIS_God()); + } +} |
