Map Project Valhalla (mp_projectvalhalla)

yoda
Project Valhalla

Autor: FF5_MadMaxx
Unterstützte Spiel-Modi: DM TDM HQ
Anzahl der Spieler: 20-30
Konsolenname: mp_pval
Grösse der Map: 48,0 MB

Beschreibung der Map:

STATUS: BEREINIGT

Auf jeden Fall mal anschauen!!!
Macht einen ziemlich guten ersten Eindruck, sollte aber auf jeden Fall noch mal ein wenig nachbearbeitet werden.

Die Map spielt auf einer Art Ölplattform bei regnerischem Wetter auf stürmischer See, ist riesengroß und beitet jede Menge Möglichkeiten - sowohl für Fans des InFights als auch für die Sniper-Liebhaber. Die Atmosphäre ist klasse, schade, dass nicht alle Spiel-Modi unterstützt werden. Außerdem sollten die Wasser-Spritz-Effekte noch mal etwas überarbeitet werden, die Gischt spritzt nämlich durch den Boden der verschiedenen Stations-Abschnitte durch, sieht dann teilweise etwas merkwürdig aus.

Aber trotzdem ist die Map Test-Pflicht, wenn man die eingebauten Spiel-Modi mag!

---

UPDATE:

Version 1.2

Neu eingebaut:

//Regen ein/aus 1/0
set projectvalhalla_rain_on "1"

//Wellengang ein/aus 1/0
set projectvalhalla_splash_on "1"

(Muss serverseitig für die Map aktiviert werden!)

Die Datei z_sas-4.iwd enthält neue SAS-Skins und kann nach Belieben entfernt werden.
Es werden nun alle Standard-Spiel-Modi unterstützt.
Der Konsolenname hat sich geändert auf mp_pval.


---

Screenshots:

----

----

----

Download
Maptest Project Valhalla

---

Installation:

iwd: BEREINIGT

Custom Maps sollten aus einem MOD-Ordner heraus gestartet werden!

Entpacke die Zip-Datei in Deinen Haupt-Ordner
von Call of Duty 4 - Modern Warfare, z. B.:
C:\Programme\Activision\Call of Duty 4 - Modern Warfare

Im Ordner /Call of Duty 4 - Modern Warfare sollte nun
im Ordner "usermaps" der Ordner "mp_projectvalhalla" und darin die Dateien

- mp_pval.ff
- mp_pval_load.ff
- mp_pval.iwd
- z_sas-4.iwd

zu finden sein.
[CyG] Hoxma
Version 1.2 >>> http://files.filefront.com/Project+Valha...;/fileinfo.html

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
===================================================
Project Valhalla 
---------------------------------------------------
mp_pval
===================================================
README
===================================================

by FF5_MadMaxx
---------------------------------------------------
Email: tohklidan@hotmail.com

Version: 1.2
===================================================


---------------------------------------------------
Installation:
---------------------------------------------------
1 - Create a folder with the name 'usermaps' in your 
    Call of Duty 4 - Modern Warfare installation directory
	Example: C:/Program Files/Activision/Call of Duty 4 - Modern Warfare/usermaps/
2 - Make a new folder in the /usermaps/ folder named 'mp_pval'
3 - Put the two .FF files (mp_pval.FF, mp_pval_load.FF) 
    in the 'mp_projectvalhalla' folder you just created
4 - Do this for your redirect location too
5 - Drag and drop the mp_pval.IWD into the directory of the mod that you are running
	Example C:/Program Files/Activision/Call of Duty 4 - Modern Warfare/Mods/{yourmodname}/mp_pval.iwd

Add mp_pval to your maprotation choosing 
any of the gametypes listed below. 



---------------------------------------------------
Configuration:
---------------------------------------------------
You can turn off some fx's with a server var.

Add to your server.cfg these two lines:
set projectvalhalla_rain_on "1" 
set projectvalhalla_splash_on "1"

projectvalhalla_rain_on toggles the rain
projectvalhalla_splash_on  toggles the wavesplashes from the sea
values: 
1=on 0=off default=1

If you won't use the custom SAS skin just remove z_sas-4.iwd.
Otherwise copy it with the mp_pval.iwd in the same folder as described above.
 


---------------------------------------------------
Location & Synobsis:
---------------------------------------------------
An abbandoned olirig that is used as a secret test 
facility by a secret organisation of the US government.

Valhalla is the name of the secret project, that allows
to create artifical storms and control them.  

5 Platforms with 2-3 levels connected 
by several catwalks.

---------------------------------------------------
Weater:
---------------------------------------------------
Stormy Sea

---------------------------------------------------
Daytime:
---------------------------------------------------
Night

---------------------------------------------------
Features:
---------------------------------------------------
Elevators, Destructible Windows,
Players can die by drowning, 
or get squeezed by elevators.


---------------------------------------------------
Supported Gametypes:
---------------------------------------------------
- Free-for-all (dm)
- Team Deathmatch (war)
- Domination (dom)
- Headquater (koth)
- Sabotage (sab)
- Search and Destroy (s&d)
- Capture the Flag / back (ctf/b) for AWE and ACE
- Oldschool

---------------------------------------------------
Players per faction:
---------------------------------------------------
10-20

---------------------------------------------------
Teams:
---------------------------------------------------
SAS vs Speznaz 

---------------------------------------------------
Version History:
---------------------------------------------------
1.2 
- added Ze Limper's SAS Skin Urban v4 (optional)
- cosmetics (fx and decals)
- added oldschool support
- added gametype CTF/B (AWE and ACE Mods)
- added dvars for toggle on/off rain and wavesplashes
- added forgotten "mantle on" and "mantle over" textures on some containers
- fixed that bomb is lost if bombcarrier falls on a horizontal bar of the plattform supporting stands   
- fixed that you can see through the floor of the powergenerator room
- tweaked the ladders for better climping
- larger underwater killzone (also deeper)
- fixed that you can see underwater clouds 
- fixed that red edges appear on the plattforms if specular is on
- added additional reflection probes
- the sea model is now not so dark




1.1 
- fixed sab gametype (works again)
- added "mantle on" and "mantle over" textures on the small conatiners
- lowered the wavesplashes fx once more
- added mptype_desert in csv for better compatibility (red fx problem in some mods)
- bomb now respawns instantly if bombcarrier jumps off the platforms (s&d, sab)
- added waternoise fx


1.0
- clipped the helicockpits so noone can get stucked

Beta 3:
- more portals
- some cosmetic stuff
- added modified _teams.gsc (fixes the j_head bug)
- added sounds for thunder and breaking glas

Beta 2:
- added more gametypes (dm, sab, s&d)
- fixed Helicopter path
- fixed watersplashes
- changed locations of HQs
- increased size for HQs
- renamed map to mp_pval
- cleaned the iwd file
- optimized portals


---------------------------------------------------
Thanks to:
---------------------------------------------------
Ze Limper 	@ www.bulletproof-underwear.org for his SAS skins
-=FD=- 		for his breakable window script
Spikenaylor     for his drowing script (for CoD2)
FF5 Conan 	for the graffity FF5 logo


and to all other modders and mappers at 
http://www.infinityward.com/community/forum
and
http://www.modsonline.com/


MikeTNT
Ein Meisterwerk, nur kommt die Map leider nicht bei allen Spielern gut an. Warum das so ist, weiß ich allerdings nicht.

TDM und DM klappen jedenfalls gut.

Einziges Problem:
Leider habe ich es nicht geschafft, per dvar den Regen auszuschalten. Funktioniert das bei jemandem?

cu Mike
Nightwing
Habs schon länger mit nem Mapfix versucht, aber der mag nicht tun, selbiges bei der mp_u9_subharbor...

ToM
[CyG] Hoxma
Bei uns läuft die auch in DOM einwandfrei. Augenzwinkern

Das mit den Regen DVARS hab ich aber auch noch nicht ausprobiert, mache ich mal die Tage und gebe dann Bescheid ob es geht oder nicht. Freude
Nightwing
So Mike, ich kann Dir n Fix ohne Regen anbieten, allerdings hat der Mapper keinen alternativen AmbientSound, sodass Du zwar den Regen nicht siehst, aber hörst... Und dazuhin ganz unschön ohne Variable.

mp_pval.gsc:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
main(){

	// Dvars abfragen
	// werden in der server.cfg mit
	// set projectvalhalla_rain_on "1"
	// gesetzt
	
	// regen einschalten
	
	if(getDvar( "projectvalhalla_rain_on" ) == "")
		setDvar("projectvalhalla_rain_on", 1);
		
	level.pval_rain_on = getDvarInt( "projectvalhalla_rain_on" );
	
	// splashes einschalten

	if(getDvar( "projectvalhalla_splash_on" ) == "")
		setDvar( "projectvalhalla_splash_on" , 1);
		
	level.pval_splash_on = getDvarInt( "projectvalhalla_splash_on" );
	
	// externe scripten
	// fx
	maps\mp\mp_pval_fx::main();
	// create fx
	maps\createfx\mp_pval_fx::main();
	// ertrinken
	maps\mp\mp_pval_drown::main();
	// aufzuege
	maps\mp\mp_pval_elevators::main();
	// explosive
	maps\mp\_explosive_barrels::main();
	// windows
	maps\mp\_breakable_windows::main();
	// dann load aufrufen
	maps\mp\_load::main();
	
	maps\mp\_compass::setupMiniMap("compass_map_mp_projectvalhalla");
	
	ambientPlay("ambient_cargoshipmp_ext");
	
	// marine test failes so far
	//game["axis"] = "marines";
	game["allies"] = "sas";
	game["axis"] = "russian";
	game["attackers"] = "axis";
	game["defenders"] = "allies";
	game["allies_soldiertype"] = "urban";
	game["axis_soldiertype"] = "urban";
	
	setdvar( "r_specularcolorscale", "1" );
	setdvar("compassmaxrange","1600");
}



mp_pval_fx.gsc:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
main(){

	// rainfx
	if (level.pval_rain_on == 1){
		/*
		level._effect[ "rain_heavy_mist1" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist1", (0, 0, 1280), 3);
		
		level._effect[ "rain_heavy_mist2" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist2", (0, 1850, 1280), 3);
		
		level._effect[ "rain_heavy_mist3" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist3", (-1790, 0, 1280), 3);
		
		level._effect[ "rain_heavy_mist4" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist4", (0, -1792, 1280), 3);
		
		level._effect[ "rain_heavy_mist5" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist5", (1920, -144, 1280), 3);
		
		level._effect[ "rain_heavy_mist6" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist6", (-1184, 1248, 1280), 3);
		
		level._effect[ "rain_heavy_mist7" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist7", (1088, 1360, 1280), 3);
		
		level._effect[ "rain_heavy_mist8" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist8", (1392, -1600, 1280), 3);
		
		level._effect[ "rain_heavy_mist9" ] = loadfx( "weather/rain_mp_cargoship" );
			maps\mp\_fx::loopfx("rain_heavy_mist9", (-1344, -1232, 1280), 3);
*/			
}

	//blitze
	level._effect[ "lightning" ] = loadfx( "weather/lightning_mp_farm" );
		maps\mp\_fx::loopfx("lightning", (0,0,1400), 10);
	
	//die tobende see
	// wegen der performance muss man kompromisse machen
	// das sea model refernzieren
	level.sea_model = getent("sea","targetname");
	thread sea_logic();
	
	if (level.pval_splash_on == 1){
	
		// wavespalshes center
		level._effect[ "wsplash1" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash2" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash3" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash4" ] = loadfx( "misc/watersplash_large" );
		//level._effect[ "wsplash1" ] = loadfx( "myfx/oilrig_watersplash_large" );
		//level._effect[ "wsplash2" ] = loadfx( "myfx/oilrig_watersplash_large" );
		//level._effect[ "wsplash3" ] = loadfx( "myfx/oilrig_watersplash_large" );
		//level._effect[ "wsplash4" ] = loadfx( "myfx/oilrig_watersplash_large" );
		level._effect[ "wsplash5" ] = loadfx( "misc/watersplash_large" );
		
		// wavespalshes landing
		level._effect[ "wsplash6" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash7" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash8" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash9" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash10" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash11" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash12" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash13" ] = loadfx( "misc/watersplash_large" );
		
		// wavesplashes maschine
		level._effect[ "wsplash14" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash15" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash16" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash17" ] = loadfx( "misc/watersplash_large" );
		
		// wavesplashes freight
		level._effect[ "wsplash18" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash19" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash20" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash21" ] = loadfx( "misc/watersplash_large" );
		
		// wavesplashes control
		level._effect[ "wsplash22" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash23" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash24" ] = loadfx( "misc/watersplash_large" );
		level._effect[ "wsplash25" ] = loadfx( "misc/watersplash_large" );
		
		thread wsplashes_center_logic();
		thread wsplashes_landing_logic();
		thread wsplashes_maschine_logic();
		thread wsplashes_freight_logic();
		thread wsplashes_control_logic();
	}
}

// splashes centerplatform
wsplashes_center_logic(){

	while(1){
	
		wait 0.125;
		level.nextsplash = RandomIntRange(1, 6);
		
		if (level.nextsplash == 1){
		
			//
			PlayFX(level._effect[ "wsplash1" ], (384, -384, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash4" ], (-384, 384, -780));
			wait 1;
			PlayFX(level._effect[ "wsplash5" ], (0, 0, -600));
		}

		else if (level.nextsplash == 2){
		
			PlayFX(level._effect[ "wsplash2" ], (384, 384, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash3" ], (-384, -384, -780));
		}

		else if (level.nextsplash == 3){
		
			PlayFX(level._effect[ "wsplash3" ], (-384, -384, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash1" ], (384, -384, -780));
			wait 1;
			PlayFX(level._effect[ "wsplash5" ], (0, 0, -650));
		}
		
		else if (level.nextsplash == 4){
		
			PlayFX(level._effect[ "wsplash4" ], (-384, 384, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash2" ], (384, 384, -780));
		}
		
		else if (level.nextsplash == 5){
		
			PlayFX(level._effect[ "wsplash5" ], (0, 0, -600));
			wait 1;
			PlayFX(level._effect[ "wsplash2" ], (384, -384, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash1" ], (-384, -384, -780));
		}
		
		wait RandomIntRange(3, 7);
	}
}

// splashes landingplatform
wsplashes_landing_logic(){

	while(1){
	
		wait 0.125;
		level.nextsplash2 = RandomIntRange(1, 5);
		//1
		PlayFX(level._effect[ "wsplash6" ], (1888, 736, -620));
		//2
		PlayFX(level._effect[ "wsplash7" ], (1184, 736, -620));
		//3
		PlayFX(level._effect[ "wsplash8" ], (1184, 32, -620));
		//4
		PlayFX(level._effect[ "wsplash9" ], (1888, 32, -620));
		//5
		PlayFX(level._effect[ "wsplash10" ], (1632, -224, -620));
		//6
		PlayFX(level._effect[ "wsplash11" ], (2336, -224, -620));
		//7
		PlayFX(level._effect[ "wsplash12" ], (2336, -928, -620));
		//8
		PlayFX(level._effect[ "wsplash13" ], (1632, -928, -620));
		
		if (level.nextsplash2 == 1){
		
			PlayFX(level._effect[ "wsplash7" ], (1184, 736, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash8" ], (1184, 32, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash10" ], (1632, -224, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash13" ], (1632, -928, -680));
		}
		
		else if (level.nextsplash2 == 2){
		
			PlayFX(level._effect[ "wsplash6" ], (1888, 736, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash9" ], (1888, 32, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash11" ], (2336, -224, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash12" ], (2336, -928, -680));
		}
		
		else if (level.nextsplash2 == 3){
		
			PlayFX(level._effect[ "wsplash6" ], (1888, 736, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash7" ], (1184, 736, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash8" ], (1184, 32, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash9" ], (1888, 32, -680));
		}
		
		else if (level.nextsplash2 == 4){
		
			PlayFX(level._effect[ "wsplash10" ], (1632, -224, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash11" ], (2336, -224, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash12" ], (2336, -928, -680));
			wait 0.5;
			PlayFX(level._effect[ "wsplash13" ], (1632, -928, -680));
		}

		wait RandomIntRange(4, 10);
	}
}

// splashes maschineplatform
wsplashes_maschine_logic(){

	while(1){
	
		wait 0.125;
		level.nextsplash3 = RandomIntRange(1, 5);
		//1
		PlayFX(level._effect[ "wsplash14" ], (-352, -1440, -780));
		//2
		PlayFX(level._effect[ "wsplash15" ], (352, -1440, -780));
		//3
		PlayFX(level._effect[ "wsplash16" ], (352, -2144, -780));
		//4
		PlayFX(level._effect[ "wsplash17" ], (-352, -2144, -780));
		
		if (level.nextsplash3 == 1){
		
			PlayFX(level._effect[ "wsplash14" ], (-352, -1440, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash15" ], (352, -1440, -780));
		}
		
		else if (level.nextsplash3 == 2){
		
			PlayFX(level._effect[ "wsplash14" ], (-352, -1440, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash16" ], (352, -2144, -780));
		}
		
		else if (level.nextsplash3 == 3){
		
			PlayFX(level._effect[ "wsplash15" ], (352, -1440, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash17" ], (-352, -2144, -780));
		}
		
		else if (level.nextsplash3 == 4){
		
			PlayFX(level._effect[ "wsplash14" ], (-352, -1440, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash15" ], (352, -1440, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash16" ], (352, -2144, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash17" ], (-352, -2144, -780));
		}

		wait RandomIntRange(4, 8);
	}
}

// splashes freightplatform
wsplashes_freight_logic(){

	while(1){
	
		wait 0.125;
		level.nextsplash4 = RandomIntRange(1, 5);
		//1
		PlayFX(level._effect[ "wsplash18" ], (-1440, -352, -920));
		//2
		PlayFX(level._effect[ "wsplash19" ], (-2144, -352, -920));
		//3
		PlayFX(level._effect[ "wsplash20" ], (-2144, 352, -920));
		//4
		PlayFX(level._effect[ "wsplash21" ], (-1440, 352, -920));
		
		if (level.nextsplash4 == 1){
		
			PlayFX(level._effect[ "wsplash18" ], (-1440, -352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash19" ], (-2144, -352, -920));
		}
		
		else if (level.nextsplash4 == 2){
		
			PlayFX(level._effect[ "wsplash20" ], (-2144, 352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash21" ], (-1440, 352, -920));
		}
		
		else if (level.nextsplash4 == 3){
		
			PlayFX(level._effect[ "wsplash18" ], (-1440, -352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash21" ], (-1440, 352, -920));
		}
		
		else if (level.nextsplash4 == 4){
		
			PlayFX(level._effect[ "wsplash18" ], (-1440, -352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash19" ], (-2144, -352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash20" ], (-2144, 352, -920));
			wait 0.5;
			PlayFX(level._effect[ "wsplash21" ], (-1440, 352, -920));
		}

		wait RandomIntRange(4, 8);
	}
}

// splashes controlplatform
wsplashes_control_logic(){

	while(1){
	
		wait 0.125;
		level.nextsplash5 = RandomIntRange(1, 5);
		//1
		PlayFX(level._effect[ "wsplash22" ], (-352, 2208, -780));
		//2
		PlayFX(level._effect[ "wsplash23" ], (352, 2208, -780));
		//3
		PlayFX(level._effect[ "wsplash24" ], (352, 1504, -780));
		//4
		PlayFX(level._effect[ "wsplash25" ], (-352, 1504, -780));
		
		if (level.nextsplash5 == 1){
		
			PlayFX(level._effect[ "wsplash22" ], (-352, 2208, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash25" ], (-352, 1504, -780));
		}
		
		else if (level.nextsplash5 == 2){
		
			PlayFX(level._effect[ "wsplash23" ], (352, 2208, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash24" ], (352, 1504, -780));
		}
		
		else if (level.nextsplash5 == 3){
		
			PlayFX(level._effect[ "wsplash24" ], (352, 1504, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash25" ], (-352, 1504, -780));
		}
		
		else if (level.nextsplash5 == 4){
		
			PlayFX(level._effect[ "wsplash22" ], (-352, 2208, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash23" ], (352, 2208, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash24" ], (352, 1504, -780));
			wait 0.5;
			PlayFX(level._effect[ "wsplash25" ], (-352, 1504, -780));
		}
		
		wait RandomIntRange(4, 8);
	}
}

// der thread für die see
sea_logic(){

	level.rotationy = 0;
	level.rotationp = 0;
	level.rotationr = 0;
	level.rotationyd = 20;
	level.searollstate = "up";
	level.seatimer = 15;
	
	while(1){
	
		// schwanken der see
		if (level.searollstate == "up"){
		
			level.rotationr = randomfloatrange(2, 5);
		}
		
		else{
		
			level.rotationr = level.rotationr * -1;
		}
		
		// rotation ums level zentrum
		level.rotationy = level.rotationy +level.rotationyd;
		// sonst gibts evtl. einen overflow;
		if (level.rotationy > 360){
		
			level.rotationy = level.rotationy - 360;
		}
		
		curr_rotation = (level.rotationp, level.rotationy, level.rotationr);
		level.sea_model rotateto(curr_rotation ,level.seatimer );
		wait level.seatimer;
		
		// switch roll
		if (level.searollstate == "up"){
		
			level.searollstate = "down";
		}
		
		else{
		
			level.searollstate = "up";
		}
	}
}



ToM