source: 2012/09-22/SanteriH/Kynari/Kynari/Kynari/Kynari.cs @ 4761

Revision 4761, 219.5 KB checked in by saolhaka, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Physics2DDotNet.Ignorers;
8
9public class Pelaaja : PlatformCharacter
10{
11    public bool DamageResistance { get; set; }
12    public bool DamageVulnerability { get; set; }
13    public bool voikoPoimiaAseen { get; set; }
14    public string varaAse;
15    public Explosion ViimeisinRajahdys { get; set; }
16    public DoubleMeter HPLaskuri { get; set; }
17    public Direction lukittuSuunta;
18    public Pelaaja(double width, double height, Shape shape)
19        : base(width, height, shape)
20    {
21        voikoPoimiaAseen = true;
22        DamageResistance = false;
23        DamageVulnerability = false;
24        varaAse = null;
25    }
26}
27
28// Yksinkertainen tasohyppely.
29public class Kynari : PhysicsGame
30{
31    #region Muuttujat
32
33    const double LIIKEVOIMA = 400;
34    const double HYPPYVOIMA = 850;
35    const double RUUDUNLEVEYS = 30;
36    const double RUUDUNKORKEUS = 30;
37    string Aseet = "Kaikki aseet";
38    string PowerUpit = "Päällä";
39    string Modit = "Päällä";
40    string HP = "Päällä";
41    string SailytaAse = "Kyllä";
42    string ase = null;
43    string ase2 = null;
44    int PISTEMAARA_JOLLA_VOITTAA_PELIN = 3;
45    int PHPMAARA = 100;
46    int HPBOOST = 25;
47    int HPBOOSTSINGLE = 25;
48    int kentta = 1;
49    int taso = 0;
50    int powerupmaara = 0;
51    int modmaara = 0;
52    int hpmaara = 0;
53    double CURRENTHP = 100;
54    double MAXHP = 100;
55
56    Pelaaja pelaaja1 = new Pelaaja(40, 40, Shape.Circle);
57    Pelaaja pelaaja2 = new Pelaaja(40, 40, Shape.Circle);
58
59    Image ammuslv4 = LoadImage("ammuslv4");
60    Image ammuslvx = LoadImage("ammuslvx");
61    Image portaalikuva = LoadImage("portal");
62    Image hpkuva = LoadImage("health");
63    Image hpboostkuva = LoadImage("boost");
64    Image kranaatinheittimenkuva = LoadImage("grenadelauncher");
65    Image kranaatinheittimenkuva2 = LoadImage("grenadelauncher2");
66    Image kranaatinheittimenkuva3 = LoadImage("grenadelauncher3");
67    Image kranaatinheittimenkuva4 = LoadImage("grenadelauncher4");
68    Image kranaatinkuva = LoadImage("grenade");
69    Image kranaatinkuva2 = LoadImage("grenade2");
70    Image kranaatinkuva3 = LoadImage("grenade3");
71    Image kranaatinkuva4 = LoadImage("grenade4");
72    Image magnumkuva = LoadImage("magnum");
73    Image magnumkuva2 = LoadImage("magnum2");
74    Image magnumkuva3 = LoadImage("magnum3");
75    Image magnumkuva4 = LoadImage("magnum4");
76    Image miekankuva = LoadImage("miekka");
77    Image miekkahit = LoadImage("miekkaattack");
78    Image miekkaswing = LoadImage("miekkaswing");
79    Image miekkaswing4 = LoadImage("miekkaswing4");
80    Image miekkaswingx = LoadImage("miekkaswingx");
81    Image norsu = LoadImage("norsu");
82    Image norsu2 = LoadImage("norsu2");
83    Image haulikonkuva = LoadImage("shotgun");
84    Image haulikonkuva2 = LoadImage("shotgun2");
85    Image haulikonkuva3 = LoadImage("shotgun3");
86    Image haulikonkuva4 = LoadImage("shotgun4");
87    Image pistoolinkuva = LoadImage("pistol");
88    Image pistoolinkuva2 = LoadImage("pistol2");
89    Image pistoolinkuva3 = LoadImage("pistol3");
90    Image pistoolinkuva4 = LoadImage("pistol4");
91    Image kivaarinkuva = LoadImage("assaultrifle");
92    Image kivaarinkuva2 = LoadImage("assaultrifle2");
93    Image kivaarinkuva3 = LoadImage("assaultrifle3");
94    Image kivaarinkuva4 = LoadImage("assaultrifle4");
95    Image raketinheittimenkuva = LoadImage("rocketlauncher");
96    Image raketinheittimenkuva2 = LoadImage("rocketlauncher2");
97    Image raketinheittimenkuva3 = LoadImage("rocketlauncher3");
98    Image raketinheittimenkuva4 = LoadImage("rocketlauncher4");
99    Image raketinkuva = LoadImage("rocket");
100    Image raketinkuva2 = LoadImage("rocket2");
101    Image raketinkuva3 = LoadImage("rocket3");
102    Image raketinkuva4 = LoadImage("rocket4");
103    Image sniperinkuva = LoadImage("sniper");
104    Image sniperinkuva2 = LoadImage("sniper2");
105    Image sniperinkuva3 = LoadImage("sniper3");
106    Image sniperinkuva4 = LoadImage("sniper4");
107    Image target = LoadImage("target");
108    Image powerupinkuva = LoadImage("upgrade");
109    Image sidegradekuva = LoadImage("sidegrade");
110    Image flaregunkuva = LoadImage("flaregun");
111    Image flaregunkuva2 = LoadImage("flaregun2");
112    Image flaregunkuva3 = LoadImage("flaregun3");
113    Image flaregunkuva4 = LoadImage("flaregun4");
114    Image flarekuva = LoadImage("flare");
115    Image flarekuva2 = LoadImage("flare2");
116    Image flarekuva3 = LoadImage("flare3");
117    Image flarekuva4 = LoadImage("flare4");
118    Image konepistoolinkuva = LoadImage("smg");
119
120    bool saaAmpua = false;
121    bool tasapeli = false;
122    bool sailytahp = false;
123
124    SoundEffect hyppyAani = LoadSoundEffect("hyppays");
125    SoundEffect portalAani = LoadSoundEffect("maali");
126
127    ProgressBar hpNaytto;
128    ProgressBar hpNaytto2;
129
130    IntMeter pelaajan1Pisteet;
131    IntMeter pelaajan2Pisteet;
132
133
134    #endregion
135
136    #region Alustukset
137    public override void Begin()
138    {
139        pelaajan1Pisteet = new IntMeter(0);
140        pelaajan2Pisteet = new IntMeter(0);
141
142        DrawPerimeter = false; // ei haluta piirtää kentän reunoja
143        //IsFullScreen = true;
144        LuoAlkuValikko();
145    }
146
147    void AloitaUusiPeli()
148    {
149        MessageDisplay.Clear();
150        // ladataan kenttä
151        LuoKentta();
152        lisaaNappaimet();
153        LisaaLaskurit();
154        LisaaHPNaytot();
155        naytaTiedot();
156        tasapeli = false;
157        saaAmpua = false;
158        Timer.SingleShot(0.1, delegate
159        {
160            saaAmpua = true;
161        });
162    }
163    #endregion
164
165
166    #region KentanLataus
167
168    void LuoTasoKentta()
169    {
170        ClearAll();
171        TileMap ruudut = TileMap.FromLevelAsset("taso" + taso);
172        ruudut.SetTileMethod('x', LuoReuna);
173        ruudut.SetTileMethod('t', LuoTaso);
174        ruudut.SetTileMethod('l', LuoLyhytTaso);
175        ruudut.SetTileMethod('p', LuoPitkaTaso);
176        ruudut.SetTileMethod('k', LuoKeskipitkaTaso);
177        ruudut.SetTileMethod('j', LuoLyhytPystyTaso);
178        ruudut.SetTileMethod('z', LuoLattia);
179        ruudut.SetTileMethod('c', LuoSeina);
180        ruudut.SetTileMethod('.', LuoKohde);
181        ruudut.SetTileMethod(',', LuoPoltettavaTaso);
182        ruudut.SetTileMethod('w', LuoPortaali);
183        ruudut.SetTileMethod('p', LuoTutorialAse, new Vector(16, 11), "Pistooli", pistoolinkuva);
184        ruudut.SetTileMethod('f', LuoTutorialAse, new Vector(18, 10), "Valopistooli", flaregunkuva);
185        ruudut.SetTileMethod('v', LuoNorsuVihu, "Pistooli");
186        ruudut.SetTileMethod('i', LuoNorsuVihu, "Valopistooli");
187        ruudut.SetTileMethod('a', LuoNorsuVihu, "Kivääri");
188        ruudut.SetTileMethod('m', LuoAse, new Vector(24, 24), "Miekka", miekankuva);
189        ruudut.SetTileMethod('+', LuoPowerUp1, new Vector(16, 20), "Power Up", powerupinkuva);
190        ruudut.SetTileMethod('-', LuoMod1, new Vector(16, 20), "Upgrade", sidegradekuva);
191        ruudut.SetTileMethod('h', LuoHP1, new Vector(20, 21), "HP", hpkuva);
192        ruudut.SetTileMethod('*', LuoHPIncrease, new Vector(20, 21), "HP Boost", hpboostkuva);
193        ruudut.SetTileMethod('P', LuoAse, new Vector(16, 11), "Pistooli", pistoolinkuva);
194        ruudut.SetTileMethod('A', LuoAse, new Vector(39, 13), "Kivääri", kivaarinkuva);
195        ruudut.SetTileMethod('G', LuoAse, new Vector(42, 15), "Kranaatinheitin", kranaatinheittimenkuva);
196        ruudut.SetTileMethod('S', LuoAse, new Vector(42, 10), "Haulikko", haulikonkuva);
197        ruudut.SetTileMethod('M', LuoAse, new Vector(17, 12), "Magnum", magnumkuva);
198        ruudut.SetTileMethod('R', LuoAse, new Vector(48, 15), "Raketinheitin", raketinheittimenkuva);
199        ruudut.SetTileMethod('U', LuoAse, new Vector(42, 11), "Sniper", sniperinkuva);
200        ruudut.SetTileMethod('F', LuoAse, new Vector(18, 10), "Valopistooli", flaregunkuva);
201        ruudut.SetTileMethod('1', delegate(Vector paikka, double leveys, double korkeus) { pelaaja1 = LuoYksinPelaaja(paikka, leveys, korkeus, Direction.Right, pelaaja1); });
202        ruudut.Execute(RUUDUNLEVEYS, RUUDUNKORKEUS);
203        Level.Background.CreateGradient(Color.White, Color.Gray);
204        Gravity = new Vector(0, -1500);
205        Camera.Follow(pelaaja1);
206    }
207
208    void LuoKentta()
209    {
210        ClearAll();
211        List<Vector> powerupvektorit = new List<Vector>();
212        List<Vector> modvektorit = new List<Vector>();
213        List<Vector> hpvektorit = new List<Vector>();
214
215        powerupmaara = 0;
216        hpmaara = 0;
217        TileMap ruudut = TileMap.FromLevelAsset("kentta" + kentta);
218        ruudut.SetTileMethod('x', LuoReuna);
219        ruudut.SetTileMethod('t', LuoTaso);
220        ruudut.SetTileMethod('l', LuoLyhytTaso);
221        ruudut.SetTileMethod('p', LuoPitkaTaso);
222        ruudut.SetTileMethod('k', LuoKeskipitkaTaso);
223        ruudut.SetTileMethod('j', LuoLyhytPystyTaso);
224        ruudut.SetTileMethod('z', LuoLattia);
225        ruudut.SetTileMethod('c', LuoSeina);
226        ruudut.SetTileMethod('+', LisaaPowerUpPaikka, powerupvektorit);
227        ruudut.SetTileMethod('-', LisaaModPaikka, modvektorit);
228        ruudut.SetTileMethod('h', LisaaHPPaikka, hpvektorit);
229        if (Aseet == "Paljon aseita" || Aseet == "Kaikki aseet") { ruudut.SetTileMethod('A', LuoAse, new Vector(39, 13), "Kivääri", kivaarinkuva); }
230        if (Aseet == "Kaikki aseet") { ruudut.SetTileMethod('G', LuoAse, new Vector(42, 15), "Kranaatinheitin", kranaatinheittimenkuva); }
231        if (Aseet == "Paljon aseita" || Aseet == "Kaikki aseet") { ruudut.SetTileMethod('S', LuoAse, new Vector(42, 10), "Haulikko", haulikonkuva); }
232        if (Aseet != "Ei aseita") { ruudut.SetTileMethod('M', LuoAse, new Vector(17, 12), "Magnum", magnumkuva); }
233        if (Aseet == "Vähän aseita") { ruudut.SetTileMethod('A', LuoAse, new Vector(17, 12), "Magnum", magnumkuva); }
234        if (Aseet == "Vähän aseita") { ruudut.SetTileMethod('S', LuoAse, new Vector(17, 12), "Magnum", magnumkuva); }
235        if (Aseet == "Kaikki aseet") { ruudut.SetTileMethod('R', LuoAse, new Vector(48, 15), "Raketinheitin", raketinheittimenkuva); }
236        if (Aseet == "Kaikki aseet") { ruudut.SetTileMethod('U', LuoAse, new Vector(42, 11), "Sniper", sniperinkuva); }
237
238        // Koodi aseet
239        ruudut.SetTileMethod('F', LuoAse, new Vector(18, 10), "Valopistooli", flaregunkuva);
240
241        ruudut.SetTileMethod('1', delegate(Vector paikka, double leveys, double korkeus) { pelaaja1 = LuoPelaaja(paikka, leveys, korkeus, Direction.Right, pelaaja1); });
242        ruudut.SetTileMethod('2', delegate(Vector paikka, double leveys, double korkeus) { pelaaja2 = LuoPelaaja(paikka, leveys, korkeus, Direction.Left, pelaaja2); });
243        ruudut.Execute(RUUDUNLEVEYS, RUUDUNKORKEUS);
244        Level.Background.CreateGradient(Color.White, Color.Gray);
245        Gravity = new Vector(0, -1500);
246        Camera.ZoomToLevel();
247
248        Timer timer = new Timer();
249        timer.Interval = 0.1;
250        timer.Timeout += delegate { TarkistaReunat(Level.Right - 1.5 * RUUDUNLEVEYS, Level.Top - 1.5 * RUUDUNKORKEUS); };
251        timer.Start();
252
253        if (PowerUpit == "Päällä" && kentta != 0)
254        {
255            Timer poweruptimer = new Timer();
256            poweruptimer.Interval = 6.0;
257            poweruptimer.Timeout += delegate
258            {
259                if (powerupmaara < 3)
260                {
261                    double luku = RandomGen.NextDouble(0.0, 1.0);
262                    if (luku < 0.4)
263                    {
264                        Vector paikka = powerupvektorit[RandomGen.NextInt(0, powerupvektorit.Count)];
265                        GameObject nimi = GetObjectAt(paikka, "Power Up", 10);
266                        if (nimi == null)
267                        {
268                            powerupmaara += 1;
269                            LuoPowerUp(paikka, new Vector(16, 20), "Power Up", powerupinkuva);
270                        }
271                    }
272                }
273            };
274            poweruptimer.Start();
275        }
276
277        if (Modit == "Päällä" && kentta != 0)
278        {
279            Timer modtimer = new Timer();
280            modtimer.Interval = 7.0;
281            modtimer.Timeout += delegate
282            {
283                if (modmaara < 3)
284                {
285                    double luku = RandomGen.NextDouble(0.0, 1.0);
286                    if (luku < 0.2)
287                    {
288                        Vector paikka = modvektorit[RandomGen.NextInt(0, modvektorit.Count)];
289                        GameObject nimi = GetObjectAt(paikka, "Mod", 10);
290                        if (nimi == null)
291                        {
292                            modmaara += 1;
293                            LuoMod(paikka, new Vector(16, 20), "Mod", sidegradekuva);
294                        }
295                    }
296                }
297            };
298            modtimer.Start();
299        }
300
301        if (HP == "Päällä" && kentta != 0)
302        {
303            Timer hptimer = new Timer();
304            hptimer.Interval = 7.5;
305            hptimer.Timeout += delegate
306            {
307                if (hpmaara < 3)
308                {
309                    double luku = RandomGen.NextDouble(0.0, 1.0);
310                    if (luku < 0.5)
311                    {
312                        Vector paikka = hpvektorit[RandomGen.NextInt(0, hpvektorit.Count)];
313                        GameObject nimi = GetObjectAt(paikka, "HP", 10);
314                        if (nimi == null)
315                        {
316                            hpmaara += 1;
317                            LuoHP(paikka, new Vector(20, 21), "HP", hpkuva);
318                        }
319                    }
320                }
321            };
322            hptimer.Start();
323        }
324
325    }
326
327    void LuoReuna(Vector paikka, double leveys, double korkeus)
328    {
329        PhysicsObject reuna = new PhysicsObject(leveys, korkeus);
330        reuna.Position = paikka;
331        reuna.Color = Color.Gray;
332        reuna.Tag = "reuna";
333        reuna.MakeStatic();
334        Add(reuna);
335    }
336
337    void LuoKeskipitkaTaso(Vector paikka, double leveys, double korkeus)
338    {
339        PhysicsObject taso = new PhysicsObject(leveys * 4, korkeus);
340        taso.Position = paikka + new Vector(leveys * 1.5, 0);
341        taso.Color = Color.Gray;
342        taso.Tag = "taso";
343        taso.MakeStatic();
344        Add(taso);
345    }
346
347    void LuoLyhytPystyTaso(Vector paikka, double leveys, double korkeus)
348    {
349        PhysicsObject taso = new PhysicsObject(leveys, korkeus * 2);
350        taso.Position = paikka + new Vector(0, -korkeus * 0.5);
351        taso.Color = Color.Gray;
352        taso.Tag = "taso";
353        taso.MakeStatic();
354        Add(taso);
355    }
356
357    void LuoPoltettavaTaso(Vector paikka, double leveys, double korkeus)
358    {
359        PhysicsObject taso = new PhysicsObject(leveys, korkeus * 2);
360        taso.Position = paikka + new Vector(0, -korkeus * 0.5);
361        taso.Color = Color.DarkForestGreen;
362        taso.Tag = "poltettava taso";
363        taso.MakeStatic();
364        Add(taso);
365    }
366
367    void LuoPortaali(Vector paikka, double leveys, double korkeus)
368    {
369        PhysicsObject portal = new PhysicsObject(leveys, korkeus * 2);
370        portal.Position = paikka + new Vector(0, -korkeus * 0.5);
371        portal.Image = portaalikuva;
372        portal.Tag = "Portaali";
373        portal.MakeStatic();
374        Add(portal);
375        AddCollisionHandler(portal, "pelaaja", SeuraavaTaso);
376    }
377
378    void LuoLattia(Vector paikka, double leveys, double korkeus)
379    {
380        PhysicsObject reuna = new PhysicsObject(leveys * 58, korkeus);
381        reuna.Position = paikka + new Vector(leveys * 28.5, 0);
382        reuna.Color = Color.Gray;
383        reuna.Tag = "reuna";
384        reuna.MakeStatic();
385        Add(reuna);
386    }
387
388    void LuoSeina(Vector paikka, double leveys, double korkeus)
389    {
390        PhysicsObject reuna = new PhysicsObject(leveys, korkeus * 32);
391        reuna.Position = paikka + new Vector(0, -korkeus * 15.5);
392        reuna.Color = Color.Gray;
393        reuna.Tag = "reuna";
394        reuna.MakeStatic();
395        Add(reuna);
396    }
397
398    void LuoLyhytTaso(Vector paikka, double leveys, double korkeus)
399    {
400        PhysicsObject taso = new PhysicsObject(leveys * 3, korkeus);
401        taso.Position = paikka + new Vector(leveys * 1, 0);
402        taso.Color = Color.Gray;
403        taso.Tag = "taso";
404        taso.MakeStatic();
405        Add(taso);
406    }
407
408    void LuoPitkaTaso(Vector paikka, double leveys, double korkeus)
409    {
410        PhysicsObject taso = new PhysicsObject(leveys * 5, korkeus);
411        taso.Position = paikka + new Vector(leveys * 2, 0);
412        taso.Color = Color.Gray;
413        taso.Tag = "taso";
414        taso.MakeStatic();
415        Add(taso);
416    }
417
418    void LuoTaso(Vector paikka, double leveys, double korkeus)
419    {
420        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
421        taso.Position = paikka;
422        taso.Color = Color.Gray;
423        taso.Tag = "taso";
424        taso.MakeStatic();
425        Add(taso);
426    }
427    void LuoKohde(Vector paikka, double leveys, double korkeus)
428    {
429        PhysicsObject kohde = new PhysicsObject(20, 20);
430        kohde.Position = paikka;
431        kohde.Image = target;
432        kohde.Tag = "Target";
433        kohde.MakeStatic();
434        Add(kohde);
435        AddCollisionHandler(kohde, "ammus", delegate (PhysicsObject o, PhysicsObject k) { TuhoaKohde(kohde); });
436        AddCollisionHandler(kohde, "Kohde tuhottu", delegate(PhysicsObject o, PhysicsObject k) { TuhoaKohde(kohde); });
437    }
438
439    void LuoTutorialAse(Vector paikka, double leveys, double korkeus, Vector koko, string asetag, Image kuva)
440    {
441        PhysicsObject ase = new PhysicsObject(koko.X, koko.Y);
442        ase.Position = paikka;
443        ase.Image = kuva;
444        Add(ase);
445        if (asetag == "Pistooli")
446        {
447            AddCollisionHandler<PhysicsObject, Pelaaja>(ase, "pelaaja", delegate { PudotaAseenHahmo(pelaaja1); LuoAsePelaajalle(asetag, pelaaja1); ase.Destroy(); MessageDisplay.Add("Ammu: Space / RT"); });
448        }
449        if (asetag == "Valopistooli")
450        {
451            AddCollisionHandler<PhysicsObject, Pelaaja>(ase, "pelaaja", delegate { if (pelaaja1.Weapon != null && pelaaja1.Weapon.Tag != null) { string aseentag = pelaaja1.Weapon.Tag.ToString(); pelaaja1.Clear(); if (pelaaja1.varaAse != null) { PudotaAseenHahmo(pelaaja1); LuoAsePelaajalle(pelaaja1.varaAse, pelaaja1); } else { LuoAsePelaajalle(aseentag, pelaaja1); } } else if (pelaaja1.varaAse != null) { pelaaja1.Clear(); LuoAsePelaajalle(pelaaja1.varaAse, pelaaja1); } LuoVaraAse(asetag, pelaaja1); ase.Destroy(); MessageDisplay.Add("Vaihda asetta: E / LT"); });
452        }
453    }
454
455    void PoltaTaso(PhysicsObject taso)
456    {
457        GameObject liekki = new GameObject(34, 64);
458        liekki.Color = new Color(Color.Orange, 150);
459        liekki.Shape = Shape.Rectangle;
460       
461        taso.Add(liekki);
462        Timer.SingleShot(1.0, delegate { taso.Remove(liekki); taso.Destroy(); });
463    }
464
465    void TuhoaKohde(PhysicsObject kohde)
466    {
467        Explosion rajahdys = new Explosion(80);
468        rajahdys.UseShockWave = false;
469        rajahdys.Position = kohde.Position;
470        rajahdys.Tag = "Kohde rajahdys";
471        Add(rajahdys);
472        kohde.Destroy();
473        kohde.Destroyed += delegate
474        {
475            List<GameObject> ketaLahella = GetObjects(x => x.Tag.ToString() == "Target" && Vector.Distance(x.Position, kohde.Position) < kohde.Width * 2);
476            ketaLahella.ForEach(x => TuhoaKohde(x as PhysicsObject));
477        };
478    }
479
480    void LuoNorsuVihu(Vector paikka, double leveys, double korkeus, string ase)
481    {
482        Pelaaja norsu = new Pelaaja(35.0, 35.0, Shape.Circle);
483        norsu.Image = norsu2;
484        norsu.Tag = "Norsu";
485        norsu.Position = paikka;
486        norsu.HPLaskuri = new DoubleMeter(45, 0, 45);
487        norsu.HPLaskuri.MaxValue = 45;
488        norsu.HPLaskuri.Value = 45;
489        norsu.HPLaskuri.LowerLimit += delegate()
490        {
491            NorsuKuoli(norsu);
492        };
493
494       
495        PlatformWandererBrain pBrain = new PlatformWandererBrain();
496        //pBrain.TriesToJump = true;
497        //pBrain.FallsOffPlatforms = true;
498        pBrain.Speed = 200;
499
500        FollowerBrain brain = new FollowerBrain( "pelaaja" );
501        brain.DistanceFar = 500;
502        brain.DistanceClose = 300;
503        brain.StopWhenTargetClose = true;
504        brain.TargetClose += delegate
505        { 
506            if (pelaaja1.IsDestroyed == false) Ammu(norsu);
507            if (pelaaja1.Position.X > norsu.Position.X) norsu.FacingDirection = Direction.Right;
508            if (pelaaja1.Position.X < norsu.Position.X) norsu.FacingDirection = Direction.Left;
509        };
510        brain.FarBrain = pBrain;
511        brain.Speed = 400;
512
513        norsu.Brain = brain;
514
515        //Timer timer = new Timer();
516        //timer.Interval = RandomGen.NextDouble(1.0, 3.0);
517        //timer.Timeout += delegate { norsu.Jump(600); };
518        //timer.Start();
519
520        Add(norsu);
521        LuoAsePelaajalle(ase, norsu);
522    }
523
524    void TarkistaReunat(double leveys, double korkeus)
525    {
526        if (pelaaja1.Position.X < -leveys) pelaaja1.Position = new Vector(-leveys, pelaaja1.Position.Y);
527        if (pelaaja1.Position.X > leveys) pelaaja1.Position = new Vector(leveys, pelaaja1.Position.Y);
528        if (pelaaja1.Position.Y < -korkeus) pelaaja1.Position = new Vector(pelaaja1.Position.X, -korkeus);
529        if (pelaaja1.Position.Y > korkeus) pelaaja1.Position = new Vector(pelaaja1.Position.Y, korkeus);
530        if (pelaaja2.Position.X < -leveys) pelaaja2.Position = new Vector(-leveys, pelaaja2.Position.Y);
531        if (pelaaja2.Position.X > leveys) pelaaja2.Position = new Vector(leveys, pelaaja2.Position.Y);
532        if (pelaaja2.Position.Y < -korkeus) pelaaja2.Position = new Vector(pelaaja2.Position.X, -korkeus);
533        if (pelaaja2.Position.Y > korkeus) pelaaja2.Position = new Vector(pelaaja2.Position.Y, korkeus);
534    }
535
536    void LuoAlkuValikko()
537    {
538        ClearAll();
539        NollaaLaskurit();
540        MultiSelectWindow alkuValikko = new MultiSelectWindow("Kynäri",
541        "Yksinpeli", "Moninpeli", "Asetukset", "Lopeta");
542        Add(alkuValikko);
543        alkuValikko.AddItemHandler(0, LuoTasoValikko);
544        alkuValikko.AddItemHandler(1, LuoKenttaValikko);
545        alkuValikko.AddItemHandler(2, LuoAsetukset, 0);
546        alkuValikko.AddItemHandler(3, Exit);
547        alkuValikko.DefaultCancel = 3;
548        alkuValikko.Color = Color.Gray;
549        Level.Background.Color = Color.Gray;
550
551        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { alkuValikko.SelectedIndex = (alkuValikko.Buttons.Length + alkuValikko.SelectedIndex - 1) % alkuValikko.Buttons.Length; }, null).InContext(alkuValikko);
552        ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { alkuValikko.SelectedIndex = (alkuValikko.SelectedIndex + 1) % alkuValikko.Buttons.Length; }, null).InContext(alkuValikko);
553        ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { Exit(); }, null).InContext(alkuValikko);
554        ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { alkuValikko.SelectedButton.Click(); }, null).InContext(alkuValikko);
555    }
556
557    void LuoAsetukset(int valinta)
558    {
559        ClearAll();
560        MultiSelectWindow asetukset = new MultiSelectWindow("Asetukset", "Voittoon tarvittava pistemäärä: " + PISTEMAARA_JOLLA_VOITTAA_PELIN,
561        "Pelaajien HP määrä: " + PHPMAARA, "Kentällä olevat aseet: " + Aseet, "Power Upit: " + PowerUpit, "Modit: " + Modit, "HP Boostit: " + HP, "HP Boostin Määrä: " + HPBOOST, "Säilytä aseet erien välissä: " + SailytaAse, "Takaisin");
562        asetukset.AddItemHandler(0, AsetaPistemaara);
563        asetukset.AddItemHandler(1, AsetaHP);
564        asetukset.AddItemHandler(2, AsetaAseet);
565        asetukset.AddItemHandler(3, AsetaPowerUpit);
566        asetukset.AddItemHandler(4, AsetaModit);
567        asetukset.AddItemHandler(5, AsetaHPBoostit);
568        asetukset.AddItemHandler(6, AsetaHPBoostiMaara);
569        asetukset.AddItemHandler(7, AsetaSailytaAse);
570        asetukset.AddItemHandler(8, LuoAlkuValikko);
571
572        asetukset.Color = Color.Gray;
573        Level.Background.Color = Color.Gray;
574        asetukset.DefaultCancel = 7;
575        Add(asetukset);
576        asetukset.SelectedIndex = valinta;
577
578        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { asetukset.SelectedIndex = (asetukset.Buttons.Length + asetukset.SelectedIndex - 1) % asetukset.Buttons.Length; }, null).InContext(asetukset);
579        ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { asetukset.SelectedIndex = (asetukset.SelectedIndex + 1) % asetukset.Buttons.Length; }, null).InContext(asetukset);
580        ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { LuoAlkuValikko(); }, null).InContext(asetukset);
581        ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { asetukset.SelectedButton.Click(); }, null).InContext(asetukset);
582    }
583
584    void LuoVoittoRuutu(string tulos)
585    {
586        ClearAll();
587        if (tasapeli == true)
588        {
589            MultiSelectWindow voitto = new MultiSelectWindow("Tasapeli!", "Uusi peli", "Päävalikko");
590            voitto.AddItemHandler(0, uusiPeli);
591            voitto.AddItemHandler(1, LuoAlkuValikko);
592            voitto.Color = Color.Gray;
593            Level.Background.Color = Color.Gray;
594            voitto.DefaultCancel = 1;
595            Add(voitto);
596
597            ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { voitto.SelectedIndex = (voitto.Buttons.Length + voitto.SelectedIndex - 1) % voitto.Buttons.Length; }, null).InContext(voitto);
598            ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { voitto.SelectedIndex = (voitto.SelectedIndex + 1) % voitto.Buttons.Length; }, null).InContext(voitto);
599            ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { LuoAlkuValikko(); }, null).InContext(voitto);
600            ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { voitto.SelectedButton.Click(); }, null).InContext(voitto);
601        }
602        else
603        {
604            MultiSelectWindow voitto = new MultiSelectWindow(tulos, "Uusi peli", "Päävalikko");
605            voitto.AddItemHandler(0, uusiPeli);
606            voitto.AddItemHandler(1, LuoAlkuValikko);
607            voitto.Color = Color.Gray;
608            Level.Background.Color = Color.Gray;
609            voitto.DefaultCancel = 1;
610            Add(voitto);
611
612            ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { voitto.SelectedIndex = (voitto.Buttons.Length + voitto.SelectedIndex - 1) % voitto.Buttons.Length; }, null).InContext(voitto);
613            ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { voitto.SelectedIndex = (voitto.SelectedIndex + 1) % voitto.Buttons.Length; }, null).InContext(voitto);
614            ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { LuoAlkuValikko(); }, null).InContext(voitto);
615            ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { voitto.SelectedButton.Click(); }, null).InContext(voitto);
616        }
617        LuoPisteLaskuri(-200, 0, pelaajan1Pisteet);
618        LuoPisteLaskuri(200, 0, pelaajan2Pisteet);
619        tasapeli = false;
620    }
621
622    void AsetaSailytaAse()
623    {
624        if (SailytaAse == "Ei")
625        {
626            SailytaAse = "Kyllä";
627            LuoAsetukset(7);
628            return;
629        }
630        if (SailytaAse == "Kyllä")
631        {
632            SailytaAse = "Ei";
633            LuoAsetukset(7);
634            return;
635        }
636        else
637        {
638            SailytaAse = "Kyllä";
639            LuoAsetukset(7);
640        }
641    }
642
643    void AsetaPistemaara()
644    {
645        if (PISTEMAARA_JOLLA_VOITTAA_PELIN == 1)
646        {
647            PISTEMAARA_JOLLA_VOITTAA_PELIN = 3;
648            LuoAsetukset(0);
649            return;
650        }
651        if (PISTEMAARA_JOLLA_VOITTAA_PELIN == 3)
652        {
653            PISTEMAARA_JOLLA_VOITTAA_PELIN = 5;
654            LuoAsetukset(0);
655            return;
656        }
657        if (PISTEMAARA_JOLLA_VOITTAA_PELIN == 5)
658        {
659            PISTEMAARA_JOLLA_VOITTAA_PELIN = 7;
660            LuoAsetukset(0);
661            return;
662        }
663        if (PISTEMAARA_JOLLA_VOITTAA_PELIN == 7)
664        {
665            PISTEMAARA_JOLLA_VOITTAA_PELIN = 10;
666            LuoAsetukset(0);
667            return;
668        }
669        if (PISTEMAARA_JOLLA_VOITTAA_PELIN == 10)
670        {
671            PISTEMAARA_JOLLA_VOITTAA_PELIN = 1;
672            LuoAsetukset(0);
673            return;
674        }
675        else
676        {
677            PISTEMAARA_JOLLA_VOITTAA_PELIN = 3;
678            LuoAsetukset(0);
679        }
680
681    }
682
683    void AsetaHP()
684    {
685        if (PHPMAARA == 1)
686        {
687            PHPMAARA = 50;
688            LuoAsetukset(1);
689            return;
690        }
691        if (PHPMAARA == 50)
692        {
693            PHPMAARA = 100;
694            LuoAsetukset(1);
695            return;
696        }
697        if (PHPMAARA == 100)
698        {
699            PHPMAARA = 150;
700            LuoAsetukset(1);
701            return;
702        }
703        if (PHPMAARA == 150)
704        {
705            PHPMAARA = 200;
706            LuoAsetukset(1);
707            return;
708        }
709        if (PHPMAARA == 200)
710        {
711            PHPMAARA = 250;
712            LuoAsetukset(1);
713            return;
714        }
715        if (PHPMAARA == 250)
716        {
717            PHPMAARA = 500;
718            LuoAsetukset(1);
719            return;
720        }
721        if (PHPMAARA == 500)
722        {
723            PHPMAARA = 1000;
724            LuoAsetukset(1);
725            return;
726        }
727        if (PHPMAARA == 1000)
728        {
729            PHPMAARA = 1;
730            LuoAsetukset(1);
731            return;
732        }
733        else
734        {
735            PHPMAARA = 100;
736            LuoAsetukset(1);
737        }
738    }
739
740    void AsetaAseet()
741    {
742        if (Aseet == "Ei aseita")
743        {
744            Aseet = "Vähän aseita";
745            LuoAsetukset(2);
746            return;
747        }
748        if (Aseet == "Vähän aseita")
749        {
750            Aseet = "Paljon aseita";
751            LuoAsetukset(2);
752            return;
753        }
754        if (Aseet == "Paljon aseita")
755        {
756            Aseet = "Kaikki aseet";
757            LuoAsetukset(2);
758            return;
759        }
760        if (Aseet == "Kaikki aseet")
761        {
762            Aseet = "Ei aseita";
763            LuoAsetukset(2);
764            return;
765        }
766        else
767        {
768            Aseet = "Kaikki aseet";
769            LuoAsetukset(2);
770        }
771    }
772
773    void AsetaPowerUpit()
774    {
775        if (PowerUpit == "Pois")
776        {
777            PowerUpit = "Päällä";
778            LuoAsetukset(3);
779            return;
780        }
781        if (PowerUpit == "Päällä")
782        {
783            PowerUpit = "Pois";
784            LuoAsetukset(3);
785            return;
786        }
787        else
788        {
789            PowerUpit = "Päällä";
790            LuoAsetukset(3);
791        }
792    }
793
794    void AsetaModit()
795    {
796        if (Modit == "Pois")
797        {
798            Modit = "Päällä";
799            LuoAsetukset(4);
800            return;
801        }
802        if (Modit == "Päällä")
803        {
804            Modit = "Pois";
805            LuoAsetukset(4);
806            return;
807        }
808        else
809        {
810            Modit = "Päällä";
811            LuoAsetukset(4);
812        }
813    }
814
815    void AsetaHPBoostiMaara()
816    {
817        if (HPBOOST == 10)
818        {
819            HPBOOST = 25;
820            LuoAsetukset(6);
821            return;
822        }
823        if (HPBOOST == 25)
824        {
825            HPBOOST = 50;
826            LuoAsetukset(6);
827            return;
828        }
829        if (HPBOOST == 50)
830        {
831            HPBOOST = 75;
832            LuoAsetukset(6);
833            return;
834        }
835        if (HPBOOST == 75)
836        {
837            HPBOOST = 100;
838            LuoAsetukset(6);
839            return;
840        }
841        if (HPBOOST == 100)
842        {
843            HPBOOST = 10;
844            LuoAsetukset(6);
845            return;
846        }
847        else
848        {
849            HPBOOST = 25;
850            LuoAsetukset(6);
851        }
852    }
853
854    void AsetaHPBoostit()
855    {
856        if (HP == "Pois")
857        {
858            HP = "Päällä";
859            LuoAsetukset(5);
860            return;
861        }
862        if (HP == "Päällä")
863        {
864            HP = "Pois";
865            LuoAsetukset(5);
866            return;
867        }
868        else
869        {
870            HP = "Päällä";
871            LuoAsetukset(5);
872        }
873    }
874    void LuoTasoValikko()
875    {
876        ClearAll();
877        MultiSelectWindow tasoValikko = new MultiSelectWindow("Yksinpeli", "Uusi peli",
878        "Jatka peliä", "Takaisin");
879        tasoValikko.AddItemHandler(0, LuoTaso0);
880        tasoValikko.AddItemHandler(1, LataaPeli);
881        tasoValikko.AddItemHandler(2, LuoAlkuValikko);
882        tasoValikko.Color = Color.Gray;
883        Level.Background.Color = Color.Gray;
884        tasoValikko.DefaultCancel = 2;
885        Add(tasoValikko);
886
887        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { tasoValikko.SelectedIndex = (tasoValikko.Buttons.Length + tasoValikko.SelectedIndex - 1) % tasoValikko.Buttons.Length; }, null).InContext(tasoValikko);
888        ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { tasoValikko.SelectedIndex = (tasoValikko.SelectedIndex + 1) % tasoValikko.Buttons.Length; }, null).InContext(tasoValikko);
889        ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { LuoAlkuValikko(); }, null).InContext(tasoValikko);
890        ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { tasoValikko.SelectedButton.Click(); }, null).InContext(tasoValikko);
891    }
892
893    void LuoKenttaValikko()
894    {
895        ClearAll();
896        MultiSelectWindow kenttaValikko = new MultiSelectWindow("Kenttävalikko", "Kenttä 1",
897        "Kenttä 2", "Kenttä 3", "Takaisin");
898        kenttaValikko.AddItemHandler(0, LuoKentta1);
899        kenttaValikko.AddItemHandler(1, LuoKentta2);
900        kenttaValikko.AddItemHandler(2, LuoKentta3);
901        kenttaValikko.AddItemHandler(3, LuoAlkuValikko);
902        kenttaValikko.Color = Color.Gray;
903        Level.Background.Color = Color.Gray;
904        kenttaValikko.DefaultCancel = 3;
905        Add(kenttaValikko);
906
907        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { kenttaValikko.SelectedIndex = (kenttaValikko.Buttons.Length + kenttaValikko.SelectedIndex - 1) % kenttaValikko.Buttons.Length; }, null).InContext(kenttaValikko);
908        ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { kenttaValikko.SelectedIndex = (kenttaValikko.SelectedIndex + 1) % kenttaValikko.Buttons.Length; }, null).InContext(kenttaValikko);
909        ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { LuoAlkuValikko(); }, null).InContext(kenttaValikko);
910        ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { kenttaValikko.SelectedButton.Click(); }, null).InContext(kenttaValikko);
911    }
912
913    void LataaPeli()
914    {
915        if (taso == 0) { LuoTaso0(); }
916        if (taso == 1) { LuoTaso1(); }
917    }
918
919    void SeuraavaTaso( PhysicsObject tormaaja, PhysicsObject kohde )
920    {
921        Pelaaja pelaaja = tormaaja as Pelaaja;
922
923        ase = null;
924        ase2 = null;
925        sailytahp = true;
926       
927        if (pelaaja1.Weapon != null && pelaaja1.Weapon.Tag != null)
928        {
929            ase = pelaaja1.Weapon.Tag.ToString();
930            if (ase.Length > 6 && ase.Substring(ase.Length - 5) == "Lv. 4")
931            {
932                ase = ase.Substring(0, ase.Length - 5) + "Lv. 3";
933            }
934            else if (ase.Length > 6 && ase.Substring(ase.Length - 5) == "Lv. X")
935            {
936                ase = ase.Substring(0, ase.Length - 6);
937            }
938
939        }
940        if (pelaaja1.varaAse != null)
941        {
942            ase2 = pelaaja1.varaAse;
943            if (ase2.Length > 6 && ase2.Substring(ase2.Length - 5) == "Lv. 4")
944            {
945                ase2 = ase2.Substring(0, ase2.Length - 5) + "Lv. 3";
946            }
947            else if (ase2.Length > 6 && ase2.Substring(ase2.Length - 5) == "Lv. X")
948            {
949                ase2 = ase2.Substring(0, ase2.Length - 6);
950            }
951
952        }
953
954        if (kohde != null) portalAani.Play();
955
956        if (taso == 0) { LuoTaso1(); return; }
957        else if (taso == 1) { LuoTaso2(); return; }
958        else sailytahp = false;
959    }
960
961    void LuoTaso0()
962    {
963        taso = 0;
964        ase = null;
965        ase2 = null;
966        uusiYksinPeli();
967    }
968
969    void LuoTaso1()
970    {
971        taso = 1;
972        uusiYksinPeli();
973    }
974    void LuoTaso2()
975    {
976        taso = 2;
977        uusiYksinPeli();
978    }
979
980    void LuoKentta0()
981    {
982        kentta = 0;
983        uusiPeli();
984    }
985
986    void LuoKentta1()
987    {
988        kentta = 1;
989        uusiPeli();
990    }
991
992    void LuoKentta2()
993    {
994        kentta = 2;
995        uusiPeli();
996    }
997
998    void LuoKentta3()
999    {
1000        kentta = 3;
1001        uusiPeli();
1002    }
1003
1004    void luoTasot()
1005    {
1006        PhysicsObject alusta = new PhysicsObject(Level.Width, 300);
1007        alusta.Color = Color.Gray;
1008        alusta.X = 0;
1009        alusta.Y = Level.Bottom - alusta.Height / 2;
1010        Add(alusta);
1011
1012        lisaaPieniTaso(-200, -350);
1013        lisaaPieniTaso(0, -400);
1014        lisaaPieniTaso(100, -300);
1015        lisaaPieniTaso(400, -350);
1016        lisaaPieniTaso(450, -200);
1017        lisaaPieniTaso(-500, -400);
1018        lisaaPieniTaso(-550, -200);
1019        lisaaPieniTaso(-400, -300);
1020        lisaaPieniTaso(-150, -150);
1021        lisaaPieniTaso(-870, -350);
1022        lisaaPieniTaso(-700, -400);
1023
1024        lisaaPieniTaso(600, -300);
1025        lisaaPieniTaso(850, -300);
1026        lisaaPieniTaso(750, -400);
1027        lisaaPieniTaso(200, -200);
1028        lisaaPieniTaso(-200, -150);
1029
1030        lisaaPystyTaso(600, -450);
1031        lisaaPystyTaso(-600, -500);
1032        lisaaPystyTaso(0, -450);
1033
1034        lisaaReuna(-1375, 0);
1035        lisaaReuna(1375, 0);
1036    }
1037
1038    void LisaaHPNaytto()
1039    {
1040        hpNaytto = new ProgressBar(250, 30);
1041        hpNaytto.BarColor = Color.LightGreen;
1042        hpNaytto.Color = Color.Red;
1043        hpNaytto.BindTo(pelaaja1.HPLaskuri);
1044        hpNaytto.Position = new Vector(Screen.LeftSafe + 300, Screen.TopSafe - 170);
1045        Add(hpNaytto);
1046
1047        Label hpNumeroLaskuri = new Label();
1048        hpNumeroLaskuri.DoubleFormatString = "{0:0}";
1049        hpNumeroLaskuri.BindTo(pelaaja1.HPLaskuri);
1050        hpNumeroLaskuri.Position = new Vector(Screen.LeftSafe + 225, Screen.TopSafe - 170);
1051        Add(hpNumeroLaskuri);
1052    }
1053
1054    void LisaaHPNaytot()
1055    {
1056        // luodaan elämänäyttö
1057        hpNaytto = new ProgressBar(250, 30);
1058        hpNaytto.BarColor = Color.LightGreen;
1059        hpNaytto.Color = Color.Red;
1060        hpNaytto.BindTo(pelaaja1.HPLaskuri);
1061        hpNaytto.Position = new Vector(Screen.LeftSafe + 300, Screen.TopSafe - 170);
1062        Add(hpNaytto);
1063
1064        Label hpNumeroLaskuri = new Label();
1065        hpNumeroLaskuri.DoubleFormatString = "{0:0}";
1066        hpNumeroLaskuri.BindTo(pelaaja1.HPLaskuri);
1067        hpNumeroLaskuri.Position = new Vector(Screen.LeftSafe + 225, Screen.TopSafe - 170);
1068        Add(hpNumeroLaskuri);
1069
1070        hpNaytto2 = new ProgressBar(250, 30);
1071        hpNaytto2.Angle = Angle.FromDegrees(180);
1072        hpNaytto2.BarColor = Color.LightGreen;
1073        hpNaytto2.Color = Color.Red;
1074        hpNaytto2.BindTo(pelaaja2.HPLaskuri);
1075        hpNaytto2.Position = new Vector(Screen.RightSafe - 300, Screen.TopSafe - 170);
1076        Add(hpNaytto2);
1077
1078        Label hpNumeroLaskuri2 = new Label();
1079        hpNumeroLaskuri2.DoubleFormatString = "{0:0}";
1080        hpNumeroLaskuri2.BindTo(pelaaja2.HPLaskuri);
1081        hpNumeroLaskuri2.Position = new Vector(Screen.RightSafe - 225, Screen.TopSafe - 170);
1082        Add(hpNumeroLaskuri2);
1083    }
1084
1085    void LisaaLaskurit()
1086    {
1087        LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 175.0, pelaajan1Pisteet);
1088        LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 175.0, pelaajan2Pisteet);
1089        pelaajan1Pisteet.MaxValue = PISTEMAARA_JOLLA_VOITTAA_PELIN;
1090        pelaajan2Pisteet.MaxValue = PISTEMAARA_JOLLA_VOITTAA_PELIN;
1091        pelaajan1Pisteet.UpperLimit += delegate() { PelaajaVoittaa(pelaaja1, "Pelaaja 1", pelaaja2, pelaajan2Pisteet); };
1092        pelaajan2Pisteet.UpperLimit += delegate() { PelaajaVoittaa(pelaaja2, "Pelaaja 2", pelaaja1, pelaajan1Pisteet); };
1093    }
1094
1095    void NollaaLaskurit()
1096    {
1097        pelaajan1Pisteet.Reset();
1098        pelaajan2Pisteet.Reset();
1099    }
1100
1101    IntMeter LuoPisteLaskuri(double x, double y, IntMeter laskuri)
1102    {
1103        Label naytto = new Label();
1104        naytto.BindTo(laskuri);
1105        naytto.X = x;
1106        naytto.Y = y;
1107        Add(naytto);
1108        return laskuri;
1109    }
1110
1111    void PelaajaVoittaa(Pelaaja voittaja, String voittajanNimi, Pelaaja haviaja, IntMeter haviajanPisteet)
1112    {
1113        MessageDisplay.Clear();
1114        if (voittaja.IsDestroying && haviajanPisteet.Value == haviajanPisteet.MaxValue)
1115        {
1116            MessageDisplay.Add("Tasapeli!");
1117            tasapeli = true;
1118        }
1119        else
1120        {
1121            MessageDisplay.Add(voittajanNimi + " voittaa!");
1122        }
1123
1124    }
1125
1126    void lisaaPieniTaso(double x, double y)
1127    {
1128        PhysicsObject taso = PhysicsObject.CreateStaticObject(100, 30, Shape.Rectangle);
1129        taso.Color = Color.Gray;
1130        taso.X = x;
1131        taso.Y = y;
1132        Add(taso);
1133    }
1134
1135    void lisaaReuna(double x, double y)
1136    {
1137        PhysicsObject taso = PhysicsObject.CreateStaticObject(1000, 1000, Shape.Rectangle);
1138        taso.Color = Color.Gray;
1139        taso.X = x;
1140        taso.Y = y;
1141        Add(taso);
1142    }
1143
1144    void lisaaPystyTaso(double x, double y)
1145    {
1146        PhysicsObject taso = PhysicsObject.CreateStaticObject(30, 100, Shape.Rectangle);
1147        taso.Color = Color.Gray;
1148        taso.X = x;
1149        taso.Y = y;
1150        Add(taso);
1151    }
1152
1153    Pelaaja LuoYksinPelaaja(Vector paikka, double leveys, double korkeus, Direction suunta, Pelaaja pelaaja)
1154    {
1155        pelaaja = new Pelaaja(40, 40, Shape.Circle);
1156        pelaaja.Image = norsu;
1157        pelaaja.Position = paikka;
1158        pelaaja.Tag = "pelaaja";
1159        pelaaja.FacingDirection = suunta;
1160
1161        pelaaja.HPLaskuri = new DoubleMeter(CURRENTHP, 0, MAXHP);
1162        pelaaja.HPLaskuri.MaxValue = MAXHP;
1163        pelaaja.HPLaskuri.Value = CURRENTHP;
1164        pelaaja.HPLaskuri.LowerLimit += delegate()
1165        {
1166            YksinPelaajaKuoli(pelaaja);
1167        };
1168        Add(pelaaja);
1169
1170        LuoAsePelaajalle(ase, pelaaja);
1171        LuoVaraAse(ase2, pelaaja);
1172
1173        return pelaaja;
1174    }
1175
1176    Pelaaja LuoPelaaja(Vector paikka, double leveys, double korkeus, Direction suunta, Pelaaja pelaaja)
1177    {
1178        string ase = "Pistooli";
1179        if (pelaaja.Weapon != null && SailytaAse == "Kyllä")
1180        {
1181            ase = pelaaja.Weapon.Tag.ToString();
1182            if (ase.Length > 6 && ase.Substring(ase.Length - 5) == "Lv. 4")
1183            {
1184                ase = ase.Substring(0, ase.Length - 5) + "Lv. 3";
1185            }
1186            else if (ase.Length > 6 && ase.Substring(ase.Length - 5) == "Lv. X")
1187            {
1188                ase = ase.Substring(0, ase.Length - 6);
1189            }
1190
1191        }
1192        pelaaja = new Pelaaja(40, 40, Shape.Circle);
1193        pelaaja.Image = norsu;
1194        pelaaja.Position = paikka;
1195        pelaaja.Tag = "pelaaja";
1196        pelaaja.FacingDirection = suunta;
1197
1198        pelaaja.HPLaskuri = new DoubleMeter(PHPMAARA, 0, PHPMAARA);
1199        pelaaja.HPLaskuri.MaxValue = PHPMAARA;
1200        pelaaja.HPLaskuri.Value = PHPMAARA;
1201        pelaaja.HPLaskuri.LowerLimit += delegate()
1202        {
1203            PelaajaKuoli(pelaaja);
1204        };
1205        Add(pelaaja);
1206
1207        LuoAsePelaajalle(ase, pelaaja);
1208        return pelaaja;
1209    }
1210
1211    void NorsuKuoli(Pelaaja norsu)
1212    {
1213        norsu.Destroy();
1214        PudotaAseenHahmo(norsu);
1215    }
1216
1217    void YksinPelaajaKuoli(Pelaaja pelaaja)
1218    {
1219        if (pelaaja.IsDestroying)
1220        {
1221            return;
1222        }
1223
1224        pelaaja.Destroy();
1225        PudotaAseenHahmo(pelaaja);
1226        Timer.SingleShot(2.0, uusiYksinPeli);
1227    }
1228
1229    void PelaajaKuoli(Pelaaja pelaaja)
1230    {
1231        if (pelaaja.IsDestroying)
1232        {
1233            return;
1234        }
1235
1236        pelaaja.Destroy();
1237        PudotaAseenHahmo(pelaaja);
1238        MessageDisplay.Clear();
1239        MessageDisplay.X = 0;
1240
1241        if (pelaaja == pelaaja1)
1242        {
1243            pelaajan2Pisteet.Value += 1;
1244
1245            if (!(pelaajan1Pisteet.Value == pelaajan1Pisteet.MaxValue || pelaajan2Pisteet.Value == pelaajan2Pisteet.MaxValue))
1246            {
1247                if (pelaaja2.IsDestroying && pelaajan1Pisteet.Value != pelaajan1Pisteet.MaxValue)
1248                {
1249                    MessageDisplay.Clear();
1250                    MessageDisplay.Add("Erä tasan!");
1251                }
1252                else if (pelaajan1Pisteet.Value != pelaajan1Pisteet.MaxValue)
1253                {
1254                    MessageDisplay.Add("Pelaaja 2 voitti erän!");
1255                }
1256
1257                Timer.SingleShot(3.0, AloitaUusiPeli);
1258            }
1259            else if (pelaajan2Pisteet.Value == pelaajan2Pisteet.MaxValue)
1260            {
1261                PelaajaVoittaa(pelaaja2, "Pelaaja 2", pelaaja1, pelaajan1Pisteet);
1262                ClearTimers();
1263                Timer.SingleShot(3.0, delegate { LuoVoittoRuutu("Pelaaja 2 voitti pelin!"); });
1264            }
1265        }
1266
1267        if (pelaaja == pelaaja2)
1268        {
1269            pelaajan1Pisteet.Value += 1;
1270
1271            if (!(pelaajan2Pisteet.Value == pelaajan2Pisteet.MaxValue || pelaajan1Pisteet.Value == pelaajan1Pisteet.MaxValue))
1272            {
1273                if (pelaaja1.IsDestroying && pelaajan2Pisteet.Value != pelaajan2Pisteet.MaxValue)
1274                {
1275                    MessageDisplay.Clear();
1276                    MessageDisplay.Add("Erä tasan!");
1277                }
1278                else if (pelaajan1Pisteet.Value != pelaajan2Pisteet.MaxValue)
1279                {
1280                    MessageDisplay.Add("Pelaaja 1 voitti erän!");
1281                }
1282
1283                Timer.SingleShot(3.0, AloitaUusiPeli);
1284            }
1285            else if (pelaajan1Pisteet.Value == pelaajan1Pisteet.MaxValue)
1286            {
1287                PelaajaVoittaa(pelaaja1, "Pelaaja 1", pelaaja2, pelaajan2Pisteet);
1288                ClearTimers();
1289                Timer.SingleShot(3.0, delegate { LuoVoittoRuutu("Pelaaja 1 voitti pelin!"); });
1290            }
1291        }
1292
1293    }
1294    void keraaPowerUp(PhysicsObject powerup, Pelaaja pelaaja)
1295    {
1296        if (pelaaja.Weapon == null || pelaaja.Weapon.Tag == null) return;
1297        powerup.Destroy();
1298        powerupmaara -= 1;
1299        PaivitaAse(pelaaja.Weapon.Tag.ToString(), pelaaja);
1300        naytaTiedot();
1301    }
1302
1303    void keraaUpgrade(PhysicsObject upgrade, Pelaaja pelaaja)
1304    {
1305        if (pelaaja.Weapon == null || pelaaja.Weapon.Tag == null) return;
1306        upgrade.Destroy();
1307        MuunnaAse(pelaaja.Weapon.Tag.ToString(), pelaaja);
1308        naytaTiedot();
1309    }
1310
1311    void keraaHP(PhysicsObject hp, Pelaaja pelaaja)
1312    {
1313        hp.Destroy();
1314        hpmaara -= 1;
1315        BoostiHP(pelaaja);
1316    }
1317
1318    void keraaHP1(PhysicsObject hp, Pelaaja pelaaja)
1319    {
1320        hp.Destroy();
1321        hpmaara -= 1;
1322        BoostiHP1(pelaaja);
1323    }
1324
1325    void keraaHPBoost(PhysicsObject hpboost, Pelaaja pelaaja)
1326    {
1327        hpboost.Destroy();
1328        IncreaseHP(pelaaja);
1329    }
1330
1331    void BoostiHP(Pelaaja pelaaja)
1332    {
1333        if (pelaaja.HPLaskuri.Value == pelaaja.HPLaskuri.MaxValue && pelaaja.DamageResistance == false)
1334        {
1335            GameObject kilpi = new GameObject(60, 60, Shape.Circle);
1336            kilpi.Color = new Color(Color.Blue, 50);
1337            //if (pelaaja.DamageVulnerability) { pelaaja.Clear(); }
1338            pelaaja.Add(kilpi);
1339            pelaaja.DamageResistance = true;
1340            Timer.SingleShot(5.0, delegate { pelaaja.DamageResistance = false; pelaaja.Remove(kilpi); });
1341        }
1342        pelaaja.HPLaskuri.Value += HPBOOST;
1343    }
1344
1345    void BoostiHP1(Pelaaja pelaaja)
1346    {
1347        if (pelaaja.HPLaskuri.Value == pelaaja.HPLaskuri.MaxValue && pelaaja.DamageResistance == false)
1348        {
1349            GameObject kilpi = new GameObject(60, 60, Shape.Circle);
1350            kilpi.Color = new Color(Color.Blue, 50);
1351            pelaaja.Add(kilpi);
1352            pelaaja.DamageResistance = true;
1353            Timer.SingleShot(5.0, delegate { pelaaja.DamageResistance = false; pelaaja.Remove(kilpi); });
1354        }
1355        pelaaja.HPLaskuri.Value += HPBOOSTSINGLE;
1356    }
1357
1358    void IncreaseHP(Pelaaja pelaaja)
1359    {
1360        pelaaja.HPLaskuri.MaxValue += 25;
1361        pelaaja.HPLaskuri.Value = pelaaja.HPLaskuri.MaxValue;
1362    }
1363
1364    void vaihdaAse(Pelaaja pelaaja)
1365    {
1366        if (pelaaja.IsDestroyed == true) return;
1367        if (pelaaja.Weapon == null || pelaaja.Weapon.IsDestroyed || pelaaja.Weapon.Tag == null)
1368        {
1369            if (pelaaja.varaAse != null)
1370            {
1371                pelaaja.Clear();
1372                LuoAsePelaajalle(pelaaja.varaAse, pelaaja);
1373                naytaTiedot();
1374                pelaaja.varaAse = null;
1375                saaAmpua = false;
1376                Timer.SingleShot(0.1, delegate
1377                {
1378                    saaAmpua = true;
1379                });
1380                return;
1381            }
1382            else
1383            {
1384                return;
1385            }
1386        }
1387
1388        string asetag = pelaaja.Weapon.Tag.ToString();
1389        //Image aseenKuva = pelaaja.Weapon.Image;
1390        //Vector aseenkoko = pelaaja.Weapon.Size;
1391        if (asetag.Length > 6 && asetag.Substring(asetag.Length - 5) == "Lv. 4")
1392        {
1393            asetag = asetag.Substring(0, asetag.Length - 5) + "Lv. 3";
1394        }
1395        else if (asetag.Length > 6 && asetag.Substring(asetag.Length - 5) == "Lv. X")
1396        {
1397            asetag = asetag.Substring(0, asetag.Length - 6);
1398        }
1399        pelaaja.Weapon.Destroy();
1400        pelaaja.Clear();
1401        pelaaja.Weapon.Tag = null;
1402
1403        if (LuoAsePelaajalle(pelaaja.varaAse, pelaaja))
1404        {
1405            string aseenTagi = pelaaja.Weapon.Tag.ToString();
1406            if (aseenTagi != null && aseenTagi.Length > 6 && aseenTagi.Substring(aseenTagi.Length - 5) == "Lv. 4")
1407            {
1408                aseenTagi = aseenTagi.Substring(0, aseenTagi.Length - 5) + "Lv. 3";
1409            }
1410            if (aseenTagi != null && aseenTagi.Length > 6 && aseenTagi.Substring(aseenTagi.Length - 5) == "Lv. X")
1411            {
1412                aseenTagi = aseenTagi.Substring(0, aseenTagi.Length - 6);
1413            }
1414        }
1415
1416        naytaTiedot();
1417
1418        LuoVaraAse(asetag, pelaaja);
1419
1420        saaAmpua = false;
1421        Timer.SingleShot(0.1, delegate
1422        {
1423            saaAmpua = true;
1424        });
1425    }
1426
1427    void LuoVaraAse(string aseenTag, Pelaaja pelaaja)
1428    {
1429        if (aseenTag == null) return;
1430
1431        Image aseenKuva = pistoolinkuva;
1432        Vector aseenKoko = new Vector(0,0);
1433
1434        if (aseenTag == "Kivääri")
1435        {
1436            aseenKuva = kivaarinkuva;
1437            aseenKoko = new Vector(39, 13);
1438        }
1439        if (aseenTag == "Magnum")
1440        {
1441            aseenKuva = magnumkuva;
1442            aseenKoko = new Vector(17, 12);
1443        }
1444
1445        if (aseenTag == "Haulikko")
1446        {
1447            aseenKuva = haulikonkuva;
1448            aseenKoko = new Vector(42, 10);
1449        }
1450
1451        if (aseenTag == "Sniper")
1452        {
1453            aseenKuva = sniperinkuva;
1454            aseenKoko = new Vector(42, 11);
1455        }
1456
1457        if (aseenTag == "Kranaatinheitin")
1458        {
1459            aseenKuva = kranaatinheittimenkuva;
1460            aseenKoko = new Vector(42, 15);
1461        }
1462        if (aseenTag == "Raketinheitin")
1463        {
1464            aseenKuva = raketinheittimenkuva;
1465            aseenKoko = new Vector(48, 15);
1466        }
1467
1468        if (aseenTag == "Pistooli")
1469        {
1470            aseenKuva = pistoolinkuva;
1471            aseenKoko = new Vector(16, 11);
1472        }
1473
1474        if (aseenTag == "Kivääri Lv. 2")
1475        {
1476            aseenKuva = kivaarinkuva2;
1477            aseenKoko = new Vector(39, 16);
1478        }
1479        if (aseenTag == "Magnum Lv. 2")
1480        {
1481            aseenKuva = magnumkuva2;
1482            aseenKoko = new Vector(17, 12);
1483        }
1484
1485        if (aseenTag == "Haulikko Lv. 2")
1486        {
1487            aseenKuva = haulikonkuva2;
1488            aseenKoko = new Vector(42, 12);
1489        }
1490
1491        if (aseenTag == "Sniper Lv. 2")
1492        {
1493            aseenKuva = sniperinkuva2;
1494            aseenKoko = new Vector(42, 11);
1495        }
1496
1497        if (aseenTag == "Kranaatinheitin Lv. 2")
1498        {
1499            aseenKuva = kranaatinheittimenkuva2;
1500            aseenKoko = new Vector(42, 16);
1501        }
1502        if (aseenTag == "Raketinheitin Lv. 2")
1503        {
1504            aseenKuva = raketinheittimenkuva2;
1505            aseenKoko = new Vector(48, 15);
1506        }
1507
1508        if (aseenTag == "Pistooli Lv. 2")
1509        {
1510            aseenKuva = pistoolinkuva2;
1511            aseenKoko = new Vector(17, 11);
1512        }
1513        if (aseenTag == "Kivääri Lv. 3")
1514        {
1515            aseenKuva = kivaarinkuva3;
1516            aseenKoko = new Vector(39, 16);
1517        }
1518        if (aseenTag == "Magnum Lv. 3")
1519        {
1520            aseenKuva = magnumkuva3;
1521            aseenKoko = new Vector(17, 12);
1522        }
1523
1524        if (aseenTag == "Haulikko Lv. 3")
1525        {
1526            aseenKuva = haulikonkuva3;
1527            aseenKoko = new Vector(38, 12);
1528        }
1529
1530        if (aseenTag == "Sniper Lv. 3")
1531        {
1532            aseenKuva = sniperinkuva3;
1533            aseenKoko = new Vector(45, 12);
1534        }
1535
1536        if (aseenTag == "Kranaatinheitin Lv. 3")
1537        {
1538            aseenKuva = kranaatinheittimenkuva3;
1539            aseenKoko = new Vector(37, 17);
1540        }
1541        if (aseenTag == "Raketinheitin Lv. 3")
1542        {
1543            aseenKuva = raketinheittimenkuva3;
1544            aseenKoko = new Vector(48, 22.5);
1545        }
1546
1547        if (aseenTag == "Pistooli Lv. 3")
1548        {
1549            aseenKuva = pistoolinkuva3;
1550            aseenKoko = new Vector(20, 13);
1551        }
1552
1553        if (aseenTag == "Kivääri Lv. 4")
1554        {
1555            aseenKuva = kivaarinkuva4;
1556            aseenKoko = new Vector(39, 16);
1557        }
1558        if (aseenTag == "Magnum Lv. 4")
1559        {
1560            aseenKuva = magnumkuva4;
1561            aseenKoko = new Vector(17, 12);
1562        }
1563
1564        if (aseenTag == "Haulikko Lv. 4")
1565        {
1566            aseenKuva = haulikonkuva4;
1567            aseenKoko = new Vector(38, 12);
1568        }
1569
1570        if (aseenTag == "Sniper Lv. 4")
1571        {
1572            aseenKuva = sniperinkuva4;
1573            aseenKoko = new Vector(45, 12);
1574        }
1575
1576        if (aseenTag == "Kranaatinheitin Lv. 4")
1577        {
1578            aseenKuva = kranaatinheittimenkuva4;
1579            aseenKoko = new Vector(37, 17);
1580        }
1581        if (aseenTag == "Raketinheitin Lv. 4")
1582        {
1583            aseenKuva = raketinheittimenkuva4;
1584            aseenKoko = new Vector(48, 22.5);
1585        }
1586
1587        if (aseenTag == "Pistooli Lv. 4")
1588        {
1589            aseenKuva = pistoolinkuva4;
1590            aseenKoko = new Vector(20, 13);
1591        }
1592
1593        //Yksinpeli aseet
1594        if (aseenTag == "Miekka")
1595        {
1596            aseenKuva = miekankuva;
1597            aseenKoko = new Vector(24, 24);
1598        }
1599
1600        if (aseenTag == "Valopistooli")
1601        {
1602            aseenKuva = flaregunkuva;
1603            aseenKoko = new Vector(18, 10);
1604        }
1605
1606        if (aseenTag == "Valopistooli Lv. 2")
1607        {
1608            aseenKuva = flaregunkuva2;
1609            aseenKoko = new Vector(18, 10);
1610        }
1611
1612        if (aseenTag == "Valopistooli Lv. 3")
1613        {
1614            aseenKuva = flaregunkuva3;
1615            aseenKoko = new Vector(18, 10);
1616        }
1617
1618        if (aseenTag == "Valopistooli Lv. 4")
1619        {
1620            aseenKuva = flaregunkuva4;
1621            aseenKoko = new Vector(18, 10);
1622        }
1623
1624        GameObject ase = new GameObject(0, 0);
1625        ase.Image = null;
1626        ase.X = -20;
1627        ase.Y = 0;
1628        ase.Tag = aseenTag;
1629        ase.Image = aseenKuva;
1630        ase.Size = aseenKoko;
1631        ase.Angle = Angle.FromDegrees(90);
1632        pelaaja.varaAse = aseenTag;
1633
1634        pelaaja.Add(ase);
1635    }
1636
1637    void keraaAse(PhysicsObject ase, Pelaaja pelaaja)
1638    {
1639        if (!pelaaja.voikoPoimiaAseen) return;
1640        ase.Destroy();
1641        PudotaAseenHahmo(pelaaja); // tiputtaa asetta vastaavan fysiikkaolion maahan kerättäväksi uudestaan
1642        string asetag = ase.Tag.ToString();
1643        if (asetag.Length > 6 && asetag.Substring(asetag.Length - 5) == "Lv. 4")
1644        {
1645            asetag = asetag.Substring(0, asetag.Length - 5) + "Lv. 3";
1646        }
1647        else if (asetag.Length > 6 && asetag.Substring(asetag.Length - 5) == "Lv. X")
1648        {
1649            asetag = asetag.Substring(0, asetag.Length - 6);
1650        }
1651        LuoAsePelaajalle(asetag, pelaaja);
1652        naytaTiedot();
1653    }
1654
1655
1656    private void PudotaAseenHahmo(Pelaaja pelaaja)
1657    {
1658        if (pelaaja.Weapon == null || pelaaja.Weapon.Tag == null) return;
1659
1660        pelaaja.voikoPoimiaAseen = false;
1661        Timer.SingleShot(0.1, delegate { pelaaja.voikoPoimiaAseen = true; });
1662        String aseenTagi = pelaaja.Weapon.Tag.ToString();
1663        if (aseenTagi.Length > 6 && aseenTagi.Substring(aseenTagi.Length - 5) == "Lv. 4")
1664        {
1665            aseenTagi = aseenTagi.Substring(0, aseenTagi.Length - 5) + "Lv. 3";
1666        }
1667        if (aseenTagi.Length > 6 && aseenTagi.Substring(aseenTagi.Length - 5) == "Lv. X")
1668        {
1669            aseenTagi = aseenTagi.Substring(0, aseenTagi.Length - 6);
1670        }
1671        Vector koko = pelaaja.Weapon.Size;
1672        Vector paikka = pelaaja.Position;
1673
1674        PhysicsObject tiputettuAse = new PhysicsObject(koko.X, koko.Y);
1675        tiputettuAse.Position = paikka;
1676        tiputettuAse.Tag = aseenTagi;
1677        tiputettuAse.CollisionIgnoreGroup = 1;
1678        pelaaja.CollisionIgnoreGroup = 1;
1679        Timer.SingleShot(1.0, delegate
1680        {
1681            tiputettuAse.CollisionIgnoreGroup = 0;
1682            pelaaja.CollisionIgnoreGroup = 0;
1683        });
1684        Add(tiputettuAse);
1685        Image aseenKuva = pelaaja.Weapon.Image;
1686        if (aseenKuva == pistoolinkuva4) { aseenKuva = pistoolinkuva3; }
1687        if (aseenKuva == kivaarinkuva4) { aseenKuva = kivaarinkuva3; }
1688        if (aseenKuva == sniperinkuva4) { aseenKuva = sniperinkuva3; }
1689        if (aseenKuva == kranaatinheittimenkuva4) { aseenKuva = kranaatinheittimenkuva3; }
1690        if (aseenKuva == raketinheittimenkuva4) { aseenKuva = raketinheittimenkuva3; }
1691        if (aseenKuva == magnumkuva4) { aseenKuva = magnumkuva3; }
1692        if (aseenKuva == haulikonkuva4) { aseenKuva = haulikonkuva3; }
1693        tiputettuAse.Image = aseenKuva;
1694        AddCollisionHandler<PhysicsObject, Pelaaja>(tiputettuAse, "pelaaja", keraaAse);
1695
1696        pelaaja.Weapon = null;
1697    }
1698
1699    void KranaattiOsui(PhysicsObject ammus, PhysicsObject kohde)
1700    {
1701        if (ammus.IsDestroying) return;
1702        if (!(kohde is Pelaaja)) return;
1703        RajaytaKranaatti(ammus);
1704
1705        Pelaaja pelaaja = (Pelaaja)kohde;
1706        ammus.Destroy();
1707        if (pelaaja.DamageResistance == true)
1708        {
1709            pelaaja.HPLaskuri.Value -= 12;
1710        }
1711        else if (pelaaja.DamageVulnerability == true)
1712        {
1713            pelaaja.HPLaskuri.Value -= 37;
1714        }
1715        else
1716        {
1717            pelaaja.HPLaskuri.Value -= 25;
1718        }
1719    }
1720    void KranaattiOsui2(PhysicsObject ammus, PhysicsObject kohde)
1721    {
1722        if (ammus.IsDestroying) return;
1723        if (!(kohde is Pelaaja)) return;
1724        RajaytaKranaatti2(ammus);
1725
1726        Pelaaja pelaaja = (Pelaaja)kohde;
1727        ammus.Destroy();
1728        if (pelaaja.DamageResistance == true)
1729        {
1730            pelaaja.HPLaskuri.Value -= 17;
1731        }
1732        else if (pelaaja.DamageVulnerability == true)
1733        {
1734            pelaaja.HPLaskuri.Value -= 52;
1735        }
1736        else
1737        {
1738            pelaaja.HPLaskuri.Value -= 35;
1739        }
1740    }
1741    void KranaattiOsui3(PhysicsObject ammus, PhysicsObject kohde)
1742    {
1743        if (ammus.IsDestroying) return;
1744        if (!(kohde is Pelaaja)) return;
1745        RajaytaKranaatti3(ammus);
1746
1747        Pelaaja pelaaja = (Pelaaja)kohde;
1748        ammus.Destroy();
1749        if (pelaaja.DamageResistance == true)
1750        {
1751            pelaaja.HPLaskuri.Value -= 10;
1752        }
1753        else if (pelaaja.DamageVulnerability == true)
1754        {
1755            pelaaja.HPLaskuri.Value -= 30;
1756        }
1757        else
1758        {
1759            pelaaja.HPLaskuri.Value -= 20;
1760        }
1761    }
1762
1763    void RajaytaKranaatti(PhysicsObject ammus)
1764    {
1765        if (ammus.IsDestroying || ammus.IsDestroyed) return;
1766        Explosion rajahdys = new Explosion(100);
1767        rajahdys.Position = ammus.Position;
1768        rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 50.0); };
1769        Add(rajahdys);
1770        rajahdys.Force = 25;
1771        rajahdys.Speed = 1000;
1772        ammus.Destroy();
1773    }
1774    void RajaytaKranaatti2(PhysicsObject ammus)
1775    {
1776        if (ammus.IsDestroying || ammus.IsDestroyed) return;
1777        Explosion rajahdys = new Explosion(100);
1778        rajahdys.Position = ammus.Position;
1779        rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 60.0); };
1780        Add(rajahdys);
1781        rajahdys.Force = 25;
1782        rajahdys.Speed = 1000;
1783        ammus.Destroy();
1784    }
1785    void RajaytaKranaatti3(PhysicsObject ammus)
1786    {
1787        if (ammus.IsDestroying || ammus.IsDestroyed) return;
1788        Explosion rajahdys = new Explosion(100);
1789        rajahdys.Position = ammus.Position;
1790        rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 40.0); };
1791        Add(rajahdys);
1792        rajahdys.Force = 25;
1793        rajahdys.Speed = 1000;
1794        ammus.Destroy();
1795    }
1796
1797    void RakettiOsui(PhysicsObject ammus, PhysicsObject kohde)
1798    {
1799        if (ammus.IsDestroying) return;
1800        if (kohde.Tag.ToString() != "")
1801        {
1802            Explosion rajahdys = new Explosion(75);
1803            rajahdys.Position = ammus.Position;
1804            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 40.0); };
1805            Add(rajahdys);
1806            rajahdys.Force = 25;
1807            rajahdys.Speed = 1000;
1808
1809            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
1810            if (!(kohde is Pelaaja)) return;
1811            Pelaaja pelaaja = (Pelaaja)kohde;
1812            if (pelaaja.DamageResistance == true)
1813            {
1814                pelaaja.HPLaskuri.Value -= 10;
1815            }
1816            else if (pelaaja.DamageVulnerability == true)
1817            {
1818                pelaaja.HPLaskuri.Value -= 30;
1819            }
1820            else
1821            {
1822                pelaaja.HPLaskuri.Value -= 20;
1823            }
1824        }
1825    }
1826    void RakettiOsui2(PhysicsObject ammus, PhysicsObject kohde)
1827    {
1828        if (ammus.IsDestroying) return;
1829        if (kohde.Tag.ToString() != "")
1830        {
1831            Explosion rajahdys = new Explosion(75);
1832            rajahdys.Position = ammus.Position;
1833            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 50.0); };
1834            Add(rajahdys);
1835            rajahdys.Force = 25;
1836            rajahdys.Speed = 1000;
1837
1838            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
1839            if (!(kohde is Pelaaja)) return;
1840            Pelaaja pelaaja = (Pelaaja)kohde;
1841            if (pelaaja.DamageResistance == true)
1842            {
1843                pelaaja.HPLaskuri.Value -= 17;
1844            }
1845            else if (pelaaja.DamageVulnerability == true)
1846            {
1847                pelaaja.HPLaskuri.Value -= 52;
1848            }
1849            else
1850            {
1851                pelaaja.HPLaskuri.Value -= 35;
1852            }
1853        }
1854    }
1855    void RakettiOsui3(PhysicsObject ammus, PhysicsObject kohde)
1856    {
1857        if (ammus.IsDestroying) return;
1858        if (kohde.Tag.ToString() != "")
1859        {
1860            Explosion rajahdys = new Explosion(75);
1861            rajahdys.Position = ammus.Position;
1862            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 25.0); };
1863            Add(rajahdys);
1864            rajahdys.Force = 25;
1865            rajahdys.Speed = 1000;
1866
1867            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
1868            if (!(kohde is Pelaaja)) return;
1869            Pelaaja pelaaja = (Pelaaja)kohde;
1870            if (pelaaja.DamageResistance == true)
1871            {
1872                pelaaja.HPLaskuri.Value -= 7;
1873            }
1874            else if (pelaaja.DamageVulnerability == true)
1875            {
1876                pelaaja.HPLaskuri.Value -= 22;
1877            }
1878            else
1879            {
1880                pelaaja.HPLaskuri.Value -= 15;
1881            }
1882        }
1883    }
1884
1885    void PaineaaltoOsuu(IPhysicsObject kohde, Vector shokki, Explosion e, double damagenMaara)
1886    {
1887        if (!(kohde is Pelaaja)) return;
1888        Pelaaja p = (Pelaaja)kohde;
1889        if (p.ViimeisinRajahdys == e) return;
1890        p.ViimeisinRajahdys = e;
1891        if (p.DamageResistance == true)
1892        {
1893            p.HPLaskuri.Value -= damagenMaara / 2;
1894        }
1895        else if (p.DamageVulnerability == true)
1896        {
1897            p.HPLaskuri.Value -= damagenMaara * 1.5;
1898        }
1899        else
1900        {
1901            p.HPLaskuri.Value -= damagenMaara;
1902        }
1903    }
1904
1905    void FlarePaineaaltoOsuu(IPhysicsObject kohde, Vector shokki, Explosion e)
1906    {
1907        if (!(kohde is Pelaaja)) return;
1908        Pelaaja p = (Pelaaja)kohde;
1909        if (p.ViimeisinRajahdys == e) return;
1910        p.ViimeisinRajahdys = e;
1911       
1912            GameObject liekki = new GameObject(40, 40);
1913            liekki.Color = new Color(Color.Orange, 100);
1914            liekki.Shape = Shape.FromImage(norsu);
1915
1916            p.Add(liekki);
1917            Timer.SingleShot(2.5, delegate { p.Remove(liekki); });
1918
1919            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
1920            Timer.SingleShot(0.5, delegate
1921            {
1922                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
1923                Timer.SingleShot(0.5, delegate
1924                {
1925                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
1926                    Timer.SingleShot(0.5, delegate
1927                    {
1928                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
1929                        Timer.SingleShot(0.5, delegate
1930                        {
1931                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
1932                            Timer.SingleShot(0.5, delegate
1933                            {
1934                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
1935                            });
1936                        });
1937                    });
1938                });
1939            });
1940       
1941    }
1942
1943    void FlarePaineaaltoXOsuu(IPhysicsObject kohde, Vector shokki, Explosion e)
1944    {
1945        if (!(kohde is Pelaaja)) return;
1946        Pelaaja p = (Pelaaja)kohde;
1947        if (p.ViimeisinRajahdys == e) return;
1948        p.ViimeisinRajahdys = e;
1949
1950            GameObject liekki = new GameObject(40, 40);
1951            liekki.Color = new Color(Color.Blue, 100);
1952            liekki.Shape = Shape.FromImage(norsu);
1953
1954            p.Add(liekki);
1955            Timer.SingleShot(3.0, delegate { p.Remove(liekki); });
1956
1957            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 15; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 45; } else { p.HPLaskuri.Value -= 30; }
1958            Timer.SingleShot(0.5, delegate
1959            {
1960                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1961                Timer.SingleShot(0.5, delegate
1962                {
1963                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1964                    Timer.SingleShot(0.5, delegate
1965                    {
1966                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1967                        Timer.SingleShot(0.5, delegate
1968                        {
1969                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1970                            Timer.SingleShot(0.5, delegate
1971                            {
1972                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1973                                Timer.SingleShot(0.5, delegate
1974                                {
1975                                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
1976                                });
1977                            });
1978                        });
1979                    });
1980                });
1981            });
1982       
1983    }
1984
1985    bool AmmusVoiOsua(PhysicsObject ammus, PhysicsObject kohde)
1986    {
1987        if (ammus.IsDestroying) return false;
1988        if (kohde.Tag.ToString() != "ammus" && kohde.Tag.ToString() != "") ammus.Destroy();
1989        if (kohde is Pelaaja)
1990        {
1991            return true;
1992        }
1993        else
1994        {
1995            return false;
1996        }
1997    }
1998
1999    void LisaaDamage(PhysicsObject ammus, PhysicsObject kohde, int dmg, string ase)
2000    {
2001        if (AmmusVoiOsua(ammus, kohde))
2002        {
2003            Pelaaja p = (Pelaaja)kohde;
2004            if (p.DamageResistance == true)
2005            {
2006                if (ase == "magnum") { p.HPLaskuri.Value -= dmg * 0.75; }
2007                else { p.HPLaskuri.Value -= dmg * 0.5; }
2008            }
2009            else if (p.DamageVulnerability == true)
2010            {
2011                if (ase == "magnum") { p.HPLaskuri.Value -= dmg * 2; }
2012                else { p.HPLaskuri.Value -= dmg * 1.5; }
2013            }
2014            else
2015            {
2016                p.HPLaskuri.Value -= dmg;
2017            }
2018        }
2019    }
2020
2021    void FlareOsui(PhysicsObject ammus, PhysicsObject kohde)
2022    {
2023        if (AmmusVoiOsua(ammus, kohde))
2024        {
2025            Pelaaja p = (Pelaaja)kohde;
2026
2027                GameObject liekki = new GameObject(40, 40);
2028                liekki.Color = new Color(Color.Orange, 100);
2029                liekki.Shape = Shape.FromImage(norsu);
2030
2031                p.Add(liekki);
2032                Timer.SingleShot(1.0, delegate { p.Remove(liekki); });
2033
2034                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 7; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 22; } else { p.HPLaskuri.Value -= 15; }
2035                Timer.SingleShot(0.5, delegate { if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
2036                Timer.SingleShot(0.5, delegate { if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; } });
2037                });
2038           
2039        }
2040    }
2041
2042    void FlareOsui2(PhysicsObject ammus, PhysicsObject kohde)
2043    {
2044        if (AmmusVoiOsua(ammus, kohde))
2045        {
2046            Pelaaja p = (Pelaaja)kohde;
2047
2048                GameObject liekki = new GameObject(40, 40);
2049                liekki.Color = new Color(Color.Orange, 100);
2050                liekki.Shape = Shape.FromImage(norsu);
2051
2052                p.Add(liekki);
2053                Timer.SingleShot(2.0, delegate { p.Remove(liekki); });
2054
2055                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 10; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 30; } else { p.HPLaskuri.Value -= 20; }
2056                Timer.SingleShot(0.5, delegate
2057                {
2058                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
2059                    Timer.SingleShot(0.5, delegate
2060                    {
2061                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
2062                        Timer.SingleShot(0.5, delegate
2063                        {
2064                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
2065                            Timer.SingleShot(0.5, delegate
2066                            {
2067                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 2; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 7; } else { p.HPLaskuri.Value -= 5; }
2068                            });
2069                        });
2070                    });
2071                });
2072           
2073        }
2074    }
2075    void FlareOsui3(PhysicsObject ammus, PhysicsObject kohde)
2076    {
2077        if (AmmusVoiOsua(ammus, kohde))
2078        {
2079            Pelaaja p = (Pelaaja)kohde;
2080
2081                GameObject liekki = new GameObject(40, 40);
2082                liekki.Color = new Color(Color.Orange, 100);
2083                liekki.Shape = Shape.FromImage(norsu);
2084
2085                p.Add(liekki);
2086                Timer.SingleShot(2.5, delegate { p.Remove(liekki); });
2087
2088                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 15; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 45; } else { p.HPLaskuri.Value -= 30; }
2089               
2090                Timer.SingleShot(0.5, delegate
2091                {
2092                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
2093                    Timer.SingleShot(0.5, delegate
2094                    {
2095                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
2096                        Timer.SingleShot(0.5, delegate
2097                        {
2098                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
2099                            Timer.SingleShot(0.5, delegate
2100                            {
2101                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
2102                                Timer.SingleShot(0.5, delegate
2103                                {
2104                                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 3; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 10; } else { p.HPLaskuri.Value -= 7; }
2105                                });
2106                            });
2107                        });
2108                    });
2109                });
2110           
2111        }
2112    }
2113
2114    void FlareOsui4(PhysicsObject ammus, PhysicsObject kohde)
2115    {
2116        if (AmmusVoiOsua(ammus, kohde))
2117        {
2118            Pelaaja p = (Pelaaja)kohde;
2119
2120                GameObject liekki = new GameObject(40, 40);
2121                liekki.Color = new Color(Color.Red, 100);
2122                liekki.Shape = Shape.FromImage(norsu);
2123
2124                p.Add(liekki);
2125                Timer.SingleShot(5.0, delegate { p.Remove(liekki); });
2126
2127                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 17; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 52; } else { p.HPLaskuri.Value -= 35; }
2128               
2129                Timer.SingleShot(0.5, delegate
2130                {
2131                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2132                    Timer.SingleShot(0.5, delegate
2133                    {
2134                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2135                        Timer.SingleShot(0.5, delegate
2136                        {
2137                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2138                            Timer.SingleShot(0.5, delegate
2139                            {
2140                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2141                                Timer.SingleShot(0.5, delegate
2142                                {
2143                                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2144                                    Timer.SingleShot(0.5, delegate
2145                                    {
2146                                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2147                                        Timer.SingleShot(0.5, delegate
2148                                        {
2149                                            if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2150                                            Timer.SingleShot(0.5, delegate
2151                                            {
2152                                                if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2153                                                Timer.SingleShot(0.5, delegate
2154                                                {
2155                                                    if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2156                                                    Timer.SingleShot(0.5, delegate
2157                                                    {
2158                                                        if (p.DamageResistance == true) { p.HPLaskuri.Value -= 5; } else if (p.DamageVulnerability == true) { p.HPLaskuri.Value -= 15; } else { p.HPLaskuri.Value -= 10; }
2159                                                    });
2160                                                });
2161                                            });
2162                                        });
2163                                    });
2164                                });
2165                            });
2166                        });
2167                    });
2168                });
2169           
2170        }
2171    }
2172
2173    // Muunnetut aseet
2174
2175    void SirpaleKranaattiOsui(PhysicsObject ammus, PhysicsObject kohde)
2176    {
2177        if (ammus.IsDestroying) return;
2178        if (kohde.Tag.ToString() != "")
2179        {
2180            Explosion rajahdys = new Explosion(75);
2181            rajahdys.Position = ammus.Position;
2182            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 50.0); };
2183            Add(rajahdys);
2184            rajahdys.Force = 25;
2185            rajahdys.Speed = 1000;
2186
2187            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2188            if (!(kohde is Pelaaja)) return;
2189            Pelaaja pelaaja = (Pelaaja)kohde;
2190            if (pelaaja.DamageResistance == true)
2191            {
2192                pelaaja.HPLaskuri.Value -= 20;
2193            }
2194            else if (pelaaja.DamageVulnerability == true)
2195            {
2196                pelaaja.HPLaskuri.Value -= 60;
2197            }
2198            else
2199            {
2200                pelaaja.HPLaskuri.Value -= 40;
2201            }
2202        }
2203    }
2204
2205    void SinkoOsui(PhysicsObject ammus, PhysicsObject kohde)
2206    {
2207        if (ammus.IsDestroying) return;
2208        if (kohde.Tag.ToString() != "")
2209        {
2210            Explosion rajahdys = new Explosion(100);
2211            rajahdys.Position = ammus.Position;
2212            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 75.0); };
2213            Add(rajahdys);
2214            rajahdys.Force = 25;
2215            rajahdys.Speed = 1000;
2216
2217            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2218            if (!(kohde is Pelaaja)) return;
2219            Pelaaja pelaaja = (Pelaaja)kohde;
2220            if (pelaaja.DamageResistance == true)
2221            {
2222                pelaaja.HPLaskuri.Value -= 25;
2223            }
2224            else if (pelaaja.DamageVulnerability == true)
2225            {
2226                pelaaja.HPLaskuri.Value -= 75;
2227            }
2228            else
2229            {
2230                pelaaja.HPLaskuri.Value -= 50;
2231            }
2232        }
2233    }
2234
2235    void ExpFlareOsui(PhysicsObject ammus, PhysicsObject kohde)
2236    {
2237            if (ammus.IsDestroying) return;
2238            if (kohde.Tag.ToString() != "")
2239            {
2240                Explosion rajahdys = new Explosion(75);
2241                rajahdys.Position = ammus.Position;
2242                rajahdys.Color = Color.Orange;
2243                rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { FlarePaineaaltoOsuu(p, shokki, rajahdys); };
2244                Add(rajahdys);
2245                rajahdys.Force = 25;
2246                rajahdys.Speed = 1000;
2247
2248                ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2249                if (!(kohde is Pelaaja)) return;
2250                Pelaaja pelaaja = (Pelaaja)kohde;
2251                if (pelaaja.DamageResistance == true)
2252                {
2253                    pelaaja.HPLaskuri.Value -= 15;
2254                }
2255                else if (pelaaja.DamageVulnerability == true)
2256                {
2257                    pelaaja.HPLaskuri.Value -= 45;
2258                }
2259                else
2260                {
2261                    pelaaja.HPLaskuri.Value -= 30;
2262                }
2263            }
2264    }
2265
2266    void SirpaleKranaattiXOsui(PhysicsObject ammus, PhysicsObject kohde)
2267    {
2268        if (ammus.IsDestroying) return;
2269        if (kohde.Tag.ToString() != "")
2270        {
2271            Explosion rajahdys = new Explosion(100);
2272            rajahdys.Position = ammus.Position;
2273            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 65.0); };
2274            Add(rajahdys);
2275            rajahdys.Force = 25;
2276            rajahdys.Speed = 1000;
2277
2278            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2279            if (!(kohde is Pelaaja)) return;
2280            Pelaaja pelaaja = (Pelaaja)kohde;
2281            if (pelaaja.DamageResistance == true)
2282            {
2283                pelaaja.HPLaskuri.Value -= 25;
2284            }
2285            else if (pelaaja.DamageVulnerability == true)
2286            {
2287                pelaaja.HPLaskuri.Value -= 75;
2288            }
2289            else
2290            {
2291                pelaaja.HPLaskuri.Value -= 50;
2292            }
2293        }
2294    }
2295
2296    void SinkoXOsui(PhysicsObject ammus, PhysicsObject kohde)
2297    {
2298        if (ammus.IsDestroying) return;
2299        if (kohde.Tag.ToString() != "")
2300        {
2301            Explosion rajahdys = new Explosion(125);
2302            rajahdys.Position = ammus.Position;
2303            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { PaineaaltoOsuu(p, shokki, rajahdys, 90.0); };
2304            Add(rajahdys);
2305            rajahdys.Force = 25;
2306            rajahdys.Speed = 1000;
2307
2308            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2309            if (!(kohde is Pelaaja)) return;
2310            Pelaaja pelaaja = (Pelaaja)kohde;
2311            if (pelaaja.DamageResistance == true)
2312            {
2313                pelaaja.HPLaskuri.Value -= 35;
2314            }
2315            else if (pelaaja.DamageVulnerability == true)
2316            {
2317                pelaaja.HPLaskuri.Value -= 105;
2318            }
2319            else
2320            {
2321                pelaaja.HPLaskuri.Value -= 70;
2322            }
2323        }
2324    }
2325
2326    void ExpFlareXOsui(PhysicsObject ammus, PhysicsObject kohde)
2327    {
2328        if (ammus.IsDestroying) return;
2329        if (kohde.Tag.ToString() != "")
2330        {
2331            Explosion rajahdys = new Explosion(100);
2332            rajahdys.Position = ammus.Position;
2333            rajahdys.Color = Color.Blue;
2334            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject p, Vector shokki) { FlarePaineaaltoXOsuu(p, shokki, rajahdys); };
2335            Add(rajahdys);
2336            rajahdys.Force = 25;
2337            rajahdys.Speed = 1000;
2338
2339            ammus.Destroy(); // ei voi taata tapahtuuko tämä "heti". Siksi tarvitaan alkuun tarkistus, että onko ammus tuhoutumassa.
2340            if (!(kohde is Pelaaja)) return;
2341            Pelaaja pelaaja = (Pelaaja)kohde;
2342            if (pelaaja.DamageResistance == true)
2343            {
2344                pelaaja.HPLaskuri.Value -= 20;
2345            }
2346            else if (pelaaja.DamageVulnerability == true)
2347            {
2348                pelaaja.HPLaskuri.Value -= 60;
2349            }
2350            else
2351            {
2352                pelaaja.HPLaskuri.Value -= 40;
2353            }
2354        }
2355    }
2356
2357    void LuoPowerUp(Vector paikka, Vector koko, String tagi, Image kuva)
2358    {
2359        PhysicsObject powerup = new PhysicsObject(koko.X, koko.Y);
2360        powerup.Position = paikka;
2361        powerup.Tag = tagi;
2362        powerup.Image = kuva;
2363        Add(powerup);
2364        AddCollisionHandler<PhysicsObject, Pelaaja>(powerup, "pelaaja", keraaPowerUp);
2365    }
2366
2367    void LuoPowerUp1(Vector paikka, double leveys, double korkeus, Vector koko, String tagi, Image kuva)
2368    {
2369        PhysicsObject powerup = new PhysicsObject(koko.X, koko.Y);
2370        powerup.Position = paikka;
2371        powerup.Tag = tagi;
2372        powerup.Image = kuva;
2373        Add(powerup);
2374        AddCollisionHandler<PhysicsObject, Pelaaja>(powerup, "pelaaja", keraaPowerUp);
2375    }
2376
2377    void LuoMod(Vector paikka, Vector koko, String tagi, Image kuva)
2378    {
2379        PhysicsObject mod = new PhysicsObject(koko.X, koko.Y);
2380        mod.Position = paikka;
2381        mod.Tag = tagi;
2382        mod.Image = kuva;
2383        Add(mod);
2384        AddCollisionHandler<PhysicsObject, Pelaaja>(mod, "pelaaja", keraaUpgrade);
2385    }
2386
2387    void LuoMod1(Vector paikka, double leveys, double korkeus, Vector koko, String tagi, Image kuva)
2388    {
2389        PhysicsObject mod = new PhysicsObject(koko.X, koko.Y);
2390        mod.Position = paikka;
2391        mod.Tag = tagi;
2392        mod.Image = kuva;
2393        Add(mod);
2394        AddCollisionHandler<PhysicsObject, Pelaaja>(mod, "pelaaja", keraaUpgrade);
2395    }
2396
2397    void LisaaPowerUpPaikka(Vector paikka, double leveys, double korkeus, List<Vector> powerupvektorit)
2398    {
2399        powerupvektorit.Add(paikka);
2400    }
2401
2402    void LisaaModPaikka(Vector paikka, double leveys, double korkeus, List<Vector> modvektorit)
2403    {
2404        modvektorit.Add(paikka);
2405    }
2406
2407    void LisaaHPPaikka(Vector paikka, double leveys, double korkeus, List<Vector> hpvektorit)
2408    {
2409        hpvektorit.Add(paikka);
2410    }
2411
2412    void LuoHP(Vector paikka, Vector koko, String tagi, Image kuva)
2413    {
2414        PhysicsObject hp = new PhysicsObject(koko.X, koko.Y);
2415        hp.Position = paikka;
2416        hp.Tag = tagi;
2417        hp.Image = kuva;
2418        Add(hp);
2419        AddCollisionHandler<PhysicsObject, Pelaaja>(hp, "pelaaja", keraaHP);
2420    }
2421
2422    void LuoHP1(Vector paikka, double leveys, double korkeus, Vector koko, String tagi, Image kuva)
2423    {
2424        PhysicsObject hp = new PhysicsObject(koko.X, koko.Y);
2425        hp.Position = paikka;
2426        hp.Tag = tagi;
2427        hp.Image = kuva;
2428        Add(hp);
2429        AddCollisionHandler<PhysicsObject, Pelaaja>(hp, "pelaaja", keraaHP1);
2430    }
2431
2432    void LuoHPIncrease(Vector paikka, double leveys, double korkeus, Vector koko, String tagi, Image kuva)
2433    {
2434        PhysicsObject hpboost = new PhysicsObject(koko.X, koko.Y);
2435        hpboost.Position = paikka;
2436        hpboost.Tag = tagi;
2437        hpboost.Image = kuva;
2438        Add(hpboost);
2439        AddCollisionHandler<PhysicsObject, Pelaaja>(hpboost, "pelaaja", keraaHPBoost);
2440    }
2441
2442    void LuoAse(Vector paikka, double leveys, double korkeus, Vector koko, String tagi, Image kuva)
2443    {
2444        PhysicsObject ase = new PhysicsObject(koko.X, koko.Y);
2445        ase.Position = paikka;
2446        ase.Tag = tagi;
2447        ase.Image = kuva;
2448        Add(ase);
2449        AddCollisionHandler<PhysicsObject, Pelaaja>(ase, "pelaaja", keraaAse);
2450    }
2451
2452    /// <summary>
2453    ///
2454    /// </summary>
2455    /// <param name="aseenTag">Fysiikkaolio, jonka perusteella laitetaan pelaajalle ase</param>
2456    /// <param name="pelaaja">Pelaaja jolle ase luodaan</param>
2457    /// <returns></returns>
2458    private bool LuoAsePelaajalle(string aseenTag, Pelaaja pelaaja)
2459    {
2460        if (aseenTag == null) return false;
2461
2462        // Varsinainen ase
2463        Weapon ase = null;
2464
2465        if (aseenTag == "Kivääri")
2466        {
2467            ase = new AssaultRifle(39, 13);
2468            ase.FireRate = 7;
2469            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 10, "kivaari"); };
2470            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2471            ase.Tag = "Kivääri";
2472            ase.Image = kivaarinkuva;
2473        }
2474
2475        if (aseenTag == "Magnum")
2476        {
2477            ase = new AssaultRifle(17, 12);
2478            ase.FireRate = 1.2;
2479            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 35, "magnum"); };
2480            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2481            ase.Tag = "Magnum";
2482            ase.Image = magnumkuva;
2483            ase.X = 10;
2484            ase.Y = 10;
2485        }
2486
2487        if (aseenTag == "Haulikko")
2488        {
2489            ase = new AssaultRifle(42, 10);
2490            ase.FireRate = 0.75;
2491            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 13, "haulikko"); };
2492            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.4);
2493            ase.Tag = "Haulikko";
2494            ase.Image = haulikonkuva;
2495        }
2496
2497        if (aseenTag == "Sniper")
2498        {
2499            ase = new AssaultRifle(42, 11);
2500            ase.FireRate = 0.4;
2501            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 80, "sniper"); };
2502            ase.Power.Value = 400;
2503            ase.Power.DefaultValue = 400;
2504            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2505            ase.Tag = "Sniper";
2506            ase.Image = sniperinkuva;
2507        }
2508
2509        if (aseenTag == "Kranaatinheitin")
2510        {
2511            ase = new Cannon(42, 15);
2512            ase.FireRate = 0.5;
2513            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { KranaattiOsui(ammus, kohde); };
2514            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
2515            ase.Tag = "Kranaatinheitin";
2516            ase.Image = kranaatinheittimenkuva;
2517        }
2518        if (aseenTag == "Raketinheitin")
2519        {
2520            ase = new AssaultRifle(48, 15);
2521            ase.FireRate = 0.5;
2522            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { RakettiOsui(ammus, kohde); };
2523            ase.Power.Value = 125;
2524            ase.Power.DefaultValue = 125;
2525            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2526            ase.Tag = "Raketinheitin";
2527            ase.Image = raketinheittimenkuva;
2528        }
2529
2530        if (aseenTag == "Pistooli")
2531        {
2532            ase = new AssaultRifle(16, 11);
2533            ase.FireRate = 2;
2534            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "pistooli"); };
2535            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2536            ase.Tag = "Pistooli";
2537            ase.Image = pistoolinkuva;
2538            ase.X = 10;
2539            ase.Y = 10;
2540        }
2541
2542        if (aseenTag == "Kivääri Lv. 2")
2543        {
2544            ase = new AssaultRifle(39, 16);
2545            ase.FireRate = 9;
2546            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "kivaari"); };
2547            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2548            ase.Tag = "Kivääri Lv. 2";
2549            ase.Image = kivaarinkuva2;
2550        }
2551        if (aseenTag == "Magnum Lv. 2")
2552        {
2553            ase = new AssaultRifle(17, 12);
2554            ase.FireRate = 1.5;
2555            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 40, "magnum"); };
2556            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2557            ase.Tag = "Magnum Lv. 2";
2558            ase.Image = magnumkuva2;
2559            ase.X = 10;
2560            ase.Y = 10;
2561        }
2562
2563        if (aseenTag == "Haulikko Lv. 2")
2564        {
2565            ase = new AssaultRifle(42, 12);
2566            ase.FireRate = 1.0;
2567            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "haulikko"); };
2568            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.5);
2569            ase.Tag = "Haulikko Lv. 2";
2570            ase.Image = haulikonkuva2;
2571        }
2572
2573        if (aseenTag == "Sniper Lv. 2")
2574        {
2575            ase = new AssaultRifle(42, 11);
2576            ase.FireRate = 0.75;
2577            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 90, "sniper"); };
2578            ase.Power.Value = 400;
2579            ase.Power.DefaultValue = 400;
2580            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2581            ase.Tag = "Sniper Lv. 2";
2582            ase.Image = sniperinkuva2;
2583        }
2584
2585        if (aseenTag == "Kranaatinheitin Lv. 2")
2586        {
2587            ase = new Cannon(42, 16);
2588            ase.FireRate = 0.75;
2589            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { KranaattiOsui2(ammus, kohde); };
2590            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
2591            ase.Tag = "Kranaatinheitin Lv. 2";
2592            ase.Image = kranaatinheittimenkuva2;
2593        }
2594        if (aseenTag == "Raketinheitin Lv. 2")
2595        {
2596            ase = new AssaultRifle(48, 15);
2597            ase.FireRate = 0.75;
2598            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { RakettiOsui2(ammus, kohde); };
2599            ase.Power.Value = 165;
2600            ase.Power.DefaultValue = 165;
2601            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2602            ase.Tag = "Raketinheitin Lv. 2";
2603            ase.Image = raketinheittimenkuva2;
2604        }
2605
2606        if (aseenTag == "Pistooli Lv. 2")
2607        {
2608            ase = new AssaultRifle(17, 11);
2609            ase.FireRate = 2;
2610            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 25, "pistooli"); }; ;
2611            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2612            ase.Tag = "Pistooli Lv. 2";
2613            ase.Image = pistoolinkuva2;
2614            ase.X = 10;
2615            ase.Y = 10;
2616        }
2617        if (aseenTag == "Kivääri Lv. 3")
2618        {
2619            ase = new AssaultRifle(39, 16);
2620            ase.FireRate = 10;
2621            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 20, "kivaari"); };
2622            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2623            ase.Tag = "Kivääri Lv. 3";
2624            ase.Image = kivaarinkuva3;
2625        }
2626        if (aseenTag == "Magnum Lv. 3")
2627        {
2628            ase = new AssaultRifle(17, 12);
2629            ase.FireRate = 2.0;
2630            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 50, "magnum"); };
2631            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2632            ase.Tag = "Magnum Lv. 3";
2633            ase.Image = magnumkuva3;
2634            ase.X = 10;
2635            ase.Y = 10;
2636        }
2637
2638        if (aseenTag == "Haulikko Lv. 3")
2639        {
2640            ase = new AssaultRifle(38, 12);
2641            ase.FireRate = 2.0;
2642            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "haulikko"); };
2643            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.75);
2644            ase.Tag = "Haulikko Lv. 3";
2645            ase.Image = haulikonkuva3;
2646        }
2647
2648        if (aseenTag == "Sniper Lv. 3")
2649        {
2650            ase = new AssaultRifle(45, 12);
2651            ase.FireRate = 4.0;
2652            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 40, "sniper"); };
2653            ase.Power.Value = 400;
2654            ase.Power.DefaultValue = 400;
2655            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2656            ase.Tag = "Sniper Lv. 3";
2657            ase.Image = sniperinkuva3;
2658        }
2659
2660        if (aseenTag == "Kranaatinheitin Lv. 3")
2661        {
2662            ase = new Cannon(37, 17);
2663            ase.FireRate = 1.0;
2664            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { KranaattiOsui3(ammus, kohde); };
2665            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
2666            ase.Tag = "Kranaatinheitin Lv. 3";
2667            ase.Image = kranaatinheittimenkuva3;
2668        }
2669
2670        if (aseenTag == "Raketinheitin Lv. 3")
2671        {
2672            ase = new AssaultRifle(48, 22.5);
2673            ase.FireRate = 4.0;
2674            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { RakettiOsui3(ammus, kohde); };
2675            ase.Power.Value = 125;
2676            ase.Power.DefaultValue = 125;
2677            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2678            ase.Tag = "Raketinheitin Lv. 3";
2679            ase.Image = raketinheittimenkuva3;
2680        }
2681
2682        if (aseenTag == "Pistooli Lv. 3")
2683        {
2684            ase = new AssaultRifle(20, 13);
2685            ase.FireRate = 2;
2686            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 25, "pistooli"); }; ;
2687            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2688            ase.Tag = "Pistooli Lv. 3";
2689            ase.Image = pistoolinkuva3;
2690            ase.X = 10;
2691            ase.Y = 10;
2692        }
2693
2694
2695        if (aseenTag == "Kivääri Lv. 4")
2696        {
2697            ase = new AssaultRifle(39, 16);
2698            ase.FireRate = 20;
2699            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 20, "kivaari"); };
2700            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2701            ase.Tag = "Kivääri Lv. 4";
2702            ase.Image = kivaarinkuva4;
2703        }
2704
2705        if (aseenTag == "Magnum Lv. 4")
2706        {
2707            ase = new AssaultRifle(17, 12);
2708            ase.FireRate = 2.5;
2709            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 100, "magnum"); };
2710            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2711            ase.Tag = "Magnum Lv. 4";
2712            ase.Image = magnumkuva4;
2713            ase.X = 10;
2714            ase.Y = 10;
2715        }
2716
2717        if (aseenTag == "Haulikko Lv. 4")
2718        {
2719            ase = new AssaultRifle(38, 12);
2720            ase.FireRate = 4.0;
2721            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "haulikko"); };
2722            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(2.0);
2723            ase.Tag = "Haulikko Lv. 4";
2724            ase.Image = haulikonkuva4;
2725        }
2726
2727        if (aseenTag == "Sniper Lv. 4")
2728        {
2729            ase = new AssaultRifle(45, 12);
2730            ase.FireRate = 5.0;
2731            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 75, "sniper"); };
2732            ase.Power.Value = 400;
2733            ase.Power.DefaultValue = 400;
2734            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2735            ase.Tag = "Sniper Lv. 4";
2736            ase.Image = sniperinkuva4;
2737        }
2738
2739        if (aseenTag == "Kranaatinheitin Lv. 4")
2740        {
2741            ase = new Cannon(37, 17);
2742            ase.FireRate = 4.0;
2743            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { KranaattiOsui3(ammus, kohde); };
2744            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
2745            ase.Tag = "Kranaatinheitin Lv. 4";
2746            ase.Image = kranaatinheittimenkuva4;
2747        }
2748        if (aseenTag == "Raketinheitin Lv. 4")
2749        {
2750            ase = new AssaultRifle(48, 22.5);
2751            ase.FireRate = 8.0;
2752            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { RakettiOsui3(ammus, kohde); };
2753            ase.Power.Value = 125;
2754            ase.Power.DefaultValue = 125;
2755            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2756            ase.Tag = "Raketinheitin Lv. 4";
2757            ase.Image = raketinheittimenkuva4;
2758        }
2759
2760        if (aseenTag == "Pistooli Lv. 4")
2761        {
2762            ase = new AssaultRifle(20, 13);
2763            ase.FireRate = 4;
2764            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 25, "pistooli"); }; ;
2765            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2766            ase.Tag = "Pistooli Lv. 4";
2767            ase.Image = pistoolinkuva4;
2768            ase.X = 10;
2769            ase.Y = 10;
2770        }
2771
2772        // Yksinpeli aseet
2773        if (aseenTag == "Miekka")
2774        {
2775            ase = new AssaultRifle(24, 24);
2776            ase.FireRate = 2;
2777            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 10, "miekka"); };
2778            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.05);
2779            ase.Tag = "Miekka";
2780            ase.Image = miekankuva;
2781            ase.X = 10;
2782            ase.Y = 10;
2783        }
2784
2785        if (aseenTag == "Miekka Lv. 2")
2786        {
2787            ase = new AssaultRifle(24, 24);
2788            ase.FireRate = 2.5;
2789            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 20, "miekka"); };
2790            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.05);
2791            ase.Tag = "Miekka Lv. 2";
2792            ase.Image = miekankuva;
2793            ase.X = 10;
2794            ase.Y = 10;
2795        }
2796
2797        if (aseenTag == "Miekka Lv. 3")
2798        {
2799            ase = new AssaultRifle(24, 24);
2800            ase.FireRate = 3;
2801            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 40, "miekka"); };
2802            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.05);
2803            ase.Tag = "Miekka Lv. 3";
2804            ase.Image = miekankuva;
2805            ase.X = 10;
2806            ase.Y = 10;
2807        }
2808
2809        if (aseenTag == "Miekka Lv. 4")
2810        {
2811            ase = new AssaultRifle(24, 24);
2812            ase.FireRate = 5;
2813            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 100, "miekka"); };
2814            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.05);
2815            ase.Tag = "Miekka Lv. 4";
2816            ase.Image = miekankuva;
2817            ase.X = 10;
2818            ase.Y = 10;
2819        }
2820
2821        if (aseenTag == "Valopistooli")
2822        {
2823            ase = new AssaultRifle(18, 10);
2824            ase.FireRate = 0.75;
2825            ase.ProjectileCollision = FlareOsui;
2826            ase.Power.Value = 300;
2827            ase.Power.DefaultValue = 300;
2828            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2829            ase.Tag = "Valopistooli";
2830            ase.Image = flaregunkuva;
2831            ase.X = 10;
2832            ase.Y = 10;
2833        }
2834
2835        if (aseenTag == "Valopistooli Lv. 2")
2836        {
2837            ase = new AssaultRifle(18, 10);
2838            ase.FireRate = 1;
2839            ase.ProjectileCollision = FlareOsui2;
2840            ase.Power.Value = 300;
2841            ase.Power.DefaultValue = 300;
2842            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2843            ase.Tag = "Valopistooli Lv. 2";
2844            ase.Image = flaregunkuva2;
2845            ase.X = 10;
2846            ase.Y = 10;
2847        }
2848
2849        if (aseenTag == "Valopistooli Lv. 3")
2850        {
2851            ase = new AssaultRifle(18, 10);
2852            ase.FireRate = 1.2;
2853            ase.ProjectileCollision = FlareOsui3;
2854            ase.Power.Value = 300;
2855            ase.Power.DefaultValue = 300;
2856            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2857            ase.Tag = "Valopistooli Lv. 3";
2858            ase.Image = flaregunkuva3;
2859            ase.X = 10;
2860            ase.Y = 10;
2861        }
2862
2863        if (aseenTag == "Valopistooli Lv. 4")
2864        {
2865            ase = new AssaultRifle(18, 10);
2866            ase.FireRate = 1.5;
2867            ase.ProjectileCollision = FlareOsui4;
2868            ase.Power.Value = 300;
2869            ase.Power.DefaultValue = 300;
2870            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2871            ase.Tag = "Valopistooli Lv. 4";
2872            ase.Image = flaregunkuva4;
2873            ase.X = 10;
2874            ase.Y = 10;
2875        }
2876
2877        // Muunnetut aseet
2878
2879        if (aseenTag == "Sarjatulikivääri")
2880        {
2881            ase = new AssaultRifle(39, 13);
2882            ase.FireRate = 4;
2883            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "kivaari"); };
2884            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2885            ase.Tag = "Sarjatulikivääri";
2886            ase.Image = kivaarinkuva;
2887        }
2888
2889        if (aseenTag == "Revolveri")
2890        {
2891            ase = new AssaultRifle(17, 12);
2892            ase.FireRate = 3.0;
2893            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 40, "magnum"); };
2894            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2895            ase.Tag = "Revolveri";
2896            ase.Image = magnumkuva;
2897            ase.X = 10;
2898            ase.Y = 10;
2899        }
2900
2901        if (aseenTag == "Katkaistu haulikko")
2902        {
2903            ase = new AssaultRifle(42, 10);
2904            ase.FireRate = 1.5;
2905            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 13, "haulikko"); };
2906            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.4);
2907            ase.Tag = "Katkaistu haulikko";
2908            ase.Image = haulikonkuva;
2909        }
2910
2911        if (aseenTag == "Panssari-Sniper")
2912        {
2913            ase = new AssaultRifle(42, 11);
2914            ase.FireRate = 0.5;
2915            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 200, "sniper"); };
2916            ase.Power.Value = 400;
2917            ase.Power.DefaultValue = 400;
2918            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2919            ase.Tag = "Panssari-Sniper";
2920            ase.Image = sniperinkuva;
2921        }
2922
2923        if (aseenTag == "Sirpalekranaatinheitin")
2924        {
2925            ase = new Cannon(37, 17);
2926            ase.FireRate = 1.0;
2927            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { SirpaleKranaattiOsui(ammus, kohde); };
2928            ase.Power.Value = 25000;
2929            ase.Power.DefaultValue = 25000;
2930            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
2931            ase.Tag = "Sirpalekranaatinheitin";
2932            ase.Image = kranaatinheittimenkuva;
2933        }
2934
2935        if (aseenTag == "Sinko")
2936        {
2937            ase = new AssaultRifle(48, 15);
2938            ase.FireRate = 0.75;
2939            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { SinkoOsui(ammus, kohde); };
2940            ase.Power.Value = 165;
2941            ase.Power.DefaultValue = 165;
2942            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2943            ase.Tag = "Sinko";
2944            ase.Image = raketinheittimenkuva;
2945        }
2946
2947        if (aseenTag == "Konepistooli")
2948        {
2949            ase = new AssaultRifle(16, 11);
2950            ase.FireRate = 17;
2951            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "pistooli"); };
2952            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2953            ase.Tag = "Konepistooli";
2954            ase.Image = konepistoolinkuva;
2955            ase.X = 10;
2956            ase.Y = 10;
2957        }
2958
2959        if (aseenTag == "Räjähtävä valopistooli")
2960        {
2961            ase = new AssaultRifle(18, 10);
2962            ase.FireRate = 1.0;
2963            ase.ProjectileCollision = ExpFlareOsui;
2964            ase.Power.Value = 300;
2965            ase.Power.DefaultValue = 300;
2966            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2967            ase.Tag = "Räjähtävä valopistooli";
2968            ase.Image = flaregunkuva;
2969            ase.X = 10;
2970            ase.Y = 10;
2971        }
2972
2973        if (aseenTag == "Sarjatulikivääri Lv. X")
2974        {
2975            ase = new AssaultRifle(39, 13);
2976            ase.FireRate = 6;
2977            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 30, "kivaari"); };
2978            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2979            ase.Tag = "Sarjatulikivääri Lv. X";
2980            ase.Image = kivaarinkuva;
2981        }
2982
2983        if (aseenTag == "Revolveri Lv. X")
2984        {
2985            ase = new AssaultRifle(17, 12);
2986            ase.FireRate = 6;
2987            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 60, "magnum"); };
2988            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
2989            ase.Tag = "Revolveri Lv. X";
2990            ase.Image = magnumkuva;
2991            ase.X = 10;
2992            ase.Y = 10;
2993        }
2994
2995        if (aseenTag == "Katkaistu haulikko Lv. X")
2996        {
2997            ase = new AssaultRifle(42, 10);
2998            ase.FireRate = 2;
2999            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 15, "haulikko"); };
3000            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(0.4);
3001            ase.Tag = "Katkaistu haulikko Lv. X";
3002            ase.Image = haulikonkuva;
3003        }
3004
3005        if (aseenTag == "Panssari-Sniper Lv. X")
3006        {
3007            ase = new AssaultRifle(42, 11);
3008            ase.FireRate = 0.8;
3009            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 1000, "sniper"); };
3010            ase.Power.Value = 400;
3011            ase.Power.DefaultValue = 400;
3012            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
3013            ase.Tag = "Panssari-Sniper Lv. X";
3014            ase.Image = sniperinkuva;
3015        }
3016
3017        if (aseenTag == "Sirpalekranaatinheitin Lv. X")
3018        {
3019            ase = new Cannon(37, 17);
3020            ase.FireRate = 2;
3021            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { SirpaleKranaattiXOsui(ammus, kohde); };
3022            ase.Power.Value = 25000;
3023            ase.Power.DefaultValue = 25000;
3024            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(3);
3025            ase.Tag = "Sirpalekranaatinheitin Lv. X";
3026            ase.Image = kranaatinheittimenkuva;
3027        }
3028
3029        if (aseenTag == "Sinko Lv. X")
3030        {
3031            ase = new AssaultRifle(48, 15);
3032            ase.FireRate = 1.5;
3033            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { SinkoXOsui(ammus, kohde); };
3034            ase.Power.Value = 165;
3035            ase.Power.DefaultValue = 165;
3036            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
3037            ase.Tag = "Sinko Lv. X";
3038            ase.Image = raketinheittimenkuva;
3039        }
3040
3041        if (aseenTag == "Konepistooli Lv. X")
3042        {
3043            ase = new AssaultRifle(16, 11);
3044            ase.FireRate = 34;
3045            ase.ProjectileCollision = delegate(PhysicsObject ammus, PhysicsObject kohde) { LisaaDamage(ammus, kohde, 17, "pistooli"); };
3046            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
3047            ase.Tag = "Konepistooli Lv. X";
3048            ase.Image = konepistoolinkuva;
3049            ase.X = 10;
3050            ase.Y = 10;
3051        }
3052
3053        if (aseenTag == "Räjähtävä valopistooli Lv. X")
3054        {
3055            ase = new AssaultRifle(18, 10);
3056            ase.FireRate = 1.5;
3057            ase.ProjectileCollision = ExpFlareXOsui;
3058            ase.Power.Value = 300;
3059            ase.Power.DefaultValue = 300;
3060            ase.MaxAmmoLifetime = TimeSpan.FromSeconds(10);
3061            ase.Tag = "Räjähtävä valopistooli Lv. X";
3062            ase.Image = flaregunkuva;
3063            ase.X = 10;
3064            ase.Y = 10;
3065        }
3066
3067        if (ase != null)
3068        {
3069            pelaaja.Weapon = ase;
3070            return true;
3071        }
3072        return false;
3073    }
3074
3075    void MuunnaAse(string aseenTag, Pelaaja pelaaja)
3076    {
3077        if (aseenTag == null) return;
3078
3079        if (aseenTag.Length >= 7 && aseenTag.Substring(0, 7) == "Kivääri")
3080        {
3081            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3082            {
3083                LuoAsePelaajalle("Sarjatulikivääri Lv. X", pelaaja);
3084                Timer.SingleShot(5.0, delegate
3085                {
3086                    if (pelaaja.IsDestroyed == true)
3087                    {
3088                        return;
3089                    }
3090                    string aseTag = pelaaja.Weapon.Tag.ToString();
3091                    if (aseTag == "Sarjatulikivääri Lv. X")
3092                    {
3093                        saaAmpua = false;
3094                        Timer.SingleShot(0.1, delegate
3095                        {
3096                            saaAmpua = true;
3097                        }); LuoAsePelaajalle("Sarjatulikivääri", pelaaja); naytaTiedot();
3098                    }
3099                    else
3100                    {
3101                        return;
3102                    }
3103                });
3104            }
3105            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3106            {
3107                LuoAsePelaajalle("Sarjatulikivääri", pelaaja);
3108            }
3109
3110            else
3111            {
3112                LuoAsePelaajalle("Sarjatulikivääri", pelaaja);
3113                {
3114                    LuoHeikkous(pelaaja);
3115                }
3116            }
3117        }
3118
3119        if (aseenTag.Length >= 16 && aseenTag.Substring(0, 16) == "Sarjatulikivääri")
3120        {
3121                LuoAsePelaajalle("Kivääri Lv. 4", pelaaja);
3122                Timer.SingleShot(5.0, delegate
3123                {
3124                    if (pelaaja.IsDestroyed == true)
3125                    {
3126                        return;
3127                    }
3128                    string aseTag = pelaaja.Weapon.Tag.ToString();
3129                    if (aseTag == "Kivääri Lv. 4")
3130                    {
3131                        saaAmpua = false;
3132                        Timer.SingleShot(0.1, delegate
3133                        {
3134                            saaAmpua = true;
3135                        }); LuoAsePelaajalle("Kivääri Lv. 3", pelaaja); naytaTiedot();
3136                    }
3137                    else
3138                    {
3139                        return;
3140                    }
3141                });
3142        }
3143
3144
3145        if (aseenTag.Length >= 6 && aseenTag.Substring(0, 6) == "Magnum")
3146        {
3147            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3148            {
3149                LuoAsePelaajalle("Revolveri Lv. X", pelaaja);
3150                Timer.SingleShot(5.0, delegate
3151                {
3152                    if (pelaaja.IsDestroyed == true)
3153                    {
3154                        return;
3155                    }
3156                    string aseTag = pelaaja.Weapon.Tag.ToString();
3157                    if (aseTag == "Revolveri Lv. X")
3158                    {
3159                        saaAmpua = false;
3160                        Timer.SingleShot(0.1, delegate
3161                        {
3162                            saaAmpua = true;
3163                        }); LuoAsePelaajalle("Revolveri", pelaaja); naytaTiedot();
3164                    }
3165                    else
3166                    {
3167                        return;
3168                    }
3169                });
3170            }
3171            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3172            {
3173                LuoAsePelaajalle("Revolveri", pelaaja);
3174            }
3175
3176            else
3177            {
3178                LuoAsePelaajalle("Revolveri", pelaaja);
3179                {
3180                    LuoHeikkous(pelaaja);
3181                }
3182            }
3183        }
3184
3185        if (aseenTag.Length >= 9 && aseenTag.Substring(0, 9) == "Revolveri")
3186        {
3187            LuoAsePelaajalle("Magnum Lv. 4", pelaaja);
3188            Timer.SingleShot(5.0, delegate
3189            {
3190                if (pelaaja.IsDestroyed == true)
3191                {
3192                    return;
3193                }
3194                string aseTag = pelaaja.Weapon.Tag.ToString();
3195                if (aseTag == "Magnum Lv. 4")
3196                {
3197                    saaAmpua = false;
3198                    Timer.SingleShot(0.1, delegate
3199                    {
3200                        saaAmpua = true;
3201                    }); LuoAsePelaajalle("Magnum Lv. 3", pelaaja); naytaTiedot();
3202                }
3203                else
3204                {
3205                    return;
3206                }
3207            });
3208        }
3209
3210        if (aseenTag.Length >= 8 && aseenTag.Substring(0, 8) == "Haulikko")
3211        {
3212            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3213            {
3214                LuoAsePelaajalle("Katkaistu haulikko Lv. X", pelaaja);
3215                Timer.SingleShot(5.0, delegate
3216                {
3217                    if (pelaaja.IsDestroyed == true)
3218                    {
3219                        return;
3220                    }
3221                    string aseTag = pelaaja.Weapon.Tag.ToString();
3222                    if (aseTag == "Katkaistu haulikko Lv. X")
3223                    {
3224                        saaAmpua = false;
3225                        Timer.SingleShot(0.1, delegate
3226                        {
3227                            saaAmpua = true;
3228                        }); LuoAsePelaajalle("Katkaistu haulikko", pelaaja); naytaTiedot();
3229                    }
3230                    else
3231                    {
3232                        return;
3233                    }
3234                });
3235            }
3236            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3237            {
3238                LuoAsePelaajalle("Katkaistu haulikko", pelaaja);
3239            }
3240
3241            else
3242            {
3243                LuoAsePelaajalle("Katkaistu haulikko", pelaaja);
3244                {
3245                    LuoHeikkous(pelaaja);
3246                }
3247            }
3248        }
3249
3250        if (aseenTag.Length >= 18 && aseenTag.Substring(0, 18) == "Katkaistu haulikko")
3251        {
3252            LuoAsePelaajalle("Haulikko Lv. 4", pelaaja);
3253            Timer.SingleShot(5.0, delegate
3254            {
3255                if (pelaaja.IsDestroyed == true)
3256                {
3257                    return;
3258                }
3259                string aseTag = pelaaja.Weapon.Tag.ToString();
3260                if (aseTag == "Haulikko Lv. 4")
3261                {
3262                    saaAmpua = false;
3263                    Timer.SingleShot(0.1, delegate
3264                    {
3265                        saaAmpua = true;
3266                    }); LuoAsePelaajalle("Haulikko Lv. 3", pelaaja); naytaTiedot();
3267                }
3268                else
3269                {
3270                    return;
3271                }
3272            });
3273        }
3274
3275        if (aseenTag.Length >= 6 && aseenTag.Substring(0, 6) == "Sniper")
3276        {
3277            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3278            {
3279                LuoAsePelaajalle("Panssari-Sniper Lv. X", pelaaja);
3280                Timer.SingleShot(5.0, delegate
3281                {
3282                    if (pelaaja.IsDestroyed == true)
3283                    {
3284                        return;
3285                    }
3286                    string aseTag = pelaaja.Weapon.Tag.ToString();
3287                    if (aseTag == "Panssari-Sniper Lv. X")
3288                    {
3289                        saaAmpua = false;
3290                        Timer.SingleShot(0.1, delegate
3291                        {
3292                            saaAmpua = true;
3293                        }); LuoAsePelaajalle("Panssari-Sniper", pelaaja); naytaTiedot();
3294                    }
3295                    else
3296                    {
3297                        return;
3298                    }
3299                });
3300            }
3301            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3302            {
3303                LuoAsePelaajalle("Panssari-Sniper", pelaaja);
3304            }
3305
3306            else
3307            {
3308                LuoAsePelaajalle("Panssari-Sniper", pelaaja);
3309                {
3310                    LuoHeikkous(pelaaja);
3311                }
3312            }
3313        }
3314
3315        if (aseenTag.Length >= 15 && aseenTag.Substring(0, 15) == "Panssari-Sniper")
3316        {
3317            LuoAsePelaajalle("Sniper Lv. 4", pelaaja);
3318            Timer.SingleShot(5.0, delegate
3319            {
3320                if (pelaaja.IsDestroyed == true)
3321                {
3322                    return;
3323                }
3324                string aseTag = pelaaja.Weapon.Tag.ToString();
3325                if (aseTag == "Sniper Lv. 4")
3326                {
3327                    saaAmpua = false;
3328                    Timer.SingleShot(0.1, delegate
3329                    {
3330                        saaAmpua = true;
3331                    }); LuoAsePelaajalle("Sniper Lv. 3", pelaaja); naytaTiedot();
3332                }
3333                else
3334                {
3335                    return;
3336                }
3337            });
3338        }
3339
3340        if (aseenTag.Length >= 15 && aseenTag.Substring(0, 15) == "Kranaatinheitin")
3341        {
3342            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3343            {
3344                LuoAsePelaajalle("Sirpalekranaatinheitin Lv. X", pelaaja);
3345                Timer.SingleShot(5.0, delegate
3346                {
3347                    if (pelaaja.IsDestroyed == true)
3348                    {
3349                        return;
3350                    }
3351                    string aseTag = pelaaja.Weapon.Tag.ToString();
3352                    if (aseTag == "Sirpalekranaatinheitin Lv. X")
3353                    {
3354                        saaAmpua = false;
3355                        Timer.SingleShot(0.1, delegate
3356                        {
3357                            saaAmpua = true;
3358                        }); LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja); naytaTiedot();
3359                    }
3360                    else
3361                    {
3362                        return;
3363                    }
3364                });
3365            }
3366            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3367            {
3368                LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja);
3369            }
3370
3371            else
3372            {
3373                LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja);
3374                {
3375                    LuoHeikkous(pelaaja);
3376                }
3377            }
3378        }
3379
3380        if (aseenTag.Length >= 22 && aseenTag.Substring(0, 22) == "Sirpalekranaatinheitin")
3381        {
3382            LuoAsePelaajalle("Kranaatinheitin Lv. 4", pelaaja);
3383            Timer.SingleShot(5.0, delegate
3384            {
3385                if (pelaaja.IsDestroyed == true)
3386                {
3387                    return;
3388                }
3389                string aseTag = pelaaja.Weapon.Tag.ToString();
3390                if (aseTag == "Kranaatinheitin Lv. 4")
3391                {
3392                    saaAmpua = false;
3393                    Timer.SingleShot(0.1, delegate
3394                    {
3395                        saaAmpua = true;
3396                    }); LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja); naytaTiedot();
3397                }
3398                else
3399                {
3400                    return;
3401                }
3402            });
3403        }
3404
3405        if (aseenTag.Length >= 13 && aseenTag.Substring(0, 13) == "Raketinheitin")
3406        {
3407            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3408            {
3409                LuoAsePelaajalle("Sinko Lv. X", pelaaja);
3410                Timer.SingleShot(5.0, delegate
3411                {
3412                    if (pelaaja.IsDestroyed == true)
3413                    {
3414                        return;
3415                    }
3416                    string aseTag = pelaaja.Weapon.Tag.ToString();
3417                    if (aseTag == "Sinko Lv. X")
3418                    {
3419                        saaAmpua = false;
3420                        Timer.SingleShot(0.1, delegate
3421                        {
3422                            saaAmpua = true;
3423                        }); LuoAsePelaajalle("Sinko", pelaaja); naytaTiedot();
3424                    }
3425                    else
3426                    {
3427                        return;
3428                    }
3429                });
3430            }
3431            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3432            {
3433                LuoAsePelaajalle("Sinko", pelaaja);
3434            }
3435
3436            else
3437            {
3438                LuoAsePelaajalle("Sinko", pelaaja);
3439                {
3440                    LuoHeikkous(pelaaja);
3441                }
3442            }
3443        }
3444
3445        if (aseenTag.Length >= 5 && aseenTag.Substring(0, 5) == "Sinko")
3446        {
3447            LuoAsePelaajalle("Raketinheitin Lv. 4", pelaaja);
3448            Timer.SingleShot(5.0, delegate
3449            {
3450                if (pelaaja.IsDestroyed == true)
3451                {
3452                    return;
3453                }
3454                string aseTag = pelaaja.Weapon.Tag.ToString();
3455                if (aseTag == "Raketinheitin Lv. 4")
3456                {
3457                    saaAmpua = false;
3458                    Timer.SingleShot(0.1, delegate
3459                    {
3460                        saaAmpua = true;
3461                    }); LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja); naytaTiedot();
3462                }
3463                else
3464                {
3465                    return;
3466                }
3467            });
3468        }
3469
3470        if (aseenTag.Length >= 8 && aseenTag.Substring(0, 8) == "Pistooli")
3471        {
3472            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3473            {
3474                LuoAsePelaajalle("Konepistooli Lv. X", pelaaja);
3475                Timer.SingleShot(5.0, delegate
3476                {
3477                    if (pelaaja.IsDestroyed == true)
3478                    {
3479                        return;
3480                    }
3481                    string aseTag = pelaaja.Weapon.Tag.ToString();
3482                    if (aseTag == "Konepistooli Lv. X")
3483                    {
3484                        saaAmpua = false;
3485                        Timer.SingleShot(0.1, delegate
3486                        {
3487                            saaAmpua = true;
3488                        }); LuoAsePelaajalle("Konepistooli", pelaaja); naytaTiedot();
3489                    }
3490                    else
3491                    {
3492                        return;
3493                    }
3494                });
3495            }
3496            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3497            {
3498                LuoAsePelaajalle("Konepistooli", pelaaja);
3499            }
3500
3501            else
3502            {
3503                LuoAsePelaajalle("Konepistooli", pelaaja);
3504                {
3505                    LuoHeikkous(pelaaja);
3506                }
3507            }
3508        }
3509
3510        if (aseenTag.Length >= 12 && aseenTag.Substring(0, 12) == "Konepistooli")
3511        {
3512            LuoAsePelaajalle("Pistooli Lv. 4", pelaaja);
3513            Timer.SingleShot(5.0, delegate
3514            {
3515                if (pelaaja.IsDestroyed == true)
3516                {
3517                    return;
3518                }
3519                string aseTag = pelaaja.Weapon.Tag.ToString();
3520                if (aseTag == "Pistooli Lv. 4")
3521                {
3522                    saaAmpua = false;
3523                    Timer.SingleShot(0.1, delegate
3524                    {
3525                        saaAmpua = true;
3526                    }); LuoAsePelaajalle("Pistooli Lv. 3", pelaaja); naytaTiedot();
3527                }
3528                else
3529                {
3530                    return;
3531                }
3532            });
3533        }
3534
3535        // Yksinpeli aseet
3536        if (aseenTag.Length >= 12 && aseenTag.Substring(0, 12) == "Valopistooli")
3537        {
3538            if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 3" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
3539            {
3540                LuoAsePelaajalle("Räjähtävä valopistooli Lv. X", pelaaja);
3541                Timer.SingleShot(5.0, delegate
3542                {
3543                    if (pelaaja.IsDestroyed == true)
3544                    {
3545                        return;
3546                    }
3547                    string aseTag = pelaaja.Weapon.Tag.ToString();
3548                    if (aseTag == "Räjähtävä valopistooli Lv. X")
3549                    {
3550                        saaAmpua = false;
3551                        Timer.SingleShot(0.1, delegate
3552                        {
3553                            saaAmpua = true;
3554                        }); LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja); naytaTiedot();
3555                    }
3556                    else
3557                    {
3558                        return;
3559                    }
3560                });
3561            }
3562            else if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 2")
3563            {
3564                LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja);
3565            }
3566
3567            else
3568            {
3569                LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja);
3570                {
3571                    LuoHeikkous(pelaaja);
3572                }
3573            }
3574        }
3575
3576        if (aseenTag.Length >= 22 && aseenTag.Substring(0, 22) == "Räjähtävä valopistooli")
3577        {
3578            LuoAsePelaajalle("Valopistooli Lv. 4", pelaaja);
3579            Timer.SingleShot(5.0, delegate
3580            {
3581                if (pelaaja.IsDestroyed == true)
3582                {
3583                    return;
3584                }
3585                string aseTag = pelaaja.Weapon.Tag.ToString();
3586                if (aseTag == "Valopistooli Lv. 4")
3587                {
3588                    saaAmpua = false;
3589                    Timer.SingleShot(0.1, delegate
3590                    {
3591                        saaAmpua = true;
3592                    }); LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja); naytaTiedot();
3593                }
3594                else
3595                {
3596                    return;
3597                }
3598            });
3599        }
3600
3601        if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. X")
3602        {
3603            Explosion rajahdys = new Explosion(100);
3604            if (pelaaja == pelaaja1)
3605            {
3606                rajahdys.Position = pelaaja2.Position;
3607                if (pelaaja2.HPLaskuri.Value <= 1)
3608                {
3609                    return;
3610                }
3611                if (pelaaja2.HPLaskuri.Value <= 25 && pelaaja2.DamageResistance == false && pelaaja2.DamageVulnerability == false || pelaaja2.HPLaskuri.Value <= 12 && pelaaja2.DamageResistance == true || pelaaja2.HPLaskuri.Value <= 37 && pelaaja2.DamageVulnerability == true && pelaaja2.DamageResistance == false)
3612                {
3613                    pelaaja2.HPLaskuri.Value = 1;
3614                }
3615                else
3616                {
3617                    if (pelaaja2.DamageResistance)
3618                    {
3619                        pelaaja2.HPLaskuri.Value -= 12;
3620                    }
3621                    else if (pelaaja2.DamageVulnerability)
3622                    {
3623                        pelaaja2.HPLaskuri.Value -= 37;
3624                    }
3625                    else
3626                    {
3627                        pelaaja2.HPLaskuri.Value -= 25;
3628                    }
3629                }
3630            }
3631            if (pelaaja == pelaaja2)
3632            {
3633                rajahdys.Position = pelaaja1.Position;
3634                if (pelaaja1.HPLaskuri.Value <= 1)
3635                {
3636                    return;
3637                }
3638                if (pelaaja1.HPLaskuri.Value <= 25 && pelaaja1.DamageResistance == false && pelaaja1.DamageVulnerability == false || pelaaja1.HPLaskuri.Value <= 12 && pelaaja1.DamageResistance == true || pelaaja1.HPLaskuri.Value <= 37 && pelaaja1.DamageVulnerability == true && pelaaja1.DamageResistance == false)
3639                {
3640                    pelaaja1.HPLaskuri.Value = 1;
3641                }
3642                else
3643                {
3644                    if (pelaaja1.DamageResistance)
3645                    {
3646                        pelaaja1.HPLaskuri.Value -= 12;
3647                    }
3648                    else if (pelaaja1.DamageVulnerability)
3649                    {
3650                        pelaaja1.HPLaskuri.Value -= 37;
3651                    }
3652                    else
3653                    {
3654                        pelaaja1.HPLaskuri.Value -= 25;
3655                    }
3656                }
3657            }
3658            Add(rajahdys);
3659            rajahdys.Force = 0;
3660            rajahdys.Speed = 1000;
3661        }
3662    }
3663
3664    void LuoHeikkous(Pelaaja pelaaja)
3665    {
3666        GameObject kilpi = new GameObject(50, 50, Shape.Circle);
3667        kilpi.Color = new Color(Color.Red, 40);
3668        pelaaja.Add(kilpi);
3669        pelaaja.DamageVulnerability = true;
3670        if (pelaaja.DamageResistance == true)
3671        {
3672            kilpi.IsVisible = false;
3673        }
3674        Timer.SingleShot(5.0, delegate { pelaaja.DamageVulnerability = false; pelaaja.Remove(kilpi); });
3675    }
3676
3677    void PaivitaAse(string aseenTag, Pelaaja pelaaja)
3678    {
3679        if (aseenTag == null) return;
3680
3681        if (aseenTag == "Kivääri")
3682        {
3683            LuoAsePelaajalle("Kivääri Lv. 2", pelaaja);
3684        }
3685        if (aseenTag == "Magnum")
3686        {
3687            LuoAsePelaajalle("Magnum Lv. 2", pelaaja);
3688        }
3689
3690        if (aseenTag == "Haulikko")
3691        {
3692            LuoAsePelaajalle("Haulikko Lv. 2", pelaaja);
3693        }
3694
3695        if (aseenTag == "Sniper")
3696        {
3697            LuoAsePelaajalle("Sniper Lv. 2", pelaaja);
3698        }
3699
3700        if (aseenTag == "Kranaatinheitin")
3701        {
3702            LuoAsePelaajalle("Kranaatinheitin Lv. 2", pelaaja);
3703        }
3704        if (aseenTag == "Raketinheitin")
3705        {
3706            LuoAsePelaajalle("Raketinheitin Lv. 2", pelaaja);
3707        }
3708
3709        if (aseenTag == "Pistooli")
3710        {
3711            LuoAsePelaajalle("Pistooli Lv. 2", pelaaja);
3712        }
3713
3714        if (aseenTag == "Kivääri Lv. 2")
3715        {
3716            LuoAsePelaajalle("Kivääri Lv. 3", pelaaja);
3717        }
3718        if (aseenTag == "Magnum Lv. 2")
3719        {
3720            LuoAsePelaajalle("Magnum Lv. 3", pelaaja);
3721        }
3722
3723        if (aseenTag == "Haulikko Lv. 2")
3724        {
3725            LuoAsePelaajalle("Haulikko Lv. 3", pelaaja);
3726        }
3727
3728        if (aseenTag == "Sniper Lv. 2")
3729        {
3730            LuoAsePelaajalle("Sniper Lv. 3", pelaaja);
3731        }
3732
3733        if (aseenTag == "Kranaatinheitin Lv. 2")
3734        {
3735            LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja);
3736        }
3737        if (aseenTag == "Raketinheitin Lv. 2")
3738        {
3739            LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja);
3740        }
3741
3742        if (aseenTag == "Pistooli Lv. 2")
3743        {
3744            LuoAsePelaajalle("Pistooli Lv. 3", pelaaja);
3745        }
3746
3747        if (aseenTag == "Kivääri Lv. 3")
3748        {
3749            LuoAsePelaajalle("Kivääri Lv. 4", pelaaja);
3750            Timer.SingleShot(5.0, delegate
3751            {
3752                if (pelaaja.IsDestroyed == true)
3753                {
3754                    return;
3755                }
3756                string aseTag = pelaaja.Weapon.Tag.ToString();
3757                if (aseTag == "Kivääri Lv. 4")
3758                {
3759                    saaAmpua = false;
3760                    Timer.SingleShot(0.1, delegate
3761                    {
3762                        saaAmpua = true;
3763                    }); LuoAsePelaajalle("Kivääri Lv. 3", pelaaja); naytaTiedot();
3764                }
3765                else
3766                {
3767                    return;
3768                }
3769            });
3770        }
3771        if (aseenTag == "Magnum Lv. 3")
3772        {
3773            LuoAsePelaajalle("Magnum Lv. 4", pelaaja);
3774            Timer.SingleShot(5.0, delegate
3775            {
3776                if (pelaaja.IsDestroyed == true)
3777                {
3778                    return;
3779                }
3780                string aseTag = pelaaja.Weapon.Tag.ToString();
3781                if (aseTag == "Magnum Lv. 4")
3782                {
3783
3784                    saaAmpua = false;
3785                    Timer.SingleShot(0.1, delegate
3786                    {
3787                        saaAmpua = true;
3788                    }); LuoAsePelaajalle("Magnum Lv. 3", pelaaja); naytaTiedot();
3789                }
3790                else
3791                {
3792                    return;
3793                }
3794            });
3795        }
3796
3797        if (aseenTag == "Haulikko Lv. 3")
3798        {
3799            LuoAsePelaajalle("Haulikko Lv. 4", pelaaja);
3800            Timer.SingleShot(5.0, delegate
3801            {
3802                if (pelaaja.IsDestroyed == true)
3803                {
3804                    return;
3805                }
3806                string aseTag = pelaaja.Weapon.Tag.ToString();
3807                if (aseTag == "Haulikko Lv. 4")
3808                {
3809                    saaAmpua = false;
3810                    Timer.SingleShot(0.1, delegate
3811                    {
3812                        saaAmpua = true;
3813                    }); LuoAsePelaajalle("Haulikko Lv. 3", pelaaja); naytaTiedot();
3814                }
3815                else
3816                {
3817                    return;
3818                }
3819            });
3820        }
3821
3822        if (aseenTag == "Sniper Lv. 3")
3823        {
3824            LuoAsePelaajalle("Sniper Lv. 4", pelaaja);
3825            Timer.SingleShot(5.0, delegate
3826            {
3827                if (pelaaja.IsDestroyed == true)
3828                {
3829                    return;
3830                }
3831                string aseTag = pelaaja.Weapon.Tag.ToString();
3832                if (aseTag == "Sniper Lv. 4")
3833                {
3834                    saaAmpua = false;
3835                    Timer.SingleShot(0.1, delegate
3836                    {
3837                        saaAmpua = true;
3838                    }); LuoAsePelaajalle("Sniper Lv. 3", pelaaja); naytaTiedot();
3839                }
3840                else
3841                {
3842                    return;
3843                }
3844            });
3845        }
3846
3847        if (aseenTag == "Kranaatinheitin Lv. 3")
3848        {
3849            LuoAsePelaajalle("Kranaatinheitin Lv. 4", pelaaja);
3850            Timer.SingleShot(5.0, delegate
3851            {
3852                if (pelaaja.IsDestroyed == true)
3853                {
3854                    return;
3855                }
3856                string aseTag = pelaaja.Weapon.Tag.ToString();
3857                if (aseTag == "Kranaatinheitin Lv. 4")
3858                {
3859                    saaAmpua = false;
3860                    Timer.SingleShot(0.1, delegate
3861                    {
3862                        saaAmpua = true;
3863                    }); LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja); naytaTiedot();
3864                }
3865                else
3866                {
3867                    return;
3868                }
3869            });
3870        }
3871        if (aseenTag == "Raketinheitin Lv. 3")
3872        {
3873            LuoAsePelaajalle("Raketinheitin Lv. 4", pelaaja);
3874            Timer.SingleShot(5.0, delegate
3875            {
3876                if (pelaaja.IsDestroyed == true)
3877                {
3878                    return;
3879                }
3880                string aseTag = pelaaja.Weapon.Tag.ToString();
3881                if (aseTag == "Raketinheitin Lv. 4")
3882                {
3883                    saaAmpua = false;
3884                    Timer.SingleShot(0.1, delegate
3885                    {
3886                        saaAmpua = true;
3887                    }); LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja); naytaTiedot();
3888                }
3889                else
3890                {
3891                    return;
3892                }
3893            });
3894        }
3895
3896        if (aseenTag == "Pistooli Lv. 3")
3897        {
3898            LuoAsePelaajalle("Pistooli Lv. 4", pelaaja);
3899            Timer.SingleShot(5.0, delegate
3900            {
3901                if (pelaaja.IsDestroyed == true)
3902                {
3903                    return;
3904                }
3905                string aseTag = pelaaja.Weapon.Tag.ToString();
3906                if (aseTag == "Pistooli Lv. 4")
3907                {
3908                    saaAmpua = false;
3909                    Timer.SingleShot(0.1, delegate
3910                    {
3911                        saaAmpua = true;
3912                    }); LuoAsePelaajalle("Pistooli Lv. 3", pelaaja); naytaTiedot();
3913                }
3914                else
3915                {
3916                    return;
3917                }
3918            });
3919        }
3920
3921        if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4" || aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. X")
3922        {
3923            Explosion rajahdys = new Explosion(100);
3924            if (pelaaja == pelaaja1)
3925            {
3926                rajahdys.Position = pelaaja2.Position;
3927                if (pelaaja2.HPLaskuri.Value <= 1)
3928                {
3929                    return;
3930                }
3931                if (pelaaja2.HPLaskuri.Value <= 25 && pelaaja2.DamageResistance == false && pelaaja2.DamageVulnerability == false || pelaaja2.HPLaskuri.Value <= 12 && pelaaja2.DamageResistance == true || pelaaja2.HPLaskuri.Value <= 37 && pelaaja2.DamageVulnerability == true && pelaaja2.DamageResistance == false)
3932                {
3933                    pelaaja2.HPLaskuri.Value = 1;
3934                }
3935                else
3936                {
3937                    if (pelaaja2.DamageResistance)
3938                    {
3939                        pelaaja2.HPLaskuri.Value -= 12;
3940                    }
3941                    else if (pelaaja2.DamageVulnerability)
3942                    {
3943                        pelaaja2.HPLaskuri.Value -= 37;
3944                    }
3945                    else
3946                    {
3947                        pelaaja2.HPLaskuri.Value -= 25;
3948                    }
3949                }
3950            }
3951            if (pelaaja == pelaaja2)
3952            {
3953                rajahdys.Position = pelaaja1.Position;
3954                if (pelaaja1.HPLaskuri.Value <= 1)
3955                {
3956                    return;
3957                }
3958                if (pelaaja1.HPLaskuri.Value <= 25 && pelaaja1.DamageResistance == false && pelaaja1.DamageVulnerability == false || pelaaja1.HPLaskuri.Value <= 12 && pelaaja1.DamageResistance == true || pelaaja1.HPLaskuri.Value <= 37 && pelaaja1.DamageVulnerability == true && pelaaja1.DamageResistance == false)
3959                {
3960                    pelaaja1.HPLaskuri.Value = 1;
3961                }
3962                else
3963                {
3964                    if (pelaaja1.DamageResistance)
3965                    {
3966                        pelaaja1.HPLaskuri.Value -= 12;
3967                    }
3968                    else if (pelaaja1.DamageVulnerability)
3969                    {
3970                        pelaaja1.HPLaskuri.Value -= 37;
3971                    }
3972                    else
3973                    {
3974                        pelaaja1.HPLaskuri.Value -= 25;
3975                    }
3976                }
3977            }
3978            Add(rajahdys);
3979            rajahdys.Force = 0;
3980            rajahdys.Speed = 1000;
3981        }
3982
3983        // Yksinpeli aseet
3984        if (aseenTag == "Valopistooli")
3985        {
3986            LuoAsePelaajalle("Valopistooli Lv. 2", pelaaja);
3987        }
3988
3989        if (aseenTag == "Valopistooli Lv. 2")
3990        {
3991            LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja);
3992        }
3993
3994        if (aseenTag == "Valopistooli Lv. 3")
3995        {
3996            LuoAsePelaajalle("Valopistooli Lv. 4", pelaaja);
3997            Timer.SingleShot(5.0, delegate
3998            {
3999                if (pelaaja.IsDestroyed == true)
4000                {
4001                    return;
4002                }
4003                string aseTag = pelaaja.Weapon.Tag.ToString();
4004                if (aseTag == "Valopistooli Lv. 4")
4005                {
4006                    saaAmpua = false;
4007                    Timer.SingleShot(0.1, delegate
4008                    {
4009                        saaAmpua = true;
4010                    }); LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja); naytaTiedot();
4011                }
4012                else
4013                {
4014                    return;
4015                }
4016            });
4017        }
4018
4019        if (aseenTag == "Miekka")
4020        {
4021            LuoAsePelaajalle("Miekka Lv. 2", pelaaja);
4022        }
4023
4024        if (aseenTag == "Miekka Lv. 2")
4025        {
4026            LuoAsePelaajalle("Miekka Lv. 3", pelaaja);
4027        }
4028
4029        if (aseenTag == "Miekka Lv. 3")
4030        {
4031            LuoAsePelaajalle("Miekka Lv. 4", pelaaja);
4032            Timer.SingleShot(5.0, delegate
4033            {
4034                if (pelaaja.IsDestroyed == true)
4035                {
4036                    return;
4037                }
4038                string aseTag = pelaaja.Weapon.Tag.ToString();
4039                if (aseTag == "Miekka Lv. 4")
4040                {
4041                    saaAmpua = false;
4042                    Timer.SingleShot(0.1, delegate
4043                    {
4044                        saaAmpua = true;
4045                    }); LuoAsePelaajalle("Miekka Lv. 3", pelaaja); naytaTiedot();
4046                }
4047                else
4048                {
4049                    return;
4050                }
4051            });
4052        }
4053
4054        // Muunnetut aseet
4055
4056        if (aseenTag == "Sarjatulikivääri")
4057        {
4058            LuoAsePelaajalle("Sarjatulikivääri Lv. X", pelaaja);
4059            Timer.SingleShot(5.0, delegate
4060            {
4061                if (pelaaja.IsDestroyed == true)
4062                {
4063                    return;
4064                }
4065                string aseTag = pelaaja.Weapon.Tag.ToString();
4066                if (aseTag == "Sarjatulikivääri Lv. X")
4067                {
4068                    saaAmpua = false;
4069                    Timer.SingleShot(0.1, delegate
4070                    {
4071                        saaAmpua = true;
4072                    }); LuoAsePelaajalle("Sarjatulikivääri", pelaaja); naytaTiedot();
4073                }
4074                else
4075                {
4076                    return;
4077                }
4078            });
4079        }
4080
4081        if (aseenTag == "Revolveri")
4082        {
4083            LuoAsePelaajalle("Revolveri Lv. X", pelaaja);
4084            Timer.SingleShot(5.0, delegate
4085            {
4086                if (pelaaja.IsDestroyed == true)
4087                {
4088                    return;
4089                }
4090                string aseTag = pelaaja.Weapon.Tag.ToString();
4091                if (aseTag == "Revolveri Lv. X")
4092                {
4093                    saaAmpua = false;
4094                    Timer.SingleShot(0.1, delegate
4095                    {
4096                        saaAmpua = true;
4097                    }); LuoAsePelaajalle("Revolveri", pelaaja); naytaTiedot();
4098                }
4099                else
4100                {
4101                    return;
4102                }
4103            });
4104        }
4105
4106        if (aseenTag == "Katkaistu haulikko")
4107        {
4108            LuoAsePelaajalle("Katkaistu haulikko Lv. X", pelaaja);
4109            Timer.SingleShot(5.0, delegate
4110            {
4111                if (pelaaja.IsDestroyed == true)
4112                {
4113                    return;
4114                }
4115                string aseTag = pelaaja.Weapon.Tag.ToString();
4116                if (aseTag == "Katkaistu haulikko Lv. X")
4117                {
4118                    saaAmpua = false;
4119                    Timer.SingleShot(0.1, delegate
4120                    {
4121                        saaAmpua = true;
4122                    }); LuoAsePelaajalle("Katkaistu haulikko", pelaaja); naytaTiedot();
4123                }
4124                else
4125                {
4126                    return;
4127                }
4128            });
4129        }
4130
4131        if (aseenTag == "Panssari-Sniper")
4132        {
4133            LuoAsePelaajalle("Panssari-Sniper Lv. X", pelaaja);
4134            Timer.SingleShot(5.0, delegate
4135            {
4136                if (pelaaja.IsDestroyed == true)
4137                {
4138                    return;
4139                }
4140                string aseTag = pelaaja.Weapon.Tag.ToString();
4141                if (aseTag == "Panssari-Sniper Lv. X")
4142                {
4143                    saaAmpua = false;
4144                    Timer.SingleShot(0.1, delegate
4145                    {
4146                        saaAmpua = true;
4147                    }); LuoAsePelaajalle("Panssari-Sniper", pelaaja); naytaTiedot();
4148                }
4149                else
4150                {
4151                    return;
4152                }
4153            });
4154        }
4155
4156        if (aseenTag == "Sirpalekranaatinheitin")
4157        {
4158            LuoAsePelaajalle("Sirpalekranaatinheitin Lv. X", pelaaja);
4159            Timer.SingleShot(5.0, delegate
4160            {
4161                if (pelaaja.IsDestroyed == true)
4162                {
4163                    return;
4164                }
4165                string aseTag = pelaaja.Weapon.Tag.ToString();
4166                if (aseTag == "Sirpalekranaatinheitin Lv. X")
4167                {
4168                    saaAmpua = false;
4169                    Timer.SingleShot(0.1, delegate
4170                    {
4171                        saaAmpua = true;
4172                    }); LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja); naytaTiedot();
4173                }
4174                else
4175                {
4176                    return;
4177                }
4178            });
4179        }
4180
4181        if (aseenTag == "Sinko")
4182        {
4183            LuoAsePelaajalle("Sinko Lv. X", pelaaja);
4184            Timer.SingleShot(5.0, delegate
4185            {
4186                if (pelaaja.IsDestroyed == true)
4187                {
4188                    return;
4189                }
4190                string aseTag = pelaaja.Weapon.Tag.ToString();
4191                if (aseTag == "Sinko Lv. X")
4192                {
4193                    saaAmpua = false;
4194                    Timer.SingleShot(0.1, delegate
4195                    {
4196                        saaAmpua = true;
4197                    }); LuoAsePelaajalle("Sinko", pelaaja); naytaTiedot();
4198                }
4199                else
4200                {
4201                    return;
4202                }
4203            });
4204        }
4205
4206        if (aseenTag == "Konepistooli")
4207        {
4208            LuoAsePelaajalle("Konepistooli Lv. X", pelaaja);
4209            Timer.SingleShot(5.0, delegate
4210            {
4211                if (pelaaja.IsDestroyed == true)
4212                {
4213                    return;
4214                }
4215                string aseTag = pelaaja.Weapon.Tag.ToString();
4216                if (aseTag == "Konepistooli Lv. X")
4217                {
4218                    saaAmpua = false;
4219                    Timer.SingleShot(0.1, delegate
4220                    {
4221                        saaAmpua = true;
4222                    }); LuoAsePelaajalle("Konepistooli", pelaaja); naytaTiedot();
4223                }
4224                else
4225                {
4226                    return;
4227                }
4228            });
4229        }
4230
4231        if (aseenTag == "Räjähtävä valopistooli")
4232        {
4233            LuoAsePelaajalle("Räjähtävä valopistooli Lv. X", pelaaja);
4234            Timer.SingleShot(5.0, delegate
4235            {
4236                if (pelaaja.IsDestroyed == true)
4237                {
4238                    return;
4239                }
4240                string aseTag = pelaaja.Weapon.Tag.ToString();
4241                if (aseTag == "Räjähtävä valopistooli Lv. X")
4242                {
4243                    saaAmpua = false;
4244                    Timer.SingleShot(0.1, delegate
4245                    {
4246                        saaAmpua = true;
4247                    }); LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja); naytaTiedot();
4248                }
4249                else
4250                {
4251                    return;
4252                }
4253            });
4254        }
4255    }
4256
4257    #endregion
4258
4259
4260    #region Nappaimet
4261    // Lisää peliin kaikki näppäimet
4262
4263    void lisaaYksinNappaimet()
4264    {
4265        ClearControls();
4266        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-LIIKEVOIMA, 0));
4267        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, new Vector(LIIKEVOIMA, 0));
4268        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, HYPPYVOIMA);
4269        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Ammu", pelaaja1);
4270        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, LukitseSuunta, "Lukitse suunta", pelaaja1);
4271        Keyboard.Listen(Key.LeftShift, ButtonState.Released, PoistaLukitus, "Poista lukitus", pelaaja1);
4272        Keyboard.Listen(Key.E, ButtonState.Pressed, vaihdaAse, "Vaihda ase", pelaaja1);
4273
4274        Keyboard.Listen(Key.Escape, ButtonState.Pressed, YksinPeliPauselle, "Pysäyttää pelin", pelaaja1);
4275
4276        lisaaYksinGamePadNappaimet(ControllerOne, pelaaja1);
4277
4278        //Admin
4279        Keyboard.Listen(Key.F1, ButtonState.Pressed, ConsoleSingle, null);
4280    }
4281
4282    void lisaaNappaimet()
4283    {
4284        ClearControls();
4285        // Pelaajan näppäimet
4286
4287        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, new Vector(-LIIKEVOIMA, 0));
4288        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, new Vector(LIIKEVOIMA, 0));
4289        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, HYPPYVOIMA);
4290        Keyboard.Listen(Key.Space, ButtonState.Down, Ammu, "Ammu", pelaaja1);
4291        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, LukitseSuunta, "Lukitse suunta", pelaaja1);
4292        Keyboard.Listen(Key.LeftShift, ButtonState.Released, PoistaLukitus, "Poista lukitus", pelaaja1);
4293
4294        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, new Vector(-LIIKEVOIMA, 0));
4295        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, new Vector(LIIKEVOIMA, 0));
4296        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, HYPPYVOIMA);
4297        Keyboard.Listen(Key.RightControl, ButtonState.Down, Ammu, "Ammu", pelaaja2);
4298        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, LukitseSuunta, "Lukitse suunta", pelaaja2);
4299        Keyboard.Listen(Key.RightShift, ButtonState.Released, PoistaLukitus, "Poista lukitus", pelaaja2);
4300       
4301        Keyboard.Listen(Key.Escape, ButtonState.Pressed, PeliPauselle, "Pysäyttää pelin", pelaaja1);
4302
4303        //Admin
4304        Keyboard.Listen(Key.F1, ButtonState.Pressed, ConsoleMulti, null);
4305
4306        lisaaGamePadNappaimet(ControllerOne, pelaaja1);
4307        lisaaGamePadNappaimet(ControllerTwo, pelaaja2);
4308    }
4309   
4310    void LukitseSuunta(Pelaaja pelaaja)
4311    {
4312        pelaaja.TurnsWhenWalking = false;
4313    }
4314
4315    void PoistaLukitus(Pelaaja pelaaja)
4316    {
4317        pelaaja.TurnsWhenWalking = true;
4318    }
4319
4320    void lisaaYksinGamePadNappaimet(GamePad pelaajaNro, Pelaaja pelaaja)
4321    {
4322        //Yleiset näppäimet
4323
4324        LiikutaPelaajaa(pelaajaNro, pelaaja);
4325        pelaajaNro.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, new Vector(-LIIKEVOIMA, 0));
4326        pelaajaNro.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja, new Vector(LIIKEVOIMA, 0));
4327        pelaajaNro.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja, HYPPYVOIMA);
4328        pelaajaNro.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "Ammu", pelaaja);
4329        pelaajaNro.Listen(Button.LeftTrigger, ButtonState.Pressed, LukitseSuunta, "Lukitse suunta", pelaaja);
4330        pelaajaNro.Listen(Button.LeftTrigger, ButtonState.Released, PoistaLukitus, "Poista lukitus", pelaaja);
4331        pelaajaNro.Listen(Button.X, ButtonState.Pressed, vaihdaAse, "Vaihda ase", pelaaja);
4332
4333        pelaajaNro.Listen(Button.Start, ButtonState.Pressed, YksinPeliPauselle, "Pysäyttää pelin", pelaaja);
4334    }
4335
4336    void lisaaGamePadNappaimet(GamePad pelaajaNro, Pelaaja pelaaja)
4337    {
4338        //Yleiset näppäimet
4339
4340        LiikutaPelaajaa(pelaajaNro, pelaaja);
4341        pelaajaNro.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja, new Vector(-LIIKEVOIMA, 0));
4342        pelaajaNro.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja, new Vector(LIIKEVOIMA, 0));
4343        pelaajaNro.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja, HYPPYVOIMA);
4344        pelaajaNro.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "Ammu", pelaaja);
4345        pelaajaNro.Listen(Button.LeftTrigger, ButtonState.Pressed, LukitseSuunta, "Lukitse suunta", pelaaja);
4346        pelaajaNro.Listen(Button.LeftTrigger, ButtonState.Released, PoistaLukitus, "Poista lukitus", pelaaja);
4347
4348        pelaajaNro.Listen(Button.Start, ButtonState.Pressed, PeliPauselle, "Pysäyttää pelin", pelaaja);
4349    }
4350
4351    void LiikutaPelaajaa(GamePad pelaajaNro, PlatformCharacter pelaaja)
4352    {
4353        pelaajaNro.ListenAnalog(AnalogControl.LeftStick, 0.1, liikutaAnalog, "Pelaaja liikkuu vasemmalle", pelaaja, LIIKEVOIMA);
4354    }
4355
4356    void YksinPeliPauselle(PlatformCharacter pelaaja)
4357    {
4358        Pause();
4359        MultiSelectWindow PauseValikko = new MultiSelectWindow("Kynäri",
4360        "Jatka peliä", "Aloita taso alusta", "Päävalikko", "Lopeta");
4361        Add(PauseValikko);
4362        PauseValikko.AddItemHandler(0, Pause);
4363        PauseValikko.AddItemHandler(1, delegate { uusiYksinPeli(); Pause(); });
4364        PauseValikko.AddItemHandler(2, delegate { LuoAlkuValikko(); Pause(); });
4365        PauseValikko.AddItemHandler(3, Exit);
4366        PauseValikko.DefaultCancel = 0;
4367        PauseValikko.Color = Color.Gray;
4368
4369        ControllerOne.Listen(Button.Start, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4370        ControllerOne.Listen(Button.B, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4371    }
4372
4373    void PeliPauselle(PlatformCharacter pelaaja)
4374    {
4375        Pause();
4376        MultiSelectWindow PauseValikko = new MultiSelectWindow("Kynäri",
4377        "Jatka peliä", "Aloita peli alusta", "Päävalikko", "Lopeta");
4378        Add(PauseValikko);
4379        PauseValikko.AddItemHandler(0, Pause);
4380        PauseValikko.AddItemHandler(1, delegate { uusiPeli(); Pause(); });
4381        PauseValikko.AddItemHandler(2, delegate { LuoAlkuValikko(); Pause(); });
4382        PauseValikko.AddItemHandler(3, Exit);
4383        PauseValikko.DefaultCancel = 0;
4384        PauseValikko.Color = Color.Gray;
4385
4386        //if (pelaaja == pelaaja1)
4387        //{
4388        //ControllerOne.Listen(Button.DPadUp, ButtonState.Pressed, delegate { PauseValikko.SelectedIndex = (PauseValikko.Buttons.Length + PauseValikko.SelectedIndex - 1) % PauseValikko.Buttons.Length; }, null).InContext(PauseValikko);
4389        //ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, delegate { PauseValikko.SelectedIndex = (PauseValikko.SelectedIndex + 1) % PauseValikko.Buttons.Length; }, null).InContext(PauseValikko);
4390        ControllerOne.Listen(Button.Start, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4391        ControllerOne.Listen(Button.B, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4392        //ControllerOne.Listen(Button.A, ButtonState.Pressed, delegate { PauseValikko.SelectedButton.Click(); }, null).InContext(PauseValikko);
4393        //}
4394
4395        //if (pelaaja == pelaaja2)
4396        //{
4397        ControllerTwo.Listen(Button.DPadUp, ButtonState.Pressed, delegate { PauseValikko.SelectedIndex = (PauseValikko.Buttons.Length + PauseValikko.SelectedIndex - 1) % PauseValikko.Buttons.Length; }, null).InContext(PauseValikko);
4398        ControllerTwo.Listen(Button.DPadDown, ButtonState.Pressed, delegate { PauseValikko.SelectedIndex = (PauseValikko.SelectedIndex + 1) % PauseValikko.Buttons.Length; }, null).InContext(PauseValikko);
4399        ControllerTwo.Listen(Button.Start, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4400        ControllerTwo.Listen(Button.B, ButtonState.Pressed, delegate { PauseValikko.Close(); Pause(); }, null).InContext(PauseValikko);
4401        ControllerTwo.Listen(Button.A, ButtonState.Pressed, delegate { PauseValikko.SelectedButton.Click(); }, null).InContext(PauseValikko);
4402        //}
4403    }
4404
4405    void ConsoleSingle()
4406    {
4407        InputWindow console = new InputWindow("Console");
4408        console.TextEntered += ProcessInput;
4409        Add(console);
4410    }
4411
4412    void ConsoleMulti()
4413    {
4414        InputWindow console = new InputWindow("Console");
4415        console.TextEntered += ProcessInputMulti;
4416        Add(console);
4417    }
4418
4419    void ProcessInput(InputWindow ikkuna)
4420    {
4421        string vastaus = ikkuna.InputBox.Text;
4422        // tehdään jotain vastauksella
4423        if (vastaus.Length >= 6 && vastaus.Substring(0, 5) == "give ")
4424        {
4425            // aseet
4426            if (vastaus.Substring(5) == "pistol")
4427            {
4428                LuoAsePelaajalle("Pistooli", pelaaja1);
4429            }
4430            if (vastaus.Substring(5) == "pistol2")
4431            {
4432                LuoAsePelaajalle("Pistooli Lv. 2", pelaaja1);
4433            }
4434            if (vastaus.Substring(5) == "pistol3")
4435            {
4436                LuoAsePelaajalle("Pistooli Lv. 3", pelaaja1);
4437            }
4438            if (vastaus.Substring(5) == "pistol4")
4439            {
4440                LuoAsePelaajalle("Pistooli Lv. 4", pelaaja1);
4441            }
4442
4443            if (vastaus.Substring(5) == "assaultrifle")
4444            {
4445                LuoAsePelaajalle("Kivääri", pelaaja1);
4446            }
4447            if (vastaus.Substring(5) == "assaultrifle2")
4448            {
4449                LuoAsePelaajalle("Kivääri Lv. 2", pelaaja1);
4450            }
4451            if (vastaus.Substring(5) == "assaultrifle3")
4452            {
4453                LuoAsePelaajalle("Kivääri Lv. 3", pelaaja1);
4454            }
4455            if (vastaus.Substring(5) == "assaultrifle4")
4456            {
4457                LuoAsePelaajalle("Kivääri Lv. 4", pelaaja1);
4458            }
4459
4460            if (vastaus.Substring(5) == "shotgun")
4461            {
4462                LuoAsePelaajalle("Haulikko", pelaaja1);
4463            }
4464            if (vastaus.Substring(5) == "shotgun2")
4465            {
4466                LuoAsePelaajalle("Haulikko Lv. 2", pelaaja1);
4467            }
4468            if (vastaus.Substring(5) == "shotgun3")
4469            {
4470                LuoAsePelaajalle("Haulikko Lv. 3", pelaaja1);
4471            }
4472            if (vastaus.Substring(5) == "shotgun4")
4473            {
4474                LuoAsePelaajalle("Haulikko Lv. 4", pelaaja1);
4475            }
4476
4477            if (vastaus.Substring(5) == "magnum")
4478            {
4479                LuoAsePelaajalle("Magnum", pelaaja1);
4480            }
4481            if (vastaus.Substring(5) == "magnum2")
4482            {
4483                LuoAsePelaajalle("Magnum Lv. 2", pelaaja1);
4484            }
4485            if (vastaus.Substring(5) == "magnum3")
4486            {
4487                LuoAsePelaajalle("Magnum Lv. 3", pelaaja1);
4488            }
4489            if (vastaus.Substring(5) == "magnum4")
4490            {
4491                LuoAsePelaajalle("Magnum Lv. 4", pelaaja1);
4492            }
4493
4494            if (vastaus.Substring(5) == "sniper")
4495            {
4496                LuoAsePelaajalle("Sniper", pelaaja1);
4497            }
4498            if (vastaus.Substring(5) == "sniper2")
4499            {
4500                LuoAsePelaajalle("Sniper Lv. 2", pelaaja1);
4501            }
4502            if (vastaus.Substring(5) == "sniper3")
4503            {
4504                LuoAsePelaajalle("Sniper Lv. 3", pelaaja1);
4505            }
4506            if (vastaus.Substring(5) == "sniper4")
4507            {
4508                LuoAsePelaajalle("Sniper Lv. 4", pelaaja1);
4509            }
4510
4511            if (vastaus.Substring(5) == "rocketlauncher")
4512            {
4513                LuoAsePelaajalle("Raketinheitin", pelaaja1);
4514            }
4515            if (vastaus.Substring(5) == "rocketlauncher2")
4516            {
4517                LuoAsePelaajalle("Raketinheitin Lv. 2", pelaaja1);
4518            }
4519            if (vastaus.Substring(5) == "rocketlauncher3")
4520            {
4521                LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja1);
4522            }
4523            if (vastaus.Substring(5) == "rocketlauncher4")
4524            {
4525                LuoAsePelaajalle("Raketinheitin Lv. 4", pelaaja1);
4526            }
4527
4528            if (vastaus.Substring(5) == "grenadelauncher")
4529            {
4530                LuoAsePelaajalle("Kranaatinheitin", pelaaja1);
4531            }
4532            if (vastaus.Substring(5) == "grenadelauncher2")
4533            {
4534                LuoAsePelaajalle("Kranaatinheitin Lv. 2", pelaaja1);
4535            }
4536            if (vastaus.Substring(5) == "grenadelauncher3")
4537            {
4538                LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja1);
4539            }
4540            if (vastaus.Substring(5) == "grenadelauncher4")
4541            {
4542                LuoAsePelaajalle("Kranaatinheitin Lv. 4", pelaaja1);
4543            }
4544
4545            if (vastaus.Substring(5) == "flaregun")
4546            {
4547                LuoAsePelaajalle("Valopistooli", pelaaja1);
4548            }
4549            if (vastaus.Substring(5) == "flaregun2")
4550            {
4551                LuoAsePelaajalle("Valopistooli Lv. 2", pelaaja1);
4552            }
4553            if (vastaus.Substring(5) == "flaregun3")
4554            {
4555                LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja1);
4556            }
4557            if (vastaus.Substring(5) == "flaregun4")
4558            {
4559                LuoAsePelaajalle("Valopistooli Lv. 4", pelaaja1);
4560            }
4561
4562            if (vastaus.Substring(5) == "sword")
4563            {
4564                LuoAsePelaajalle("Miekka", pelaaja1);
4565            }
4566            if (vastaus.Substring(5) == "sword2")
4567            {
4568                LuoAsePelaajalle("Miekka Lv. 2", pelaaja1);
4569            }
4570            if (vastaus.Substring(5) == "sword3")
4571            {
4572                LuoAsePelaajalle("Miekka Lv. 3", pelaaja1);
4573            }
4574            if (vastaus.Substring(5) == "sword4")
4575            {
4576                LuoAsePelaajalle("Miekka Lv. 4", pelaaja1);
4577            }
4578
4579            // Muunnetut aseet
4580            if (vastaus.Substring(5) == "burstrifle")
4581            {
4582                LuoAsePelaajalle("Sarjatulikivääri", pelaaja1);
4583            }
4584
4585            if (vastaus.Substring(5) == "revolver")
4586            {
4587                LuoAsePelaajalle("Revolveri", pelaaja1);
4588            }
4589
4590            if (vastaus.Substring(5) == "sawedoff")
4591            {
4592                LuoAsePelaajalle("Katkaistu haulikko", pelaaja1);
4593            }
4594
4595            if (vastaus.Substring(5) == "apsniper")
4596            {
4597                LuoAsePelaajalle("Panssari-Sniper", pelaaja1);
4598            }
4599
4600            if (vastaus.Substring(5) == "clustergrenadelauncher")
4601            {
4602                LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja1);
4603            }
4604
4605            if (vastaus.Substring(5) == "rpg")
4606            {
4607                LuoAsePelaajalle("Sinko", pelaaja1);
4608            }
4609
4610            if (vastaus.Substring(5) == "smg")
4611            {
4612                LuoAsePelaajalle("Konepistooli", pelaaja1);
4613            }
4614
4615            if (vastaus.Substring(5) == "explosiveflaregun")
4616            {
4617                LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja1);
4618            }
4619
4620            if (vastaus.Substring(5) == "burstriflex")
4621            {
4622                LuoAsePelaajalle("Sarjatulikivääri Lv. X", pelaaja1);
4623            }
4624
4625            if (vastaus.Substring(5) == "revolverx")
4626            {
4627                LuoAsePelaajalle("Revolveri Lv. X", pelaaja1);
4628            }
4629
4630            if (vastaus.Substring(5) == "sawedoffx")
4631            {
4632                LuoAsePelaajalle("Katkaistu haulikko Lv. X", pelaaja1);
4633            }
4634
4635            if (vastaus.Substring(5) == "apsniperx")
4636            {
4637                LuoAsePelaajalle("Panssari-Sniper Lv. X", pelaaja1);
4638            }
4639
4640            if (vastaus.Substring(5) == "clustergrenadelauncherx")
4641            {
4642                LuoAsePelaajalle("Sirpalekranaatinheitin Lv. X", pelaaja1);
4643            }
4644
4645            if (vastaus.Substring(5) == "rpgx")
4646            {
4647                LuoAsePelaajalle("Sinko Lv. X", pelaaja1);
4648            }
4649
4650            if (vastaus.Substring(5) == "smgx")
4651            {
4652                LuoAsePelaajalle("Konepistooli Lv. X", pelaaja1);
4653            }
4654
4655            if (vastaus.Substring(5) == "explosiveflaregunx")
4656            {
4657                LuoAsePelaajalle("Räjähtävä valopistooli Lv. X", pelaaja1);
4658            }
4659
4660            // Kerättävät
4661            if (vastaus.Substring(5) == "powerup")
4662            {
4663                if (pelaaja1.Weapon == null || pelaaja1.Weapon.Tag == null) { return; }
4664                else { PaivitaAse(pelaaja1.Weapon.Tag.ToString(), pelaaja1); }
4665            }
4666
4667            if (vastaus.Substring(5) == "mod")
4668            {
4669                if (pelaaja1.Weapon == null || pelaaja1.Weapon.Tag == null) { return; }
4670                else { MuunnaAse(pelaaja1.Weapon.Tag.ToString(), pelaaja1); }
4671            }
4672
4673            if (vastaus.Substring(5) == "health")
4674            {
4675                BoostiHP1(pelaaja1);
4676            }
4677
4678            if (vastaus.Substring(5) == "hpboost")
4679            {
4680                IncreaseHP(pelaaja1);
4681            }
4682
4683        }
4684
4685        if (vastaus.Length >= 7 && vastaus.Substring(0, 6) == "level ")
4686        {
4687            if (vastaus.Substring(6) == "0")
4688            {
4689                LuoTaso0();
4690            }
4691            if (vastaus.Substring(6) == "1")
4692            {
4693                LuoTaso1();
4694            }
4695            if (vastaus.Substring(6) == "2")
4696            {
4697                LuoTaso2();
4698            }
4699        }
4700
4701        if (vastaus == "nextlevel")
4702        {
4703            SeuraavaTaso(pelaaja1, null);
4704        }
4705        if (vastaus == "restartlevel")
4706        {
4707            uusiYksinPeli();
4708        }
4709
4710        if (vastaus == "kill")
4711        {
4712            pelaaja1.HPLaskuri.Value = pelaaja1.HPLaskuri.MinValue;
4713        }
4714
4715        if (vastaus == "heal")
4716        {
4717            pelaaja1.HPLaskuri.Value = pelaaja1.HPLaskuri.MaxValue;
4718        }
4719    }
4720
4721    void ProcessInputMulti(InputWindow ikkuna)
4722    {
4723        string vastaus = ikkuna.InputBox.Text;
4724        // tehdään jotain vastauksella
4725        if (vastaus.Length >= 6 && vastaus.Substring(0, 5) == "give ")
4726        {
4727            if (vastaus.Length >= 9 && vastaus.Substring(5, 3) == "p1 ")
4728            {
4729                // aseet
4730                if (vastaus.Substring(8) == "pistol")
4731                {
4732                    LuoAsePelaajalle("Pistooli", pelaaja1);
4733                }
4734                if (vastaus.Substring(8) == "pistol2")
4735                {
4736                    LuoAsePelaajalle("Pistooli Lv. 2", pelaaja1);
4737                }
4738                if (vastaus.Substring(8) == "pistol3")
4739                {
4740                    LuoAsePelaajalle("Pistooli Lv. 3", pelaaja1);
4741                }
4742                if (vastaus.Substring(8) == "pistol4")
4743                {
4744                    LuoAsePelaajalle("Pistooli Lv. 4", pelaaja1);
4745                }
4746
4747                if (vastaus.Substring(8) == "assaultrifle")
4748                {
4749                    LuoAsePelaajalle("Kivääri", pelaaja1);
4750                }
4751                if (vastaus.Substring(8) == "assaultrifle2")
4752                {
4753                    LuoAsePelaajalle("Kivääri Lv. 2", pelaaja1);
4754                }
4755                if (vastaus.Substring(8) == "assaultrifle3")
4756                {
4757                    LuoAsePelaajalle("Kivääri Lv. 3", pelaaja1);
4758                }
4759                if (vastaus.Substring(8) == "assaultrifle4")
4760                {
4761                    LuoAsePelaajalle("Kivääri Lv. 4", pelaaja1);
4762                }
4763
4764                if (vastaus.Substring(8) == "shotgun")
4765                {
4766                    LuoAsePelaajalle("Haulikko", pelaaja1);
4767                }
4768                if (vastaus.Substring(8) == "shotgun2")
4769                {
4770                    LuoAsePelaajalle("Haulikko Lv. 2", pelaaja1);
4771                }
4772                if (vastaus.Substring(8) == "shotgun3")
4773                {
4774                    LuoAsePelaajalle("Haulikko Lv. 3", pelaaja1);
4775                }
4776                if (vastaus.Substring(8) == "shotgun4")
4777                {
4778                    LuoAsePelaajalle("Haulikko Lv. 4", pelaaja1);
4779                }
4780
4781                if (vastaus.Substring(8) == "magnum")
4782                {
4783                    LuoAsePelaajalle("Magnum", pelaaja1);
4784                }
4785                if (vastaus.Substring(8) == "magnum2")
4786                {
4787                    LuoAsePelaajalle("Magnum Lv. 2", pelaaja1);
4788                }
4789                if (vastaus.Substring(8) == "magnum3")
4790                {
4791                    LuoAsePelaajalle("Magnum Lv. 3", pelaaja1);
4792                }
4793                if (vastaus.Substring(8) == "magnum4")
4794                {
4795                    LuoAsePelaajalle("Magnum Lv. 4", pelaaja1);
4796                }
4797
4798                if (vastaus.Substring(8) == "sniper")
4799                {
4800                    LuoAsePelaajalle("Sniper", pelaaja1);
4801                }
4802                if (vastaus.Substring(8) == "sniper2")
4803                {
4804                    LuoAsePelaajalle("Sniper Lv. 2", pelaaja1);
4805                }
4806                if (vastaus.Substring(8) == "sniper3")
4807                {
4808                    LuoAsePelaajalle("Sniper Lv. 3", pelaaja1);
4809                }
4810                if (vastaus.Substring(8) == "sniper4")
4811                {
4812                    LuoAsePelaajalle("Sniper Lv. 4", pelaaja1);
4813                }
4814
4815                if (vastaus.Substring(8) == "rocketlauncher")
4816                {
4817                    LuoAsePelaajalle("Raketinheitin", pelaaja1);
4818                }
4819                if (vastaus.Substring(8) == "rocketlauncher2")
4820                {
4821                    LuoAsePelaajalle("Raketinheitin Lv. 2", pelaaja1);
4822                }
4823                if (vastaus.Substring(8) == "rocketlauncher3")
4824                {
4825                    LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja1);
4826                }
4827                if (vastaus.Substring(8) == "rocketlauncher4")
4828                {
4829                    LuoAsePelaajalle("Raketinheitin Lv. 4", pelaaja1);
4830                }
4831
4832                if (vastaus.Substring(8) == "grenadelauncher")
4833                {
4834                    LuoAsePelaajalle("Kranaatinheitin", pelaaja1);
4835                }
4836                if (vastaus.Substring(8) == "grenadelauncher2")
4837                {
4838                    LuoAsePelaajalle("Kranaatinheitin Lv. 2", pelaaja1);
4839                }
4840                if (vastaus.Substring(8) == "grenadelauncher3")
4841                {
4842                    LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja1);
4843                }
4844                if (vastaus.Substring(8) == "grenadelauncher4")
4845                {
4846                    LuoAsePelaajalle("Kranaatinheitin Lv. 4", pelaaja1);
4847                }
4848
4849                if (vastaus.Substring(8) == "flaregun")
4850                {
4851                    LuoAsePelaajalle("Valopistooli", pelaaja1);
4852                }
4853                if (vastaus.Substring(8) == "flaregun2")
4854                {
4855                    LuoAsePelaajalle("Valopistooli Lv. 2", pelaaja1);
4856                }
4857                if (vastaus.Substring(8) == "flaregun3")
4858                {
4859                    LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja1);
4860                }
4861                if (vastaus.Substring(8) == "flaregun4")
4862                {
4863                    LuoAsePelaajalle("Valopistooli Lv. 4", pelaaja1);
4864                }
4865
4866                if (vastaus.Substring(8) == "sword")
4867                {
4868                    LuoAsePelaajalle("Miekka", pelaaja1);
4869                }
4870                if (vastaus.Substring(8) == "sword2")
4871                {
4872                    LuoAsePelaajalle("Miekka Lv. 2", pelaaja1);
4873                }
4874                if (vastaus.Substring(8) == "sword3")
4875                {
4876                    LuoAsePelaajalle("Miekka Lv. 3", pelaaja1);
4877                }
4878                if (vastaus.Substring(8) == "sword4")
4879                {
4880                    LuoAsePelaajalle("Miekka Lv. 4", pelaaja1);
4881                }
4882
4883                // Muunnetut aseet
4884                if (vastaus.Substring(8) == "burstrifle")
4885                {
4886                    LuoAsePelaajalle("Sarjatulikivääri", pelaaja1);
4887                }
4888
4889                if (vastaus.Substring(8) == "revolver")
4890                {
4891                    LuoAsePelaajalle("Revolveri", pelaaja1);
4892                }
4893
4894                if (vastaus.Substring(8) == "sawedoff")
4895                {
4896                    LuoAsePelaajalle("Katkaistu haulikko", pelaaja1);
4897                }
4898
4899                if (vastaus.Substring(8) == "apsniper")
4900                {
4901                    LuoAsePelaajalle("Panssari-Sniper", pelaaja1);
4902                }
4903
4904                if (vastaus.Substring(8) == "clustergrenadelauncher")
4905                {
4906                    LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja1);
4907                }
4908
4909                if (vastaus.Substring(8) == "rpg")
4910                {
4911                    LuoAsePelaajalle("Sinko", pelaaja1);
4912                }
4913
4914                if (vastaus.Substring(8) == "smg")
4915                {
4916                    LuoAsePelaajalle("Konepistooli", pelaaja1);
4917                }
4918
4919                if (vastaus.Substring(8) == "explosiveflaregun")
4920                {
4921                    LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja1);
4922                }
4923
4924                if (vastaus.Substring(8) == "burstriflex")
4925                {
4926                    LuoAsePelaajalle("Sarjatulikivääri Lv. X", pelaaja1);
4927                }
4928
4929                if (vastaus.Substring(8) == "revolverx")
4930                {
4931                    LuoAsePelaajalle("Revolveri Lv. X", pelaaja1);
4932                }
4933
4934                if (vastaus.Substring(8) == "sawedoffx")
4935                {
4936                    LuoAsePelaajalle("Katkaistu haulikko Lv. X", pelaaja1);
4937                }
4938
4939                if (vastaus.Substring(8) == "apsniperx")
4940                {
4941                    LuoAsePelaajalle("Panssari-Sniper Lv. X", pelaaja1);
4942                }
4943
4944                if (vastaus.Substring(8) == "clustergrenadelauncherx")
4945                {
4946                    LuoAsePelaajalle("Sirpalekranaatinheitin Lv. X", pelaaja1);
4947                }
4948
4949                if (vastaus.Substring(8) == "rpgx")
4950                {
4951                    LuoAsePelaajalle("Sinko Lv. X", pelaaja1);
4952                }
4953
4954                if (vastaus.Substring(8) == "smgx")
4955                {
4956                    LuoAsePelaajalle("Konepistooli Lv. X", pelaaja1);
4957                }
4958
4959                if (vastaus.Substring(8) == "explosiveflaregunx")
4960                {
4961                    LuoAsePelaajalle("Räjähtävä valopistooli Lv. X", pelaaja1);
4962                }
4963
4964                // kerättävät
4965                if (vastaus.Substring(8) == "powerup")
4966                {
4967                    if (pelaaja1.Weapon == null || pelaaja1.Weapon.Tag == null) { return; }
4968                    else { PaivitaAse(pelaaja1.Weapon.Tag.ToString(), pelaaja1); }
4969                }
4970                if (vastaus.Substring(8) == "mod")
4971                {
4972                    if (pelaaja1.Weapon == null || pelaaja1.Weapon.Tag == null) { return; }
4973                    else { MuunnaAse(pelaaja1.Weapon.Tag.ToString(), pelaaja1); }
4974                }
4975                if (vastaus.Substring(8) == "health")
4976                {
4977                    BoostiHP(pelaaja1);
4978                }
4979                if (vastaus.Substring(8) == "hpboost")
4980                {
4981                    IncreaseHP(pelaaja1);
4982                }
4983            }
4984
4985            if (vastaus.Length >= 9 && vastaus.Substring(5, 3) == "p2 ")
4986            {
4987                // aseet
4988                if (vastaus.Substring(8) == "pistol")
4989                {
4990                    LuoAsePelaajalle("Pistooli", pelaaja2);
4991                }
4992                if (vastaus.Substring(8) == "pistol2")
4993                {
4994                    LuoAsePelaajalle("Pistooli Lv. 2", pelaaja2);
4995                }
4996                if (vastaus.Substring(8) == "pistol3")
4997                {
4998                    LuoAsePelaajalle("Pistooli Lv. 3", pelaaja2);
4999                }
5000                if (vastaus.Substring(8) == "pistol4")
5001                {
5002                    LuoAsePelaajalle("Pistooli Lv. 4", pelaaja2);
5003                }
5004
5005                if (vastaus.Substring(8) == "assaultrifle")
5006                {
5007                    LuoAsePelaajalle("Kivääri", pelaaja2);
5008                }
5009                if (vastaus.Substring(8) == "assaultrifle2")
5010                {
5011                    LuoAsePelaajalle("Kivääri Lv. 2", pelaaja2);
5012                }
5013                if (vastaus.Substring(8) == "assaultrifle3")
5014                {
5015                    LuoAsePelaajalle("Kivääri Lv. 3", pelaaja2);
5016                }
5017                if (vastaus.Substring(8) == "assaultrifle4")
5018                {
5019                    LuoAsePelaajalle("Kivääri Lv. 4", pelaaja2);
5020                }
5021
5022                if (vastaus.Substring(8) == "shotgun")
5023                {
5024                    LuoAsePelaajalle("Haulikko", pelaaja2);
5025                }
5026                if (vastaus.Substring(8) == "shotgun2")
5027                {
5028                    LuoAsePelaajalle("Haulikko Lv. 2", pelaaja2);
5029                }
5030                if (vastaus.Substring(8) == "shotgun3")
5031                {
5032                    LuoAsePelaajalle("Haulikko Lv. 3", pelaaja2);
5033                }
5034                if (vastaus.Substring(8) == "shotgun4")
5035                {
5036                    LuoAsePelaajalle("Haulikko Lv. 4", pelaaja2);
5037                }
5038
5039                if (vastaus.Substring(8) == "magnum")
5040                {
5041                    LuoAsePelaajalle("Magnum", pelaaja2);
5042                }
5043                if (vastaus.Substring(8) == "magnum2")
5044                {
5045                    LuoAsePelaajalle("Magnum Lv. 2", pelaaja2);
5046                }
5047                if (vastaus.Substring(8) == "magnum3")
5048                {
5049                    LuoAsePelaajalle("Magnum Lv. 3", pelaaja2);
5050                }
5051                if (vastaus.Substring(8) == "magnum4")
5052                {
5053                    LuoAsePelaajalle("Magnum Lv. 4", pelaaja2);
5054                }
5055
5056                if (vastaus.Substring(8) == "sniper")
5057                {
5058                    LuoAsePelaajalle("Sniper", pelaaja2);
5059                }
5060                if (vastaus.Substring(8) == "sniper2")
5061                {
5062                    LuoAsePelaajalle("Sniper Lv. 2", pelaaja2);
5063                }
5064                if (vastaus.Substring(8) == "sniper3")
5065                {
5066                    LuoAsePelaajalle("Sniper Lv. 3", pelaaja2);
5067                }
5068                if (vastaus.Substring(8) == "sniper4")
5069                {
5070                    LuoAsePelaajalle("Sniper Lv. 4", pelaaja2);
5071                }
5072
5073                if (vastaus.Substring(8) == "rocketlauncher")
5074                {
5075                    LuoAsePelaajalle("Raketinheitin", pelaaja2);
5076                }
5077                if (vastaus.Substring(8) == "rocketlauncher2")
5078                {
5079                    LuoAsePelaajalle("Raketinheitin Lv. 2", pelaaja2);
5080                }
5081                if (vastaus.Substring(8) == "rocketlauncher3")
5082                {
5083                    LuoAsePelaajalle("Raketinheitin Lv. 3", pelaaja2);
5084                }
5085                if (vastaus.Substring(8) == "rocketlauncher4")
5086                {
5087                    LuoAsePelaajalle("Raketinheitin Lv. 4", pelaaja2);
5088                }
5089
5090                if (vastaus.Substring(8) == "grenadelauncher")
5091                {
5092                    LuoAsePelaajalle("Kranaatinheitin", pelaaja2);
5093                }
5094                if (vastaus.Substring(8) == "grenadelauncher2")
5095                {
5096                    LuoAsePelaajalle("Kranaatinheitin Lv. 2", pelaaja2);
5097                }
5098                if (vastaus.Substring(8) == "grenadelauncher3")
5099                {
5100                    LuoAsePelaajalle("Kranaatinheitin Lv. 3", pelaaja2);
5101                }
5102                if (vastaus.Substring(8) == "grenadelauncher4")
5103                {
5104                    LuoAsePelaajalle("Kranaatinheitin Lv. 4", pelaaja2);
5105                }
5106
5107                if (vastaus.Substring(8) == "flaregun")
5108                {
5109                    LuoAsePelaajalle("Valopistooli", pelaaja2);
5110                }
5111                if (vastaus.Substring(8) == "flaregun2")
5112                {
5113                    LuoAsePelaajalle("Valopistooli Lv. 2", pelaaja2);
5114                }
5115                if (vastaus.Substring(8) == "flaregun3")
5116                {
5117                    LuoAsePelaajalle("Valopistooli Lv. 3", pelaaja2);
5118                }
5119                if (vastaus.Substring(8) == "flaregun4")
5120                {
5121                    LuoAsePelaajalle("Valopistooli Lv. 4", pelaaja2);
5122                }
5123
5124                if (vastaus.Substring(8) == "sword")
5125                {
5126                    LuoAsePelaajalle("Miekka", pelaaja2);
5127                }
5128                if (vastaus.Substring(8) == "sword2")
5129                {
5130                    LuoAsePelaajalle("Miekka Lv. 2", pelaaja2);
5131                }
5132                if (vastaus.Substring(8) == "sword3")
5133                {
5134                    LuoAsePelaajalle("Miekka Lv. 3", pelaaja2);
5135                }
5136                if (vastaus.Substring(8) == "sword4")
5137                {
5138                    LuoAsePelaajalle("Miekka Lv. 4", pelaaja2);
5139                }
5140
5141                // Muunnetut aseet
5142                if (vastaus.Substring(8) == "burstrifle")
5143                {
5144                    LuoAsePelaajalle("Sarjatulikivääri", pelaaja2);
5145                }
5146
5147                if (vastaus.Substring(8) == "revolver")
5148                {
5149                    LuoAsePelaajalle("Revolveri", pelaaja2);
5150                }
5151
5152                if (vastaus.Substring(8) == "sawedoff")
5153                {
5154                    LuoAsePelaajalle("Katkaistu haulikko", pelaaja2);
5155                }
5156
5157                if (vastaus.Substring(8) == "apsniper")
5158                {
5159                    LuoAsePelaajalle("Panssari-Sniper", pelaaja2);
5160                }
5161
5162                if (vastaus.Substring(8) == "clustergrenadelauncher")
5163                {
5164                    LuoAsePelaajalle("Sirpalekranaatinheitin", pelaaja2);
5165                }
5166
5167                if (vastaus.Substring(8) == "rpg")
5168                {
5169                    LuoAsePelaajalle("Sinko", pelaaja2);
5170                }
5171
5172                if (vastaus.Substring(8) == "smg")
5173                {
5174                    LuoAsePelaajalle("Konepistooli", pelaaja2);
5175                }
5176
5177                if (vastaus.Substring(8) == "explosiveflaregun")
5178                {
5179                    LuoAsePelaajalle("Räjähtävä valopistooli", pelaaja2);
5180                }
5181
5182                if (vastaus.Substring(8) == "burstriflex")
5183                {
5184                    LuoAsePelaajalle("Sarjatulikivääri Lv. X", pelaaja2);
5185                }
5186
5187                if (vastaus.Substring(8) == "revolverx")
5188                {
5189                    LuoAsePelaajalle("Revolveri Lv. X", pelaaja2);
5190                }
5191
5192                if (vastaus.Substring(8) == "sawedoffx")
5193                {
5194                    LuoAsePelaajalle("Katkaistu haulikko Lv. X", pelaaja2);
5195                }
5196
5197                if (vastaus.Substring(8) == "apsniperx")
5198                {
5199                    LuoAsePelaajalle("Panssari-Sniper Lv. X", pelaaja2);
5200                }
5201
5202                if (vastaus.Substring(8) == "clustergrenadelauncherx")
5203                {
5204                    LuoAsePelaajalle("Sirpalekranaatinheitin Lv. X", pelaaja2);
5205                }
5206
5207                if (vastaus.Substring(8) == "rpgx")
5208                {
5209                    LuoAsePelaajalle("Sinko Lv. X", pelaaja2);
5210                }
5211
5212                if (vastaus.Substring(8) == "smgx")
5213                {
5214                    LuoAsePelaajalle("Konepistooli Lv. X", pelaaja2);
5215                }
5216
5217                if (vastaus.Substring(8) == "explosiveflaregunx")
5218                {
5219                    LuoAsePelaajalle("Räjähtävä valopistooli Lv. X", pelaaja2);
5220                }
5221
5222                // kerättävät
5223                if (vastaus.Substring(8) == "powerup")
5224                {
5225                    if (pelaaja2.Weapon == null || pelaaja2.Weapon.Tag == null) { return; }
5226                    else { PaivitaAse(pelaaja2.Weapon.Tag.ToString(), pelaaja2); }
5227                }
5228                if (vastaus.Substring(8) == "mod")
5229                {
5230                    if (pelaaja2.Weapon == null || pelaaja2.Weapon.Tag == null) { return; }
5231                    else { MuunnaAse(pelaaja2.Weapon.Tag.ToString(), pelaaja2); }
5232                }
5233                if (vastaus.Substring(8) == "health")
5234                {
5235                    BoostiHP(pelaaja2);
5236                }
5237                if (vastaus.Substring(8) == "hpboost")
5238                {
5239                    IncreaseHP(pelaaja2);
5240                }
5241            }
5242
5243        }
5244
5245        if (vastaus.Length >= 7 && vastaus.Substring(0, 6) == "level ")
5246        {
5247            if (vastaus.Substring(6) == "0")
5248            {
5249                LuoKentta0();
5250            }
5251            if (vastaus.Substring(6) == "1")
5252            {
5253                LuoKentta1();
5254            }
5255            if (vastaus.Substring(6) == "2")
5256            {
5257                LuoKentta2();
5258            }
5259            if (vastaus.Substring(6) == "3")
5260            {
5261                LuoKentta3();
5262            }
5263        }
5264        if (vastaus.Length >= 6 && vastaus.Substring(0, 5) == "kill ")
5265        {
5266            if (vastaus.Length >= 7 && vastaus.Substring(5, 2) == "p1")
5267            {
5268                pelaaja1.HPLaskuri.Value = pelaaja1.HPLaskuri.MinValue;
5269            }
5270            if (vastaus.Length >= 7 && vastaus.Substring(5, 2) == "p2")
5271            {
5272                pelaaja2.HPLaskuri.Value = pelaaja2.HPLaskuri.MinValue;
5273            }
5274        }
5275
5276        if (vastaus.Length >= 6 && vastaus.Substring(0, 5) == "heal ")
5277        {
5278            if (vastaus.Length >= 7 && vastaus.Substring(5, 2) == "p1")
5279            {
5280                pelaaja1.HPLaskuri.Value = pelaaja1.HPLaskuri.MaxValue;
5281            }
5282
5283            if (vastaus.Length >= 7 && vastaus.Substring(5, 2) == "p2")
5284            {
5285                pelaaja2.HPLaskuri.Value = pelaaja2.HPLaskuri.MaxValue;
5286            }
5287        }
5288    }
5289
5290    // Näppäimiin liitetyt toiminnot alkavat tästä -->
5291    void liikuta(PlatformCharacter hahmo, Vector voima)
5292    {
5293        hahmo.Walk(voima.X);
5294    }
5295
5296    void liikutaAnalog(AnalogState tatinTila, PlatformCharacter hahmo, double voima)
5297    {
5298        Vector tatinAsento = tatinTila.StateVector;
5299
5300        hahmo.Walk(voima * tatinAsento.X);
5301    }
5302
5303    void naytaTiedot()
5304    {
5305        MessageDisplay.Clear();
5306        MessageDisplay.X = 0;
5307        if (pelaaja1.Weapon != null)
5308        {
5309            MessageDisplay.Add("Pelaaja 1: " + pelaaja1.Weapon.Tag);
5310        }
5311        if (pelaaja2.Weapon != null)
5312        {
5313            MessageDisplay.Add("Pelaaja 2: " + pelaaja2.Weapon.Tag);
5314        }
5315    }
5316
5317    void Ammu(PlatformCharacter hahmo)
5318    {
5319        if (hahmo.IsDestroyed || !saaAmpua || hahmo.Weapon == null || hahmo.Weapon.Tag == null || hahmo.Weapon.IsDestroyed == true) return;
5320        PhysicsObject ammus = hahmo.Weapon.Shoot();
5321        if (ammus == null) return;
5322
5323        ammus.Tag = "ammus";
5324        ammus.IgnoresCollisionResponse = true;
5325        ammus.IgnoresExplosions = true;
5326
5327        string aseenTag = hahmo.Weapon.Tag.ToString();
5328        if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. 4")
5329        {
5330            ammus.Image = ammuslv4;
5331        }
5332
5333        if (aseenTag.Length > 6 && aseenTag.Substring(aseenTag.Length - 5) == "Lv. X")
5334        {
5335            ammus.Image = ammuslvx;
5336        }
5337
5338        if (hahmo.Weapon.Tag.ToString() == "Kranaatinheitin")
5339        {
5340            ammus.Shape = Shape.Circle;
5341            ammus.Image = kranaatinkuva;
5342            ammus.Restitution = 1;
5343            ammus.Mass = 0.2;
5344            ammus.KineticFriction = 0.2;
5345            ammus.StaticFriction = 0.2;
5346            ammus.Position = hahmo.Position;
5347            ammus.Size += new Vector(1, 1);
5348            Timer.SingleShot(2.0, delegate { RajaytaKranaatti(ammus); });
5349            ammus.IgnoresCollisionResponse = false;
5350            Timer.SingleShot(0.2, delegate { ammus.CollisionIgnorer = null; });
5351        }
5352        if (hahmo.Weapon.Tag.ToString() == "Kranaatinheitin Lv. 2")
5353        {
5354            ammus.Shape = Shape.Circle;
5355            ammus.Image = kranaatinkuva2;
5356            ammus.Restitution = 1;
5357            ammus.Mass = 0.2;
5358            ammus.KineticFriction = 0.2;
5359            ammus.StaticFriction = 0.2;
5360            ammus.Position = hahmo.Position;
5361            ammus.Size += new Vector(1, 1);
5362            Timer.SingleShot(2.0, delegate { RajaytaKranaatti2(ammus); });
5363            ammus.IgnoresCollisionResponse = false;
5364            Timer.SingleShot(0.2, delegate { ammus.CollisionIgnorer = null; });
5365        }
5366        if (hahmo.Weapon.Tag.ToString() == "Kranaatinheitin Lv. 3")
5367        {
5368            ammus.Shape = Shape.Circle;
5369            ammus.Image = kranaatinkuva3;
5370            ammus.Restitution = 1;
5371            ammus.Mass = 0.2;
5372            ammus.KineticFriction = 0.2;
5373            ammus.StaticFriction = 0.2;
5374            ammus.Position <