// Author: Slig // maniaplanet nickname (game and forum): slig // // version 1.5, 27/07/2012 #RequireContext CSmMode #Include "MathLib" as MathLib #Include "TextLib" as TextLib #Include "Libs/Nadeo/ShootMania/SM.Script.txt" as SM #Include "Libs/Nadeo/Mode.Script.txt" #Include "Libs/Nadeo/Victory.Script.txt" as Victory #Include "Libs/Nadeo/ShootMania/Score.Script.txt" as Score #Include "Libs/Nadeo/ShootMania/Airshot.Script.txt" as Airshot #Include "Libs/Nadeo/ShootMania/BalancedWeapons.Script.txt" as BalancedWeapons // Mostly compatible with Elite, Heroes, and TeamSurvival maps // depending of the spawns and pole point(s), a map may be nice to play or not #Const CompatibleMapTypes "EliteArena,HeroesArena,TeamSurvivalArena" #Const Version "2012-07-27" #Setting S_RoundsToWin 6 as _("Rounds to win") /// #Setting S_RoundGapToWin 2 as _("Round gap to win") /// #Setting S_RoundsLimit 8 as _("Rounds limit") /// #Setting S_RoundTimeLimit 105 as _("Round time limit (s)") /// seconds, if briefcase not returned and still alive players in both teams #Setting S_MapTimeLimit 0 as _("Map time limit (s)") /// seconds, if it comes before S_RoundsToWin and S_RoundsLimit #Setting S_ArmorMax 200 as _("Armox max (100, 200, 300,...)") /// game default 200 #Setting S_BriefcaseHandlerStamina 0.6 as _("Reduced stamina for handler (0.1 to 1.0)") /// game default 1.0 #Setting S_FriendlyFire False as _("Is friendly fire effective ?") /// #Setting S_AllowWeaponChange False as _("Can players change their weapon ?") /// #Setting S_AutoBalance False as _("Auto balance ?") /// #Setting S_TeamChangeTimeLimit 30 as _("Time limit to change team at beginning of round") /// seconds #Setting S_RespawnTime 3001 as _("Respawn time (ms)") /// ms #Const S_AmmoGain 1.0 // default 1.0 (tested: 1.42) #Const S_RocketAmmoMax 4 // default 4 #Const S_LaserAmmoMax 1 // default 1 #Const ShowBriefcaseHandlerTimeout 3200 // ms, timeout to see briefcase handler position to enemies #Const UITickPeriod 400 ***UIPlayer*** *** UI.BigMessage = Airshot::Message(Player); *** ***EndTime*** *** EndTime = StartTime + S_RoundTimeLimit*1000; *** ***Locales*** *** locales["en"] = [ "language" => "English" ]; // needed to init locales["en"] array locales["en"]["modename"] = "Infiltration"; locales["en"]["moderules"] = """Two teams game mode, inspired from SoF2 Infiltration mode :) - The attackers must take the briefcase at the pole, then return it to the extract/start point. - The defenders win the round if they prevent attackers to finish before the end of time. - The attackers and the defenders win also if they eliminate all opponents. - Once dead, you do not respawn until the end of the round. - Score to win the map: {{{ S_RoundsToWin }}} (gap: {{{ S_RoundGapToWin }}} , max: {{{ S_RoundsLimit }}}) - You have to show players names (medium size or more) to see the briefcase and extract markers, sorry. - The player who take the briefcase is (a little) highlighted, a marker is shown few seconds at the last position he shot or was hit. - When spectator, the 0 key (num pad) allow to spec another player of own team. """; locales["en"]["keysrules"] = "Press F1 to show rules"; locales["en"]["keysweapons"] = "Press F3 / F4 to swap gun for next round"; locales["en"]["briefcase"] = "Briefcase"; locales["en"]["extract"] = "Extract"; locales["en"]["attacker"] = "Attacker"; locales["en"]["defender"] = "Defender"; locales["en"]["eliminate"] = "eliminate"; locales["en"]["help"] = "help"; locales["en"]["toextract"] = "return to extract point"; locales["en"]["winsround"] = "wins the round"; locales["en"]["drawround"] = "This round is a draw"; locales["en"]["winsmatch"] = "wins the match"; locales["en"]["defendit"] = "Defend the briefcase"; locales["en"]["attackit"] = "Take and return the briefcase"; locales["en"]["droppedit"] = "dropped the briefcase"; locales["en"]["droppedit2"] = "dropped the briefcase, take it"; locales["en"]["tookit"] = "took the briefcase"; locales["en"]["tookit2"] = "took the briefcase, help him"; locales["en"]["tookit0"] = "You took the briefcase, return to extract point now"; locales["en"]["eliminated1"] = "Defenders eliminated: attackers win"; locales["en"]["eliminated2"] = "Attackers eliminated: defenders win"; locales["en"]["successful"] = "Mission successful: attackers win"; locales["en"]["elapsed"] = "Time elapsed: defenders win"; locales["en"]["nextweapon"] = "Next weapon"; locales["en"]["Rocket"] = "Rocket"; locales["en"]["Laser"] = "Railgun"; locales["en"]["Nucleus"] = "Nucleus"; locales["fr"] = [ "language" => "French" ]; // needed to init locales["fr"] array locales["fr"]["modename"] = "Infiltration"; locales["fr"]["moderules"] = """Mode jeu à 2 équipes, inspiré du mode Infiltration de SoF2 :) - Les attaquants doivent prendre la mallette (briefcase) au poteau et la ramener au point de retour (extract). - Les défenseurs gagnent le round s'ils empêchent les attaquants de finir avant la fin du temps. - Les attaquants et les défenseurs peuvent aussi gagner en éliminant tous leurs adversaires. - Une fois mort, vous ne revenez pas en jeu avant la fin du round. - Score pour gagner la map : {{{ S_RoundsToWin }}} (écart : {{{ S_RoundGapToWin }}} , max : {{{ S_RoundsLimit }}}) - Vous devez afficher les noms (taille moyenne ou plus) pour voir les marqueurs de la mallette et du point de retour. - Le joueur qui prend la mallette devient (un peu) plus lumineux, un marqueur est montré quelques secondes à la position où il a tiré ou bien a été touché. - Lorsque spectateur, la touche 0 (pavé numérique) permet de changer de joueur dans son équipe. """; locales["fr"]["keysrules"] = "F1 pour lire les règles de jeu"; locales["fr"]["keysweapons"] = "F3 / F4 pour changer d'arme au round suivant"; locales["fr"]["briefcase"] = "Mallette"; locales["fr"]["extract"] = "Extraction"; locales["fr"]["attacker"] = "Attaquant"; locales["fr"]["defender"] = "Défenseur"; locales["fr"]["eliminate"] = "éliminez"; locales["fr"]["help"] = "aidez"; locales["fr"]["toextract"] = "retournez au point d'extraction"; locales["fr"]["winsround"] = "gagne le round"; locales["fr"]["drawround"] = "match nul sur ce round"; locales["fr"]["winsmatch"] = "gagne le match"; locales["fr"]["defendit"] = "Defendez la mallette"; locales["fr"]["attackit"] = "Prenez et ramenez la mallette"; locales["fr"]["droppedit"] = "a perdu la mallette"; locales["fr"]["droppedit2"] = "a perdu la mallette, récupérez la"; locales["fr"]["tookit"] = "a pris la mallette"; locales["fr"]["tookit2"] = "a pris la mallette, aidez le"; locales["fr"]["tookit0"] = "Ramenez la mallette au point d'extraction maintenant"; locales["fr"]["eliminated1"] = "Défenseurs éliminés"; locales["fr"]["eliminated2"] = "Attaquants éliminés"; locales["fr"]["finished"] = "Mission réussie"; locales["fr"]["eliminated1"] = "Défenseurs éliminés : les attaquants gagnent"; locales["fr"]["eliminated2"] = "Attaquants éliminés : les défenseurs gagnent"; locales["fr"]["successful"] = "Mission réussie : les attaquants gagnent"; locales["fr"]["elapsed"] = "Temps écoulé : les défenseurs gagnent"; locales["fr"]["nextweapon"] = "Prochaine arme "; locales["fr"]["Rocket"] = "Rocket"; locales["fr"]["Laser"] = "Railgun"; locales["fr"]["Nucleus"] = "Nucleus"; locales["de"] = [ "language" => "German" ]; // needed to init locales["en"] array locales["de"]["modename"] = "Infiltration"; locales["de"]["moderules"] = """Zwei Teams, inspiriert vom SoF2 Modus Infiltrations :) - Die Angreifer müssen den Aktenkoffer (gegnerische Säule) abholen und zum Startpunkt zurückbringen. - Die Verteidiger gewinnen wenn sie die Angreifer aufhalten bis die Zeit abgelaufen ist. - Verteidiger und Angreifer gewinnen ebenfalls wenn sie das gegenerische Team eliminieren. - Wird ein Spieler eliminiert muss er warten bis die aktuelle Runde beendet ist bevor er wieder in das Geschehen eingreifen kann. - Punkt um die Map zu gewinnen: {{{ S_RoundsToWin }}} (Abstand: {{{ S_RoundGapToWin }}} , Max: {{{ S_RoundsLimit }}}) - Um den Aktenkoffer zu sehen müssen leider Spielernamen (mindestens medium) angezeigt werden. - Der Spieler der den Aktenkoffer besitzt ist leicht erhellt dargestellt. Ein Marker zeigt die letzte bekannte Position an wo dieser geschossen hat oder getroffen wurde. - Als Zuschauer kann mit Hilfe der Taste 0 (Ziffernblock) einem Spieler vom eigenen Team über die Schulter geschaut werden."""; locales["de"]["keysrules"] = "Drücke F1 um die Spielregeln anzuzeigen"; locales["de"]["keysweapons"] = "Drücke F3 / F4 um in der nächsten Runde die Waffe zu wechseln"; locales["de"]["briefcase"] = "Aktenkoffer"; locales["de"]["extract"] = "Entnehmen"; locales["de"]["attacker"] = "Angreifer"; locales["de"]["defender"] = "Verteidiger"; locales["de"]["eliminate"] = "Eliminiere"; locales["de"]["help"] = "Hilf"; locales["de"]["toextract"] = "Zurück zum Startpunkt"; locales["de"]["winsround"] = "gewinnt die Runde"; locales["de"]["drawround"] = "Diese Runde endet unentschieden"; locales["de"]["winsmatch"] = "gewinnt das Spiel"; locales["de"]["defendit"] = "Beschützt den Aktenkoffer"; locales["de"]["attackit"] = "Findet den Aktenkoffer und bringt ihn zurück zu Basis"; locales["de"]["droppedit"] = "hast den Aktenkoffer fallen gelassen"; locales["de"]["droppedit2"] = "hat den Aktenkoffer verloren, hol ihn dir"; locales["de"]["tookit"] = "hat den Aktenkoffer genommen"; locales["de"]["tookit2"] = "hat den Aktenkoffer genommen, hilf ihn"; locales["de"]["eliminated1"] = "Alle Verteidiger eliminiert: Angreifer gewinnen"; locales["de"]["eliminated2"] = "Alle Angreifer eliminiert: Verteidiger gewinnen"; locales["de"]["successful"] = "Mission erfolgreich beendet: Angreifer gewinnen"; locales["de"]["elapsed"] = "Zeit abgelaufen: Verteidiger gewinnen"; locales["de"]["nextweapon"] = "Nächste Waffe"; locales["de"]["Rocket"] = "Rocket"; locales["de"]["Laser"] = "Railgun"; locales["de"]["Nucleus"] = "Nucleus"; *** /////////////////////////////////////////////////// // declare global array which will be filled by translation texts declare Text[Text][Text] locales; /////////////////////////////////////////////////// // fill translation texts in locales Void setLocales() { +++Locales+++ } /////////////////////////////////////////////////// // Get the map name manialink string. // @return The manialink string Text UpdateLayerSpawnScreen() { declare Text ML; ---Rules--- // create dico texts declare Dico = ""; foreach(language => translations in locales) { Dico = Dico ^ """"""; if(locales[language].existskey("modename")) Dico = Dico ^ "$fff" ^ locales[language]["modename"] ^ ""; if(locales[language].existskey("moderules")) Dico = Dico ^ "" ^ locales[language]["moderules"] ^ ""; if(locales[language].existskey("keysrules")) Dico = Dico ^ "" ^ locales[language]["keysrules"] ^ ""; if(locales[language].existskey("keysweapons")) Dico = Dico ^ "" ^ locales[language]["keysweapons"] ^ ""; Dico = Dico ^ ""; } // keys messages depending on S_AllowWeaponChange or not declare KeysMessage = """