;Trading Outer Space Reloaded ;Tim Gonska 2007 ;coded with BlitzBasic (www.blitzbasic.com) ;IDE: IDEal (www.fungamesfactory.com) ;codebeschreibung: ;grafik: auflösung 800x600, 16 bit farbtiefe. vollbild oder fenster, backbuffer ;sounds: directsound ;objects: 27 Unterfelder im Hauptfeld mit der Größe 1000 = 27000 Variablen. ; alle objekte werden gleichzeitig gerendert. (backbuffer) ;ki: nimmt etwa 1/3 der kapazität der unterfelder in anspruch. ; zusammen mit den durch die KI erzeugten objekten, belegt die KI über 50% der kapazität. ;fps: ca. 880 engine loops / min. ergibt: 15 fps ... schlechte engine ;) ; (etwa 12000 If...Then pro loop O_o) ;Debugmode since 0.95 Global running_mode$ = "normal" ;check windowed mode screensize = 1 If CommandLine$() = "-window" Then screensize = 2 If CommandLine$() = "-debug" Then running_mode = "debug" screensize = 2 End If ; DirectX Graphics 800,600,16,screensize ;800x600,16 Bit,Vollbild oder Fenster SetBuffer BackBuffer() ;Randomize the Randomizator :) SeedRnd MilliSecs() ;Variablen Global cheats = 0 Global version$ = "Version 0.98" Global modus$ = "hauptmenu" Global sound = 1 Global framelimiter = CreateTimer(25) Global BildX = 10000 Global BildY = 10000 Global SpielerX = BildX + 400 Global SpielerY = BildY + 300 Global Spieler_Direction = 0 Global Spieler_Geschwindigkeit = 0 Global Spieler_Schiff_Max_Geschwindigkeit = 11 Global Spieler_Schiff_Name$ = "Allrounder" Global Spieler_Schiff_Schilde_Max = 500 Global Spieler_Schiff_HP_Max = 350 Global Spieler_Schiff_Rumpfstaerke = 4 Global Spieler_Schiff_Waffe$ = "Blauer Blitz" Global Spieler_Schiff_Laderaum_Max = 6 Global Spieler_Schiff_Modpacks = 0 Global Spieler_Handel_Sauerstoff = 0 Global Spieler_Handel_Baumaterialien = 0 Global Spieler_Handel_Waffen = 0 Global Spieler_Schilde = Spieler_Schiff_Schilde_Max Global Spieler_HP = Spieler_Schiff_HP_Max Global Stats_Einnahmen = 0 Global Stats_Ausgaben = 0 Global Aktuelle_Station = 0 Global Preis_Sauerstoff = 0 Global Preis_Baumaterialien = 0 Global Preis_Waffen = 0 Global Gesamtwert_Sauerstoff = 0 Global Gesamtwert_Baumaterialien = 0 Global Gesamtwert_Waffen = 0 Global new_ships = 0 Global new_ships_timer = 0 Global spieler_credits = 1500 Global KI_station_collision_check = 0 Global KI_Anzahl_Freelance = 0 Global KI_Anzahl_Trade = 0 Global KI_Anzahl_Aggro = 0 Global Max_Objects = 1000 Global Ruf_Allianz = 50 Global Ruf_Rebellen = 30 Global Ruf_Handel = 50 Global Stationen_Allianz = 0 Global Stationen_Rebellen = 0 Global Stationen_Handel = 0 Global Werften_Allianz = 0 Global Werften_Rebellen = 0 Global Werften_Handel = 0 Global Handel_Allianz = 0 Global Handel_Rebellen = 0 Global Handel_Handel = 0 Global Schiffe_Allianz = 0 Global Schiffe_Rebellen = 0 Global Schiffe_Handel = 0 Global Punkte_Allianz = 0 Global Punkte_Rebellen = 0 Global Punkte_Handel = 0 Global Karte_Modus = 0 Global Eigene_Handelsstation = 0 Global Eigene_Handelsstation_Income = 0 Global Eigene_Werft = 0 Global Gespeichert = 0 Global Geladen = 0 Global Spieler_Flotte = 0 Global Spieler_Flotte_Soll = 0 Global Spieler_Flotte_Modus = 4 Global Spieler_Flotte_Check = 100 Global Spieler_Wingmen = 0 Global Spieler_Wingmen_Max = 0 Global Punkte_Spieler = 0 Global Spieler_Eigene_Station_Kollision = 0 Global explosionen_free = 0 Global test = 0 Global Area$ = "Keine" Global Eroberung_Allianz = 28 Global Eroberung_Rebellen = 28 Global Eroberung_Handel = 28 Global COM_Rebellen_Ruf_Warnung = 0 Global COM_Allianz_Ruf_Warnung = 0 Global COM_Handel_Ruf_Warnung = 0 Global COM_Flagge = 0 Global COM_MessageA$ = "none" Global COM_MessageB$ = "none" Global HUD_Blinking = 0 Global Options_HUD = 1 Global Options_Enemyinfo = 1 Global Krieg = 0 Global Krieg_ParteiA = 0 Global Krieg_ParteiB = 0 Global Krieg_Dauer = 0 Global Krieg_Dauer_Aggro_Check = 0 Global Krieg_PunkteA = 0 Global Krieg_PunkteB = 0 Global Schilde_Regen = 0 Global Bonus_HP = 0 Global Bonus_Laderaum = 0 Global Bonus_Damage = 0 Global Bonus_Rumpfstaerke = 0 Global Level = 0 Global Experience = 0 Global NextLevel = 100 Global ExpWert = 100 Global Spieler_Schiff_HP_Grundwert = 350 Global Spieler_Schiff_Laderaum_Grundwert = 6 Global Spieler_Schiff_Rumpfstaerke_Grundwert = 4 Global JoyRechts = 0 Global JoyLinks = 0 Global JoyHoch = 0 Global JoyRunter = 0 ;Debug Variablen Global debug_hauptschleife = 0 Global deb_asteroidenfelder = 0 Global deb_console = 0 Global deb_aggro_auf_spieler = 0 Global deb_schlachtzug = 0 Global deb_besitzwechsel = 0 Global deb_aggroTOfree = 0 Global deb_ships = 0 Global debug_krieg_starten = 0 ;Grafiken Global gr_Schifftyp1 = LoadAnimImage("GFX\schiff1.bmp",80,80,0,8) Global gr_Schifftyp2 = LoadAnimImage("gfx\schiff2.bmp",80,80,0,8) Global gr_Schifftyp3 = LoadAnimImage("gfx\schiff3.bmp",80,80,0,8) Global gr_Schifftyp4 = LoadAnimImage("gfx\schiff4.bmp",212,212,0,8) Global gr_title = LoadImage ("GFX\title.bmp") Global gr_spieler = gr_Schifftyp1 Global gr_splash = LoadImage ("GFX\splash.bmp") Global gr_asteroid1 = LoadImage ("GFX\asteroid1.bmp") Global gr_asteroid2 = LoadImage ("GFX\asteroid2.bmp") Global gr_asteroid3 = LoadImage ("gfx\asteroid3.bmp") Global gr_asteroid4 = LoadImage ("gfx\asteroid4.bmp") Global gr_asteroid5 = LoadImage ("gfx\asteroid5.bmp") Global gr_asteroid6 = LoadImage ("gfx\asteroid6.bmp") Global gr_waffe1 = LoadImage ("GFX\schuss1.bmp") Global gr_waffe2 = LoadImage ("GFX\schuss2.bmp") Global gr_waffe3 = LoadImage ("GFX\schuss3.bmp") Global gr_hud_schiff = LoadImage("GFX\hud_schiff.bmp") Global gr_hud_schild = LoadImage("GFX\hud_schild.bmp") Global gr_hud_hp = LoadImage("GFX\hud_hp.bmp") Global gr_yourship = LoadImage ("GFX\yourship.bmp") Global gr_enemyship = LoadAnimImage ("GFX\schiff2.bmp",80,80,0,8) Global gr_enemyship2 = LoadAnimImage("gfx\schiff3.bmp",80,80,0,8) Global gr_enemyship3 = LoadAnimImage("gfx\schiff4.bmp",212,212,0,8) Global gr_treffer1 = LoadImage("GFX\treffer2.bmp") Global gr_station1 = LoadImage("GFX\station1.bmp") Global gr_planet1 = LoadImage("GFX\planet1.bmp") Global gr_radar = LoadImage("GFX\radar.bmp") Global gr_battlestation = LoadImage("GFX\gr_battlestation.bmp") Global gr_gameover = LoadImage("GFX\GameOver.bmp") Global gr_station_handel = LoadImage("GFX\station_handel.bmp") Global gr_help = LoadImage("GFX\help.bmp") Global gr_flagge_rebellen = LoadImage("GFX\flagge_rb.bmp") Global gr_flagge_handel = LoadImage("GFX\flagge_hf.bmp") Global gr_flagge_allianz = LoadImage("GFX\flagge_al.bmp") Global gr_fraktionsmenu = LoadImage("GFX\fraktionsmenu.bmp") Global gr_station_werft = LoadImage("GFX\station_werft2.bmp") Global gr_karte = LoadImage("GFX\karte.bmp") Global gr_aggrowarning = LoadImage("GFX\aggro_warning.bmp") Global gr_hud_main = LoadImage("GFX\hud_main.bmp") Global gr_hud_com = LoadImage("gfx\hud_com.bmp") Global gr_maus = LoadImage("gfx\cursor.bmp") Global gr_buy = LoadImage("gfx\menu_buy.bmp") Global gr_sell = LoadImage("gfx\menu_sell.bmp") Global gr_ok = LoadImage("gfx\menu_ok.bmp") Global gr_explosion1 = LoadAnimImage("gfx\explosion1.bmp",62,62,0,5) Global gr_explosion2 = LoadAnimImage("gfx\explosion2.bmp",125,125,0,5) Global gr_explosion3 = LoadAnimImage("gfx\explosion3.bmp",250,250,0,5) Global gr_commenu = LoadImage("gfx\com.bmp") Global gr_optionsmenu = LoadImage("gfx\options.bmp") Global gr_wechseln = LoadImage("gfx\menu_wechseln.bmp") Global gr_tuningmenu = LoadImage("gfx\tuning.bmp") Global gr_tuning = LoadImage("gfx\menu_tuning.bmp") Global gr_schildglow = LoadImage("gfx\schildglow.bmp") Global gr_levelup = LoadImage("gfx\levelup.bmp") Global gr_flotte = LoadImage("gfx\flotte.bmp") ;Sounds Global s_button = LoadSound("sfx\button.wav") Global s_engine = LoadSound("sfx\engine.wav") Global s_explosion1 = LoadSound("sfx\explosion1.wav") Global s_explosion2 = LoadSound("sfx\explosion2.wav") Global s_hit1 = LoadSound("sfx\hit1.wav") Global s_hit2 = LoadSound("sfx\hit2.wav") Global s_schild = LoadSound("sfx\schild.wav") Global s_aggro = LoadSound("sfx\aggro.wav") Global s_plasma = LoadSound("sfx\plasma.wav") Global s_ionen = LoadSound("sfx\ionen.wav") Global s_blitz = LoadSound("sfx\blauerblitz.wav") Global s_levelup = LoadSound("sfx\levelup.wav") Global s_com = LoadSound("sfx\com.wav") ;Handles HandleImage gr_spieler,40,40 HandleImage gr_enemyship,40,40 HandleImage gr_enemyship2,40,40 HandleImage gr_enemyship3,106,106 HandleImage gr_Schifftyp1,40,40 HandleImage gr_Schifftyp2,40,40 HandleImage gr_Schifftyp3,40,40 HandleImage gr_Schifftyp4,106,106 HandleImage gr_asteroid1,16,18 HandleImage gr_asteroid2,30,30 HandleImage gr_asteroid3,17,18 HandleImage gr_asteroid4,17,19 HandleImage gr_asteroid5,60,55 HandleImage gr_asteroid6,7,7 HandleImage gr_waffe1,15,15 HandleImage gr_waffe2,15,15 HandleImage gr_waffe3,15,15 HandleImage gr_treffer1,25,25 HandleImage gr_planet1,225,225 HandleImage gr_station1,124,114 HandleImage gr_battlestation,64,64 HandleImage gr_maus,5,5 HandleImage gr_explosion1,31,31 HandleImage gr_explosion2,62,62 HandleImage gr_explosion3,125,125 HandleImage gr_schildglow,50,50 ;Felder Dim sterne(500,2) Dim sterne_fast(100,2) Dim sterne_medium(200,2) Dim objekte(Max_Objects,28) ;28? todo... Dim explosionen(100,5) ;Objektordnung: Erstellt wird ein Asteroid. Beispiel dient der Übersicht objekte(1,1) = 1 ;Vorhanden? 1=True 0=False objekte(1,2) = gr_asteroid1 ;Grafik objekte(1,3) = 5200 ;X-Position objekte(1,4) = 5200 ;Y-Position objekte(1,5) = 4 ;Richtung -> 0=Oben,1=Oben Rechts,2=Rechts...7=Oben Links objekte(1,6) = 4 ;Geschwindigkeit in px/engine loop objekte(1,7) = 1 ;Objekt zerstörbar? 1=True 0=False objekte(1,8) = 20;Stärke...bei Schuß oder Kollision objekte(1,9) = 10;Lebenspunkte objekte(1,10) = 1;Beschädigt Spieler bei Berührung? 1=True 0=False objekte(1,11) = 0;KI gesteuert? 1=True 0=False objekte(1,12) = 1;Begrenzte Überlebensdauer? 1=True 0=False objekte(1,13) = 100;Restliche Überlebensdauer in engine loops. Bei objekte(1,12) = 1 objekte(1,14) = 0;Kann der Spieler am Objekt andocken? 1=True 0=False objekte(1,15) = 0;Fraktion. 1=Föderation 2=Rebellen 3=Handelsflotte 4=Spieler objekte(1,16) = 0;KI-Modus. Beispiel: 1=Freelance 2=Trading 3=Aggro 4=Wingmen objekte(1,17) = 0;KI-Reaktion. Jeder engine-loop - 1. Bei 0 wird KI-Modus erneuert. objekte(1,18) = 0;Stammt Objekt vom Spieler? 1=True 0=False objekte(1,19) = 0;Handel: Preis Sauerstoff objekte(1,20) = 0;Handel: Preis Baumaterialien objekte(1,21) = 0;Handel: Preis Waffen objekte(1,22) = 0;Station: Art der Station. 1=Handel 2=Werft objekte(1,23) = 0;KI-Ziel X-Koordinate objekte(1,24) = 0;KI-Ziel Y-Koordinate objekte(1,25) = 0;KI_Ziel index objekte(1,26) = 0;KI_Schuß abgefeuert von index objekte(1,27) = 0;KI-Waffe 1=Plasma 2=Ionen 3=Blitz objekte(1,28) = 0;KI-Abschüsse ;Hauptschleife (Das Herzstück) Repeat WaitTimer framelimiter Color 255,255,255 Cls debug_hauptschleife = debug_hauptschleife + 1 If modus$ = "hauptmenu" Then hauptmenu_main If modus$ = "spiel" Then spiel_main If modus$ = "schiffsmenu" Then schiffsmenu_main If modus$ = "fraktionsmenu" Then fraktionsmenu_main If modus$ = "ende" Then ende_main If modus$ = "gameover" Then gameover_main If modus$ = "createworld" Then spiel_create_world If modus$ = "gedockt_handel" Then gedockt_handel_main If modus$ = "gedockt_werft" Then gedockt_werft_main If modus$ = "help" Then help_main If modus$ = "karte" Then karte_main ;If modus$ = "eigene_station_bekommen" Then eigene_station_bekommen_main If modus$ = "speichern" Then speichern_main If modus$ = "laden" Then laden_main If modus$ = "com" Then com_main If modus$ = "options" Then options_main If modus$ = "tuning" Then tuning_main If modus$ = "levelup" Then levelup_main If modus$ = "flotte" Then flotte_main Flip Until modus$ = "killprog" End ;Functions Function hauptmenu_main() hauptmenu_layout hauptmenu_tasten End Function Function hauptmenu_layout() DrawImage gr_title,1,1 If running_mode$ = "debug" Then Color 0,255,0 Text 150,130,"Debug" Text 600,130,"Debug" Text 150,330,"Debug" Text 600,330,"Debug" Text 150,530,"Debug" Text 600,530,"Debug" End If End Function Function hauptmenu_tasten() If KeyHit(28) Then ;28 = ENTER modus$ = "createworld" End If End Function Function spiel_main() run = 1 If running_mode$ = "debug" Then run = 0 spiel_tasten spiel_joystick If run = 1 Then spiel_spieler_berechnen If run = 1 Then spiel_sterne_berechnen spiel_objekte_berechnen spiel_objekte_lebensdauer spiel_objekte_ki If run = 1 Then spiel_sterne_zeichnen If run = 1 Then spiel_objekte_zeichnen spiel_explosionen_zeichnen If run = 1 Then spiel_spieler_zeichnen spiel_hud spiel_kollisionen_berechnen spiel_events End Function Function spiel_tasten() If KeyHit(1) Then ;ESC = Ende modus$ = "ende" End If If KeyHit(74) Then ;-NumPad = Debug check = 0 If deb_console = 0 Then deb_console = 1 check = 1 End If If check = 0 Then If deb_console = 1 Then deb_console = 0 End If End If End If If KeyHit(203) Then ;LINKS Spieler_Direction = Spieler_Direction - 1 If Spieler_Direction < 0 Then Spieler_Direction = 7 End If If KeyHit(205) Then ;RECHTS Spieler_Direction = Spieler_Direction + 1 If Spieler_Direction > 7 Then Spieler_Direction = 0 End If If KeyDown(200) Then ;HOCH = Mehr Speed Spieler_Geschwindigkeit = Spieler_Geschwindigkeit + 1 If Spieler_Geschwindigkeit > Spieler_Schiff_Max_Geschwindigkeit Then Spieler_Geschwindigkeit = Spieler_Schiff_Max_Geschwindigkeit End If If KeyDown(208) Then ;RUNTER = Weniger Speed Spieler_Geschwindigkeit = Spieler_Geschwindigkeit - 1 If Spieler_Geschwindigkeit < 0 Then Spieler_Geschwindigkeit = 0 End If If KeyHit(31) Then ;S = Schiffsmenu modus$ = "schiffsmenu" End If If KeyHit(33) Then ;F = Fraktionsmenu modus$ = "fraktionsmenu" End If If KeyHit(63) Then ;F5 = Speichern Gespeichert = 0 modus$ = "speichern" End If If KeyHit(67) Then ;F9 = Laden Geladen = 0 modus$ = "laden" End If If KeyHit(16) Then ;Q = Flottenmenu modus$ = "flotte" End If If KeyHit(25) Then ;P = Debug_Monsterschiff! :) If cheats = 1 Then Spieler_Schiff_Max_Geschwindigkeit = 25 Spieler_Schiff_Name$ = "Big Cheater" Spieler_Schiff_Schilde_Max = 1500 Spieler_Schiff_HP_Max = 1000 Spieler_Schiff_Rumpfstaerke = 20 Spieler_Schiff_Waffe$ = "Plasmawerfer" Spieler_Schiff_Laderaum_Max = 20 Spieler_Schilde = Spieler_Schiff_Schilde_Max Spieler_HP = Spieler_Schiff_HP_Max End If End If If KeyHit(24) Then ;O = Debug_Money_Money_Money :) If cheats = 1 Then spieler_credits = 100000 End If End If If KeyHit(23) Then ;I = Debug Ruf und Punkte der Allianz! :) If cheats = 1 Then Ruf_Allianz = 120 Punkte_Allianz = 22000 End If End If If KeyHit(22) Then ;U = Debug LevelUp :) If cheats = 1 Then Experience = NextLevel End If End If If KeyHit(21) Then ;Z = KRIEG :D If cheats = 1 Then debug_krieg_starten = 1 End If End If If KeyHit(28) Then ;ENTER = Optionen modus$ = "options" End If If KeyHit(57) Then ;LEERTASTE = Feuer If Spieler_Schiff_Waffe$ = "Plasmawerfer" Then grafik = gr_waffe1 speed = 30 staerke = 20 destructable = 0 If sound = 1 Then PlaySound(s_plasma) End If If Spieler_Schiff_Waffe$ = "Ionenwerfer" Then grafik = gr_waffe2 speed = 23 staerke = 30 destructable = 0 If sound = 1 Then PlaySound(s_ionen) End If If Spieler_Schiff_Waffe$ = "Blauer Blitz" Then grafik = gr_waffe3 speed = 40 staerke = 10 destructable = 0 If sound = 1 Then PlaySound(s_blitz) End If ende = 0 For a = 1 To Max_Objects If objekte(a,1) = 0 Then If ende = 0 Then ende = 1 objekte(a,1) = 1 objekte(a,2) = grafik objekte(a,3) = SpielerX objekte(a,4) = SpielerY objekte(a,5) = Spieler_Direction objekte(a,6) = speed objekte(a,7) = destructable objekte(a,8) = staerke + Bonus_Damage objekte(a,9) = 1 objekte(a,10) = 0 objekte(a,11) = 0 objekte(a,12) = 1 objekte(a,13) = 50 objekte(a,14) = 0 objekte(a,15) = 0 objekte(a,16) = 0 objekte(a,17) = 0 objekte(a,18) = 1 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 999 objekte(a,27) = 0 objekte(a,28) = 0 End If End If Next End If If KeyHit(38) Then ; L = andocken For a = 1 To Max_Objects If objekte(a,1) = 1 And objekte(a,14) = 1 Then x = objekte(a,3) x = x - SpielerX x = 400 + x y = objekte(a,4) y = y - SpielerY y = 300 - y If ImagesCollide (gr_spieler,400,300,0,objekte(a,2),x,y,0)Then allowed = 0 If objekte(a,15) = 1 Then If Ruf_Allianz > 19 Then allowed = 1 End If If objekte(a,15) = 2 Then If Ruf_Rebellen > 19 Then allowed = 1 End If If objekte(a,15) = 3 Then If Ruf_Handel > 19 Then allowed = 1 End If If objekte(a,15) = 4 Then allowed = 1 End If If objekte(a,22) = 1 Then If allowed = 1 Then modus$ = "gedockt_handel" Aktuelle_Station = a Preis_Sauerstoff = objekte(a,19) Preis_Baumaterialien = objekte(a,20) Preis_Waffen = objekte(a,21) End If End If If objekte(a,22) = 2 Then If allowed = 1 Then modus$ = "gedockt_werft" Aktuelle_Station = a End If End If End If End If Next End If If KeyHit(59) Then ; F1 = Hilfe modus$ = "help" End If If KeyHit(50) Then ;M = Übersichtskarte Karte_Modus = 0 modus$ = "karte" End If End Function Function spiel_joystick() ;FlushJoy x = JoyXDir() y = JoyYDir() If x = -1 And JoyLinks = 0 Then Spieler_Direction = Spieler_Direction - 1 If Spieler_Direction < 0 Then Spieler_Direction = 7 JoyLinks = 1 End If If x = 1 And JoyRechts = 0 Then Spieler_Direction = Spieler_Direction + 1 If Spieler_Direction > 7 Then Spieler_Direction = 0 JoyRechts = 1 End If If y = -1 Then Spieler_Geschwindigkeit = Spieler_Geschwindigkeit + 1 If Spieler_Geschwindigkeit > Spieler_Schiff_Max_Geschwindigkeit Then Spieler_Geschwindigkeit = Spieler_Schiff_Max_Geschwindigkeit End If If y = 1 Then Spieler_Geschwindigkeit = Spieler_Geschwindigkeit - 1 If Spieler_Geschwindigkeit < 0 Then Spieler_Geschwindigkeit = 0 End If If x = 0 Then JoyLinks = 0 JoyRechts = 0 End If If JoyHit(1) Then If Spieler_Schiff_Waffe$ = "Plasmawerfer" Then grafik = gr_waffe1 speed = 30 staerke = 20 destructable = 0 If sound = 1 Then PlaySound(s_plasma) End If If Spieler_Schiff_Waffe$ = "Ionenwerfer" Then grafik = gr_waffe2 speed = 23 staerke = 30 destructable = 0 If sound = 1 Then PlaySound(s_ionen) End If If Spieler_Schiff_Waffe$ = "Blauer Blitz" Then grafik = gr_waffe3 speed = 40 staerke = 10 destructable = 0 If sound = 1 Then PlaySound(s_blitz) End If ende = 0 For a = 1 To Max_Objects If objekte(a,1) = 0 Then If ende = 0 Then ende = 1 objekte(a,1) = 1 objekte(a,2) = grafik objekte(a,3) = SpielerX objekte(a,4) = SpielerY objekte(a,5) = Spieler_Direction objekte(a,6) = speed objekte(a,7) = destructable objekte(a,8) = staerke + Bonus_Damage objekte(a,9) = 1 objekte(a,10) = 0 objekte(a,11) = 0 objekte(a,12) = 1 objekte(a,13) = 50 objekte(a,14) = 0 objekte(a,15) = 0 objekte(a,16) = 0 objekte(a,17) = 0 objekte(a,18) = 1 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 999 objekte(a,27) = 0 objekte(a,28) = 0 End If End If Next End If If JoyHit(2) Then For a = 1 To Max_Objects If objekte(a,1) = 1 And objekte(a,14) = 1 Then x = objekte(a,3) x = x - SpielerX x = 400 + x y = objekte(a,4) y = y - SpielerY y = 300 - y If ImagesCollide (gr_spieler,400,300,0,objekte(a,2),x,y,0)Then allowed = 0 If objekte(a,15) = 1 Then If Ruf_Allianz > 19 Then allowed = 1 End If If objekte(a,15) = 2 Then If Ruf_Rebellen > 19 Then allowed = 1 End If If objekte(a,15) = 3 Then If Ruf_Handel > 19 Then allowed = 1 End If If objekte(a,15) = 4 Then allowed = 1 End If If objekte(a,22) = 1 Then If allowed = 1 Then modus$ = "gedockt_handel" Aktuelle_Station = a Preis_Sauerstoff = objekte(a,19) Preis_Baumaterialien = objekte(a,20) Preis_Waffen = objekte(a,21) End If End If If objekte(a,22) = 2 Then If allowed = 1 Then modus$ = "gedockt_werft" Aktuelle_Station = a End If End If End If End If Next End If FlushJoy End Function Function spiel_spieler_zeichnen() DrawImage gr_spieler,400,300,Spieler_Direction If SpielerX > 20000 Then Text 525,15,"Sichere Zone verlassen!" If SpielerX < 0 Then Text 525,15,"Sichere Zone verlassen!" If SpielerY > 20000 Then Text 525,15,"Sichere Zone verlassen!" If SpielerY < 0 Then Text 525,15,"Sichere Zone verlassen!" Color 255,255,255 End Function Function spiel_hud() If HUD_Blinking = 0 And Options_HUD = 1 And running_mode$ = "normal" Then DrawImage gr_hud_main,1,1 HUD_Blinking = 0 If deb_console = 1 Then console If running_mode$ = "normal" spiel_hud_hilfe spiel_hud_schilde_hp spiel_hud_speed spiel_hud_radar ;spiel_hud_X_Y spiel_hud_aggrowarning spiel_hud_waffe spiel_hud_credits spiel_hud_ruf spiel_hud_wingmen spiel_hud_version spiel_hud_fraktionen spiel_hud_krieg spiel_hud_level End Function Function spiel_hud_hilfe() If debug_hauptschleife < 200 Then Color 0,255,0 Text 20,80,"F1 für Hilfe" Color 255,255,255 End If End Function Function spiel_hud_schilde_hp() Color 0,200,255 Text 75,550,Spieler_Schilde+"/"+Spieler_Schiff_Schilde_Max Color 255,0,0 Text 75,570,Spieler_HP+"/"+Spieler_Schiff_HP_Max Color 255,255,255 DrawImage gr_hud_schild,10,550 DrawImage gr_hud_hp,10,570 End Function Function spiel_hud_speed() Color 255,0,0 y = 600 - (Spieler_Schiff_Max_Geschwindigkeit * 3) Line 170,600,170,y Line 169,600,169,y Line 171,600,171,y Color 0,255,0 y = 600 - (Spieler_Geschwindigkeit * 3) Line 169,600,169,y Line 170,600,170,y Line 171,600,171,y Color 255,255,255 End Function Function spiel_hud_radar() DrawImage gr_radar,350,500 ; Zentraler Punkt: 400X 550Y For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) x = x - SpielerX x = x / 100 x = x + 400 y = objekte(a,4) y = y - SpielerY y = y / 100 y = 550 - y If x > 350 And x < 450 And y > 500 And y < 600 Then Color 255,0,255 If objekte(a,14) = 1 Then Color 0,0,0 Plot x,y End If If objekte(a,11) = 1 Then Color 255,0,0 Plot x,y End If If objekte(a,2) = gr_asteroid6 Then Color 0,255,255 Plot x,y End If End If Color 0,0,0 Oval 398,548,6,6,0 Color 255,255,255 End If Next End Function Function spiel_hud_X_Y() Color 0,255,0 Text 230,540,SpielerX Text 230,580,SpielerY Color 255,255,255 End Function Function spiel_hud_aggrowarning() If deb_aggro_auf_spieler > 0 Then ;If sound = 1 Then PlaySound(s_aggro) DrawImage gr_aggrowarning,1,1 End If End Function Function spiel_hud_waffe() If Spieler_Schiff_Waffe$ = "Plasmawerfer" Then DrawImage gr_waffe1,750,550 If Spieler_Schiff_Waffe$ = "Ionenwerfer" Then DrawImage gr_waffe2,750,550 If Spieler_Schiff_Waffe$ = "Blauer Blitz" Then DrawImage gr_waffe3,750,550 End Function Function spiel_hud_credits() Text 750,460,spieler_credits End Function Function spiel_hud_ruf() Color 0,150,255 Text 735,350,"A: "+Ruf_Allianz Color 255,0,0 Text 735,365,"R: "+Ruf_Rebellen Color 255,255,0 Text 735,380,"H: "+Ruf_Handel Color 255,255,255 End Function Function spiel_hud_wingmen() Text 735,275,Spieler_Flotte+"/"+Spieler_Flotte_Soll End Function Function spiel_hud_version() Text 700,580,version$ End Function Function spiel_hud_fraktionen() ;Rahmen Line 10,20,68,20 Line 10,60,68,60 Line 10,20,10,60 Line 68,20,68,60 ;Balken Color 0,150,255 Line 11,30,Eroberung_Allianz * 2 + 11,30 Color 255,0,0 Line 11,40,Eroberung_Rebellen * 2 + 11,40 Color 255,255,0 Line 11,50,Eroberung_Handel * 2 + 11,50 Color 255,255,255 ;Text Color 0,150,255 Text 75,25,"Allianz" Text 165,25,Stationen_Allianz Text 220,25,Werften_Allianz Text 245,25,Handel_Allianz Text 285,25,Schiffe_Allianz Color 255,0,0 Text 75,35,"Rebellen" Text 165,35,Stationen_Rebellen Text 220,35,Werften_Rebellen Text 245,35,Handel_Rebellen Text 285,35,Schiffe_Rebellen Color 255,255,0 Text 75,45,"Handel" Text 165,45,Stationen_Handel Text 220,45,Werften_Handel Text 245,45,Handel_Handel Text 285,45,Schiffe_Handel Color 255,255,255 End Function Function spiel_hud_krieg() If Krieg = 1 Then Color 0,255,0 Text 350,25,"K R I E G" If Krieg_ParteiA = 1 Then Eins$ = "Allianz("+Krieg_PunkteA+")" If Krieg_ParteiA = 2 Then Eins$ = "Rebellen("+Krieg_PunkteA+")" If Krieg_ParteiA = 3 Then Eins$ = "Handelsfraktion("+Krieg_PunkteA+")" If Krieg_ParteiB = 1 Then Zwei$ = "Allianz("+Krieg_PunkteB+")" If Krieg_ParteiB = 2 Then Zwei$ = "Rebellen("+Krieg_PunkteB+")" If Krieg_ParteiB = 3 Then Zwei$ = "Handelsfraktion("+Krieg_PunkteB+")" Text 350,35,Eins$ + " gegen " + Zwei$ End If End Function Function spiel_hud_level() Color 255,255,255 Prozent = (Experience * 100) / NextLevel Text 240,540,Level + " ("+prozent+"%)" Text 225,580,Experience+" / "+NextLevel End Function Function spiel_sterne_zeichnen() For a = 1 To 500 x = sterne(a,1) y = sterne(a,2) Plot x,y Next For a = 1 To 100 xa = sterne_fast(a,1) ya = sterne_fast(a,2) Plot xa,ya Next End Function Function spiel_spieler_berechnen() BildX = spiel_spieler_berechnen_X(BildX,Spieler_Direction,Spieler_Geschwindigkeit) BildY = spiel_spieler_berechnen_Y(BildY,Spieler_Direction,Spieler_Geschwindigkeit) SpielerX = BildX + 400 SpielerY = BildY + 300 ;If Spieler_Geschwindigkeit > 0 Then ; If sound = 1 Then PlaySound(s_engine) ;End If End Function Function spiel_spieler_berechnen_X(x_alt,dir,speed) x_neu = x_alt If dir = 1 Or dir = 2 Or dir = 3 Then x_neu = x_alt + speed If dir = 5 Or dir = 6 Or dir = 7 Then x_neu = x_alt - speed Return x_neu End Function Function spiel_spieler_berechnen_Y(y_alt,dir,speed) y_neu = y_alt If dir = 7 Or dir = 0 Or dir = 1 Then y_neu = y_alt + speed If dir = 5 Or dir = 4 Or dir = 3 Then y_neu = y_alt - speed Return y_neu End Function Function spiel_sterne_berechnen() For a = 1 To 500 x = sterne(a,1) y = sterne(a,2) If a < 101 Then xa = sterne_fast(a,1) ya = sterne_fast(a,2) End If If a < 201 Then xb = sterne_medium(a,1) yb = sterne_medium(a,2) End If If Spieler_Direction = 0 Then y = y + Spieler_Geschwindigkeit If a < 101 Then ya = ya + Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb + Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 1 Then y = y + Spieler_Geschwindigkeit x = x - Spieler_Geschwindigkeit If a < 101 Then ya = ya + Spieler_Geschwindigkeit * 3 If a < 101 Then xa = xa - Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb + Spieler_Geschwindigkeit * 2 If a < 201 Then xb = xb - Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 2 Then x = x - Spieler_Geschwindigkeit If a < 101 Then xa = xa - Spieler_Geschwindigkeit * 3 If a < 201 Then xb = xb - Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 3 Then y = y - Spieler_Geschwindigkeit x = x - Spieler_Geschwindigkeit If a < 101 Then ya = ya - Spieler_Geschwindigkeit * 3 If a < 101 Then xa = xa - Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb - Spieler_Geschwindigkeit * 2 If a < 201 Then xb = xb - Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 4 Then y = y - Spieler_Geschwindigkeit If a < 101 Then ya = ya - Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb - Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 5 Then y = y - Spieler_Geschwindigkeit x = x + Spieler_Geschwindigkeit If a < 101 Then ya = ya - Spieler_Geschwindigkeit * 3 If a < 101 Then xa = xa + Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb - Spieler_Geschwindigkeit * 2 If a < 201 Then xb = xb + Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 6 Then x = x + Spieler_Geschwindigkeit If a < 101 Then xa = xa + Spieler_Geschwindigkeit * 3 If a < 201 Then xb = xb + Spieler_Geschwindigkeit * 2 End If If Spieler_Direction = 7 Then y = y + Spieler_Geschwindigkeit x = x + Spieler_Geschwindigkeit If a < 101 Then ya = ya + Spieler_Geschwindigkeit * 3 If a < 101 Then xa = xa + Spieler_Geschwindigkeit * 3 If a < 201 Then yb = yb + Spieler_Geschwindigkeit * 2 If a < 201 Then xb = xb + Spieler_Geschwindigkeit * 2 End If If x < 1 Then x = Rnd(800-Spieler_Geschwindigkeit,800) y = Rnd(600) End If If x > 800 Then x = Rnd(1,1 + Spieler_Geschwindigkeit) y = Rnd(600) End If If y < 1 Then y = Rnd(600-Spieler_Geschwindigkeit,600) x = Rnd(800) End If If y > 600 Then y = Rnd(1,1+Spieler_Geschwindigkeit) x = Rnd(800) End If If a < 101 Then If xa < 1 Then xa = Rnd(800 - Spieler_Geschwindigkeit * 3,800) ya = Rnd(600) End If If xa > 800 Then xa = Rnd(1,1 + Spieler_Geschwindigkeit * 3) ya = Rnd(600) End If If ya < 1 Then ya = Rnd(600 - Spieler_Geschwindigkeit * 3,600) xa = Rnd(800) End If If ya > 600 Then ya = Rnd(1,1 + Spieler_Geschwindigkeit * 3) xa = Rnd(800) End If End If If a < 201 Then If xb < 1 Then xb = Rnd(800 - Spieler_Geschwindigkeit * 2,800) yb = Rnd(600) End If If xb > 800 Then xb = Rnd(1,1+Spieler_Geschwindigkeit * 2) yb = Rnd(600) End If If yb < 1 Then yb = Rnd(600 - Spieler_Geschwindigkeit * 2,600) xb = Rnd(800) End If If yb > 600 Then yb = Rnd(1,1 + Spieler_Geschwindigkeit * 2) xb = Rnd(800) End If End If Plot x,y sterne(a,1) = x sterne(a,2) = y If a < 101 Then Plot xa,ya sterne_fast(a,1) = xa sterne_fast(a,2) = ya End If If a < 201 Then Plot xb,yb sterne_medium(a,1) = xb sterne_medium(a,2) = yb End If Next End Function Function spiel_objekte_berechnen() For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) y = objekte(a,4) dir = objekte(a,5) speed = objekte(a,6) x_neu = spiel_objekte_berechnen_X(x,dir,speed) y_neu = spiel_objekte_berechnen_Y(y,dir,speed) objekte(a,3) = x_neu objekte(a,4) = y_neu End If Next End Function Function spiel_objekte_berechnen_X(x_alt,dir,speed) x_neu = x_alt If dir = 1 Or dir = 2 Or dir = 3 Then x_neu = x_alt + speed If dir = 5 Or dir = 6 Or dir = 7 Then x_neu = x_alt - speed Return x_neu End Function Function spiel_objekte_berechnen_Y(y_alt,dir,speed) y_neu = y_alt If dir = 7 Or dir = 0 Or dir = 1 Then y_neu = y_alt + speed If dir = 5 Or dir = 4 Or dir = 3 Then y_neu = y_alt - speed Return y_neu End Function Function spiel_objekte_lebensdauer() For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,12) = 1 Then objekte(a,13) = objekte(a,13) - 1 If objekte(a,13) = 0 Then objekte(a,1) = 0 If objekte(a,2) = gr_asteroid1 Then spiel_objekte_neuer_asteroid(1,a) End If End If End If End If Next End Function Function spiel_objekte_ki() For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 1 Then spiel_objekte_ki_freelance(a) End If If objekte(a,16) = 2 Then spiel_objekte_ki_trade End If If objekte(a,16) = 3 Then spiel_objekte_ki_aggro End If If objekte(a,16) = 4 Then spiel_objekte_ki_wingmen End If End If End If Next End Function Function spiel_objekte_ki_freelance(a) rest = objekte(a,17) If rest = 0 Then alt = objekte(a,5) objekte(a,5) = Rnd(0,7) If objekte(a,3) > 20000 Then objekte(a,5) = 6 If objekte(a,3) < 0 Then objekte(a,5) = 2 If objekte(a,4) > 20000 Then objekte(a,5) = 4 If objekte(a,4) < 0 Then objekte(a,5) = 0 If objekte(a,2) = gr_enemyship Then objekte(a,6) = Rnd(1,12) If objekte(a,2) = gr_enemyship2 Then objekte(a,6) = Rnd(1,20) If objekte(a,2) = gr_enemyship3 Then objekte(a,6) = 2 If objekte(a,2) = gr_enemyship3 Then neu = Rnd(alt - 1,alt + 1) If neu = 9 Then neu = 0 If neu = -1 Then neu = 9 objekte(a,17) = neu End If objekte(a,17) = Rnd(50,150) rest = objekte(a,17) End If rest = rest - 1 x = objekte(a,3) y = objekte(a,4) dir = objekte(a,5) speed = objekte(a,6) neue_x = spiel_objekte_berechnen_X(x,dir,speed) neue_y = spiel_objekte_berechnen_Y(y,dir,speed) objekte(a,3) = neue_x objekte(a,4) = neue_y objekte(a,17) = rest End Function Function spiel_objekte_ki_trade() For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 2 Then x = objekte(a,23) y = objekte(a,24) ind = spiel_objekte_ki_trade_find_index_of_station(x,y) If ImagesCollide(objekte(a,2),objekte(a,3),objekte(a,4),0,objekte(ind,2),objekte(ind,3),objekte(ind,4),0) Then spiel_objekte_ki_trade_neuen_preis_berechnen(ind) fraktion = ind points = Rnd(5,10) spiel_fraktion_bekommt_punkte(fraktion,points) spiel_objekte_ki_trade_neue_handelsroute_berechnen(a) End If spiel_objekte_ki_trade_check_route(a) End If End If End If Next End Function Function spiel_objekte_ki_trade_find_index_of_station(findX,findY) x = findX y = findY ind = 0 check = 0 For a = 1 To Max_Objects If check = 0 Then If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,22) = 1 Then If objekte(a,3) = x Then If objekte(a,4) = y Then ind = a check = 1 End If End If End If End If End If End If Next Return ind End Function Function spiel_objekte_ki_trade_neuen_preis_berechnen(station) ware = Rnd(1,3) wert = Rnd(-6,9) If ware = 1 Then objekte(station,19) = objekte(station,19) + wert If ware = 2 Then objekte(station,20) = objekte(station,20) + wert If ware = 3 Then objekte(station,21) = objekte(station,21) + wert If objekte(station,19) < 0 Then objekte(a,19) = 0 If objekte(station,20) < 0 Then objekte(a,20) = 0 If objekte(station,21) < 0 Then objekte(a,21) = 0 If objekte(station,15) = 4 Then wert = Rnd(3,30) spieler_credits = spieler_credits + wert Eigene_Handelsstation_Income = Eigene_Handelsstation_Income + wert End If End Function Function spiel_objekte_ki_trade_neue_handelsroute_berechnen(index) check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,14) = 1 Then If objekte(zufall,22) = 1 Then x = objekte(zufall,3) y = objekte(zufall,4) check = 1 End If End If End If Until check = 1 objekte(index,23) = x objekte(index,24) = y End Function Function spiel_objekte_ki_trade_check_route(schiff) x_schiff = objekte(schiff,3) y_schiff = objekte(schiff,4) x_station = objekte(schiff,23) y_station = objekte(schiff,24) dirX = 0 ;1=Links 2=Rechts dirY = 0 ;1=Unten 2=Oben dir = 0 entfernung = 0 If x_schiff < x_station - 20 Then dirX = 2 entfernung = entfernung + x_station - x_schiff End If If x_schiff > x_station + 20 Then dirX = 1 entfernung = entfernung + x_schiff - x_station End If If y_schiff < y_station - 20 Then dirY = 2 entfernung = entfernung + y_station - y_schiff End If If y_schiff > y_station + 20 Then dirY = 1 entfernung = entfernung + y_schiff - y_station End If If dirX = 1 Then If dirY = 0 Then dir = 6 If dirY = 1 Then dir = 5 If dirY = 2 Then dir = 7 End If If dirX = 2 Then If dirY = 0 Then dir = 2 If dirY = 1 Then dir = 3 If dirY = 2 Then dir = 1 End If If dirX = 0 Then If dirY = 0 Then dir = 4 ;eigentlich nicht möglich (imagescollide) If dirY = 1 Then dir = 4 If dirY = 2 Then dir = 0 End If If entfernung > 0 Then speed = 1 If entfernung > 180 Then speed = 2 If entfernung > 250 Then speed = 3 If entfernung > 300 Then speed = 4 If entfernung > 340 Then speed = 5 If entfernung > 390 Then speed = 8 If entfernung > 450 Then Speed = 10 If entfernung > 520 Then speed = 12 If entfernung > 600 Then speed = 13 If entfernung > 700 Then speed = 15 If objekte(schiff,2) = gr_enemyship3 Then speed = 2 objekte(schiff,5) = dir objekte(schiff,6) = speed End Function Function spiel_objekte_ki_aggro() For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 3 Then zielindex = objekte(a,25) ziel_vorhanden = spiel_objekte_ki_aggro_check_enemy(zielindex) If ziel_vorhanden = 0 Then spiel_objekte_ki_aggro_neues_ziel(a) End If If ziel_vorhanden = 1 Then spiel_objekte_ki_aggro_check_route(a) End If If ziel_vorhanden = 2 Then spiel_objekte_ki_aggro_check_route(a) End If End If End If End If Next End Function Function spiel_objekte_ki_aggro_check_enemy(index) vorhanden = 0 ende = 0 If index = 999 Then vorhanden = 2 ende = 1 End If If ende = 0 Then If index < 999 Then If objekte(index,1) = 1 Then If objekte(index,11) = 1 Then vorhanden = 1 End If End If End If End If Return vorhanden End Function Function spiel_objekte_ki_aggro_neues_ziel(index) z = Rand(1,5) If z > 3 Then z = 3 ;If objekte(index,15) = 4 Then z = 4 If objekte(index,2) = gr_enemyship3 And z = 2 Then z = 1 If z = 1 Then ;Neuer Modus FREELANCE objekte(index,1) = 1 ;objekte(index,2) = gr_enemyship ;3 und 4 entfernt objekte(index,5) = Rnd(0,7) objekte(index,6) = Rnd(3,12) If objekte(index,2) = gr_enemyship3 Then objekte(index,6) = 2 objekte(index,7) = 1 ;8 entfert ;9 entfernt objekte(index,10) = 1 objekte(index,11) = 1 objekte(index,12) = 0 objekte(index,13) = 0 objekte(index,14) = 0 ;15 entfernt objekte(index,16) = 1 objekte(index,17) = Rnd(25,75) objekte(index,18) = 0 objekte(index,19) = 0 objekte(index,20) = 0 objekte(index,21) = 0 objekte(index,22) = 0 objekte(index,23) = 0 objekte(index,24) = 0 objekte(index,25) = 0 objekte(index,26) = 0 ;27 entfernt End If If z = 2 Then ;Neuer Modus TRADE check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,14) = 1 Then If objekte(zufall,22) = 1 Then If objekte(zufall,15) < 4 Then x = objekte(zufall,3) y = objekte(zufall,4) check = 1 End If End If End If End If Until check = 1 objekte(index,1) = 1 ;objekte(index,2) = gr_enemyship ;3 und 4 entfernt objekte(index,5) = 0 objekte(index,6) = 0 objekte(index,7) = 1 ;8 entfernt ;9 entfernt objekte(index,10) = 1 objekte(index,11) = 1 objekte(index,12) = 0 objekte(index,13) = 0 objekte(index,14) = 0 ;15 entfernt objekte(index,16) = 2 objekte(index,17) = 0 objekte(index,18) = 0 objekte(index,19) = 0 objekte(index,20) = 0 objekte(index,21) = 0 objekte(index,22) = 0 objekte(index,23) = x objekte(index,24) = y objekte(index,25) = 0 objekte(index,26) = 0 ;27 entfernt End If If z = 3 Then ;Neuen Gegner suchen ende = 0 Repeat ziel = Rnd(1,Max_Objects) If objekte(ziel,1) = 1 Then If objekte(ziel,11) = 1 Then If objekte(ziel,15) <> objekte(index,15) Then objekte(index,25) = ziel ende = 1 End If End If End If Until ende = 1 aggro = Rnd(1,1000) If aggro = 338 Then objekte(index,25) = 999 End If End If If z = 4 Then ;Wingmen Modus objekte(index,16) = 4 End If End Function Function spiel_objekte_ki_aggro_check_route(index) zielindex = objekte(index,25) x = objekte(index,3) y = objekte(index,4) If zielindex < 999 Then zielx = objekte(zielindex,3) ziely = objekte(zielindex,4) End If If zielindex = 999 Then zielx = SpielerX ziely = SpielerY End If dirX = 0 ;1=Links 2=Rechts dirY = 0 ;1=Unten 2=Oben dir = 0 entfernung = 0 If x < zielx - 10 Then dirX = 2 entfernung = entfernung + zielx - x End If If x > zielx + 10 Then dirX = 1 entfernung = entfernung + x - zielx End If If y < ziely - 10 Then dirY = 2 entfernung = entfernung + ziely - y End If If y > ziely + 10 Then dirY = 1 entfernung = entfernung + y - ziely End If If dirX = 1 Then If dirY = 0 Then dir = 6 If dirY = 1 Then dir = 5 If dirY = 2 Then dir = 7 End If If dirX = 2 Then If dirY = 0 Then dir = 2 If dirY = 1 Then dir = 3 If dirY = 2 Then dir = 1 End If If dirX = 0 Then If dirY = 0 Then dir = 4 ;eigentlich nicht möglich (imagescollide) If dirY = 1 Then dir = 4 If dirY = 2 Then dir = 0 End If If entfernung > 0 Then speed = 1 If entfernung > 180 Then speed = 3 If entfernung > 250 Then speed = 5 If entfernung > 300 Then speed = 7 If entfernung > 340 Then speed = 8 If entfernung > 390 Then speed = 11 If entfernung > 450 Then Speed = 12 If entfernung > 520 Then speed = 15 If entfernung > 600 Then speed = 16 If entfernung > 700 Then speed = 18 If entfernung < 400 Then spiel_objekte_ki_aggro_fire(index) If objekte(index,2) = gr_enemyship3 Then speed = 2 objekte(index,5) = dir objekte(index,6) = speed If objekte(index,3) > 20000 Then objekte(index,16) = 1 objekte(index,17) = 10 objekte(index,25) = 0 deb_aggroTOfree = deb_aggroTOfree + 1 End If If objekte(index,4) > 20000 Then objekte(index,16) = 1 objekte(index,17) = 10 objekte(index,25) = 0 deb_aggroTOfree = deb_aggroTOfree + 1 End If If objekte(index,3) < 0 Then objekte(index,16) = 1 objekte(index,17) = 10 objekte(index,25) = 0 deb_aggroTOfree = deb_aggroTOfree + 1 End If If objekte(index,3) < 0 Then objekte(index,16) = 1 objekte(index,17) = 10 objekte(index,25) = 0 deb_aggroTOfree = deb_aggroTOfree + 1 End If End Function Function spiel_objekte_ki_aggro_fire(index) z = Rnd(1,200) If z = 55 Then If objekte(index,27) = 1 Then ;Plasma spiel_sound_check(index,1) speed = 30 staerke = 20 + objekte(index,28) destructable = 0 grafik = gr_waffe1 End If If objekte(index,27) = 2 Then ;Ionen spiel_sound_check(index,2) speed = 23 staerke = 30 + objekte(index,28) destructable = 0 grafik = gr_waffe2 If objekte(index,2) = gr_enemyship3 Then speed = 30 staerke = 50 + objekte(index,28) destructable = 0 grafik = gr_waffe2 End If End If If objekte(index,27) = 3 Then ;Blitz spiel_sound_check(index,3) speed = 40 staerke = 10 + objekte(index,28) destructable = 0 grafik = gr_waffe3 End If anzahl = 1 zusatz = 50 If objekte(index,2) = gr_enemyship3 Then anzahl = 1 zusatz = 120 End If spiel_objekte_ki_aggro_fire_neuer_schuss(anzahl,zusatz,speed,staerke,destructable,grafik,index) End If End Function Function spiel_sound_check(index,was) If sound = 1 Then x = objekte(index,3) y = objekte(index,4) If x > BildX - 200 Then If x < BildX + 1000 Then If y > BildY - 200 Then If y < BildY + 800 Then If was = 1 Then PlaySound(s_plasma) If was = 2 Then PlaySound(s_ionen) If was = 3 Then PlaySound(s_blitz) If was = 4 Then z = Rnd(1,2) If z = 1 Then PlaySound(s_hit1) If z = 2 Then PlaySound(s_hit2) End If If was = 5 Then z = Rnd(1,2) If z = 1 Then PlaySound(s_explosion1) If z = 2 Then PlaySound(s_explosion2) End If End If End If End If End If End If End Function Function spiel_objekte_ki_aggro_fire_neuer_schuss(anz,zu,speed,staerke,destructable,grafik,index) ende = 0 Repeat For a = 1 To Max_Objects If objekte(a,1) = 0 Then If ende = 0 Then If objekte(index,5) = 0 Then xplus = 0 yplus = zu End If If objekte(index,5) = 1 Then xplus = zu yplus = zu End If If objekte(index,5) = 2 Then xplus = zu yplus = 0 End If If objekte(index,5) = 3 Then xplus = zu yplus = -zu End If If objekte(index,5) = 4 Then xplus = 0 yplus = -zu End If If objekte(index,5) = 5 Then xplus = -zu yplus = -zu End If If objekte(index,5) = 6 Then xplus = -zu yplus = 0 End If If objekte(index,5) = 7 Then xplus = -zu yplus = zu End If ende = 1 objekte(a,1) = 1 objekte(a,2) = grafik objekte(a,3) = objekte(index,3) + xplus objekte(a,4) = objekte(index,4) + yplus objekte(a,5) = objekte(index,5) objekte(a,6) = speed objekte(a,7) = destructable objekte(a,8) = staerke objekte(a,9) = 1 objekte(a,10) = 1 objekte(a,11) = 0 objekte(a,12) = 1 objekte(a,13) = 50 objekte(a,14) = 0 objekte(a,15) = 0 objekte(a,16) = 0 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = index objekte(a,27) = 0 objekte(a,28) = 0 anz = anz - 1 End If End If Next Until anz = 0 End Function Function spiel_objekte_ki_wingmen() For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 4 Then spiel_objekte_ki_wingmen_check_route(a) spiel_objekte_ki_wingmen_check_aggro(a) End If End If End If Next End Function Function spiel_objekte_ki_wingmen_check_route(schiff) x_schiff = objekte(schiff,3) y_schiff = objekte(schiff,4) x_station = Rnd(SpielerX - 20,SpielerX+20) y_station = Rnd(SpielerY - 20,SpielerY+20) dirX = 0 ;1=Links 2=Rechts dirY = 0 ;1=Unten 2=Oben dir = 0 entfernung = 0 If x_schiff < x_station - 30 Then dirX = 2 entfernung = entfernung + x_station - x_schiff End If If x_schiff > x_station + 30 Then dirX = 1 entfernung = entfernung + x_schiff - x_station End If If y_schiff < y_station - 30 Then dirY = 2 entfernung = entfernung + y_station - y_schiff End If If y_schiff > y_station + 30 Then dirY = 1 entfernung = entfernung + y_schiff - y_station End If If dirX = 1 Then If dirY = 0 Then dir = 6 If dirY = 1 Then dir = 5 If dirY = 2 Then dir = 7 End If If dirX = 2 Then If dirY = 0 Then dir = 2 If dirY = 1 Then dir = 3 If dirY = 2 Then dir = 1 End If If dirX = 0 Then If dirY = 0 Then dir = 4 ;eigentlich nicht möglich (imagescollide) If dirY = 1 Then dir = 4 If dirY = 2 Then dir = 0 End If speed = 0 If entfernung > 180 Then speed = 4 If entfernung > 250 Then speed = 6 If entfernung > 300 Then speed = 8 If entfernung > 340 Then speed = 10 If entfernung > 390 Then speed = 12 If entfernung > 450 Then Speed = 14 If entfernung > 520 Then speed = 16 If entfernung > 600 Then speed = 18 If entfernung > 700 Then speed = 20 objekte(schiff,5) = dir objekte(schiff,6) = speed End Function Function spiel_objekte_ki_wingmen_check_aggro(schiff) For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 3 Then If objekte(a,25) = 999 Then objekte(schiff,16) = 3 objekte(schiff,25) = a End If End If End If End If Next End Function Function spiel_objekte_neuer_asteroid(typ,index) objekte(index,1) = 1 If typ = 1 Then objekte(index,2) = gr_asteroid1 If typ = 2 Then objekte(index,2) = gr_asteroid2 If typ = 3 Then objekte(index,2) = gr_asteroid3 If typ = 4 Then objekte(index,2) = gr_asteroid4 If typ = 5 Then objekte(index,2) = gr_asteroid5 objekte(index,3) = Rnd(100,20000) objekte(index,4) = Rnd(100,20000) objekte(index,5) = Rnd(1,8) objekte(index,6) = Rnd(3,12) objekte(index,7) = 1 objekte(index,8) = 20 objekte(index,9) = 50 objekte(index,10) = 1 objekte(index,11) = 0 objekte(index,12) = 1 objekte(index,13) = Rnd(700,1000) objekte(index,14) = 0 objekte(index,15) = 0 objekte(index,16) = 0 objekte(index,17) = 0 objekte(index,18) = 0 objekte(index,19) = 0 objekte(index,20) = 0 objekte(index,21) = 0 objekte(index,22) = 0 objekte(index,23) = 0 objekte(index,24) = 0 objekte(index,25) = 0 objekte(index,26) = 0 objekte(index,27) = 0 objekte(index,28) = 0 End Function Function spiel_objekte_zeichnen() For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) y = objekte(a,4) If x > BildX - 200 Then If x < BildX + 1000 Then If y > BildY - 200 Then If y < BildY + 800 Then x = x - SpielerX x = 400 + x y = y - SpielerY y = 300 - y If objekte(a,11) = 0 Then DrawImage objekte(a,2),x,y End If End If End If End If End If Next For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) y = objekte(a,4) If x > BildX - 200 Then If x < BildX + 1000 Then If y > BildY - 200 Then If y < BildY + 800 Then x = x - SpielerX x = 400 + x y = y - SpielerY y = 300 - y ;If objekte(a,11) = 0 Then DrawImage objekte(a,2),x,y If objekte(a,11) = 1 Then DrawImage objekte(a,2),x,y,objekte(a,5) If Options_Enemyinfo = 1 Then If objekte(a,15) = 1 Then Color 0,100,255 If objekte(a,15) = 2 Then Color 255,0,0 If objekte(a,15) = 3 Then Color 255,255,0 If objekte(a,15) = 4 Then Color 0,255,0 If objekte(a,15) = 1 Then Text x-20,y-85,"Allianz" If objekte(a,15) = 2 Then Text x-20,y-85,"Rebellen" If objekte(a,15) = 3 Then Text x-20,y-85,"Handelsfraktion" If objekte(a,15) = 4 Then Text x-20,y-85,"Spielerfraktion" If objekte(a,16) = 1 Then Text x-20,y-70,"Freelancer" If objekte(a,16) = 2 Then Text x-20,y-70,"Händler" If objekte(a,16) = 3 Then Text x-20,y-70,"Im Angriff" If objekte(a,16) = 4 Then Text x-20,y-70,"Wingman" Text x-20,y-55,"Kills: "+objekte(a,28) hp = objekte(a,9) / 10 max = 30 If objekte(a,2) = gr_enemyship3 Then hp = objekte(a,9) / 200 max = 100 End If Color 255,0,0 Line x-20,y-40,x-20+max,y-40 Color 0,255,0 Line x-20,y-40,x-20+hp,y-40 Color 255,255,255 End If End If End If End If End If End If End If Next End Function Function spiel_explosionen_zeichnen() For a = 1 To 100 If explosionen(a,1) = 1 Then x = explosionen(a,3) y = explosionen(a,4) If x > BildX - 200 Then If x < BildX + 1000 Then If y > BildY - 200 Then If y < BildY + 800 Then x = x - SpielerX x = 400 + x y = y - SpielerY y = 300 - y DrawImage explosionen(a,2),x,y,explosionen(a,5) End If End If End If End If tilerow = explosionen(a,5) + 1 If tilerow = 5 Then test = test + 1 tilerow = 0 explosionen(a,1) = 0 End If explosionen(a,5) = tilerow End If Next End Function Function spiel_create_world() spiel_create_world_variablen spiel_create_world_objekte_leeren spiel_create_world_sterne spiel_create_world_asteroiden(1,200) spiel_create_world_stationen(201,205,1,1) spiel_create_world_stationen(207,211,1,2) spiel_create_world_stationen(212,214,2,1) spiel_create_world_stationen(215,221,2,2) spiel_create_world_stationen(222,228,3,1) spiel_create_world_stationen(229,231,3,2) spiel_create_world_ships_freelance(232,241,1) spiel_create_world_ships_freelance(242,246,2) spiel_create_world_ships_freelance(247,251,3) spiel_create_world_ships_trade(252,266,1) spiel_create_world_ships_trade(267,276,2) spiel_create_world_ships_trade(277,296,3) spiel_create_world_ships_aggro(297,301,1) spiel_create_world_ships_aggro(302,316,2) spiel_create_world_ships_aggro(317,321,3) spiel_create_world_ships_schlachtschiff(322,1,10000,15000) spiel_create_world_ships_schlachtschiff(323,2,15000,5000) spiel_create_world_ships_schlachtschiff(324,3,5000,5000) ;spiel_create_world_asteroiden(325,450) ;spiel_create_world_debug modus$ = "spiel" End Function Function spiel_create_world_variablen() ;cheats = 0 ;sound = 1 version$ = "Version 0.98" modus$ = "hauptmenu" framelimiter = CreateTimer(25) BildX = 10000 BildY = 10000 SpielerX = BildX + 400 SpielerY = BildY + 300 Spieler_Direction = 0 Spieler_Geschwindigkeit = 0 Spieler_Schiff_Max_Geschwindigkeit = 11 Spieler_Schiff_Name$ = "Allrounder" Spieler_Schiff_Schilde_Max = 500 Spieler_Schiff_HP_Max = 350 Spieler_Schiff_Rumpfstaerke = 4 Spieler_Schiff_Waffe$ = "Blauer Blitz" Spieler_Schiff_Laderaum_Max = 6 Spieler_Schiff_Modpacks = 0 Spieler_Handel_Sauerstoff = 0 Spieler_Handel_Baumaterialien = 0 Spieler_Handel_Waffen = 0 Stats_Einnahmen = 0 Stats_Ausgaben = 0 Spieler_Schilde = Spieler_Schiff_Schilde_Max Spieler_HP = Spieler_Schiff_HP_Max Aktuelle_Station = 0 Preis_Sauerstoff = 0 Preis_Baumaterialien = 0 Preis_Waffen = 0 Gesamtwert_Sauerstoff = 0 Gesamtwert_Baumaterialien = 0 Gesamtwert_Waffen = 0 new_ships = 0 new_ships_timer = 0 spieler_credits = 1500 KI_station_collision_check = 0 KI_Anzahl_Freelance = 0 KI_Anzahl_Trade = 0 KI_Anzahl_Aggro = 0 Max_Objects = 1000 Ruf_Allianz = 50 Ruf_Rebellen = 50 Ruf_Handel = 50 Stationen_Allianz = 0 Stationen_Rebellen = 0 Stationen_Handel = 0 Handel_Allianz = 0 Handel_Rebellen = 0 Handel_Handel = 0 Schiffe_Allianz = 0 Schiffe_Rebellen = 0 Schiffe_Handel = 0 Punkte_Allianz = 0 Punkte_Rebellen = 0 Punkte_Handel = 0 Karte_Modus = 0 Eigene_Handelsstation = 0 Eigene_Handelsstation_Income = 0 Eigene_Werft = 0 Gespeichert = 0 Geladen = 0 Spieler_Wingmen_Max = 0 Spieler_Wingmen = 0 Punkte_Spieler = 0 Spieler_Eigene_Station_Kollision = 0 debug_hauptschleife = 0 deb_asteroidenfelder = 0 deb_console = 0 deb_aggro_auf_spieler = 0 deb_schlachtzug = 0 deb_besitzwechsel = 0 deb_aggroTOfree = 0 deb_ships = 0 explosionen_free = 0 Area$ = "Keine" Eroberung_Allianz = 28 Eroberung_Rebellen = 28 Eroberung_Handel = 28 COM_Rebellen_Ruf_Warnung = 0 COM_Allianz_Ruf_Warnung = 0 COM_Handel_Ruf_Warnung = 0 COM_Flagge = 0 COM_MessageA$ = "none" COM_MessageB$ = "none" HUD_Blinking = 0 Options_HUD = 1 Options_Enemyinfo = 1 gr_spieler = gr_Schifftyp1 Krieg = 0 Krieg_ParteiA = 0 Krieg_ParteiB = 0 Krieg_Dauer = 0 Krieg_Dauer_Aggro_Check = 0 Krieg_PunkteA = 0 Krieg_PunkteB = 0 Schilde_Regen = 0 Bonus_HP = 0 Bonus_Laderaum = 0 Bonus_Damage = 0 Bonus_Rumpfstaerke = 0 Level = 0 Experience = 0 NextLevel = 100 ExpWert = 100 Spieler_Schiff_HP_Grundwert = 350 Spieler_Schiff_Laderaum_Grundwert = 6 Spieler_Schiff_Rumpfstaerke_Grundwert = 4 debug_krieg_starten = 0 If running_mode$ = "debug" Then deb_console = 1 End If End Function Function spiel_create_world_objekte_leeren() For a = 1 To Max_Objects objekte(a,1) = 0 Next For a = 1 To 100 explosionen(a,1) = 0 Next End Function Function spiel_create_world_sterne() For a = 1 To 500 x = Rnd(0,800) y = Rnd(0,600) sterne(a,1) = x sterne(a,2) = y Next For a = 1 To 100 xa = Rnd(0,800) ya = Rnd(0,600) sterne_fast(a,1) = xa sterne_fast(a,2) = ya Next For a = 1 To 200 xa = Rnd(0,800) ya = Rnd(0,600) sterne_medium(a,1) = xa sterne_medium(a,2) = ya Next End Function Function spiel_create_world_asteroiden(von,bis) For a = von To bis objekte(a,1) = 1 z = Rnd(1,5) If z = 1 Then gra = gr_asteroid1 If z = 2 Then gra = gr_asteroid2 If z = 3 Then gra = gr_asteroid3 If z = 4 Then gra = gr_asteroid4 If z = 5 Then gra = gr_asteroid5 objekte(a,2) = gra objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = Rnd(1,8) objekte(a,6) = Rnd(3,12) objekte(a,7) = 1 objekte(a,8) = 20 objekte(a,9) = 50 objekte(a,10) = 1 objekte(a,11) = 0 objekte(a,12) = 1 objekte(a,13) = Rnd(100,1000) objekte(a,14) = 0 objekte(a,15) = 0 objekte(a,16) = 0 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 0 objekte(a,28) = 0 Next End Function Function spiel_create_world_stationen(von,bis,fraktion,art) For a = von To bis objekte(a,1) = 1 x = Rnd(1,2) If x = 1 Then objekte(a,2) = gr_station1 Else objekte(a,2) = gr_planet1 objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = 0 objekte(a,6) = 0 objekte(a,7) = 0 objekte(a,8) = 50 objekte(a,9) = 0 objekte(a,10) = 0 objekte(a,11) = 0 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 1 objekte(a,15) = fraktion objekte(a,16) = 0 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = Rnd(10,35) objekte(a,20) = Rnd(50,75) objekte(a,21) = Rnd(90,125) objekte(a,22) = art objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 0 objekte(a,28) = 0 Next End Function Function spiel_create_world_ships_freelance(von,bis,fraktion) For a = von To bis objekte(a,1) = 1 objekte(a,2) = gr_enemyship2 objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = Rnd(0,7) objekte(a,6) = Rnd(3,12) objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = fraktion objekte(a,16) = 1 objekte(a,17) = Rnd(40,90) objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 1 objekte(a,28) = 0 Next End Function Function spiel_create_world_ships_trade(von,bis,fraktion) For a = von To bis check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,14) = 1 Then If objekte(zufall,22) = 1 Then If objekte(zufall,15) < 4 Then x = objekte(zufall,3) y = objekte(zufall,4) check = 1 End If End If End If End If Until check = 1 objekte(a,1) = 1 objekte(a,2) = gr_enemyship2 objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = 0 objekte(a,6) = 0 objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = fraktion objekte(a,16) = 2 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = x objekte(a,24) = y objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 3 objekte(a,28) = 0 Next End Function Function spiel_create_world_ships_aggro(von,bis,fraktion) For a = von To bis check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,11) = 1 Then index = zufall check = 1 If objekte(zufall,15) = fraktion Then check = 0 End If End If Until check = 1 zufall = Rnd(1,600) If zufall = 338 Then index = 999 ;Index für Spieler MUHA! :) objekte(a,1) = 1 objekte(a,2) = gr_enemyship objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = 0 objekte(a,6) = 0 objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 ; Repeat objekte(a,15) = fraktion ; Until objekte(a,15) <> objekte(index,15) objekte(a,16) = 3 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = x objekte(a,24) = y objekte(a,25) = index objekte(a,26) = 0 objekte(a,27) = 2 objekte(a,28) = 0 Next End Function Function spiel_create_world_ships_schlachtschiff(a,f,x,y) objekte(a,1) = 1 objekte(a,2) = gr_enemyship3 objekte(a,3) = x objekte(a,4) = y objekte(a,5) = 3 objekte(a,6) = 2 objekte(a,7) = 1 objekte(a,8) = 75 objekte(a,9) = 20000 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = f objekte(a,16) = 1 objekte(a,17) = 50 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 2 objekte(a,28) = 0 End Function Function spiel_kollisionen_berechnen() run = 1 If running_mode$ = "debug" Then run = 0 If run = 1 Then spiel_kollisionen_berechnen_raumschiff_objekt spiel_kollisionen_berechnen_objekt_objekt End Function Function spiel_kollisionen_berechnen_raumschiff_objekt() ;Spieler kollidiert mit Objekt: Spieler_Eigene_Station_Kollision = 0 For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) x = x - SpielerX x = 400 + x y = objekte(a,4) y = y - SpielerY y = 300 - y If ImagesCollide (gr_spieler,400,300,0,objekte(a,2),x,y,0) And objekte(a,14) = 1 Then ;If sound = 1 Then PlaySound(s_com) If objekte(a,15) = 1 Then If Ruf_Allianz < 20 Then DrawImage gr_hud_com,1,1 Text 525,15,"Dein Ruf ist zu schlecht! Hau ab!" End If If Ruf_Allianz > 19 Then DrawImage gr_hud_com,1,1 Text 525,15,"Station bereit zum docken!" End If DrawImage gr_flagge_allianz,20,80 Color 0,100,255 Text 20,150,"Allianz" Text 20,170,"Ruf: "+Ruf_Allianz If objekte(a,22) = 1 Then Text 20,190,"Handelsstation" If objekte(a,22) = 2 Then Text 20,190,"Werft" End If If objekte(a,15) = 2 Then If Ruf_Rebellen < 20 Then DrawImage gr_hud_com,1,1 Text 525,15,"Dein Ruf ist zu schlecht! Hau ab!" End If If Ruf_Rebellen > 19 Then DrawImage gr_hud_com,1,1 Text 525,15,"Station bereit zum docken!" End If DrawImage gr_flagge_rebellen,20,80 Color 255,0,0 Text 20,150,"Rebellen" Text 20,170,"Ruf: "+Ruf_Rebellen If objekte(a,22) = 1 Then Text 20,190,"Handelsstation" If objekte(a,22) = 2 Then Text 20,190,"Werft" End If If objekte(a,15) = 3 Then If Ruf_Handel < 20 Then DrawImage gr_hud_com,1,1 Text 525,15,"Dein Ruf ist zu schlecht! Hau ab!" End If If Ruf_Handel > 19 Then DrawImage gr_hud_com,1,1 Text 525,15,"Station bereit zum docken!" End If DrawImage gr_flagge_handel,20,80 Color 255,255,0 Text 20,150,"Handelsflotte" Text 20,170,"Ruf: "+Ruf_Handel If objekte(a,22) = 1 Then Text 20,190,"Handelsstation" If objekte(a,22) = 2 Then Text 20,190,"Werft" End If If objekte(a,15) = 4 Then DrawImage gr_hud_com,1,1 Text 525,15,"Willkommen Commander!" Color 0,255,0 Text 20,80,"Eigene Station" If objekte(a,22) = 1 Text 20,120,"Bisherige Einnahmen: "+Eigene_Handelsstation_Income + " credits." Text 20,140,"Fraktionspunkte: "+Punkte_Spieler Text 20,220,"Handelsstation" Spieler_Eigene_Station_Kollision = 1 End If End If Color 255,255,255 End If If ImagesCollide (gr_spieler,400,300,0,objekte(a,2),x,y,0) And objekte(a,10) = 1 Then HUD_Blinking = 1 damage = objekte(a,8) Text 340,265,damage + " dmg" If objekte(a,7) = 1 Then objekt_hp = objekte(a,9) objekt_hp = objekt_hp - Spieler_Schiff_Rumpfstaerke If objekt_hp < 1 Then objekte(a,1) = 0 If objekte(a,2) = gr_asteroid1 Then spiel_objekte_neuer_asteroid(1,a) If objekte(a,2) = gr_asteroid2 Then spiel_objekte_neuer_asteroid(2,a) If objekte(a,2) = gr_asteroid3 Then spiel_objekte_neuer_asteroid(3,a) If objekte(a,2) = gr_asteroid4 Then spiel_objekte_neuer_asteroid(4,a) If objekte(a,2) = gr_asteroid5 Then spiel_objekte_neuer_asteroid(5,a) If objekte(a,2) = gr_enemyship Then new_ships = new_ships + 1 If objekte(a,2) = gr_enemyship2 Then new_ships = new_ships + 1 spiel_kollisionen_berechnen_objekt_objekt_check_ruf(a,999) If objekte(a,11) = 1 Then Experience = Experience + 12 For c = 1 To 100 If ende = 0 And explosionen(c,1) = 0 Then wahl = Rnd(1,3) If wahl = 1 Then gr = gr_explosion1 If wahl = 2 Then gr = gr_explosion2 If wahl = 3 Then gr = gr_explosion3 explosionen(c,1) = 1 explosionen(c,2) = gr explosionen(c,3) = objekte(a,3) explosionen(c,4) = objekte(a,4) explosionen(c,5) = 0 ende = 1 End If Next End If End If objekte(a,9) = objekt_hp If Spieler_Schilde <= damage Then If sound = 1 Then z = Rnd(1,2) If z = 1 Then PlaySound(s_hit1) If z = 2 Then PlaySound(s_hit2) End If DrawImage gr_treffer1,x,y Spieler_Schilde = 0 Spieler_HP = Spieler_HP - damage If Spieler_HP < 1 Then modus$ = "gameover" End If End If If Spieler_Schilde > damage Then If sound = 1 Then PlaySound(s_schild) Spieler_Schilde = Spieler_Schilde - damage DrawImage gr_schildglow,400,300 End If End If End If Next End Function Function spiel_kollisionen_berechnen_objekt_objekt() For a = 1 To Max_Objects If objekte(a,1) = 1 Then For b = a + 1 To Max_Objects If b <> a And objekte(b,1) = 1 Then x1 = objekte(a,3) x1 = x1 - SpielerX x1 = 400 + x1 y1 = objekte(a,4) y1 = y1 - SpielerY y1 = 300 - y1 x2 = objekte(b,3) x2 = x2 - SpielerX x2 = 400 + x2 y2 = objekte(b,4) y2 = y2 - SpielerY y2 = 300 - y2 KI_station_collision_check = spiel_kollisionen_berechnen_objekt_objekt_check_station_ki(a,b) KI_wingmen_collision_check = spiel_kollisionen_berechnen_objekt_objekt_check_wingmen_wingmen(a,b) If ImagesCollide(objekte(a,2),x1,y1,0,objekte(b,2),x2,y2,0) And KI_station_collision_check = 0 And KI_wingmen_collision_check = 0 Then spiel_sound_check(a,4) If objekte(a,14) = 0 And objekte(b,14) = 0 Then DrawImage gr_treffer1,x1,y2 If objekte(b,14) = 0 And objekte(a,14) = 0 Then DrawImage gr_treffer1,x2,y2 KI_schuss_collision_check(a,b) hp1 = objekte(a,9) hp2 = objekte(b,9) st1 = objekte(a,8) st2 = objekte(b,8) Color 255,0,0 If objekte(a,7) = 1 Then Text x1 - 50,y1,st2 If objekte(b,7) = 1 Then Text x2 - 50,y2,st1 Color 255,255,255 If objekte(a,7) = 1 Then hp1 = hp1 - st2 If hp1 < 1 Then objekte(a,1) = 0 spiel_kollisionen_berechnen_objekt_objekt_check_ruf(a,b) spiel_kollisionen_berechnen_objekt_objekt_check_eroberung(a,b) spiel_kollisionen_berechnen_objekt_objekt_check_kills(b) spiel_kollisionen_berechnen_objekt_objekt_check_schlachtschiff(a) spiel_kollisionen_berechnen_objekt_objekt_check_exp(a,b) spiel_sound_check(a,5) If objekte(a,2) = gr_enemyship Then new_ships = new_ships + 1 If objekte(a,2) = gr_enemyship2 Then new_ships = new_ships + 1 If objekte(a,2) = gr_asteroid1 Then spiel_objekte_neuer_asteroid(1,a) If objekte(a,2) = gr_asteroid2 Then spiel_objekte_neuer_asteroid(2,a) If objekte(a,2) = gr_asteroid3 Then spiel_objekte_neuer_asteroid(3,a) If objekte(a,2) = gr_asteroid4 Then spiel_objekte_neuer_asteroid(4,a) If objekte(a,2) = gr_asteroid5 Then spiel_objekte_neuer_asteroid(5,a) ende = 0 For c = 1 To 100 If ende = 0 And explosionen(c,1) = 0 Then wahl = Rnd(1,3) If wahl = 1 Then gr = gr_explosion1 If wahl = 2 Then gr = gr_explosion2 If wahl = 3 Then gr = gr_explosion3 explosionen(c,1) = 1 explosionen(c,2) = gr explosionen(c,3) = objekte(a,3) explosionen(c,4) = objekte(a,4) explosionen(c,5) = 0 ende = 1 End If Next End If objekte(a,9) = hp1 End If If objekte(b,7) = 1 Then hp2 = hp2 - st1 If hp2 < 1 Then objekte(b,1) = 0 spiel_kollisionen_berechnen_objekt_objekt_check_ruf(b,a) spiel_kollisionen_berechnen_objekt_objekt_check_eroberung(b,a) spiel_kollisionen_berechnen_objekt_objekt_check_kills(a) spiel_kollisionen_berechnen_objekt_objekt_check_schlachtschiff(b) spiel_kollisionen_berechnen_objekt_objekt_check_exp(b,a) spiel_sound_check(b,5) If objekte(b,2) = gr_enemyship Then new_ships = new_ships + 1 If objekte(b,2) = gr_enemyship2 Then new_ships = new_ships + 1 If objekte(b,2) = gr_asteroid1 Then spiel_objekte_neuer_asteroid(1,b) If objekte(b,2) = gr_asteroid2 Then spiel_objekte_neuer_asteroid(2,b) If objekte(b,2) = gr_asteroid3 Then spiel_objekte_neuer_asteroid(3,b) If objekte(b,2) = gr_asteroid4 Then spiel_objekte_neuer_asteroid(4,b) If objekte(b,2) = gr_asteroid5 Then spiel_objekte_neuer_asteroid(5,b) ende = 0 For c = 1 To 100 If ende = 0 And explosionen(c,1) = 0 Then wahl = Rnd(1,3) If wahl = 1 Then gr = gr_explosion1 If wahl = 2 Then gr = gr_explosion2 If wahl = 3 Then gr = gr_explosion3 explosionen(c,1) = 1 explosionen(c,2) = gr explosionen(c,3) = objekte(b,3) explosionen(c,4) = objekte(b,4) explosionen(c,5) = 0 ende = 1 End If Next End If objekte(b,9) = hp2 End If End If End If Next End If Next End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_ruf(killed,killer) sonderregel = 0 If killer = 999 Then sonderregel = 1 If objekte(killed,11) = 1 Then If objekte(killer,18) = 1 Or sonderregel = 1 Then If objekte(killed,15) = 1 Then Ruf_Allianz = Ruf_Allianz - 10 Ruf_Rebellen = Ruf_Rebellen + 5 Ruf_Handel = Ruf_Handel + 5 End If If objekte(killed,15) = 2 Then Ruf_Allianz = Ruf_Allianz + 5 Ruf_Rebellen = Ruf_Rebellen - 10 Ruf_Handel = Ruf_Handel + 5 End If If objekte(killed,15) = 3 Then Ruf_Allianz = Ruf_Allianz + 5 Ruf_Rebellen = Ruf_Rebellen + 5 Ruf_Handel = Ruf_Handel - 10 End If spieler_credits = spieler_credits + 50 If objekte(killed,2) = gr_enemyship3 Then spieler_credits = spieler_credits + 1950 If Ruf_Allianz > 100 Then Ruf_Allianz = 100 If Ruf_Rebellen > 100 Then Ruf_Rebellen = 100 If Ruf_Handel > 100 Then Ruf_Handel = 100 If Ruf_Allianz < 0 Then Ruf_Allianz = 0 If Ruf_Rebellen < 0 Then Ruf_Rebellen = 0 If Ruf_Handel < 0 Then Ruf_Handel = 0 End If End If End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_exp(killed,killer) If objekte(killer,26) = 999 Then If objekte(killed,11) = 1 Then Experience = Experience + 12 End If End If End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_eroberung(killed,killer) If objekte(killed,1) = 0 Then If objekte(killed,11) = 1 Then If objekte(killed,26) < 1 Then If objekte(killed,2) = gr_enemyship Or gr_enemyship2 Or gr_enemyship3 Then If objekte(killed,15) = 1 Then Eroberung_Allianz = Eroberung_Allianz - 2 If Krieg = 1 And Krieg_ParteiA = 2 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiA = 3 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 2 Then Krieg_PunkteB = Krieg_PunkteB + 1 If Krieg = 1 And Krieg_ParteiB = 3 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If If objekte(killed,15) = 2 Then Eroberung_Rebellen = Eroberung_Rebellen - 2 If Krieg = 1 And Krieg_ParteiA = 1 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiA = 3 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 1 Then Krieg_PunkteB = Krieg_PunkteB + 1 If Krieg = 1 And Krieg_ParteiB = 3 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If If objekte(killed,15) = 3 Then Eroberung_Handel = Eroberung_Handel - 2 If Krieg = 1 And Krieg_ParteiA = 1 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiA = 2 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 1 Then Krieg_PunkteB = Krieg_PunkteB + 1 If Krieg = 1 And Krieg_ParteiB = 2 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If End If End If End If End If If objekte(killer,2) = gr_enemyship Or gr_enemyship2 Or gr_enemyship3 Then ;If objekte(killer,1) = 0 Then If objekte(killer,11) = 1 Then If objekte(killer,15) = 1 Then Eroberung_Allianz = Eroberung_Allianz + 4 If Krieg = 1 And Krieg_ParteiA = 1 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 1 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If If objekte(killer,15) = 2 Then Eroberung_Rebellen = Eroberung_Rebellen + 4 If Krieg = 1 And Krieg_ParteiA = 2 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 2 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If If objekte(killer,15) = 3 Then Eroberung_Handel = Eroberung_Handel + 4 If Krieg = 1 And Krieg_ParteiA = 3 Then Krieg_PunkteA = Krieg_PunkteA + 1 If Krieg = 1 And Krieg_ParteiB = 3 Then Krieg_PunkteB = Krieg_PunkteB + 1 End If If Eroberung_Allianz > 28 Then Eroberung_Allianz = 28 If Eroberung_Rebellen > 28 Then Eroberung_Rebellen = 28 If Eroberung_Handel > 28 Then Eroberung_Handel = 28 End If ;End If End If ;If objekte(killer,26) > 0 Then ; killer = objekte(killer,26) ;End If ;If objekte(killer,1) = 1 Then ; If objekte(killer,11) = 1 Then ; If objekte(killer,26) < 1 Then ; If objekte(killer,2) = gr_enemyship Or gr_enemyship2 Or gr_enemyship3 Then ; If objekte(killer,15) = 1 Then ; Eroberung_Allianz = Eroberung_Allianz + 2 ; If Eroberung_Allianz > 30 Then Eroberung_Allianz = 30 ; End If ; If objekte(killer,15) = 2 Then ;; If Eroberung_Rebellen > 30 Then Eroberung_Rebellen = 30 ; End If ; If objekte(killer,15) = 3 Then ; Eroberung_Handel = Eroberung_Handel + 2 ;; End If ; End If ; End If ;End If ;end If End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_kills(index) check = 0 If objekte(index,11) Then check = 1 objekte(index,28) = objekte(index,28) + 1 End If If objekte(index,26) > 0 And check = 0 Then ziel = objekte(index,26) objekte(ziel,28) = objekte(ziel,28) + 1 End If End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_schlachtschiff(index) If objekte(index,2) = gr_enemyship3 Then If objekte(index,15) = 1 Then COM_Flagge = 1 COM_MessageA$ = "Eines unserer Mutterschiffe wurde zerstört!!" COM_MessageB$ = "" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If If objekte(index,15) = 2 Then COM_Flagge = 2 COM_MessageA$ = "Eines unserer Mutterschiffe wurde zerstört!!" COM_MessageB$ = "" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If If objekte(index,15) = 3 Then COM_Flagge = 3 COM_MessageA$ = "Eines unserer Mutterschiffe wurde zerstört!!" COM_MessageB$ = "" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If End Function Function KI_schuss_collision_check(a,b) ignorieren = 0 If objekte(a,2) = gr_waffe1 Or objekte(a,2) = gr_waffe2 Or objekte(a,2) = gr_waffe3 Then schuss_von_A = objekte(a,26) If objekte(schuss_von_A,15) = objekte(b,15) Then ignorieren = 1 If schuss_von_a = 999 And objekte(b,15) = 4 Then ignorieren = 1 If ignorieren = 0 Then If objekte(b,11) = 1 Then objekte(b,16) = 3 objekte(b,25) = objekte(a,26) index = objekte(a,26) points = 3 spiel_fraktion_bekommt_punkte(index,points) End If End If End If If objekte(b,2) = gr_waffe1 Or objekte(b,2) = gr_waffe2 Or objekte(b,2) = gr_waffe3 Then schuss_von_B = objekte(b,26) If objekte(schuss_von_B,15) = objekte(a,15) Then ignorieren = 1 If schuss_von_b = 999 And objekte(a,15) = 4 Then ignorieren = 1 If ignorieren = 0 Then If objekte(a,11) = 1 Then objekte(a,16) = 3 objekte(a,25) = objekte(b,26) index = objekte(b,26) points = 3 spiel_fraktion_bekommt_punkte(index,points) End If End If End If End Function Function spiel_fraktion_bekommt_punkte(index,points) If objekte(index,15) = 1 Then Punkte_Allianz = Punkte_Allianz + points If objekte(index,15) = 2 Then Punkte_Rebellen = Punkte_Rebellen + points If objekte(index,15) = 3 Then Punkte_Handel = Punkte_Handel + points If objekte(index,15) = 4 Then Punkte_Spieler = Punkte_Spieler + points End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_station_ki(a,b) ende = 0 status = 0 If objekte(a,14) = 1 Then If objekte(b,2) = gr_enemyship Or gr_enemyship2 Or gr_enemyship3 Then status = 1 ende = 1 End If End If If ende = 0 Then If objekte(b,14) = 1 Then If objekte(a,2) = gr_enemyship Or gr_enemyship2 Or gr_enemyship3 Then status = 1 End If End If End If Return status End Function Function spiel_kollisionen_berechnen_objekt_objekt_check_wingmen_wingmen(a,b) status = 0 If objekte(a,16) = 4 Then If objekte(b,16) = 4 Then status = 1 End If End If Return status End Function Function spiel_events() spiel_events_new_ships spiel_events_asteroidenfeld spiel_events_schlachtzug spiel_events_station_besitzwechsel spiel_events_verschiedene_werte_berechnen spiel_events_eigene_handelsstation spiel_events_wingmen ;spiel_events_destroy_ships_debug spiel_events_comsystem spiel_events_krieg spiel_events_neues_schlachtschiff spiel_events_RPG End Function Function spiel_events_new_ships() new_ships_timer = new_ships_timer + 1 If new_ships_timer = 200 Then new_ships_timer = 0 ;spiel_events_new_ships_berechnen ergebnis = 90 - deb_ships If ergebnis > new_ships Then new_ships = ergebnis If ergebnis < 0 Then new_ships = new_ships + ergebnis If new_ships < 0 Then new_ships = 0 For a = 1 To Max_Objects If objekte(a,1) = 0 Then If new_ships > 0 Then new_ships = new_ships - 1 fra = 0 wert_allianz = Rand(1,Werften_Allianz * 2) wert_rebellen = Rand(1,Werften_Rebellen * 2) wert_handel = Rand(1,Werften_Handel * 2) If wert_allianz > wert_rebellen And wert_allianz > wert_handel Then fra = 1 If wert_rebellen > wert_allianz And wert_rebellen > wert_handel Then fra = 2 If wert_handel > wert_allianz And wert_handel > wert_rebellen Then fra = 3 If fra = 0 Then fra = Rand(1,3) zufall = Rnd(1,4) If zufall = 4 Then zufall = 2 If zufall = 1 Then ;Freelance objekte(a,1) = 1 objekte(a,2) = gr_enemyship2 objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = Rnd(0,7) objekte(a,6) = Rnd(3,12) objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = Fra objekte(a,16) = 1 objekte(a,17) = Rnd(40,90) objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 1 objekte(a,28) = 0 End If If zufall = 2 Then ;Trade check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,14) = 1 Then If objekte(zufall,22) = 1 Then x = objekte(zufall,3) y = objekte(zufall,4) check = 1 End If End If End If Until check = 1 objekte(a,1) = 1 objekte(a,2) = gr_enemyship2 objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = 0 objekte(a,6) = 0 objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = Fra objekte(a,16) = 2 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = x objekte(a,24) = y objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 3 objekte(a,28) = 0 End If If zufall = 3 Then ;Aggro check = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,11) = 1 Then index = zufall check = 1 End If End If Until check = 1 objekte(a,1) = 1 objekte(a,2) = gr_enemyship objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = 0 objekte(a,6) = 0 objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 Repeat objekte(a,15) = Rnd(1,3) Until objekte(a,15) <> objekte(index,15) objekte(a,16) = 3 objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = x objekte(a,24) = y objekte(a,25) = index objekte(a,26) = 0 objekte(a,27) = 2 objekte(a,28) = 0 End If End If End If Next End If End Function ;Function spiel_events_new_ships_berechnen() ; neue = new_ships ; gesamt = deb_ships ; gebraucht = 0 ; 90 - gesamt = gebraucht ; If gebraucht > neue Then neue = gebraucht ; new_ships = neue ;End Function Function spiel_events_asteroidenfeld() zufall = Rnd(1,1000) If zufall = 337 Then deb_asteroidenfelder = deb_asteroidenfelder + 1 x_range = Rnd(2000,8000) y_range = Rnd(2000,8000) dir = Rnd(0,7) speed = Rnd(20,40) anzahl = 40 For b = 1 To Max_Objects ende = 0 If objekte(b,1) = 0 Then If anzahl > 0 Then objekte(b,1) = 1 objekte(b,2) = gr_asteroid6 objekte(b,3) = Rnd(x_range - 200,x_range + 200) objekte(b,4) = Rnd(y_range - 200,y_range + 200) objekte(b,5) = dir objekte(b,6) = Rnd(speed - 1,speed + 1) objekte(b,7) = 1 objekte(b,8) = 80 objekte(b,9) = 50 objekte(b,10) = 1 objekte(b,11) = 0 objekte(b,12) = 1 objekte(b,13) = 1000 objekte(b,14) = 0 objekte(b,15) = 0 objekte(b,16) = 0 objekte(b,17) = 0 objekte(b,18) = 0 objekte(b,19) = 0 objekte(b,20) = 0 objekte(b,21) = 0 objekte(b,22) = 0 objekte(b,23) = 0 objekte(b,24) = 0 objekte(b,25) = 0 objekte(b,26) = 0 objekte(b,27) = 0 objekte(b,28) = 0 anzahl = anzahl - 1 End If End If Next End If End Function Function spiel_events_schlachtzug() zufall = Rnd(1,1000) If zufall = 337 Then fraktion = Rnd(1,3) anzahl = Rnd(5,20) If fraktion = 1 Then If Schiffe_Allianz >= anzahl Then deb_schlachtzug = deb_schlachtzug + 1 For a = 1 To anzahl ende = 0 For b = 1 To Max_Objects If ende = 0 Then If objekte(b,1) = 1 Then If objekte(b,11) = 1 Then If objekte(b,15) = 1 Then objekte(b,16) = 3 objekte(b,25) = 0 ende = 1 End If End If End If End If Next Next End If End If If fraktion = 2 Then If Schiffe_Rebellen >= anzahl Then deb_schlachtzug = deb_schlachtzug + 1 For a = 1 To anzahl ende = 0 For b = 1 To Max_Objects If ende = 0 Then If objekte(b,1) = 1 Then If objekte(b,11) = 1 Then If objekte(b,15) = 2 Then objekte(b,16) = 3 objekte(b,25) = 0 End If End If End If End If Next Next End If End If If fraktion = 3 Then If Schiffe_Handel >= anzahl Then deb_schlachtzug = deb_schlachtzug + 1 For a = 1 To anzahl ende = 0 For b = 1 To Max_Objects If ende = 0 Then If objekte(b,1) = 1 Then If objekte(b,11) = 1 Then If objekte(b,15) = 3 Then objekte(b,16) = 3 objekte(b,25) = 0 End If End If End If End If Next Next End If End If End If End Function Function spiel_events_station_besitzwechsel() reset = 0 If Eroberung_Allianz < 1 Then reset = 1 If Eroberung_Rebellen <= Eroberung_Handel Then spiel_events_station_besitzwechsel_do(1,3) If Eroberung_Handel < Eroberung_Rebellen Then spiel_events_station_besitzwechsel_do(1,2) End If If Eroberung_Rebellen < 1 Then reset = 1 If Eroberung_Allianz < Eroberung_Handel Then spiel_events_station_besitzwechsel_do(2,3) If Eroberung_Handel <= Eroberung_Allianz Then spiel_events_station_besitzwechsel_do(2,1) End If If Eroberung_Handel < 1 Then reset = 1 If Eroberung_Allianz <= Eroberung_Rebellen Then spiel_events_station_besitzwechsel_do(3,2) If Eroberung_Rebellen < Eroberung_Allianz Then spiel_events_station_besitzwechsel_do(3,1) End If If reset = 1 Then Eroberung_Allianz = 28 Eroberung_Rebellen = 28 Eroberung_Handel = 28 End If End Function Function spiel_events_station_besitzwechsel_do(von,nach) keine_station = 1 For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,15) = von Then keine_station = 0 End If End If End If Next If keine_station = 0 Then deb_besitzwechsel = deb_besitzwechsel + 1 ende = 0 zufall = 0 Repeat zufall = Rnd(1,Max_Objects) If objekte(zufall,1) = 1 Then If objekte(zufall,14) = 1 Then If objekte(zufall,15) = von Then ende = 1 objekte(zufall,15) = nach End If End If End If Until ende = 1 End If End Function Function spiel_events_verschiedene_werte_berechnen() Gesamtwert_Sauerstoff = 0 Gesamtwert_Baumaterialien = 0 Gesamtwert_Waffen = 0 KI_Anzahl_Freelance = 0 KI_Anzahl_Trade = 0 KI_Anzahl_Aggro = 0 Stationen_Allianz = 0 Stationen_Rebellen = 0 Stationen_Handel = 0 Werften_Allianz = 0 Werften_Rebellen = 0 Werften_Handel = 0 Handel_Allianz = 0 Handel_Rebellen = 0 Handel_Handel = 0 Schiffe_Allianz = 0 Schiffe_Rebellen = 0 Schiffe_Handel = 0 deb_aggro_auf_spieler = 0 Schilde_Regen = Schilde_Regen + 1 If Schilde_Regen = 10 Then Schilde_Regen = 0 If Spieler_Schilde < Spieler_Schiff_Schilde_Max Then Spieler_Schilde = Spieler_Schilde + 1 End If End If For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,22) = 1 Then Gesamtwert_Sauerstoff = Gesamtwert_Sauerstoff + objekte(a,19) Gesamtwert_Baumaterialien = Gesamtwert_Baumaterialien + objekte(a,20) Gesamtwert_Waffen = Gesamtwert_Waffen + objekte(a,21) End If If objekte(a,22) = 2 Then If objekte(a,15) = 1 Then Werften_Allianz = Werften_Allianz + 1 If objekte(a,15) = 2 Then Werften_Rebellen = Werften_Rebellen + 1 If objekte(a,15) = 3 Then Werften_Handel = Werften_Handel + 1 End If End If End If If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,16) = 1 Then KI_Anzahl_Freelance = KI_Anzahl_Freelance + 1 If objekte(a,16) = 2 Then KI_Anzahl_Trade = KI_Anzahl_Trade + 1 If objekte(a,16) = 3 Then KI_Anzahl_Aggro = KI_Anzahl_Aggro + 1 If objekte(a,25) = 999 Then deb_aggro_auf_spieler = deb_aggro_auf_spieler + 1 End If If objekte(a,15) = 1 Then Schiffe_Allianz = Schiffe_Allianz + 1 If objekte(a,15) = 2 Then Schiffe_Rebellen = Schiffe_Rebellen + 1 If objekte(a,15) = 3 Then Schiffe_Handel = Schiffe_Handel + 1 End If End If If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,15) = 1 Then Stationen_Allianz = Stationen_Allianz + 1 If objekte(a,15) = 2 Then Stationen_Rebellen = Stationen_Rebellen + 1 If objekte(a,15) = 3 Then Stationen_Handel = Stationen_Handel + 1 End If End If Handel_Allianz = Stationen_Allianz - Werften_Allianz Handel_Rebellen = Stationen_Rebellen - Werften_Rebellen Handel_Handel = Stationen_Handel - Werften_Handel deb_ships = Schiffe_Allianz + Schiffe_Handel + Schiffe_Rebellen + new_ships Next explosionen_free = 100 For a = 1 To 100 If explosionen(a,1) = 1 Then explosionen_free = explosionen_free - 1 Next End Function Function spiel_events_eigene_handelsstation() If Ruf_Allianz = 100 Then If Punkte_Allianz > 4999 Then If Eigene_Handelsstation = 0 Then ende = 0 For a = 1 To Max_Objects If ende = 0 Then If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,15) = 1 Then If objekte(a,22) = 1 Then spiel_events_eigene_handelsstation_bekommen(a) ende = 1 End If End If End If End If End If Next End If End If End If If Ruf_Rebellen = 100 Then If Punkte_Rebellen > 4999 Then If Eigene_Handelsstation = 0 Then ende = 0 For a = 1 To Max_Objects If ende = 0 Then If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,15) = 2 Then If objekte(a,22) = 1 Then spiel_events_eigene_handelsstation_bekommen(a) ende = 1 End If End If End If End If End If Next End If End If End If If Ruf_Handel = 100 Then If Punkte_Handel > 4999 Then If Eigene_Handelsstation = 0 Then Ende = 0 For a = 1 To Max_Objects If ende = 0 Then If objekte(a,1) = 1 Then If objekte(a,14) = 1 Then If objekte(a,15) = 3 Then If objekte(a,22) = 1 Then spiel_events_eigene_handelsstation_bekommen(a) ende = 1 End If End If End If End If End If Next End If End If End If End Function Function spiel_events_eigene_handelsstation_bekommen(index) Eigene_Handelsstation = 1 COM_Flagge = objekte(index,15) objekte(index,15) = 4 COM_MessageA$ = "Du hast unserer Fraktion zu viel Ruhm verholfen." COM_MessageB$ = "Als Dank, erhälst du von uns eine Handelsstation!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End Function Function spiel_events_wingmen() spiel_events_wingmen_check_max_wingmen Spieler_Flotte = 0 For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,15) = 4 Then Spieler_Flotte = Spieler_Flotte + 1 ;vorher_ Spieler_Wingmen_Soll End If End If End If Next If Spieler_Flotte < Spieler_Flotte_Soll Then spiel_events_wingmen_erstellen Spieler_Flotte_Check = Spieler_Flotte_Check - 1 If Spieler_Flotte_Check = 0 Then Spieler_Flotte_Check = 100 For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,15) = 4 Then If objekte(a,16) <> Spieler_Flotte_Modus Then objekte(a,16) = Spieler_Flotte_Modus If Spieler_Flotte_Modus = 2 Then spiel_objekte_ki_trade_neue_handelsroute_berechnen(a) If Spieler_Flotte_Modus = 3 Then spiel_objekte_ki_aggro_neues_ziel(a) End If End If End If End If Next End If End Function Function spiel_events_wingmen_check_max_wingmen() Spieler_Flotte_Soll = 0 If Eigene_Handelsstation = 1 Then Spieler_Flotte_Soll = 1 If Punkte_Spieler > 100 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 200 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 300 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 400 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 500 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 600 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 700 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 800 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 900 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 1 If Punkte_Spieler > 1000 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 3 If Punkte_Spieler > 2000 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 3 If Punkte_Spieler > 3000 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 3 If Punkte_Spieler > 5000 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 5 If Punkte_Spieler > 10000 Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 6 If Punkte_Spieler > Punkte_Allianz Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 5 If Punkte_Spieler > Punkte_Handel Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 5 If Punkte_Spieler > Punkte_Rebellen Then Spieler_Flotte_Soll = Spieler_Flotte_Soll + 5 End If End Function Function spiel_events_wingmen_erstellen() ende = 0 For a = 1 To Max_Objects If ende = 0 Then If objekte(a,1) = 0 Then objekte(a,1) = 1 objekte(a,2) = gr_enemyship objekte(a,3) = Rnd(1,20000) objekte(a,4) = Rnd(1,20000) objekte(a,5) = Rnd(0,7) objekte(a,6) = Rnd(3,12) objekte(a,7) = 1 objekte(a,8) = 5 objekte(a,9) = 300 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = 4 objekte(a,16) = Spieler_Flotte_Modus objekte(a,17) = 0 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = SpielerX objekte(a,24) = SpielerY objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = Rnd(1,2) objekte(a,28) = 0 ende = 1 End If End If Next End Function Function spiel_events_destroy_ships_debug() soll = 90 destroy = 0 For a = 1 To Max_Objects If objekte(a,11) = 1 Then soll = soll - 1 If soll = 0 Then soll = 1 ende = 0 Repeat destroy = Rnd(1,Max_Objects) If objekte(destroy,11) = 1 Then ende = 1 objekte(destroy,1) = 0 End If Until ende = 1 End If End If Next End Function Function spiel_events_comsystem() If Ruf_Allianz < 20 Then If COM_Allianz_Ruf_Warnung = 0 Then COM_Allianz_Ruf_Warnung = 1 COM_Flagge = 1 COM_MessageA$ = "Da du unserer Fraktion feindselig gesinnt bist," COM_MessageB$ = "verweigern wir dir das Andocken an unseren Stationen!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If If Ruf_Rebellen < 20 Then If COM_Rebellen_Ruf_Warnung = 0 Then COM_Rebellen_Ruf_Warnung = 1 COM_Flagge = 2 COM_MessageA$ = "Da du unserer Fraktion feindselig gesinnt bist," COM_MessageB$ = "verweigern wir dir das Andocken an unseren Stationen!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If If Ruf_Handel < 20 Then If COM_Handel_Ruf_Warnung = 0 Then COM_Handel_Ruf_Warnung = 1 COM_Flagge = 3 COM_MessageA$ = "Da du unserer Fraktion feindselig gesinnt bist," COM_MessageB$ = "verweigern wir dir das Andocken an unseren Stationen!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If If Ruf_Allianz > 19 Then If COM_Allianz_Ruf_Warnung = 1 Then COM_Allianz_Ruf_Warnung = 0 COM_Flagge = 1 COM_MessageA$ = "Dein Ruf hat sich gebessert." COM_MessageB$ = "Du darfst wieder an unseren Stationen andocken!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If If Ruf_Rebellen > 19 Then If COM_Rebellen_Ruf_Warnung = 1 Then COM_Rebellen_Ruf_Warnung = 0 COM_Flagge = 2 COM_MessageA$ = "Dein Ruf hat sich gebessert." COM_MessageB$ = "Du darfst wieder an unseren Stationen andocken!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If If Ruf_Handel > 19 Then If COM_Handel_Ruf_Warnung = 1 Then COM_Handel_Ruf_Warnung = 0 COM_Flagge = 3 COM_MessageA$ = "Dein Ruf hat sich gebessert." COM_MessageB$ = "Du darfst wieder an unseren Stationen andocken!" If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End If End Function Function spiel_events_krieg() If Krieg = 0 Then spiel_events_krieg_zufall If Krieg = 1 Then spiel_events_krieg_ablauf End Function Function spiel_events_krieg_zufall() z = Rnd (1,3000) If z = 2222 Or debug_krieg_starten = 1 Then debug_krieg_starten = 0 Repeat A = Rnd(1,3) B = Rnd(1,3) Until A <> B Krieg = 1 Krieg_ParteiA = A Krieg_ParteiB = B Krieg_PunkteA = 0 Krieg_PunkteB = 0 Krieg_Dauer = 2000 Krieg_Dauer_Aggro_Check = 100 If Krieg_ParteiA = 1 Then Eins$ = "Allianz" Krieg_PunkteA = Schiffe_Allianz End If If Krieg_ParteiA = 2 Then Eins$ = "Rebellen" Krieg_PunkteA = Schiffe_Rebellen End If If Krieg_ParteiA = 3 Then Eins$ = "Handelsfraktion" Krieg_PunkteA = Schiffe_Handel End If If Krieg_ParteiB = 1 Then Zwei$ = "Allianz" Krieg_PunkteB = Schiffe_Allianz End If If Krieg_ParteiB = 2 Then zwei$ = "Rebellen" Krieg_PunkteB = Schiffe_Rebellen End If If Krieg_ParteiB = 3 Then zwei$ = "Handelsfraktion" Krieg_PunkteB = Schiffe_Handel End If COM_Flagge = 0 COM_MessageA$ = "Es herrscht Krieg!" COM_MessageB$ = Eins$ + " gegen " + Zwei$ spiel_events_krieg_make_aggro(A,B) spiel_events_krieg_make_aggro(B,A) If sound = 1 Then PlaySound(s_com) modus$ = "com" End If End Function Function spiel_events_krieg_ablauf() Krieg_Dauer = Krieg_Dauer - 1 If Krieg_Dauer = 0 Then COM_Flagge = 0 If Krieg_ParteiA = 1 Then Eins$ = "Allianz" If Krieg_ParteiA = 2 Then Eins$ = "Rebellen" If Krieg_ParteiA = 3 Then Eins$ = "Handelsfraktion" If Krieg_ParteiB = 1 Then Zwei$ = "Allianz" If Krieg_ParteiB = 2 Then zwei$ = "Rebellen" If Krieg_ParteiB = 3 Then zwei$ = "Handelsfraktion" If Krieg_PunkteA >= Krieg_PunkteB Then Drei$ = Eins$ + " hat die Schlacht ehrenvoll gewonnen und erhält 1000 Punkte." If Krieg_ParteiA = 1 Then Punkte_Allianz = Punkte_Allianz + 1000 COM_Flagge = 1 End If If Krieg_ParteiA = 2 Then Punkte_Rebellen = Punkte_Rebellen + 1000 COM_Flagge = 2 End If If Krieg_ParteiA = 3 Then Punkte_Handel = Punkte_Handel + 1000 COM_Flagge = 3 End If End If If Krieg_PunkteB > Krieg_PunkteA Then Drei$ = Zwei$ + " hat die Schlacht ehrenvoll gewonnen und erhält 1000 Punkte." If Krieg_ParteiB = 1 Then Punkte_Allianz = Punkte_Allianz + 1000 COM_Flagge = 1 End If If Krieg_ParteiB = 2 Then Punkte_Rebellen = Punkte_Rebellen + 1000 COM_Flagge = 2 End If If Krieg_ParteiB = 3 Then Punkte_Handel = Punkte_Handel + 1000 COM_Flagge = 3 End If End If COM_MessageA$ = "Der Krieg zwischen " + Eins$ + "("+Krieg_PunkteA+") und " + Zwei$ + "("+Krieg_PunkteB+") wurde beendet." COM_MessageB$ = Drei$ Krieg = 0 Krieg_ParteiA = 0 Krieg_ParteiB = 0 Krieg_PunkteA = 0 Krieg_PunkteB = 0 Krieg_Dauer_Aggro_Check = 0 If sound = 1 Then PlaySound(s_com) modus$ = "com" End If Krieg_Dauer_Aggro_Check = Krieg_Dauer_Aggro_Check - 1 If Krieg_Dauer_Aggro_Check = 0 Then spiel_events_krieg_make_aggro(Krieg_ParteiA,Krieg_ParteiB) spiel_events_krieg_make_aggro(Krieg_ParteiB,Krieg_ParteiA) Krieg_Dauer_Aggro_Check = 100 End If End Function Function spiel_events_krieg_make_aggro(von,nach) For a = 1 To Max_Objects If objekte(a,1) = 1 Then If objekte(a,11) = 1 Then If objekte(a,15) = von Then weiter = 1 ziel = objekte(a,25) If objekte(a,16) = 3 And objekte(ziel,15) = nach Then weiter = 0 End If If weiter = 1 Then check = 0 counter = 0 Repeat counter = counter + 1 b = Rnd(1,Max_Objects) If objekte(b,1) = 1 Then If objekte(b,11) = 1 Then If objekte(b,15) = nach Then objekte(a,16) = 3 objekte(a,25) = b check = 1 End If End If End If Until check = 1 Or counter = 2500 End If End If End If End If Next End Function Function spiel_events_neues_schlachtschiff() z = Rnd(1,9000) If z = 2222 Then check = 0 For a = 1 To Max_Objects If objekte(a,1) = 0 And check = 0 Then fra = Rnd(1,3) x = Rnd(1,20000) y = Rnd(1,20000) objekte(a,1) = 1 objekte(a,2) = gr_enemyship3 objekte(a,3) = x objekte(a,4) = y objekte(a,5) = 3 objekte(a,6) = 2 objekte(a,7) = 1 objekte(a,8) = 75 objekte(a,9) = 20000 objekte(a,10) = 1 objekte(a,11) = 1 objekte(a,12) = 0 objekte(a,13) = 0 objekte(a,14) = 0 objekte(a,15) = fra objekte(a,16) = 1 objekte(a,17) = 50 objekte(a,18) = 0 objekte(a,19) = 0 objekte(a,20) = 0 objekte(a,21) = 0 objekte(a,22) = 0 objekte(a,23) = 0 objekte(a,24) = 0 objekte(a,25) = 0 objekte(a,26) = 0 objekte(a,27) = 2 objekte(a,28) = 0 check = 1 COM_Flagge = fra COM_MessageA$ = "Wir haben ein weiteres Mutterschiff gebaut." COM_MessageB$ = "Wir hoffen, es wird uns in der Schlacht nützlich sein." If sound = 1 Then PlaySound(s_com) modus$ = "com" End If Next End If End Function Function spiel_events_RPG() If Experience => NextLevel Then ExpWert = ExpWert * 1.5 NextLevel = NextLevel + ExpWert Level = Level + 1 spieler_credits = spieler_credits + 500 If sound = 1 Then PlaySound(s_levelup) modus$ = "levelup" End If Spieler_Schiff_HP_Max = Spieler_Schiff_HP_Grundwert + Bonus_HP Spieler_Schiff_Laderaum_Max = Spieler_Schiff_Laderaum_Grundwert + Bonus_Laderaum Spieler_Schiff_Rumpfstaerke = Spieler_Schiff_Rumpfstaerke_Grundwert + Bonus_Rumpfstaerke End Function Function console() frei = Max_Objects For a = 1 To Max_Objects If objekte(a,1) = 1 Then frei = frei - 1 Next Text 20,80,"DEBUG INFORMATION" Text 20,100,"Engine Loops : "+debug_hauptschleife Text 20,120,"Objects : "+frei+" / "+Max_Objects Text 20,140,"Explosionen : "+explosionen_free+" / 100" Text 20,160,"New Ships : "+new_ships Text 20,180,"Event Aster.Felder: "+deb_asteroidenfelder Text 20,200,"Sauerstoff Wert : "+Gesamtwert_Sauerstoff Text 20,220,"Baumat. Wert : "+Gesamtwert_Baumaterialien Text 20,240,"Waffen Wert : "+Gesamtwert_Waffen Text 20,260,"KI Freelance : "+KI_Anzahl_Freelance Text 20,280,"KI Trade : "+KI_Anzahl_Trade Text 20,300,"KI Aggro : "+KI_Anzahl_Aggro Text 20,320,"KI Aggro auf SPIE : "+deb_aggro_auf_spieler Text 20,340,"Event Schlachtzug : "+deb_schlachtzug Text 20,360,"Event Besitzwechs : "+deb_besitzwechsel Text 20,380,"KI Switch A2F : "+deb_aggroTOfree Text 20,400,"Schiffe gesamt : "+deb_ships Text 20,420,"Werften (A,R,H) : "+Werften_Allianz+"/"+Werften_Rebellen+"/"+Werften_Handel If running_mode = "debug" Then Color 0,255,0 Text 600,100,"DEBUG " Text 600,120," MODE" Text 600,160,"DEBUG " Text 600,180," MODE" Color 255,255,255 Text 400,240,"Punkte Allianz: " + Punkte_Allianz Text 400,260,"Punkte Rebellen: " + Punkte_Rebellen Text 400,280,"Punkte Handel: " + Punkte_Handel Text 400,320,"Eroberung Allianz: " + Eroberung_Allianz Text 400,340,"Eroberung Rebellen: " + Eroberung_Rebellen Text 400,360,"Eroberung Handel: " + Eroberung_Handel End If End Function Function ende_main() ende_layout ende_tasten End Function Function ende_layout() Color 255,100,100 Text 280,50,"Programm wird mit ´ENTER´ beendet" Color 255,255,255 End Function Function ende_tasten() If KeyHit(28) Then ;28 = ENTER modus$ = "killprog" End If End Function Function schiffsmenu_main() schiffsmenu_layout schiffsmenu_tasten End Function Function schiffsmenu_layout() DrawImage gr_yourship,1,1 Text 180,225,Spieler_Schiff_Name$ Text 180,275,Spieler_Schiff_Schilde_Max Text 180,325,Spieler_Schiff_HP_Grundwert + "+" + Bonus_HP + " = " + Spieler_Schiff_HP_Max Text 180,380,Spieler_Schiff_Laderaum_Grundwert + "+" + Bonus_Laderaum + " = " + Spieler_Schiff_Laderaum_Max Text 180,430,Spieler_Schiff_Waffe$ Text 180,480,Spieler_Schiff_Rumpfstaerke_Grundwert + "+" + Bonus_Rumpfstaerke + " = " + Spieler_Schiff_Rumpfstaerke Text 180,530,Spieler_Schiff_Max_Geschwindigkeit If Spieler_Schiff_Waffe$ = "Plasmawerfer" Then DrawImage gr_waffe1,300,440 End If If Spieler_Schiff_Waffe$ = "Ionenwerfer" Then DrawImage gr_waffe2,300,440 End If Text 540,330,Spieler_Handel_Sauerstoff Text 540,380,Spieler_Handel_Baumaterialien Text 540,430,Spieler_Handel_Waffen End Function Function schiffsmenu_tasten() If KeyHit(31) Then ;S = Zurück modus$ = "spiel" FlushKeys() End If End Function Function fraktionsmenu_main() fraktionsmenu_layout fraktionsmenu_tasten End Function Function fraktionsmenu_layout() DrawImage gr_fraktionsmenu,1,1 Text 180,250,Ruf_Allianz Text 410,250,Ruf_Rebellen Text 630,250,Ruf_Handel Text 180,355,Stationen_Allianz Text 410,355,Stationen_Rebellen Text 630,355,Stationen_Handel Text 180,455,Schiffe_Allianz Text 410,455,Schiffe_Rebellen Text 630,455,Schiffe_Handel Text 180,555,Punkte_Allianz Text 410,555,Punkte_Rebellen Text 630,555,Punkte_Handel End Function Function fraktionsmenu_tasten() If KeyHit(33) Then modus$ = "spiel" FlushKeys End If End Function Function gameover_main() gameover_layout gameover_tasten End Function Function gameover_layout() DrawImage gr_gameover,1,1 End Function Function gameover_tasten() If KeyHit(28) Then ;28 = ENTER modus$ = "hauptmenu" FlushKeys End If End Function Function gedockt_handel_main() gedockt_handel_layout gedockt_handel_tasten gedockt_handel_maus End Function Function gedockt_handel_layout() DrawImage gr_station_handel,1,1 DrawImage gr_buy,218,157 DrawImage gr_sell,280,157 DrawImage gr_buy,216,229 DrawImage gr_sell,280,229 DrawImage gr_buy,216,300 DrawImage gr_sell,280,300 Text 175,175,Preis_Sauerstoff Text 175,245,Preis_Baumaterialien Text 175,315,Preis_Waffen Text 380,175,Spieler_Handel_Sauerstoff Text 380,245,Spieler_Handel_Baumaterialien Text 380,315,Spieler_Handel_Waffen Text 480,175,"Credits: "+spieler_credits Color 0,255,0 Text 480,245,"Bisherige Einnahmen: "+Stats_Einnahmen Color 255,0,0 Text 480,280,"Bisherige Ausgaben: "+Stats_Ausgaben Color 0,255,0 balance = Stats_Einnahmen - Stats_Ausgaben If balance < 0 Then Color 255,0,0 Text 480,315,"Verhältnis: "+balance Color 255,255,255 belegt = Spieler_Handel_Sauerstoff + Spieler_Handel_Baumaterialien + Spieler_Handel_Waffen frei = Spieler_Schiff_Laderaum_Max - belegt Text 260,395,frei End Function Function gedockt_handel_tasten() If KeyHit(38) Then ;38 = L modus$ = "spiel" FlushKeys End If End Function Function gedockt_handel_maus() x = MouseX() y = MouseY() DrawImage gr_maus,x,y belegt = Spieler_Handel_Sauerstoff + Spieler_Handel_Baumaterialien + Spieler_Handel_Waffen frei = Spieler_Schiff_Laderaum_Max - belegt left_mouse_button = 0 If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide (gr_maus,x,y,0,gr_buy,218,157,0) And left_mouse_button = 1 Then If spieler_credits >= Preis_Sauerstoff Then If frei > 0 Then Spieler_Handel_Sauerstoff = Spieler_Handel_Sauerstoff + 1 spieler_credits = spieler_credits - Preis_Sauerstoff Stats_Ausgaben = Stats_Ausgaben + Preis_Sauerstoff zufall = Rnd(1,5) If zufall = 3 Then Preis_Sauerstoff = Preis_Sauerstoff + 1 objekte(Aktuelle_Station,19) = objekte(Aktuelle_Station,19) + 1 End If gedockt_handel_check_ruf(Aktuelle_Station) gedockt_handel_check_punkte(Aktuelle_Station) End If End If End If If ImagesCollide (gr_maus,x,y,0,gr_sell,280,157,0) And left_mouse_button = 1 Then If Spieler_Handel_Sauerstoff > 0 Then Spieler_Handel_Sauerstoff = Spieler_Handel_Sauerstoff - 1 Experience = Experience + 4 spieler_credits = spieler_credits + Preis_Sauerstoff Stats_Einnahmen = Stats_Einnahmen + Preis_Sauerstoff zufall = Rnd(1,5) If zufall = 3 Then Preis_Sauerstoff = Preis_Sauerstoff - 1 If Preis_Sauerstoff < 1 Then Preis_Sauerstoff = 1 objekte(Aktuelle_Station,19) = objekte(Aktuelle_Station,19) - 1 If objekte(Aktuelle_Station,19) < 1 Then objekte(Aktuelle_Station,19) = 1 End If gedockt_handel_check_punkte(Aktuelle_Station) End If End If If ImagesCollide (gr_maus,x,y,0,gr_buy,216,229,0) And left_mouse_button = 1 Then If spieler_credits >= Preis_Baumaterialien Then If frei > 0 Then Spieler_Handel_Baumaterialien = Spieler_Handel_Baumaterialien + 1 spieler_credits = spieler_credits - Preis_Baumaterialien Stats_Ausgaben = Stats_Ausgaben + Preis_Baumaterialien zufall = Rnd(1,5) If zufall = 3 Then Preis_Baumaterialien = Preis_Baumaterialien + 1 objekte(Aktuelle_Station,20) = objekte(Aktuelle_Station,20) + 1 End If gedockt_handel_check_ruf(Aktuelle_Station) gedockt_handel_check_punkte(Aktuelle_Station) End If End If End If If ImagesCollide (gr_maus,x,y,0,gr_sell,280,229,0) And left_mouse_button = 1 Then If Spieler_Handel_Baumaterialien > 0 Then Spieler_Handel_Baumaterialien = Spieler_Handel_Baumaterialien - 1 Experience = Experience + 4 spieler_credits = spieler_credits + Preis_Baumaterialien Stats_Einnahmen = Stats_Einnahmen + Preis_Baumaterialien zufall = Rnd(1,5) If zufall = 3 Then Preis_Baumaterialien = Preis_Baumaterialien - 1 If Preis_Baumaterialien < 1 Then Preis_Baumaterialien = 1 objekte(Aktuelle_Station,20) = objekte(Aktuelle_Station,20) - 1 If objekte(Aktuelle_Station,20) < 1 Then objekte(Aktuelle_Station,20) = 1 End If gedockt_handel_check_punkte(Aktuelle_Station) End If End If If ImagesCollide (gr_maus,x,y,0,gr_buy,216,300,0) And left_mouse_button = 1 Then If spieler_credits >= Preis_Waffen Then If frei > 0 Then Spieler_Handel_Waffen = Spieler_Handel_Waffen + 1 spieler_credits = spieler_credits - Preis_Waffen Stats_Ausgaben = Stats_Ausgaben + Preis_Waffen zufall = Rnd(1,5) If zufall = 3 Then Preis_Waffen = Preis_Waffen + 1 objekte(Aktuelle_Station,21) = objekte(Aktuelle_Station,21) + 1 End If gedockt_handel_check_ruf(Aktuelle_Station) gedockt_handel_check_punkte(Aktuelle_Station) End If End If End If If ImagesCollide (gr_maus,x,y,0,gr_sell,280,300,0) And left_mouse_button = 1 Then If Spieler_Handel_Waffen > 0 Then Spieler_Handel_Waffen = Spieler_Handel_Waffen - 1 Experience = Experience + 4 spieler_credits = spieler_credits + Preis_Waffen Stats_Einnahmen = Stats_Einnahmen + Preis_Waffen zufall = Rnd(1,5) If zufall = 3 Then Preis_Waffen = Preis_Waffen - 1 If Preis_Waffen < 1 Then Preis_Waffen = 1 objekte(Aktuelle_Station,21) = objekte(Aktuelle_Station,21) - 1 If objekte(Aktuelle_Station,21) < 1 Then objekte(Aktuelle_Station,21) = 1 End If gedockt_handel_check_punkte(Aktuelle_Station) End If End If End Function Function gedockt_handel_check_ruf(index) If objekte(index,15) = 1 Then Ruf_Allianz = Ruf_Allianz + 1 If objekte(index,15) = 2 Then Ruf_Rebellen = Ruf_Rebellen + 1 If objekte(index,15) = 3 Then Ruf_Handel = Ruf_Handel + 1 End Function Function gedockt_handel_check_punkte(index) If objekte(index,15) = 1 Then Punkte_Allianz = Punkte_Allianz + 1 If objekte(index,15) = 2 Then Punkte_Rebellen = Punkte_Rebellen + 1 If objekte(index,15) = 3 Then Punkte_Handel = Punkte_Handel + 1 End Function Function gedockt_werft_main() gedockt_werft_layout gedockt_werft_tasten gedockt_werft_maus End Function Function gedockt_werft_layout() DrawImage gr_station_werft,1,1 DrawImage gr_buy,145,216 DrawImage gr_buy,287,216 DrawImage gr_buy,424,216 DrawImage gr_buy,562,216 DrawImage gr_buy,731,527 DrawImage gr_Schifftyp1,176,128,0 DrawImage gr_Schifftyp1,315,128,0 DrawImage gr_Schifftyp3,453,128,0 DrawImage gr_Schifftyp2,590,128,0 DrawImage gr_spieler,735,128,0 DrawImage gr_tuning,295,525,0 Text 717,300,Spieler_Schiff_Schilde_Max + "/" + Spieler_Schiff_HP_Max If Spieler_Schiff_Waffe$ = "Plasmawerfer" Then DrawImage gr_waffe1,717,340 If Spieler_Schiff_Waffe$ = "Ionenwerfer" Then DrawImage gr_waffe2,717,340 If Spieler_Schiff_Waffe$ = "Blauer Blitz" Then DrawImage gr_waffe3,717,340 Text 717,380,Spieler_Schiff_Laderaum_Max Text 717,420,Spieler_Schiff_Max_Geschwindigkeit DrawImage gr_hud_schild,507,533 DrawImage gr_hud_hp,507,557 Text 600,533,Spieler_Schilde + "/" + Spieler_Schiff_Schilde_Max Text 600,557,Spieler_HP + "/" + Spieler_Schiff_HP_Max Text 91,495,spieler_credits End Function Function gedockt_werft_tasten() If KeyHit(38) Then ;38 = L: abdocken modus$ = "spiel" FlushKeys End If If KeyHit(45) Then ;45 = X: reparieren If spieler_credits >= 150 Then spieler_credits = spieler_credits - 150 Spieler_HP = Spieler_Schiff_HP_Max Spieler_Schilde = Spieler_Schiff_Schilde_Max End If End If End Function Function gedockt_werft_maus() x = MouseX() y = MouseY() DrawImage gr_maus,x,y left_mouse_button = 0 If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide (gr_maus,x,y,0,gr_buy,145,216,0) And left_mouse_button = 1 Then left_mouse_button = 0 If spieler_credits > 1999 Then spieler_credits = spieler_credits - 2000 gr_spieler = gr_Schifftyp1 Spieler_Schiff_Schilde_Max = 500 Spieler_Schiff_HP_Grundwert = 350 Spieler_Schilde = 500 Spieler_HP = 350 Spieler_Schiff_Laderaum_Grundwert = 6 Spieler_Handel_Sauerstoff = 0 Spieler_Handel_Baumaterialien = 0 Spieler_Handel_Waffen = 0 Spieler_Schiff_Waffe$ = "Blauer Blitz" Spieler_Schiff_Rumpfstaerke_Grundwert = 4 Spieler_Schiff_Max_Geschwindigkeit = 11 Spieler_Geschwindigkeit = 0 Spieler_Schiff_Modpacks = 0 End If End If If ImagesCollide (gr_maus,x,y,0,gr_buy,287,216,0) And left_mouse_button = 1 Then left_mouse_button = 0 If spieler_credits > 1499 Then spieler_credits = spieler_credits - 1500 gr_spieler = gr_Schifftyp1 Spieler_Schiff_Schilde_Max = 500 Spieler_Schiff_HP_Grundwert = 1000 Spieler_Schilde = 500 Spieler_HP = 1000 Spieler_Schiff_Laderaum_Grundwert = 15 Spieler_Handel_Sauerstoff = 0 Spieler_Handel_Baumaterialien = 0 Spieler_Handel_Waffen = 0 Spieler_Schiff_Waffe$ = "Plasmawerfer" Spieler_Schiff_Rumpfstaerke_Grundwert = 7 Spieler_Schiff_Max_Geschwindigkeit = 8 Spieler_Geschwindigkeit = 0 Spieler_Schiff_Modpacks = 0 End If End If If ImagesCollide (gr_maus,x,y,0,gr_buy,424,216,0) And left_mouse_button = 1 Then left_mouse_button = 0 If spieler_credits > 2499 Then spieler_credits = spieler_credits - 2500 gr_spieler = gr_Schifftyp3 Spieler_Schiff_Schilde_Max = 800 Spieler_Schiff_HP_Grundwert = 100 Spieler_Schilde = 800 Spieler_HP = 100 Spieler_Schiff_Laderaum_Grundwert = 2 Spieler_Handel_Sauerstoff = 0 Spieler_Handel_Baumaterialien = 0 Spieler_Handel_Waffen = 0 Spieler_Schiff_Waffe$ = "Blauer Blitz" Spieler_Schiff_Rumpfstaerke_Grundwert = 3 Spieler_Schiff_Max_Geschwindigkeit = 20 Spieler_Geschwindigkeit = 0 Spieler_Schiff_Modpacks = 0 End If End If If ImagesCollide (gr_maus,x,y,0,gr_buy,562,216,0) And left_mouse_button = 1 Then left_mouse_button = 0 If spieler_credits > 4999 Then spieler_credits = spieler_credits - 5000 gr_spieler = gr_Schifftyp2 Spieler_Schiff_Schilde_Max = 1500 Spieler_Schiff_HP_Grundwert = 1000 Spieler_Schilde = 1500 Spieler_HP = 1000 Spieler_Schiff_Laderaum_Grundwert = 3 Spieler_Handel_Sauerstoff = 0 Spieler_Handel_Baumaterialien = 0 Spieler_Handel_Waffen = 0 Spieler_Schiff_Waffe$ = "Ionenwerfer" Spieler_Schiff_Rumpfstaerke_Grundwert = 12 Spieler_Schiff_Max_Geschwindigkeit = 12 Spieler_Geschwindigkeit = 0 Spieler_Schiff_Modpacks = 0 End If End If If ImagesCollide(gr_maus,x,y,0,gr_buy,731,527,0) And left_mouse_button = 1 Then left_mouse_button = 0 If spieler_credits > 149 Then spieler_credits = spieler_credits - 150 Spieler_HP = Spieler_Schiff_HP_Max Spieler_Schilde = Spieler_Schiff_Schilde_Max End If End If If ImagesCollide(gr_maus,x,y,0,gr_tuning,295,525,0) And left_mouse_button = 1 Then left_mouse_button = 0 modus$ = "tuning" End If End Function Function help_main() help_layout help_tasten End Function Function help_layout() DrawImage gr_help,1,1 End Function Function help_tasten() If KeyHit(28) Then ;28 = ENTER modus$ = "spiel" FlushKeys End If End Function Function karte_main() spiel_objekte_berechnen;Debug... läuft aber! (= spiel_objekte_lebensdauer spiel_objekte_ki spiel_kollisionen_berechnen karte_layout karte_tasten End Function Function karte_layout() DrawImage gr_karte,1,1 For a = 1 To Max_Objects If objekte(a,1) = 1 Then x = objekte(a,3) x = x / 40 y = objekte(a,4) y = y / 40 y = y - 250 y = 250 - y If objekte(a,14) = 1 Then ;Station karte_getcolor(a) If objekte(a,22) = 1 Then Text x,y,"H" Text x-10,y,">" Text x+10,y,"<" End If If objekte(a,22) = 2 Then Text x,y,"W" Text x-10,y,">" Text x+10,y,"<" End If End If If objekte(a,11) = 1 Then ;KI If Karte_Modus = 0 Then karte_getcolor(a) If objekte(a,16) = 1 And objekte(a,2) <> gr_enemyship3 Then Text x,y,"F" If objekte(a,16) = 2 And objekte(a,2) <> gr_enemyship3 Then Text x,y,"$" If objekte(a,16) = 3 And objekte(a,2) <> gr_enemyship3 Then Text x,y,"A" If objekte(a,16) = 4 And objekte(a,2) <> gr_enemyship3 Then Text x,y,"W" If objekte(a,2) = gr_enemyship3 Then If objekte(a,16) = 1 Then Text x,y,"!F!" If objekte(a,16) = 2 Then Text x,y,"!$!" If objekte(a,16) = 3 Then Text x,y,"!A!" If objekte(a,16) = 4 Then Text x,y,"!W!" End If End If End If End If Next x = SpielerX x = x / 40 y = SpielerY y = y / 40 y = y - 250 y = 250 - y Color 0,255,0 Text x,y,"*" Color 255,255,255 End Function Function karte_getcolor(index) If objekte(index,15) = 1 Then Color 0,100,255 If objekte(index,15) = 2 Then Color 255,0,0 If objekte(index,15) = 3 Then Color 255,255,0 If objekte(index,15) = 4 Then Color 0,255,0 End Function Function karte_tasten() If KeyHit(50) Then ; =M modus$ = "spiel" FlushKeys End If If KeyHit(30) Then ; =A Modus ändern ende = 0 If Karte_Modus = 0 Then Karte_Modus = 1 ende = 1 End If If Karte_Modus = 1 Then If ende = 0 Then Karte_Modus = 0 End If End If End If End Function Function eigene_station_bekommen_main() eigene_station_bekommen_layout eigene_station_bekommen_tasten End Function Function eigene_station_bekommen_layout() Text 10,10,"Sie haben ihre eigene Handelsstation bekommen!" Text 10,30,"Dies ist der Beginn ihrer eigenen Fraktion!" Text 10,50,"Sie können nun Wingmen anheuern und durch die Handelsstation credits verdienen." Text 10,90,"ENTER..." End Function Function eigene_station_bekommen_tasten() If KeyHit(28) Then ;ENTER modus$ = "spiel" FlushKeys End If End Function Function speichern_main() speichern_layout speichern_tasten End Function Function speichern_layout() Text 10,10,"Speichere..." If Gespeichert = 0 Then savefile = WriteFile ("tos_save.dat") For a = 1 To Max_Objects For b = 1 To 28 WriteString savefile,objekte(a,b) Next Next For a = 1 To 100 For b = 1 To 5 WriteString savefile,explosionen(a,b) Next Next WriteString savefile,BildX WriteString savefile,BildY WriteString savefile,SpielerX WriteString savefile,SpielerY WriteString savefile,Spieler_Direction WriteString savefile,Spieler_Geschwindigkeit WriteString savefile,Spieler_Schiff_Max_Geschwindigkeit WriteString savefile,Spieler_Schiff_Name$ WriteString savefile,Spieler_Schiff_Schilde_Max WriteString savefile,Spieler_Schiff_HP_Max WriteString savefile,Spieler_Schiff_Rumpfstaerke WriteString savefile,Spieler_Schiff_Waffe$ WriteString savefile,Spieler_Schiff_Laderaum_Max WriteString savefile,Spieler_Handel_Sauerstoff WriteString savefile,Spieler_Handel_Baumaterialien WriteString savefile,Spieler_Handel_Waffen WriteString savefile,Spieler_HP WriteString savefile,Spieler_Schilde WriteString savefile,new_ships WriteString savefile,new_ships_timer WriteString savefile,spieler_credits WriteString savefile,Ruf_Allianz WriteString savefile,Ruf_Handel WriteString savefile,Ruf_Rebellen WriteString savefile,Punkte_Allianz WriteString savefile,Punkte_Handel WriteString savefile,Punkte_Rebellen WriteString savefile,Spieler_Wingmen WriteString savefile,Spieler_Wingmen_Max WriteString savefile,Punkte_Spieler WriteString savefile,Eigene_Handelsstation WriteString savefile,Area$ WriteString savefile,COM_Rebellen_Ruf_Warnung WriteString savefile,COM_Allianz_Ruf_Warnung WriteString savefile,COM_Handel_Ruf_Warnung WriteString savefile,COM_Flagge WriteString savefile,COM_MessageA$ WriteString savefile,COM_MessageB$ WriteString savefile,Stats_Einnahmen WriteString savefile,Stats_Ausgaben WriteString savefile,Spieler_Schiff_Modpacks WriteString savefile,Krieg WriteString savefile,Krieg_ParteiA WriteString savefile,Krieg_ParteiB WriteString savefile,Krieg_Dauer WriteString savefile,Krieg_Dauer_Aggro_Check WriteString savefile,Krieg_PunkteA WriteString savefile,Krieg_PunkteB WriteString savefile,Bonus_HP WriteString savefile,Bonus_Laderaum WriteString savefile,Bonus_Damage WriteString savefile,Bonus_Rumpfstaerke WriteString savefile,Level WriteString savefile,Experience WriteString savefile,NextLevel WriteString savefile,ExpWert WriteString savefile,Spieler_Schiff_HP_Grundwert WriteString savefile,Spieler_Schiff_Laderaum_Grundwert WriteString savefile,Spieler_Schiff_Rumpfstaerke_Grundwert WriteString savefile,sound WriteString savefile,Spieler_Flotte WriteString savefile,Spieler_Flotte_Soll WriteString savefile,Spieler_Flotte_Modus WriteString savefile,Spieler_Flotte_Check Gespeichert = 1 CloseFile savefile End If If Gespeichert = 1 Then Text 10,30,"Gespeichert." Text 10,50,"ENTER zum fortfahren." End If End Function Function speichern_tasten() If KeyHit(28) Then ;ENTER If Gespeichert = 1 Then modus$ = "spiel" FlushKeys End If End If End Function Function laden_main() laden_layout laden_tasten End Function Function laden_layout() Text 10,10,"Lade..." If Geladen = 0 Then savefile = ReadFile ("tos_save.dat") For a = 1 To Max_Objects For b = 1 To 28 objekte(a,b) = ReadString$ (savefile) Next Next For a = 1 To 100 For b = 1 To 5 explosionen(a,b) = ReadString$ (savefile) Next Next BildX = ReadString$ (savefile) BildY = ReadString$ (savefile) SpielerX = ReadString$ (savefile) SpielerY = ReadString$( savefile) Spieler_Direction = ReadString$ (savefile) Spieler_Geschwindigkeit = ReadString$ (savefile) Spieler_Schiff_Max_Geschwindigkeit = ReadString$ (savefile) Spieler_Schiff_Name$ = ReadString$ (savefile) Spieler_Schiff_Schilde_Max = ReadString$ (savefile) Spieler_Schiff_HP_Max = ReadString$ (savefile) Spieler_Schiff_Rumpfstaerke = ReadString$ (savefile) Spieler_Schiff_Waffe$ = ReadString$ (savefile) Spieler_Schiff_Laderaum_Max = ReadString$ (savefile) Spieler_Handel_Sauerstoff = ReadString$ (savefile) Spieler_Handel_Baumaterialien = ReadString$ (savefile) Spieler_Handel_Waffen = ReadString$ (savefile) Spieler_HP = ReadString$ (savefile) Spieler_Schilde = ReadString$ (savefile) new_ships = ReadString$ (savefile) new_ships_timer = ReadString$ (savefile) spieler_credits = ReadString$ (savefile) Ruf_Allianz = ReadString$ (savefile) Ruf_Handel = ReadString$ (savefile) Ruf_Rebellen = ReadString$ (savefile) Punkte_Allianz = ReadString$ (savefile) Punkte_Handel = ReadString$ (savefile) Punkte_Rebellen = ReadString$ (savefile) Spieler_Wingmen = ReadString$(savefile) Spieler_Wingmen_Max = ReadString$(savefile) Punkte_Spieler = ReadString$(savefile) Eigene_Handelsstation = ReadString$(savefile) Area$ = ReadString$(savefile) COM_Allianz_Ruf_Warnung = ReadString$(savefile) COM_Rebellen_Ruf_Warnung = ReadString$(savefile) COM_Handel_Ruf_Warnung = ReadString$(savefile) COM_Flagge = ReadString$(savefile) COM_MessageA$ = ReadString$(savefile) COM_MessageB$ = ReadString$(savefile) Stats_Einnahmen = ReadString$(savefile) Stats_Ausgaben = ReadString$(savefile) Spieler_Schiff_Modpacks = ReadString$(savefile) Krieg = ReadString$(savefile) Krieg_ParteiA = ReadString$(savefile) Krieg_ParteiB = ReadString$(savefile) Krieg_Dauer = ReadString$(savefile) Krieg_Dauer_Aggro_Check = ReadString$(savefile) Krieg_PunkteA = ReadString$(savefile) Krieg_PunkteB = ReadString$(savefile) Bonus_HP = ReadString$(savefile) Bonus_Laderaum = ReadString$(savefile) Bonus_Damage = ReadString$(savefile) Bonus_Rumpfstaerke = ReadString$(savefile) Level = ReadString$(savefile) Experience = ReadString$(savefile) NextLevel = ReadString$(savefile) ExpWert = ReadString$(savefile) Spieler_Schiff_HP_Grundwert = ReadString$(savefile) Spieler_Schiff_Laderaum_Grundwert = ReadString$(savefile) Spieler_Schiff_Rumpfstaerke_Grundwert = ReadString$(savefile) sound = ReadString$(savefile) Spieler_Flotte = ReadString$(savefile) Spieler_Flotte_Soll = ReadString$(savefile) Spieler_Flotte_Modus = ReadString$(savefile) Spieler_Flotte_Check = ReadString$(savefile) Geladen = 1 CloseFile savefile End If If Geladen = 1 Then Text 10,30,"Geladen." Text 10,50,"ENTER zum fortfahren." End If End Function Function laden_tasten() If KeyHit(28) Then If Geladen = 1 Then modus$ = "spiel" FlushKeys End If End If End Function Function com_main() If running_mode$ = "debug" Then modus$ = "spiel" com_layout com_maus com_tasten End Function Function com_layout() DrawImage gr_commenu,1,1 If COM_Flagge = 1 Then DrawImage gr_flagge_allianz,100,100 If COM_Flagge = 2 Then DrawImage gr_flagge_rebellen,100,100 If COM_Flagge = 3 Then DrawImage gr_flagge_handel,100,100 Text 10,200,COM_MessageA$ Text 10,230,COM_MessageB$ DrawImage gr_ok,370,550 End Function Function com_maus() x = MouseX() y = MouseY() DrawImage gr_maus,x,y Left_Mouse_Button = 0 If MouseHit(1) = True Then Left_Mouse_Button = 1 If ImagesCollide (gr_maus,x,y,0,gr_ok,370,550,0) And left_mouse_button = 1 Then modus$ = "spiel" End If End Function Function com_tasten() If KeyHit(28) Then modus$ = "spiel" End If End Function Function options_main() options_layout options_maus End Function Function options_layout() DrawImage gr_optionsmenu,1,1 DrawImage gr_wechseln,550,180 DrawImage gr_wechseln,550,230 Text 200,190,"HUD: " Text 200,240,"Gegnerinfos: " If Options_HUD = 1 Then Color 0,255,0 Text 350,190,"aktiviert" Color 255,255,255 End If If Options_HUD = 0 Then Color 255,0,0 Text 350,190,"deaktiviert" Color 255,255,255 End If If Options_Enemyinfo = 1 Then Color 0,255,0 Text 350,240,"aktiviert" Color 255,255,255 End If If Options_Enemyinfo = 0 Then Color 255,0,0 Text 350,240,"deaktiviert" Color 255,255,255 End If DrawImage gr_ok,380,550 End Function Function options_maus() x = MouseX() y = MouseY() DrawImage gr_maus,x,y left_mouse_button = 0 If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide (gr_maus,x,y,0,gr_ok,380,550,0) And left_mouse_button = 1 Then modus$ = "spiel" End If If ImagesCollide (gr_maus,x,y,0,gr_wechseln,550,180,0) And left_mouse_button = 1 Then check = 0 If Options_HUD = 0 Then Options_HUD = 1 check = 1 End If If Options_HUD = 1 Then If check = 0 Then Options_HUD = 0 End If End If End If If ImagesCollide (gr_maus,x,y,0,gr_wechseln,550,230,0) And left_mouse_button = 1 Then check = 0 If Options_Enemyinfo = 0 Then Options_Enemyinfo = 1 check = 1 End If If Options_Enemyinfo = 1 Then If check = 0 Options_Enemyinfo = 0 End If End If End If End Function Function tuning_main() tuning_layout tuning_maus End Function Function tuning_layout() DrawImage gr_tuningmenu,1,1 DrawImage gr_ok,380,550,0 Text 275,112,Spieler_Schiff_Modpacks + " / 4 Max" Text 140,155,spieler_credits Text 640,280,Spieler_Schiff_Max_Geschwindigkeit + " / 22 Max" Text 640,330,Spieler_Schiff_Rumpfstaerke Text 640,380,Spieler_Schiff_Laderaum_Max Text 640,430,Spieler_Schiff_Schilde_Max DrawImage gr_buy,470,275,0 DrawImage gr_buy,470,325,0 DrawImage gr_buy,470,375,0 DrawImage gr_buy,470,425,0 End Function Function tuning_maus() x = MouseX() y = MouseY() left_mouse_button = 0 DrawImage gr_maus,x,y If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide(gr_maus,x,y,0,gr_ok,380,550,0) And left_mouse_button = 1 Then modus$ = "gedockt_werft" End If If ImagesCollide(gr_maus,x,y,0,gr_buy,470,275,0) And left_mouse_button = 1 Then If Spieler_Schiff_Modpacks < 4 Then If spieler_credits > 1199 Then If Spieler_Schiff_Max_Geschwindigkeit < 23 Then Spieler_Schiff_Modpacks = Spieler_Schiff_Modpacks + 1 spieler_credits = spieler_credits - 1200 Spieler_Schiff_Max_Geschwindigkeit = Spieler_Schiff_Max_Geschwindigkeit + 5 If Spieler_Schiff_Max_Geschwindigkeit > 22 Then Spieler_Schiff_Max_Geschwindigkeit = 22 End If End If End If End If If ImagesCollide(gr_maus,x,y,0,gr_buy,470,325,0) And left_mouse_button = 1 Then If Spieler_Schiff_Modpacks < 4 Then If spieler_credits > 399 Then Spieler_Schiff_Modpacks = Spieler_Schiff_Modpacks + 1 spieler_credits = spieler_credits - 400 Spieler_Schiff_Rumpfstaerke_Grundwert = Spieler_Schiff_Rumpfstaerke_Grundwert + 10 End If End If End If If ImagesCollide(gr_maus,x,y,0,gr_buy,470,375,0) And left_mouse_button = 1 Then If Spieler_Schiff_Modpacks < 4 Then If spieler_credits > 399 Then Spieler_Schiff_Modpacks = Spieler_Schiff_Modpacks + 1 spieler_credits = spieler_credits - 400 Spieler_Schiff_Laderaum_Grundwert = Spieler_Schiff_Laderaum_Grundwert + 5 End If End If End If If ImagesCollide(gr_maus,x,y,0,gr_buy,470,425,0) And left_mouse_button = 1 Then If Spieler_Schiff_Modpacks < 4 Then If spieler_credits > 999 Then Spieler_Schiff_Modpacks = Spieler_Schiff_Modpacks + 1 spieler_credits = spieler_credits - 1000 Spieler_Schiff_Schilde_Max = Spieler_Schiff_Schilde_Max + 600 End If End If End If End Function Function levelup_main() levelup_layout levelup_maus End Function Function levelup_layout() DrawImage gr_levelup,1,1 Text 380,70,Level DrawImage gr_ok,400,225 DrawImage gr_ok,400,280 DrawImage gr_ok,400,335 DrawImage gr_ok,400,390 End Function Function levelup_maus() x = MouseX() y = MouseY() left_mouse_button = 0 DrawImage gr_maus,x,y If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide (gr_maus,x,y,0,gr_ok,400,225,0) And left_mouse_button = 1 Then Bonus_HP = Bonus_HP + 100 modus$ = "spiel" End If If ImagesCollide (gr_maus,x,y,0,gr_ok,400,280,0) And left_mouse_button = 1 Then Bonus_Laderaum = Bonus_Laderaum + 4 modus$ = "spiel" End If If ImagesCollide (gr_maus,x,y,0,gr_ok,400,335,0) And left_mouse_button = 1 Then Bonus_Damage = Bonus_Damage + 2 modus$ = "spiel" End If If ImagesCollide (gr_maus,x,y,0,gr_ok,400,390,0) And left_mouse_button = 1 Then Bonus_Rumpfstaerke = Bonus_Rumpfstaerke + 3 modus$ = "spiel" End If End Function Function flotte_main() flotte_layout flotte_maus End Function Function flotte_layout() DrawImage gr_flotte,1,1 DrawImage gr_wechseln,420,175 DrawImage gr_ok,400,540 Text 350,130,Spieler_Flotte + " / " + Spieler_Flotte_Soll bla$ = "" If Spieler_Flotte_Modus = 1 Then bla$ = "Freelance" If Spieler_Flotte_Modus = 2 Then bla$ = "Handeln" If Spieler_Flotte_Modus = 3 Then bla$ = "Angreifen" If Spieler_Flotte_Modus = 4 Then bla$ = "Wingman" Text 250,200,bla$ End Function Function flotte_maus() x = MouseX() y = MouseY() left_mouse_button = 0 DrawImage gr_maus,x,y If MouseHit(1) = True Then left_mouse_button = 1 If ImagesCollide (gr_maus,x,y,0,gr_wechseln,420,175,0) And left_mouse_button = 1 Then Spieler_Flotte_Modus = Spieler_Flotte_Modus + 1 If Spieler_Flotte_Modus = 5 Then Spieler_Flotte_Modus = 1 End If If ImagesCollide (gr_maus,x,y,0,gr_ok,400,540,0) And left_mouse_button = 1 Then modus$ = "spiel" End If End Function ;~C#Blitz3D ;~C#Blitz3D ;~IDEal Editor Parameters: ;~L#-debug ;~C#Blitz3D